ZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19DTElfRGVtb3MvRmlsZS1SZWxhdGVkLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9GaWxlLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMKaW5kZXggYWRiNDc2OS4uNTA2ZjJhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9GaWxlLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9GaWxlLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19DTElfRGVtb3MvU2FtcGxlLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKaW5kZXggZDc0ZGI4Ny4uZDE4NjBkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9VQVJUQ29tbWFuZENvbnNvbGUuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19DTElfRGVtb3MvVUFSVENvbW1hbmRDb25zb2xlLmMKaW5kZXggMjI2N2ZhMi4uMjA3OTk5YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9VQVJUQ29tbWFuZENvbnNvbGUuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfQ0xJX0RlbW9zL1VBUlRDb21tYW5kQ29uc29sZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIE5PVEU6ICBUaGlzIGZpbGUgdXNlcyBhIHRoaXJkIHBhcnR5IFVTQiBDREMgZHJpdmVyLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19DTElfRGVtb3MvVURQLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfQ0xJX0RlbW9zL1VEUC1SZWxhdGVkLUNMSS1jb21tYW5kcy5jCmluZGV4IDQ3NWY1NDUuLmQwZDI5ZDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19DTElfRGVtb3MvVURQLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0NMSV9EZW1vcy9VRFAtUmVsYXRlZC1DTEktY29tbWFuZHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19GQVRfU0xfRGVtb3MvQ3JlYXRlRXhhbXBsZUZpbGVzL0ZpbGUtc3lzdGVtLWRlbW8uYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19GQVRfU0xfRGVtb3MvQ3JlYXRlRXhhbXBsZUZpbGVzL0ZpbGUtc3lzdGVtLWRlbW8uYwppbmRleCA4ZjYyNjE2Li5kMTdkZGFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX0RlbW9zL0NyZWF0ZUV4YW1wbGVGaWxlcy9GaWxlLXN5c3RlbS1kZW1vLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX0ZBVF9TTF9EZW1vcy9DcmVhdGVFeGFtcGxlRmlsZXMvRmlsZS1zeXN0ZW0tZGVtby5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFNlZSB0aGUgVVJMIGluIHRoZSBjb21tZW50cyB3aXRoaW4gbWFpbi5jIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvQ0xJQ29tbWFuZHMvQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0NMSUNvbW1hbmRzL0NMSS1jb21tYW5kcy5jCmluZGV4IGU0ZjFlNmYuLjViNjc0OWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvQ0xJQ29tbWFuZHMvQ0xJLWNvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9DTElDb21tYW5kcy9DTEktY29tbWFuZHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvQ0xJQ29tbWFuZHMvVURQQ29tbWFuZEludGVycHJldGVyLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0NMSUNvbW1hbmRzL1VEUENvbW1hbmRJbnRlcnByZXRlci5oCmluZGV4IDUxNGM4YjkuLjhmZmZkYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvQ0xJQ29tbWFuZHMvVURQQ29tbWFuZEludGVycHJldGVyLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9DTElDb21tYW5kcy9VRFBDb21tYW5kSW50ZXJwcmV0ZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBVRFBfQ09NTUFORF9JTlRFUlBSRVRFUl9IDQogI2RlZmluZSBVRFBfQ09NTUFORF9JTlRFUlBSRVRFUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9DTElDb21tYW5kcy9VRFBDb21tYW5kU2VydmVyLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0NMSUNvbW1hbmRzL1VEUENvbW1hbmRTZXJ2ZXIuYwppbmRleCBkOGE2YzVlLi40M2ZkMjU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0NMSUNvbW1hbmRzL1VEUENvbW1hbmRTZXJ2ZXIuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0NMSUNvbW1hbmRzL1VEUENvbW1hbmRTZXJ2ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGludC5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvRWNob0NsaWVudHMvVHdvRWNob0NsaWVudHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvRWNob0NsaWVudHMvVHdvRWNob0NsaWVudHMuYwppbmRleCA2MGY3NDAzLi4xYjI2NjdjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0VjaG9DbGllbnRzL1R3b0VjaG9DbGllbnRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9FY2hvQ2xpZW50cy9Ud29FY2hvQ2xpZW50cy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9FY2hvQ2xpZW50cy9Ud29FY2hvQ2xpZW50cy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9FY2hvQ2xpZW50cy9Ud29FY2hvQ2xpZW50cy5oCmluZGV4IDIxZGUxMGUuLmIwMDY2NjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvRWNob0NsaWVudHMvVHdvRWNob0NsaWVudHMuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL0VjaG9DbGllbnRzL1R3b0VjaG9DbGllbnRzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVFdPX0VDSE9fQ0xJRU5UU19IDQogI2RlZmluZSBUV09fRUNIT19DTElFTlRTX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL1RyYWNlTWFjcm9zL0V4YW1wbGUxL0RlbW9JUFRyYWNlLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL1RyYWNlTWFjcm9zL0V4YW1wbGUxL0RlbW9JUFRyYWNlLmMKaW5kZXggZTY2MWMxMC4uNWUyNWVhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9UcmFjZU1hY3Jvcy9FeGFtcGxlMS9EZW1vSVBUcmFjZS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvVHJhY2VNYWNyb3MvRXhhbXBsZTEvRGVtb0lQVHJhY2UuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBmaWxlLCBhbG9uZyB3aXRoIERlbW9JUFRyYWNlLmgsIHByb3ZpZGVzIGEgYmFzaWMgZXhhbXBsZSB1c2Ugb2YgdGhlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9UcmFjZU1hY3Jvcy9FeGFtcGxlMS9EZW1vSVBUcmFjZS5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0NvbW1vbi9GcmVlUlRPU19QbHVzX1VEUF9EZW1vcy9UcmFjZU1hY3Jvcy9FeGFtcGxlMS9EZW1vSVBUcmFjZS5oCmluZGV4IDcwNzMwZGUuLjIxM2RmNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9Db21tb24vRnJlZVJUT1NfUGx1c19VRFBfRGVtb3MvVHJhY2VNYWNyb3MvRXhhbXBsZTEvRGVtb0lQVHJhY2UuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vQ29tbW9uL0ZyZWVSVE9TX1BsdXNfVURQX0RlbW9zL1RyYWNlTWFjcm9zL0V4YW1wbGUxL0RlbW9JUFRyYWNlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlLCBhbG9uZyB3aXRoIERlbW9JUFRyYWNlLmgsIHByb3ZpZGVzIGEgYmFzaWMgZXhhbXBsZSB1c2Ugb2YgdGhlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9DTEktY29tbWFuZHMuYwppbmRleCA0ZTJmMmZkLi4zYzBhNTQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9DTEktY29tbWFuZHMuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9DTEktY29tbWFuZHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0NMSV93aXRoX1RyYWNlX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMzU4YzcwOS4uZWYzNjgxZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0NMSV93aXRoX1RyYWNlX1dpbmRvd3NfU2ltdWxhdG9yL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMKaW5kZXggZTE0MjhmNy4uN2UxMGNjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9SdW4tdGltZS1zdGF0cy11dGlscy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFV0aWxpdHkgZnVuY3Rpb25zIHJlcXVpcmVkIHRvIGdhdGhlciBydW4gdGltZSBzdGF0aXN0aWNzLiAgU2VlOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0NMSV93aXRoX1RyYWNlX1dpbmRvd3NfU2ltdWxhdG9yL1VEUENvbW1hbmRTZXJ2ZXIuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0NMSV93aXRoX1RyYWNlX1dpbmRvd3NfU2ltdWxhdG9yL1VEUENvbW1hbmRTZXJ2ZXIuYwppbmRleCA1M2RiZTM1Li5iMTFlYzliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9VRFBDb21tYW5kU2VydmVyLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvVURQQ29tbWFuZFNlcnZlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjcHJhZ21hIGNvbW1lbnQoIGxpYiwgIndzMl8zMi5saWIiICkNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19DTElfd2l0aF9UcmFjZV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMKaW5kZXggZDc4N2VjMy4uOGFlMDE3ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfQ0xJX3dpdGhfVHJhY2VfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0NMSV93aXRoX1RyYWNlX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvRnJlZVJUT1NDb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUzMGFiZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvRnJlZVJUT1NDb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0jaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQotI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBBcHBsaWNhdGlvbiBzcGVjaWZpYyBkZWZpbml0aW9ucy4NCi0gKg0KLSAqIFRoZXNlIGRlZmluaXRpb25zIHNob3VsZCBiZSBhZGp1c3RlZCBmb3IgeW91ciBwYXJ0aWN1bGFyIGhhcmR3YXJlIGFuZA0KLSAqIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4NCi0gKg0KLSAqIFRIRVNFIFBBUkFNRVRFUlMgQVJFIERFU0NSSUJFRCBXSVRISU4gVEhFICdDT05GSUdVUkFUSU9OJyBTRUNUSU9OIE9GIFRIRQ0KLSAqIEZyZWVSVE9TIEFQSSBET0NVTUVOVEFUSU9OIEFWQUlMQUJMRSBPTiBUSEUgRnJlZVJUT1Mub3JnIFdFQiBTSVRFLg0KLSAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMC5odG1sDQotICoNCi0gKiBUaGUgYm90dG9tIG9mIHRoaXMgZmlsZSBjb250YWlucyBzb21lIGNvbnN0YW50cyBzcGVjaWZpYyB0byBydW5uaW5nIHRoZSBVRFANCi0gKiBzdGFjayBpbiB0aGlzIGRlbW8uICBDb25zdGFudHMgc3BlY2lmaWMgdG8gRnJlZVJUT1MrVURQIGl0c2VsZiAocmF0aGVyIHRoYW4NCi0gKiB0aGUgZGVtbykgYXJlIGNvbnRhaW5lZCBpbiBGcmVlUlRPU0lQQ29uZmlnLmguDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0jZGVmaW5lIGNvbmZpZ1VTRV9QUkVFTVBUSU9OCQkJMQ0KLSNkZWZpbmUgY29uZmlnTUFYX1BSSU9SSVRJRVMJCQkoIDcgKQ0KLSNkZWZpbmUgY29uZmlnVElDS19SQVRFX0haCQkJCSggMTAwMCApIC8qIEluIHRoaXMgbm9uLXJlYWwgdGltZSBzaW11bGF0ZWQgZW52aXJvbm1lbnQgdGhlIHRpY2sgZnJlcXVlbmN5IGhhcyB0byBiZSBhdCBsZWFzdCBhIG11bHRpcGxlIG9mIHRoZSBXaW4zMiB0aWNrIGZyZXF1ZW5jeSwgYW5kIHRoZXJlZm9yZSB2ZXJ5IHNsb3cuICovDQotI2RlZmluZSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUJCSggKCB1bnNpZ25lZCBzaG9ydCApIDYwICkgLyogSW4gdGhpcyBzaW11bGF0ZWQgY2FzZSwgdGhlIHN0YWNrIG9ubHkgaGFzIHRvIGhvbGQgb25lIHNtYWxsIHN0cnVjdHVyZSBhcyB0aGUgcmVhbCBzdGFjayBpcyBwYXJ0IG9mIHRoZSBXaW4zMiB0aHJlYWQuICovDQotI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkoICggc2l6ZV90ICkgKCAzMlUgKiAxMDI0VSApICkNCi0jZGVmaW5lIGNvbmZpZ01BWF9UQVNLX05BTUVfTEVOCQkJKCA3ICkNCi0jZGVmaW5lIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFXzE2X0JJVF9USUNLUwkJCTANCi0jZGVmaW5lIGNvbmZpZ0lETEVfU0hPVUxEX1lJRUxECQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX0NPX1JPVVRJTkVTIAkJCTANCi0jZGVmaW5lIGNvbmZpZ1VTRV9NVVRFWEVTCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9SRUNVUlNJVkVfTVVURVhFUwkJMQ0KLSNkZWZpbmUgY29uZmlnUVVFVUVfUkVHSVNUUllfU0laRQkJMA0KLSNkZWZpbmUgY29uZmlnVVNFX0FQUExJQ0FUSU9OX1RBU0tfVEFHCTANCi0jZGVmaW5lIGNvbmZpZ1VTRV9DT1VOVElOR19TRU1BUEhPUkVTCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9BTFRFUk5BVElWRV9BUEkJCTANCi0NCi0vKiBIb29rIGZ1bmN0aW9uIHJlbGF0ZWQgZGVmaW5pdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfVElDS19IT09LCQkJCTANCi0jZGVmaW5lIGNvbmZpZ1VTRV9JRExFX0hPT0sJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSwkxDQotI2RlZmluZSBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cJMCAvKiBOb3QgYXBwbGljYWJsZSB0byB0aGUgV2luMzIgcG9ydC4gKi8NCi0NCi0vKiBTb2Z0d2FyZSB0aW1lciByZWxhdGVkIGRlZmluaXRpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnVVNFX1RJTUVSUwkJCQkxDQotI2RlZmluZSBjb25maWdUSU1FUl9UQVNLX1BSSU9SSVRZCQkoIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApDQotI2RlZmluZSBjb25maWdUSU1FUl9RVUVVRV9MRU5HVEgJCTUNCi0jZGVmaW5lIGNvbmZpZ1RJTUVSX1RBU0tfU1RBQ0tfREVQVEgJKCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgKiAyICkNCi0NCi0vKiBSdW4gdGltZSBzdGF0cyBnYXRoZXJpbmcgZGVmaW5pdGlvbnMuICovDQotdW5zaWduZWQgbG9uZyB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoIHZvaWQgKTsNCi12b2lkIHZDb25maWd1cmVUaW1lckZvclJ1blRpbWVTdGF0cyggdm9pZCApOw0KLSNkZWZpbmUgY29uZmlnR0VORVJBVEVfUlVOX1RJTUVfU1RBVFMJMQ0KLSNkZWZpbmUgcG9ydENPTkZJR1VSRV9USU1FUl9GT1JfUlVOX1RJTUVfU1RBVFMoKSB2Q29uZmlndXJlVGltZXJGb3JSdW5UaW1lU3RhdHMoKQ0KLSNkZWZpbmUgcG9ydEdFVF9SVU5fVElNRV9DT1VOVEVSX1ZBTFVFKCkgdWxHZXRSdW5UaW1lQ291bnRlclZhbHVlKCkNCi0NCi0vKiBDby1yb3V0aW5lIGRlZmluaXRpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnVVNFX0NPX1JPVVRJTkVTIAkJCTANCi0jZGVmaW5lIGNvbmZpZ01BWF9DT19ST1VUSU5FX1BSSU9SSVRJRVMgKCAyICkNCi0NCi0vKiBTZXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyB0byAxIHRvIGluY2x1ZGUgdGhlIEFQSSBmdW5jdGlvbiwgb3IgemVybw0KLXRvIGV4Y2x1ZGUgdGhlIEFQSSBmdW5jdGlvbi4gKi8NCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tQcmlvcml0eVNldAkJCTENCi0jZGVmaW5lIElOQ0xVREVfdXhUYXNrUHJpb3JpdHlHZXQJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsZXRlCQkJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrQ2xlYW5VcFJlc291cmNlcwkJMA0KLSNkZWZpbmUgSU5DTFVERV92VGFza1N1c3BlbmQJCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0RlbGF5VW50aWwJCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0RlbGF5CQkJCQkxDQotI2RlZmluZSBJTkNMVURFX3V4VGFza0dldFN0YWNrSGlnaFdhdGVyTWFyawkxDQotI2RlZmluZSBJTkNMVURFX3hUYXNrR2V0U2NoZWR1bGVyU3RhdGUJCTENCi0jZGVmaW5lIElOQ0xVREVfeFRpbWVyR2V0VGltZXJUYXNrSGFuZGxlCTANCi0jZGVmaW5lIElOQ0xVREVfeFRhc2tHZXRJZGxlVGFza0hhbmRsZQkJMA0KLSNkZWZpbmUgSU5DTFVERV94UXVldWVHZXRNdXRleEhvbGRlcgkJMQ0KLQ0KLS8qIFRoaXMgZGVtbyBtYWtlcyB1c2Ugb2Ygb25lIG9yIG1vcmUgZXhhbXBsZSBzdGF0cyBmb3JtYXR0aW5nIGZ1bmN0aW9ucy4gIFRoZXNlDQotZm9ybWF0IHRoZSByYXcgZGF0YSBwcm92aWRlZCBieSB0aGUgdXhUYXNrR2V0U3lzdGVtU3RhdGUoKSBmdW5jdGlvbiBpbiB0byBodW1hbg0KLXJlYWRhYmxlIEFTQ0lJIGZvcm0uICBTZWUgdGhlIG5vdGVzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB2VGFza0xpc3QoKSB3aXRoaW4gDQotRnJlZVJUT1MvU291cmNlL3Rhc2tzLmMgZm9yIGxpbWl0YXRpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnVVNFX1NUQVRTX0ZPUk1BVFRJTkdfRlVOQ1RJT05TCTENCi0NCi0vKiBBc3NlcnQgY2FsbCBkZWZpbmVkIGZvciBkZWJ1ZyBidWlsZHMuICovDQotI2lmZGVmIF9ERUJVRw0KLQlleHRlcm4gdm9pZCB2QXNzZXJ0Q2FsbGVkKCBjb25zdCBjaGFyICpwY0ZpbGUsIHVuc2lnbmVkIGxvbmcgdWxMaW5lICk7DQotCSNkZWZpbmUgY29uZmlnQVNTRVJUKCB4ICkgaWYoICggeCApID09IDAgKSB2QXNzZXJ0Q2FsbGVkKCBfX0ZJTEVfXywgX19MSU5FX18gKQ0KLSNlbmRpZiAvKiBfREVCVUcgKi8NCi0NCi0NCi0NCi0vKiBBcHBsaWNhdGlvbiBzcGVjaWZpYyBkZWZpbml0aW9ucyBmb2xsb3cuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyogVGhlIFVEUCBwb3J0IHRvIHVzZSBmb3IgaW5jb21pbmcgY29tbWFuZCBpbnB1dHMuICBUaGUgb3V0Z29pbmcgcG9ydCBpcw0KLXNldCB0byAoIGNvbmZpZ1VEUF9DTElfUE9SVF9OVU1CRVIgKyAxICkuICovDQotI2RlZmluZSBjb25maWdVRFBfQ0xJX1BPUlRfTlVNQkVSCTUwMDENCi0NCi0vKiBUaGUgc2l6ZSBvZiB0aGUgZ2xvYmFsIG91dHB1dCBidWZmZXIgdGhhdCBpcyBhdmFpbGFibGUgZm9yIHVzZSB3aGVuIHRoZXJlDQotYXJlIG11bHRpcGxlIGNvbW1hbmQgaW50ZXJwcmV0ZXJzIHJ1bm5pbmcgYXQgb25jZSAoZm9yIGV4YW1wbGUsIG9uZSBvbiBhIFVBUlQNCi1hbmQgb25lIG9uIFRDUC9JUCkuICBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBhbiBvdXRwdXQgYnVmZmVyIGJlaW5nIGRlZmluZWQgYnkNCi1lYWNoIGltcGxlbWVudGF0aW9uIC0gd2hpY2ggd291bGQgd2FzdGUgUkFNLiAgSW4gdGhpcyBjYXNlLCB0aGVyZSBpcyBvbmx5IG9uZQ0KLWNvbW1hbmQgaW50ZXJwcmV0ZXIgcnVubmluZywgYW5kIGl0IGhhcyBpdHMgb3duIGxvY2FsIG91dHB1dCBidWZmZXIsIHNvIHRoZQ0KLWdsb2JhbCBidWZmZXIgaXMganVzdCBzZXQgdG8gYmUgb25lIGJ5dGUgbG9uZyBhcyBpdCBpcyBub3QgdXNlZCBhbmQgc2hvdWxkIG5vdA0KLXRha2UgdXAgdW5uZWNlc3NhcnkgUkFNLiAqLw0KLSNkZWZpbmUgY29uZmlnQ09NTUFORF9JTlRfTUFYX09VVFBVVF9TSVpFIDENCi0NCi0jZW5kaWYgLyogRlJFRVJUT1NfQ09ORklHX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvY29uZmlnX2ZhdF9zbC5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL2NvbmZpZ19mYXRfc2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0NzA3Ny4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvY29uZmlnX2ZhdF9zbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFuIGNvbXBsZW1lbnRhcnkgY29tcG9uZW50IHByb3ZpZGVkIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gKiBMdGQuIGJ5IEhDQyBFbWJlZGRlZCBmb3IgdXNlIHdpdGggRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydCBvZg0KLSAqIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytGQVQgU0wgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwNCi0gKiBsaWNlbnNlIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkDQotICogd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgR05VIEdlbmVyYWwNCi0gKiBQdWJsaWMgbGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHRoaXMgdGV4dC4NCi0gKiBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlIGZvbGxvd2luZw0KLSAqIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyB3aXNoIHRvIGluY29ycG9yYXRlIEZyZWVSVE9TK0ZBVCBTTCBpbnRvDQotICogcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIHJlZGlzdHJpYnV0aW9uIGluIGFueSBmb3JtIG11c3QgZmlyc3Qgb2J0YWluIGENCi0gKiBjb21tZXJjaWFsIGxpY2Vuc2UgLSBhbmQgaW4tc28tZG9pbmcgc3VwcG9ydCB0aGUgbWFpbnRlbmFuY2UsIHN1cHBvcnQgYW5kDQotICogZnVydGhlciBkZXZlbG9wbWVudCBvZiB0aGUgRnJlZVJUT1MrRkFUIFNMIHByb2R1Y3QuICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbg0KLSAqIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzDQotICogdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9DT05GSUdfRkFUX1NMX0gNCi0jZGVmaW5lIF9DT05GSUdfRkFUX1NMX0gNCi0NCi0jaW5jbHVkZSAiLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2luY2x1ZGUgIi4uL2FwaS9hcGlfbWRyaXZlci5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSoqDQotKiogIEZBVCBTTCB1c2VyIHNldHRpbmdzDQotKioNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEZfU0VDVE9SX1NJWkUgICAgICAgICAgIDUxMnUgIC8qIERpc2sgc2VjdG9yIHNpemUuICovDQotI2RlZmluZSBGX0ZTX1RIUkVBRF9BV0FSRSAgICAgICAxICAgICAvKiBTZXQgdG8gb25lIGlmIHRoZSBmaWxlIHN5c3RlbSB3aWxsIGJlIGFjY2VzcyBmcm9tIG1vcmUgdGhhbiBvbmUgdGFzay4gKi8NCi0jZGVmaW5lIEZfTUFYUEFUSCAgICAgICAgICAgICAgIDY0ICAgIC8qIE1heGltdW0gbGVuZ3RoIGEgZmlsZSBuYW1lIChpbmNsdWRpbmcgaXRzIGZ1bGwgcGF0aCkgY2FuIGJlLiAqLw0KLSNkZWZpbmUgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICAgMjAgICAgLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIFJUT1MgdGlja3MgdG8gd2FpdCB3aGVuIGF0dGVtcHRpbmcgdG8gb2J0YWluIGEgbG9jayBvbiB0aGUgZmlsZSBzeXN0ZW0gd2hlbiBGX0ZTX1RIUkVBRF9BV0FSRSBpcyBzZXQgdG8gMS4gKi8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIF9DT05GSUdfRkFUX1NMX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvY29uZmlnX2ZhdF9zbF90ZXN0LmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvY29uZmlnX2ZhdF9zbF90ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTZmOTMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL2NvbmZpZ19mYXRfc2xfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFuIGNvbXBsZW1lbnRhcnkgY29tcG9uZW50IHByb3ZpZGVkIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gKiBMdGQuIGJ5IEhDQyBFbWJlZGRlZCBmb3IgdXNlIHdpdGggRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydCBvZg0KLSAqIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytGQVQgU0wgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwNCi0gKiBsaWNlbnNlIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkDQotICogd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgR05VIEdlbmVyYWwNCi0gKiBQdWJsaWMgbGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHRoaXMgdGV4dC4NCi0gKiBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlIGZvbGxvd2luZw0KLSAqIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyB3aXNoIHRvIGluY29ycG9yYXRlIEZyZWVSVE9TK0ZBVCBTTCBpbnRvDQotICogcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIHJlZGlzdHJpYnV0aW9uIGluIGFueSBmb3JtIG11c3QgZmlyc3Qgb2J0YWluIGENCi0gKiBjb21tZXJjaWFsIGxpY2Vuc2UgLSBhbmQgaW4tc28tZG9pbmcgc3VwcG9ydCB0aGUgbWFpbnRlbmFuY2UsIHN1cHBvcnQgYW5kDQotICogZnVydGhlciBkZXZlbG9wbWVudCBvZiB0aGUgRnJlZVJUT1MrRkFUIFNMIHByb2R1Y3QuICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbg0KLSAqIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzDQotICogdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9DT05GSUdfRkFUX1NMX1RFU1RfSA0KLSNkZWZpbmUgX0NPTkZJR19GQVRfU0xfVEVTVF9IDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLQ0KLS8qDQotKiogTWF4aW11bSBzaXplIGZvciBzZWVrIHRlc3QuDQotKiogT3B0aW9uczogMTI4LCAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsIDMyNzY4DQotKi8NCi0jZGVmaW5lIEZfTUFYX1NFRUtfVEVTVCAxNjM4NA0KLQ0KLQ0KLS8qDQotKiogRGVmaW5lcyBtZWRpYSB0eXBlIGZvciB0ZXN0aW5nLg0KLSoqIE9wdGlvbnM6IEZfRkFUMTJfTUVESUEsIEZfRkFUMTZfTUVESUEsIEZfRkFUMzJfTUVESUENCi0qLw0KLSNkZWZpbmUgRl9GQVRfVFlQRSAgICAgIEZfRkFUMTZfTUVESUENCi0NCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9DT05GSUdfU1RISU5fVEVTVF9IICovDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL2NvbmZpZ19tZHJpdmVyX3JhbS5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL2NvbmZpZ19tZHJpdmVyX3JhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWYyMDE4Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0NvbmZpZ3VyYXRpb25GaWxlcy9jb25maWdfbWRyaXZlcl9yYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbiBjb21wbGVtZW50YXJ5IGNvbXBvbmVudCBwcm92aWRlZCB0byBSZWFsIFRpbWUgRW5naW5lZXJzDQotICogTHRkLiBieSBIQ0MgRW1iZWRkZWQgZm9yIHVzZSB3aXRoIEZyZWVSVE9TLiAgSXQgaXMgbm90LCBpbiBpdHNlbGYsIHBhcnQgb2YNCi0gKiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgRnJlZVJUT1MrRkFUIFNMIGlzIGxpY2Vuc2VkIHNlcGFyYXRlbHkgZnJvbSBGcmVlUlRPUywNCi0gKiBhbmQgdXNlcyBhIGRpZmZlcmVudCBsaWNlbnNlIHRvIEZyZWVSVE9TLiAgRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsDQotICogbGljZW5zZSBtb2RlbCwgaW5mb3JtYXRpb24gb24gd2hpY2ggaXMgcHJvdmlkZWQgYmVsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytGQVQgU0wgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogY29tbWVyY2lhbCBsaWNlbnNlIC0gYW5kIGluLXNvLWRvaW5nIHN1cHBvcnQgdGhlIG1haW50ZW5hbmNlLCBzdXBwb3J0IGFuZA0KLSAqIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhlIEZyZWVSVE9TK0ZBVCBTTCBwcm9kdWN0LiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4NCi0gKiBiZSBvYnRhaW5lZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZyBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcw0KLSAqIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotI2RlZmluZSBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX21kcml2ZXJfcmFtLmgiDQotI2lmIFZFUl9NRFJJVkVSX1JBTV9NQUpPUiAhPSAxIHx8IFZFUl9NRFJJVkVSX1JBTV9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgTURSSVZFUl9SQU0gdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2RlZmluZSBNRFJJVkVSX1JBTV9TRUNUT1JfU0laRSAgIDUxMiAgICAgICAvKiBTZWN0b3Igc2l6ZSAqLw0KLQ0KLSNkZWZpbmUgTURSSVZFUl9SQU1fVk9MVU1FMF9TSVpFICAoMTI4ICogMTAyNCkgLyogZGVmaW50aW9uIGZvciBzaXplIG9mIHJhbWRyaXZlMCAqLw0KLQ0KLSNkZWZpbmUgTURSSVZFUl9NRU1fTE9OR19BQ0NFU1MgICAxICAgICAgICAgLyogc2V0IHRoaXMgdmFsdWUgdG8gMSBpZiAzMmJpdCBhY2Nlc3MgYXZhaWxhYmxlICovDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfQ09ORklHX01EUklWRVJfUkFNX0hfICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1SZWxlYXRlZC1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZpbGUtUmVsZWF0ZWQtQ0xJLWNvbW1hbmRzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNjUzYjMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1SZWxlYXRlZC1DTEktY29tbWFuZHMuYworKysgL2Rldi9udWxsCkBAIC0xLDYxNCArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RkbGliLmg+DQotDQotLyogRnJlZVJUT1MrQ0xJIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmF0X3NsLmgiDQotI2luY2x1ZGUgImFwaV9tZHJpdmVyX3JhbS5oIg0KLSNpbmNsdWRlICJ0ZXN0LmgiDQotDQotI2lmZGVmIF9XSU5ET1dTXw0KLQkjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50Zg0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgY2xpTkVXX0xJTkUJCSJcclxuIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogU2VlIHRoZSBVUkwgaW4gdGhlIGNvbW1lbnRzIHdpdGhpbiBtYWluLmMgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUgb25saW5lDQotICogZG9jdW1lbnRhdGlvbi4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qDQotICogUHJpbnQgb3V0IGluZm9ybWF0aW9uIG9uIGEgc2luZ2xlIGZpbGUuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIGNoYXIgKnBjQnVmZmVyLCBGX0ZJTkQgKnB4RmluZFN0cnVjdCApOw0KLQ0KLS8qDQotICogQ29waWVzIGFuIGV4aXN0aW5nIGZpbGUgaW50byBhIG5ld2x5IGNyZWF0ZWQgZmlsZS4NCi0gKi8NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZQZXJmb3JtQ29weSggY29uc3QgY2hhciAqcGNTb3VyY2VGaWxlLA0KLQkJCQkJCQlpbnQzMl90IGxTb3VyY2VGaWxlTGVuZ3RoLA0KLQkJCQkJCQljb25zdCBjaGFyICpwY0Rlc3RpbmF0aW9uRmlsZSwNCi0JCQkJCQkJY2hhciAqcHhXcml0ZUJ1ZmZlciwNCi0JCQkJCQkJc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgRElSIGNvbW1hbmQuDQotICovDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2RElSQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBDRCBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBCYXNlVHlwZV90IHBydkNEQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBERUwgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZERUxDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIFRZUEUgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZUWVBFQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBDT1BZIGNvbW1hbmQuDQotICovDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2Q09QWUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgVEVTVCBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBCYXNlVHlwZV90IHBydlRFU1RGU0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIERJUiBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggbGlzdHMgYWxsIHRoZQ0KLWZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhESVIgPQ0KLXsNCi0JImRpciIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRpcjpcclxuIExpc3RzIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcclxuIiwNCi0JcHJ2RElSQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENEIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBjaGFuZ2VzIHRoZQ0KLXdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENEID0NCi17DQotCSJjZCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmNkIDxkaXIgbmFtZT46XHJcbiBDaGFuZ2VzIHRoZSB3b3JraW5nIGRpcmVjdG9yeVxyXG4iLA0KLQlwcnZDRENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIFRZUEUgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIHByaW50cyB0aGUNCi1jb250ZW50cyBvZiBhIGZpbGUgdG8gdGhlIGNvbnNvbGUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VFlQRSA9DQotew0KLQkidHlwZSIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnR5cGUgPGZpbGVuYW1lPjpcclxuIFByaW50cyBmaWxlIGNvbnRlbnRzIHRvIHRoZSB0ZXJtaW5hbFxyXG4iLA0KLQlwcnZUWVBFQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgREVMIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBkZWxldGVzIGEgZmlsZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhERUwgPQ0KLXsNCi0JImRlbCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRlbCA8ZmlsZW5hbWU+OlxyXG4gZGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5XHJcbiIsDQotCXBydkRFTENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENPUFkgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGRlbGV0ZXMgYSBmaWxlLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENPUFkgPQ0KLXsNCi0JImNvcHkiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5jb3B5IDxzb3VyY2UgZmlsZT4gPGRlc3QgZmlsZT46XHJcbiBDb3BpZXMgPHNvdXJjZSBmaWxlPiB0byA8ZGVzdCBmaWxlPlxyXG4iLA0KLQlwcnZDT1BZQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMiAvKiBUd28gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBURVNUIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBleGVjdXRlcyBzb21lDQotZmlsZSBzeXN0ZW0gZHJpdmVyIHRlc3RzLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRFU1RfRlMgPQ0KLXsNCi0JInRlc3QtZnMiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG50ZXN0LWZzOlxyXG4gRXhlY3V0ZXMgZmlsZSBzeXN0ZW0gdGVzdHMuICBBTEwgRklMRVMgV0lMTCBCRSBERUxFVEVEISEhXHJcbiIsDQotCXBydlRFU1RGU0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTAgLyogTm8gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApDQotew0KLQkvKiBSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmQgbGluZSBjb21tYW5kcyBkZWZpbmVkIGltbWVkaWF0ZWx5IGFib3ZlLiAqLw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4RElSICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDRCApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VFlQRSApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4REVMICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDT1BZICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhURVNUX0ZTICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBCYXNlVHlwZV90IHBydlRZUEVDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1CYXNlVHlwZV90IHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgsIHhSZXR1cm4gPSBwZFRSVUU7DQotc3RhdGljIEZfRklMRSAqcHhGaWxlID0gTlVMTDsNCi1pbnQgaUNoYXI7DQotc2l6ZV90IHhCeXRlOw0KLXNpemVfdCB4Q29sdW1ucyA9IDUwVTsNCi0NCi0JLyogRW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBhIG51bGwgdGVybWluYXRvciBhZnRlciBlYWNoIGNoYXJhY3RlciB3cml0dGVuLiAqLw0KLQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQ0KLQkvKiBFbnN1cmUgdGhlIGJ1ZmZlciBsZWF2ZXMgc3BhY2UgZm9yIHRoZSBcclxuLiAqLw0KLQljb25maWdBU1NFUlQoIHhXcml0ZUJ1ZmZlckxlbiA+ICggc3RybGVuKCBjbGlORVdfTElORSApICogMiApICk7DQotCXhXcml0ZUJ1ZmZlckxlbiAtPSBzdHJsZW4oIGNsaU5FV19MSU5FICk7DQotDQotCWlmKCB4V3JpdGVCdWZmZXJMZW4gPCB4Q29sdW1ucyApDQotCXsNCi0JCS8qIEVuc3VyZSB0aGUgbG9vcCB0aGF0IHVzZXMgeENvbHVtbnMgYXMgYW4gZW5kIGNvbmRpdGlvbiBkb2VzIG5vdA0KLQkJd3JpdGUgb2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4gKi8NCi0JCXhDb2x1bW5zID0geFdyaXRlQnVmZmVyTGVuOw0KLQl9DQotDQotCWlmKCBweEZpbGUgPT0gTlVMTCApDQotCXsNCi0JCS8qIFRoZSBmaWxlIGhhcyBub3QgYmVlbiBvcGVuZWQgeWV0LiAgRmluZCB0aGUgZmlsZSBuYW1lLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBBdHRlbXB0IHRvIG9wZW4gdGhlIHJlcXVlc3RlZCBmaWxlLiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBwY1BhcmFtZXRlciwgInIiICk7DQotCX0NCi0NCi0JaWYoIHB4RmlsZSAhPSBOVUxMICkNCi0Jew0KLQkJLyogUmVhZCB0aGUgbmV4dCBjaHVuayBvZiBkYXRhIGZyb20gdGhlIGZpbGUuICovDQotCQlmb3IoIHhCeXRlID0gMDsgeEJ5dGUgPCB4Q29sdW1uczsgeEJ5dGUrKyApDQotCQl7DQotCQkJaUNoYXIgPSBmX2dldGMoIHB4RmlsZSApOw0KLQ0KLQkJCWlmKCBpQ2hhciA9PSAtMSApDQotCQkJew0KLQkJCQkvKiBObyBtb3JlIGNoYXJhY3RlcnMgdG8gcmV0dXJuLiAqLw0KLQkJCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JCQkJcHhGaWxlID0gTlVMTDsNCi0JCQkJYnJlYWs7DQotCQkJfQ0KLQkJCWVsc2UNCi0JCQl7DQotCQkJCXBjV3JpdGVCdWZmZXJbIHhCeXRlIF0gPSAoIGNoYXIgKSBpQ2hhcjsNCi0JCQl9DQotCQl9DQotCX0NCi0NCi0JaWYoIHB4RmlsZSA9PSBOVUxMICkNCi0Jew0KLQkJLyogRWl0aGVyIHRoZSBmaWxlIHdhcyBub3Qgb3BlbmVkLCBvciBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZSBoYXMNCi0JCWJlZW4gcmV0dXJuZWQgYW5kIHRoZSBmaWxlIGlzIG5vdyBjbG9zZWQuICovDQotCQl4UmV0dXJuID0gcGRGQUxTRTsNCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZDRENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLUJhc2VUeXBlX3QgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuZWQ7DQotc2l6ZV90IHhTdHJpbmdMZW5ndGg7DQotDQotCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCSgNCi0JCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBtb3ZlIHRvIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybmVkID0gZl9jaGRpciggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJJbjogIiApOw0KLQkJeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggcGNXcml0ZUJ1ZmZlciApOw0KLQkJZl9nZXRjd2QoICYoIHBjV3JpdGVCdWZmZXJbIHhTdHJpbmdMZW5ndGggXSApLCAoIHVuc2lnbmVkIGNoYXIgKSAoIHhXcml0ZUJ1ZmZlckxlbiAtIHhTdHJpbmdMZW5ndGggKSApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yIiApOw0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBCYXNlVHlwZV90IHBydkRJUkNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLXN0YXRpYyBGX0ZJTkQgKnB4RmluZFN0cnVjdCA9IE5VTEw7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLUJhc2VUeXBlX3QgeFJldHVybiA9IHBkRkFMU0U7DQotDQotCS8qIFRoaXMgYXNzdW1lcyBwY1dyaXRlQnVmZmVyIGlzIGxvbmcgZW5vdWdoLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotDQotCS8qIEVuc3VyZSB0aGUgYnVmZmVyIGxlYXZlcyBzcGFjZSBmb3IgdGhlIFxyXG4uICovDQotCWNvbmZpZ0FTU0VSVCggeFdyaXRlQnVmZmVyTGVuID4gKCBzdHJsZW4oIGNsaU5FV19MSU5FICkgKiAyICkgKTsNCi0JeFdyaXRlQnVmZmVyTGVuIC09IHN0cmxlbiggY2xpTkVXX0xJTkUgKTsNCi0NCi0JaWYoIHB4RmluZFN0cnVjdCA9PSBOVUxMICkNCi0Jew0KLQkJLyogVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkIHNpbmNlIHRoZSBEaXINCi0JCWNvbW1hbmQgd2FzIHJ1bi4gIENyZWF0ZSB0aGUgZmluZCBzdHJ1Y3R1cmUuICovDQotCQlweEZpbmRTdHJ1Y3QgPSAoIEZfRklORCAqICkgcHZQb3J0TWFsbG9jKCBzaXplb2YoIEZfRklORCApICk7DQotDQotCQlpZiggcHhGaW5kU3RydWN0ICE9IE5VTEwgKQ0KLQkJew0KLQkJCXVjUmV0dXJuZWQgPSBmX2ZpbmRmaXJzdCggIiouKiIsIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQkJCXsNCi0JCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCQl4UmV0dXJuID0gcGRQQVNTOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlzbnByaW50ZiggcGNXcml0ZUJ1ZmZlciwgeFdyaXRlQnVmZmVyTGVuLCAiRXJyb3I6IGZfZmluZGZpcnN0KCkgZmFpbGVkLiIgKTsNCi0JCQl9DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc25wcmludGYoIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBSQU0gKHVzaW5nIGhlYXBfNC5jIHdpbGwgcHJldmVudCBmcmFnbWVudGF0aW9uKS4iICk7DQotCQl9DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBUaGUgZmluZCBzdHJ1Y3QgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLiAgRmluZCB0aGUgbmV4dCBmaWxlIGluDQotCQl0aGUgZGlyZWN0b3J5LiAqLw0KLQkJdWNSZXR1cm5lZCA9IGZfZmluZG5leHQoIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCQl7DQotCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCXhSZXR1cm4gPSBwZFBBU1M7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJLyogVGhlcmUgYXJlIG5vIG1vcmUgZmlsZXMuICBGcmVlIHRoZSBmaW5kIHN0cnVjdHVyZS4gKi8NCi0JCQl2UG9ydEZyZWUoIHB4RmluZFN0cnVjdCApOw0KLQkJCXB4RmluZFN0cnVjdCA9IE5VTEw7DQotDQotCQkJLyogTm8gc3RyaW5nIHRvIHJldHVybi4gKi8NCi0JCQlwY1dyaXRlQnVmZmVyWyAwIF0gPSAweDAwOw0KLQkJfQ0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBCYXNlVHlwZV90IHBydkRFTENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLUJhc2VUeXBlX3QgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuZWQ7DQotDQotCS8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB4V3JpdGVCdWZmZXJMZW4gaXMgbGFyZ2UgZW5vdWdoISAqLw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotDQotCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCSgNCi0JCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBkZWxldGUgdGhlIGZpbGUuICovDQotCXVjUmV0dXJuZWQgPSBmX2RlbGV0ZSggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlcyB3YXMgZGVsZXRlZCIsIHBjUGFyYW1ldGVyICk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3IiICk7DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2VEVTVEZTQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotVUJhc2VUeXBlX3QgdXhPcmlnaW5hbFByaW9yaXR5Ow0KLQ0KLQkvKiBBdm9pZCBjb21waWxlciB3YXJuaW5ncy4gKi8NCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotDQotCS8qIExpbWl0YXRpb25zIGluIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBXaW5kb3dzIFRDUC9JUCBzdGFjayByZXF1aXJlDQotCXRoZSBjb21tYW5kIGNvbnNvbGUgdG8gcnVuIGF0IHRoZSBpZGxlIHByaW9yaXR5LiAgUmFpc2UgdGhlIHByaW9yaXR5IGZvcg0KLQl0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3RzIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm90IG11bHRpcGxlIHN3aXRjaGVzIHRvIHRoZQ0KLQlpZGxlIHRhc2sgYXMgaW4gdGhlIHNpbXVsYXRlZCBlbnZpcm9ubWVudCB0aGUgaWRsZSB0YXNrIGhvb2sgZnVuY3Rpb24gbWF5DQotCWluY2x1ZGUgYSAocmVsYXRpdmVseSkgbG9uZyBkZWxheS4gKi8NCi0JdXhPcmlnaW5hbFByaW9yaXR5ID0gdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKTsNCi0JdlRhc2tQcmlvcml0eVNldCggTlVMTCwgY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAxICk7DQotDQotCWZfZG90ZXN0KCAwICk7DQotDQotCS8qIFJlc2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHByaW9yaXR5LiAqLw0KLQl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCB1eE9yaWdpbmFsUHJpb3JpdHkgKTsNCi0NCi0Jc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVzIiwgIlRlc3QgcmVzdWx0cyB3ZXJlIHNlbnQgdG8gV2luZG93cyBjb25zb2xlIiApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2Q09QWUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNoYXIgKnBjU291cmNlRmlsZTsNCi1jb25zdCBjaGFyICpwY0Rlc3RpbmF0aW9uRmlsZTsNCi1CYXNlVHlwZV90IHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotbG9uZyBsU291cmNlTGVuZ3RoLCBsRGVzdGluYXRpb25MZW5ndGggPSAwOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIGZpbGUuICovDQotCXBjRGVzdGluYXRpb25GaWxlID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkyLAkJCQkJCS8qIFJldHVybiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCSk7DQotDQotCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQljb25maWdBU1NFUlQoIHBjRGVzdGluYXRpb25GaWxlICk7DQotDQotCS8qIE9idGFpbiB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuICovDQotCXBjU291cmNlRmlsZSA9ICggY2hhciAqICkgRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCQkoDQotCQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJCSk7DQotDQotCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQljb25maWdBU1NFUlQoIHBjU291cmNlRmlsZSApOw0KLQ0KLQkvKiBUZXJtaW5hdGUgdGhlIHN0cmluZy4gKi8NCi0JcGNTb3VyY2VGaWxlWyB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoIF0gPSAweDAwOw0KLQ0KLQkvKiBTZWUgaWYgdGhlIHNvdXJjZSBmaWxlIGV4aXN0cywgb2J0YWluIGl0cyBsZW5ndGggaWYgaXQgZG9lcy4gKi8NCi0JbFNvdXJjZUxlbmd0aCA9IGZfZmlsZWxlbmd0aCggcGNTb3VyY2VGaWxlICk7DQotDQotCWlmKCBsU291cmNlTGVuZ3RoID09IDAgKQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiU291cmNlIGZpbGUgZG9lcyBub3QgZXhpc3QiICk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBTZWUgaWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgZXhpc3RzLiAqLw0KLQkJbERlc3RpbmF0aW9uTGVuZ3RoID0gZl9maWxlbGVuZ3RoKCBwY0Rlc3RpbmF0aW9uRmlsZSApOw0KLQ0KLQkJaWYoIGxEZXN0aW5hdGlvbkxlbmd0aCAhPSAwICkNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3I6IERlc3RpbmF0aW9uIGZpbGUgYWxyZWFkeSBleGlzdHMiICk7DQotCQl9DQotCX0NCi0NCi0JLyogQ29udGludWUgb25seSBpZiB0aGUgc291cmNlIGZpbGUgZXhpc3RzIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBkb2VzDQotCW5vdCBleGlzdC4gKi8NCi0JaWYoICggbFNvdXJjZUxlbmd0aCAhPSAwICkgJiYgKCBsRGVzdGluYXRpb25MZW5ndGggPT0gMCApICkNCi0Jew0KLQkJaWYoIHBydlBlcmZvcm1Db3B5KCBwY1NvdXJjZUZpbGUsIGxTb3VyY2VMZW5ndGgsIHBjRGVzdGluYXRpb25GaWxlLCBwY1dyaXRlQnVmZmVyLCB4V3JpdGVCdWZmZXJMZW4gKSA9PSBwZFBBU1MgKQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJDb3B5IG1hZGUiICk7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yIGR1cmluZyBjb3B5IiApOw0KLQkJfQ0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBCYXNlVHlwZV90IHBydlBlcmZvcm1Db3B5KCBjb25zdCBjaGFyICpwY1NvdXJjZUZpbGUsDQotCQkJCQkJCQkJaW50MzJfdCBsU291cmNlRmlsZUxlbmd0aCwNCi0JCQkJCQkJCQljb25zdCBjaGFyICpwY0Rlc3RpbmF0aW9uRmlsZSwNCi0JCQkJCQkJCQljaGFyICpweFdyaXRlQnVmZmVyLA0KLQkJCQkJCQkJCXNpemVfdCB4V3JpdGVCdWZmZXJMZW4gKQ0KLXsNCi1pbnQzMl90IGxCeXRlc1JlYWQgPSAwLCBsQnl0ZXNUb1JlYWQsIGxCeXRlc1JlbWFpbmluZzsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1CYXNlVHlwZV90IHhSZXR1cm4gPSBwZFBBU1M7DQotDQotCS8qIE5PVEU6ICBFcnJvciBoYW5kbGluZyBoYXMgYmVlbiBvbWl0dGVkIGZvciBjbGFyaXR5LiAqLw0KLQ0KLQl3aGlsZSggbEJ5dGVzUmVhZCA8IGxTb3VyY2VGaWxlTGVuZ3RoICkNCi0Jew0KLQkJLyogSG93IG1hbnkgYnl0ZXMgYXJlIGxlZnQ/ICovDQotCQlsQnl0ZXNSZW1haW5pbmcgPSBsU291cmNlRmlsZUxlbmd0aCAtIGxCeXRlc1JlYWQ7DQotDQotCQkvKiBIb3cgbWFueSBieXRlcyBzaG91bGQgYmUgcmVhZCB0aGlzIHRpbWUgYXJvdW5kIHRoZSBsb29wLiAgQ2FuJ3QNCi0JCXJlYWQgbW9yZSBieXRlcyB0aGFuIHdpbGwgZml0IGludG8gdGhlIGJ1ZmZlci4gKi8NCi0JCWlmKCBsQnl0ZXNSZW1haW5pbmcgPiAoIGxvbmcgKSB4V3JpdGVCdWZmZXJMZW4gKQ0KLQkJew0KLQkJCWxCeXRlc1RvUmVhZCA9ICggbG9uZyApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlsQnl0ZXNUb1JlYWQgPSBsQnl0ZXNSZW1haW5pbmc7DQotCQl9DQotDQotCQkvKiBPcGVuIHRoZSBzb3VyY2UgZmlsZSwgc2VlayBwYXN0IHRoZSBkYXRhIHRoYXQgaGFzIGFscmVhZHkgYmVlbg0KLQkJcmVhZCBmcm9tIHRoZSBmaWxlLCByZWFkIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEsIHRoZW4gY2xvc2UgdGhlDQotCQlmaWxlIGFnYWluIHNvIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGNhbiBiZSBvcGVuZWQuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjU291cmNlRmlsZSwgInIiICk7DQotCQlpZiggcHhGaWxlICE9IE5VTEwgKQ0KLQkJew0KLQkJCWZfc2VlayggcHhGaWxlLCBsQnl0ZXNSZWFkLCBGX1NFRUtfU0VUICk7DQotCQkJZl9yZWFkKCBweFdyaXRlQnVmZmVyLCBsQnl0ZXNUb1JlYWQsIDEsIHB4RmlsZSApOw0KLQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXhSZXR1cm4gPSBwZEZBSUw7DQotCQkJYnJlYWs7DQotCQl9DQotDQotCQkvKiBPcGVuIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGFuZCB3cml0ZSB0aGUgYmxvY2sgb2YgZGF0YSB0byB0aGUgZW5kIG9mDQotCQl0aGUgZmlsZS4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggcGNEZXN0aW5hdGlvbkZpbGUsICJhIiApOw0KLQkJaWYoIHB4RmlsZSAhPSBOVUxMICkNCi0JCXsNCi0JCQlmX3dyaXRlKCBweFdyaXRlQnVmZmVyLCBsQnl0ZXNUb1JlYWQsIDEsIHB4RmlsZSApOw0KLQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXhSZXR1cm4gPSBwZEZBSUw7DQotCQkJYnJlYWs7DQotCQl9DQotDQotCQlsQnl0ZXNSZWFkICs9IGxCeXRlc1RvUmVhZDsNCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIGNoYXIgKnBjQnVmZmVyLCBGX0ZJTkQgKnB4RmluZFN0cnVjdCApDQotew0KLWNvbnN0IGNoYXIgKnBjV3JpdGFibGVGaWxlID0gIndyaXRhYmxlIGZpbGUiLCAqcGNSZWFkT25seUZpbGUgPSAicmVhZCBvbmx5IGZpbGUiLCAqcGNEaXJlY3RvcnkgPSAiZGlyZWN0b3J5IjsNCi1jb25zdCBjaGFyICogcGNBdHRyaWI7DQotDQotCS8qIFBvaW50IHBjQXR0cmliIHRvIGEgc3RyaW5nIHRoYXQgZGVzY3JpYmVzIHRoZSBmaWxlLiAqLw0KLQlpZiggKCBweEZpbmRTdHJ1Y3QtPmF0dHIgJiBGX0FUVFJfRElSICkgIT0gMCApDQotCXsNCi0JCXBjQXR0cmliID0gcGNEaXJlY3Rvcnk7DQotCX0NCi0JZWxzZSBpZiggcHhGaW5kU3RydWN0LT5hdHRyICYgRl9BVFRSX1JFQURPTkxZICkNCi0Jew0KLQkJcGNBdHRyaWIgPSBwY1JlYWRPbmx5RmlsZTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXBjQXR0cmliID0gcGNXcml0YWJsZUZpbGU7DQotCX0NCi0NCi0JLyogQ3JlYXRlIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZpbGUgbmFtZSwgdGhlIGZpbGUgc2l6ZSBhbmQgdGhlDQotCWF0dHJpYnV0ZXMgc3RyaW5nLiAqLw0KLQlzcHJpbnRmKCBwY0J1ZmZlciwgIiVzIFslc10gW3NpemU9JWRdIiwgcHhGaW5kU3RydWN0LT5maWxlbmFtZSwgcGNBdHRyaWIsIHB4RmluZFN0cnVjdC0+ZmlsZXNpemUgKTsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1zeXN0ZW0tZGVtby5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1zeXN0ZW0tZGVtby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzhiMDBmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZpbGUtc3lzdGVtLWRlbW8uYworKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFNlZSB0aGUgVVJMIGluIHRoZSBjb21tZW50cyB3aXRoaW4gbWFpbi5jIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZQ0KLSAqIGRvY3VtZW50YXRpb24uDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmF0X3NsLmgiDQotI2luY2x1ZGUgImFwaV9tZHJpdmVyX3JhbS5oIg0KLQ0KLS8qIDguMyBmb3JtYXQsIHBsdXMgbnVsbCB0ZXJtaW5hdG9yLiAqLw0KLSNkZWZpbmUgZnNNQVhfRklMRV9OQU1FX0xFTgkJCQkxMw0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC93cml0dGVuIHRvIHRoZSBleGFtcGxlIGZpbGVzIGF0IGEgdGltZS4gKi8NCi0jZGVmaW5lIGZzUkFNX0JVRkZFUl9TSVpFIAkJCQkyMDANCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGZpbGUgdGhhdCB1c2VzIGZfcHV0YygpIGFuZCBmX2dldGMoKS4gKi8NCi0jZGVmaW5lIGZzUFVUQ19GSUxFX1NJWkUJCQkJMTAwDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBDcmVhdGVzIGFuZCB2ZXJpZmllcyBkaWZmZXJlbnQgZmlsZXMgb24gdGhlIHZvbHVtZSwgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mDQotICogdmFyaW91cyBkaWZmZXJlbnQgQVBJIGZ1bmN0aW9ucy4NCi0gKi8NCi12b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGEgc2V0IG9mIGV4YW1wbGUgZmlsZXMgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSB2b2x1bWUgdXNpbmcNCi0gKiBmX3dyaXRlKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSggdm9pZCApOw0KLQ0KLS8qDQotICogVXNlIGZfcmVhZCgpIHRvIHJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlcyB0aGF0IHdlcmUgY3JlYXRlZCBieQ0KLSAqIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfcmVhZCggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGFuIGV4YW1wbGUgZmlsZSBpbiBhIHN1Yi1kaXJlY3RvcnkgdXNpbmcgZl9wdXRjKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIFVzZSBmX2dldGMoKSB0byByZWFkIGJhY2sgYW5kIHZlcmlmeSB0aGUgZmlsZSB0aGF0IHdhcyBjcmVhdGVkIGJ5DQotICogcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0Yyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIEEgYnVmZmVyIHVzZWQgdG8gYm90aCBjcmVhdGUgY29udGVudCB0byB3cml0ZSB0byBkaXNrLCBhbmQgcmVhZCBjb250ZW50IGJhY2sNCi1mcm9tIGEgZGlzay4gIE5vdGUgdGhlcmUgaXMgbm8gbXV0dWFsIGV4Y2x1c2lvbiBvbiB0aGlzIGJ1ZmZlci4gKi8NCi1zdGF0aWMgY2hhciBjUkFNQnVmZmVyWyBmc1JBTV9CVUZGRVJfU0laRSBdOw0KLQ0KLS8qIE5hbWVzIG9mIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGNyZWF0ZWQuICovDQotc3RhdGljIGNvbnN0IGNoYXIgKnBjUm9vdCA9ICIvIiwgKnBjRGlyZWN0b3J5MSA9ICJTVUIxIiwgKnBjRGlyZWN0b3J5MiA9ICJTVUIyIiwgKnBjRnVsbFBhdGggPSAiL1NVQjEvU1VCMiI7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjU3RhdHVzOw0KLQ0KLQkvKiBGaXJzdCBjcmVhdGUgdGhlIHZvbHVtZS4gKi8NCi0JdWNTdGF0dXMgPSBmX2luaXR2b2x1bWUoIHJhbV9pbml0ZnVuYyApOw0KLQ0KLQkvKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSB2b2x1bWUgaXMgbm90IGZvcm1hdHRlZC4gKi8NCi0JaWYoIHVjU3RhdHVzID09IEZfRVJSX05PVEZPUk1BVFRFRCApDQotCXsNCi0JCS8qIEZvcm1hdCB0aGUgY3JlYXRlZCB2b2x1bWUuICovDQotCQl1Y1N0YXR1cyA9IGZfZm9ybWF0KCBGX0ZBVDEyX01FRElBICk7DQotCX0NCi0NCi0JaWYoIHVjU3RhdHVzID09IEZfTk9fRVJST1IgKQ0KLQl7DQotCQkvKiBDcmVhdGUgYSBzZXQgb2YgZmlsZXMgdXNpbmcgZl93cml0ZSgpLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpOw0KLQ0KLQkJLyogUmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIHVzaW5nIGZfd3JpdGUoKS4gKi8NCi0JCXBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCk7DQotDQotCQkvKiBDcmVhdGUgc3ViIGRpcmVjdG9yaWVzIHR3byBkZWVwIHRoZW4gY3JlYXRlIGEgZmlsZSB1c2luZyBwdXRjLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKTsNCi0NCi0JCS8qIFJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlIGNyZWF0ZWQgYnkNCi0JCXBydkNyZWF0ZURlbW9GaWxlVXNpbmdfZl9wdXRjKCkuICovDQotCQlwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0YygpOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoIHZvaWQgKQ0KLXsNCi1CYXNlVHlwZV90IHhGaWxlTnVtYmVyLCB4V3JpdGVOdW1iZXI7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi1jb25zdCBCYXNlVHlwZV90IHhNYXhGaWxlcyA9IDU7DQotbG9uZyBsSXRlbXNXcml0dGVuOw0KLUZfRklMRSAqcHhGaWxlOw0KLQ0KLQkvKiBDcmVhdGUgeE1heEZpbGVzIGZpbGVzLiAgRWFjaCBjcmVhdGVkIGZpbGUgd2lsbCBiZQ0KLQkoIHhGaWxlTnVtYmVyICogZnNSQU1fQlVGRkVSX1NJWkUgKSBieXRlcyBpbiBsZW5ndGgsIGFuZCBmaWxsZWQNCi0Jd2l0aCBhIGRpZmZlcmVudCByZXBlYXRpbmcgY2hhcmFjdGVyLiAqLw0KLQlmb3IoIHhGaWxlTnVtYmVyID0gMTsgeEZpbGVOdW1iZXIgPD0geE1heEZpbGVzOyB4RmlsZU51bWJlcisrICkNCi0Jew0KLQkJLyogR2VuZXJhdGUgYSBmaWxlIG5hbWUuICovDQotCQlzcHJpbnRmKCBjRmlsZU5hbWUsICJyb290JTAzZC50eHQiLCB4RmlsZU51bWJlciApOw0KLQ0KLQkJLyogT2J0YWluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBwcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQNCi0JCXRoZQlkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgZmlsZSBpcyBiZWluZyB3cml0dGVuLiAqLw0KLQkJZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCQlwcmludGYoICJDcmVhdGluZyBmaWxlICVzIGluICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkJLyogT3BlbiB0aGUgZmlsZSwgY3JlYXRpbmcgdGhlIGZpbGUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAidyIgKTsNCi0JCWNvbmZpZ0FTU0VSVCggcHhGaWxlICk7DQotDQotCQkvKiBGaWxsIHRoZSBSQU0gYnVmZmVyIHdpdGggZGF0YSB0aGF0IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4gIFRoaXMNCi0JCWlzIGp1c3QgYSByZXBlYXRpbmcgYXNjaWkgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoZSBmaWxlIG51bWJlci4gKi8NCi0JCW1lbXNldCggY1JBTUJ1ZmZlciwgKCBpbnQgKSAoICcwJyArIHhGaWxlTnVtYmVyICksIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotDQotCQkvKiBXcml0ZSB0aGUgUkFNIGJ1ZmZlciB0byB0aGUgb3BlbmVkIGZpbGUgYSBudW1iZXIgb2YgdGltZXMuICBUaGUNCi0JCW51bWJlciBvZiB0aW1lcyB0aGUgUkFNIGJ1ZmZlciBpcyB3cml0dGVuIHRvIHRoZSBmaWxlIGRlcGVuZHMgb24gdGhlDQotCQlmaWxlIG51bWJlciwgc28gdGhlIGxlbmd0aCBvZiBlYWNoIGNyZWF0ZWQgZmlsZSB3aWxsIGJlIGRpZmZlcmVudC4gKi8NCi0JCWZvciggeFdyaXRlTnVtYmVyID0gMDsgeFdyaXRlTnVtYmVyIDwgeEZpbGVOdW1iZXI7IHhXcml0ZU51bWJlcisrICkNCi0JCXsNCi0JCQlsSXRlbXNXcml0dGVuID0gZl93cml0ZSggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUsIDEsIHB4RmlsZSApOw0KLQkJCWNvbmZpZ0FTU0VSVCggbEl0ZW1zV3JpdHRlbiA9PSAxICk7DQotCQl9DQotDQotCQkvKiBDbG9zZSB0aGUgZmlsZSBzbyBhbm90aGVyIGZpbGUgY2FuIGJlIGNyZWF0ZWQuICovDQotCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfcmVhZCggdm9pZCApDQotew0KLUJhc2VUeXBlX3QgeEZpbGVOdW1iZXIsIHhSZWFkTnVtYmVyOw0KLWNoYXIgY0ZpbGVOYW1lWyBmc01BWF9GSUxFX05BTUVfTEVOIF07DQotY29uc3QgQmFzZVR5cGVfdCB4TWF4RmlsZXMgPSA1Ow0KLWxvbmcgbEl0ZW1zUmVhZCwgbENoYXI7DQotRl9GSUxFICpweEZpbGU7DQotDQotCS8qIFJlYWQgYmFjayB0aGUgZmlsZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkNCi0JcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpLiAqLw0KLQlmb3IoIHhGaWxlTnVtYmVyID0gMTsgeEZpbGVOdW1iZXIgPD0geE1heEZpbGVzOyB4RmlsZU51bWJlcisrICkNCi0Jew0KLQkJLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0JCXNwcmludGYoIGNGaWxlTmFtZSwgInJvb3QlMDNkLnR4dCIsIHhGaWxlTnVtYmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZA0KLQkJdGhlCWRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nIHJlYWQuICovDQotCQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JCXByaW50ZiggIlJlYWRpbmcgZmlsZSAlcyBmcm9tICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkJLyogT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZy4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAiciIgKTsNCi0JCWNvbmZpZ0FTU0VSVCggcHhGaWxlICk7DQotDQotCQkvKiBSZWFkIHRoZSBmaWxlIGludG8gdGhlIFJBTSBidWZmZXIsIGNoZWNraW5nIHRoZSBmaWxlIGNvbnRlbnRzIGFyZSBhcw0KLQkJZXhwZWN0ZWQuICBUaGUgc2l6ZSBvZiB0aGUgZmlsZSBkZXBlbmRzIG9uIHRoZSBmaWxlIG51bWJlci4gKi8NCi0JCWZvciggeFJlYWROdW1iZXIgPSAwOyB4UmVhZE51bWJlciA8IHhGaWxlTnVtYmVyOyB4UmVhZE51bWJlcisrICkNCi0JCXsNCi0JCQkvKiBTdGFydCB3aXRoIHRoZSBSQU0gYnVmZmVyIGNsZWFyLiAqLw0KLQkJCW1lbXNldCggY1JBTUJ1ZmZlciwgMHgwMCwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0NCi0JCQlsSXRlbXNSZWFkID0gZl9yZWFkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSwgMSwgcHhGaWxlICk7DQotCQkJY29uZmlnQVNTRVJUKCBsSXRlbXNSZWFkID09IDEgKTsNCi0NCi0JCQkvKiBDaGVjayB0aGUgUkFNIGJ1ZmZlciBpcyBmaWxsZWQgd2l0aCB0aGUgZXhwZWN0ZWQgZGF0YS4gIEVhY2gNCi0JCQlmaWxlIGNvbnRhaW5zIGEgZGlmZmVyZW50IHJlcGVhdGluZyBhc2NpaSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMNCi0JCQl0aGUgbnVtYmVyIG9mIHRoZSBmaWxlLiAqLw0KLQkJCWZvciggbENoYXIgPSAwOyBsQ2hhciA8IGZzUkFNX0JVRkZFUl9TSVpFOyBsQ2hhcisrICkNCi0JCQl7DQotCQkJCWNvbmZpZ0FTU0VSVCggY1JBTUJ1ZmZlclsgbENoYXIgXSA9PSAoICcwJyArICggY2hhciApIHhGaWxlTnVtYmVyICkgKTsNCi0JCQl9DQotCQl9DQotDQotCQkvKiBDbG9zZSB0aGUgZmlsZS4gKi8NCi0JCWZfY2xvc2UoIHB4RmlsZSApOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZURlbW9GaWxlVXNpbmdfZl9wdXRjKCB2b2lkICkNCi17DQotdW5zaWduZWQgY2hhciB1Y1JldHVybjsNCi1pbnQgaUJ5dGUsIGlSZXR1cm5lZDsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkvKiBDcmVhdGUgYSBzdWIgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfbWtkaXIoIHBjRGlyZWN0b3J5MSApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogTW92ZSBpbnRvIHRoZSBjcmVhdGVkIHN1Yi1kaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggcGNEaXJlY3RvcnkxICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkvKiBDcmVhdGUgYSBzdWJkaXJlY3RvcnkgaW4gdGhlIG5ldyBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9ta2RpciggcGNEaXJlY3RvcnkyICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBNb3ZlIGludG8gdGhlIGRpcmVjdG9yeSBqdXN0IGNyZWF0ZWQgLSBub3cgdHdvIGRpcmVjdG9yaWVzIGRvd24gZnJvbQ0KLQl0aGUgcm9vdC4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCBwY0RpcmVjdG9yeTIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY0Z1bGxQYXRoICkgPT0gMCApOw0KLQ0KLQkvKiBHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lLiAqLw0KLQlzcHJpbnRmKCBjRmlsZU5hbWUsICIlcy50eHQiLCBwY0RpcmVjdG9yeTIgKTsNCi0NCi0JLyogUHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgZmlsZSBpcyBiZWluZw0KLQl3cml0dGVuLiAqLw0KLQlwcmludGYoICJXcml0aW5nIGZpbGUgJXMgaW4gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAidyIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgZmlsZSAxIGJ5dGUgYXQgYSB0aW1lLiAgVGhlIGZpbGUgaXMgZmlsbGVkIHdpdGggaW5jcmVtZW50aW5nDQotCWFzY2lpIGNoYXJhY3RlcnMgc3RhcnRpbmcgZnJvbSAnMCcuICovDQotCWZvciggaUJ5dGUgPSAwOyBpQnl0ZSA8IGZzUFVUQ19GSUxFX1NJWkU7IGlCeXRlKysgKQ0KLQl7DQotCQlpUmV0dXJuZWQgPSBmX3B1dGMoICggKCBpbnQgKSAnMCcgKyBpQnl0ZSApLCBweEZpbGUgKTsNCi0JCWNvbmZpZ0FTU0VSVCggaVJldHVybmVkID09ICAoICggaW50ICkgJzAnICsgaUJ5dGUgKSApOw0KLQl9DQotDQotCS8qIEZpbmlzaGVkIHNvIGNsb3NlIHRoZSBmaWxlLiAqLw0KLQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0NCi0JLyogTW92ZSBiYWNrIHRvIHRoZSByb290IGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCAiLi4vLi4iICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIHJvb3QgZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0JY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNSQU1CdWZmZXIsIHBjUm9vdCApID09IDAgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX2dldGMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuOw0KLWludCBpQnl0ZSwgaVJldHVybmVkOw0KLUZfRklMRSAqcHhGaWxlOw0KLWNoYXIgY0ZpbGVOYW1lWyBmc01BWF9GSUxFX05BTUVfTEVOIF07DQotDQotCS8qIE1vdmUgaW50byB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBmaWxlIHdhcyBjcmVhdGVkLiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoIHBjRnVsbFBhdGggKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkJhY2sgaW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0JY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNSQU1CdWZmZXIsIHBjRnVsbFBhdGggKSA9PSAwICk7DQotDQotCS8qIEdlbmVyYXRlIHRoZSBmaWxlIG5hbWUuICovDQotCXNwcmludGYoIGNGaWxlTmFtZSwgIiVzLnR4dCIsIHBjRGlyZWN0b3J5MiApOw0KLQ0KLQkvKiBQcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nDQotCXJlYWQuICovDQotCXByaW50ZiggIlJlYWRpbmcgZmlsZSAlcyBpbiAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogVGhpcyB0aW1lIHRoZSBmaWxlIGlzIG9wZW5lZCBmb3IgcmVhZGluZy4gKi8NCi0JcHhGaWxlID0gZl9vcGVuKCBjRmlsZU5hbWUsICJyIiApOw0KLQ0KLQkvKiBSZWFkIHRoZSBmaWxlIDEgYnl0ZSBhdCBhIHRpbWUuICovDQotCWZvciggaUJ5dGUgPSAwOyBpQnl0ZSA8IGZzUFVUQ19GSUxFX1NJWkU7IGlCeXRlKysgKQ0KLQl7DQotCQlpUmV0dXJuZWQgPSBmX2dldGMoIHB4RmlsZSApOw0KLQkJY29uZmlnQVNTRVJUKCBpUmV0dXJuZWQgPT0gICggKCBpbnQgKSAnMCcgKyBpQnl0ZSApICk7DQotCX0NCi0NCi0JLyogRmluaXNoZWQgc28gY2xvc2UgdGhlIGZpbGUuICovDQotCWZfY2xvc2UoIHB4RmlsZSApOw0KLQ0KLQkvKiBNb3ZlIGJhY2sgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoICIuLi8uLiIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkJhY2sgaW4gcm9vdCBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLX0NCi0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU19QbHVzX0ZBVF9TTF93aXRoX0NMSS5zbG4gYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU19QbHVzX0ZBVF9TTF93aXRoX0NMSS5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODE5YWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NfUGx1c19GQVRfU0xfd2l0aF9DTEkuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot77u/DQotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCi0jIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEwDQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJXSU4zMiIsICJXSU4zMi52Y3hwcm9qIiwgIntDNjg2MzI1RS0zMjYxLTQyRjctQUVCMS1EREU1MjgwRTFDRUJ9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXtDNjg2MzI1RS0zMjYxLTQyRjctQUVCMS1EREU1MjgwRTFDRUJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QzY4NjMyNUUtMzI2MS00MkY3LUFFQjEtRERFNTI4MEUxQ0VCfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDNjg2MzI1RS0zMjYxLTQyRjctQUVCMS1EREU1MjgwRTFDRUJ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2ODYzMjVFLTMyNjEtNDJGNy1BRUIxLURERTUyODBFMUNFQn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1JFQURfTUUudXJsIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUkVBRF9NRS51cmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNmI2MTQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUkVBRF9NRS51cmwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVtJbnRlcm5ldFNob3J0Y3V0XQ0KLVVSTD1odHRwOi8vd3d3LmZyZWVydG9zLm9yZy9GcmVlUlRPUy1QbHVzL0ZyZWVSVE9TX1BsdXNfRkFUX1NML0RlbW9zL0ZpbGVfU3lzdGVtX1dpbjMyX1NpbXVsYXRvcl9kZW1vLnNodG1sDQotSURMaXN0PQ0KLVt7MDAwMjE0QTAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2fV0NCi1Qcm9wMz0xOSwyDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUmVhZE1lLnR4dCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1JlYWRNZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2MTAwMQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1JlYWRNZS50eHQKQEAgLTAsMCArMSw3IEBACitUaGlzIGRlbW8gd2FzIHJlbW92ZWQgaW4gRnJlZVJUT1MgVjEwLjAuMCBhcyBGcmVlUlRPUytGQVQgU0wgd2FzIG5vdCBkaXN0cmlidXRlZA0KK2luIHRoYXQgcmVsZWFzZS4gIFRoZSBmdWxsIEZyZWVSVE9TK0ZBVCBwcm9kdWN0IChhcyBvcHBvc2VkIHRvIHRoZSAnU0wnIFN1cGVyDQorTGVhbiBwcm9kdWN0KSBpcyBzdGlsbCBhdmFpbGFibGUuICBQcmV2aW91cyB2ZXJzaW9ucyBvZiBGcmVlUlRPUyBjYW4gYmUNCitkb3dubG9hZGVkIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVlcnRvcy9maWxlcy9GcmVlUlRPUy8NCisNCisNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9SdW4tdGltZS1zdGF0cy11dGlscy5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFmNGE5NS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9SdW4tdGltZS1zdGF0cy11dGlscy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qDQotICogVXRpbGl0eSBmdW5jdGlvbnMgcmVxdWlyZWQgdG8gZ2F0aGVyIHJ1biB0aW1lIHN0YXRpc3RpY3MuICBTZWU6DQotICogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvcnRvcy1ydW4tdGltZS1zdGF0cy5odG1sDQotICoNCi0gKiBOb3RlIHRoYXQgdGhpcyBpcyBhIHNpbXVsYXRlZCBwb3J0LCB3aGVyZSBzaW11bGF0ZWQgdGltZSBpcyBhIGxvdCBzbG93ZXIgdGhhbg0KLSAqIHJlYWwgdGltZSwgdGhlcmVmb3JlIHRoZSBydW4gdGltZSBjb3VudGVyIHZhbHVlcyBoYXZlIG5vIHJlYWwgbWVhbmluZ2Z1bA0KLSAqIHVuaXRzLg0KLSAqDQotICogQWxzbyBub3RlIHRoYXQgaXQgaXMgYXNzdW1lZCB0aGlzIGRlbW8gaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3Igc2hvcnQgcGVyaW9kcw0KLSAqIG9mIHRpbWUgb25seSwgYW5kIHRoZXJlZm9yZSB0aW1lciBvdmVyZmxvd3MgYXJlIG5vdCBoYW5kbGVkLg0KLSovDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPEZyZWVSVE9TLmg+DQotDQotLyogVmFyaWFibGVzIHVzZWQgaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBydW4gdGltZSBzdGF0cyB0aW1lIGJhc2UuICBSdW4gdGltZSANCi1zdGF0cyByZWNvcmQgaG93IG11Y2ggdGltZSBlYWNoIHRhc2sgc3BlbmRzIGluIHRoZSBSdW5uaW5nIHN0YXRlLiAqLw0KLXN0YXRpYyBsb25nIGxvbmcgbGxJbml0aWFsUnVuVGltZUNvdW50ZXJWYWx1ZSA9IDBMTCwgbGxUaWNrc1Blckh1bmRlZHRoTWlsbGlzZWNvbmQgPSAwTEw7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2Q29uZmlndXJlVGltZXJGb3JSdW5UaW1lU3RhdHMoIHZvaWQgKQ0KLXsNCi1MQVJHRV9JTlRFR0VSIGxpUGVyZm9ybWFuY2VDb3VudGVyRnJlcXVlbmN5LCBsaUluaXRpYWxSdW5UaW1lVmFsdWU7DQotDQotCS8qIEluaXRpYWxpc2UgdGhlIHZhcmlhYmxlcyB1c2VkIHRvIGNyZWF0ZSB0aGUgcnVuIHRpbWUgc3RhdHMgdGltZSBiYXNlLg0KLQlSdW4gdGltZSBzdGF0cyByZWNvcmQgaG93IG11Y2ggdGltZSBlYWNoIHRhc2sgc3BlbmRzIGluIHRoZSBSdW5uaW5nIA0KLQlzdGF0ZS4gKi8NCi0NCi0JaWYoIFF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koICZsaVBlcmZvcm1hbmNlQ291bnRlckZyZXF1ZW5jeSApID09IDAgKQ0KLQl7DQotCQlsbFRpY2tzUGVySHVuZGVkdGhNaWxsaXNlY29uZCA9IDE7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBIb3cgbWFueSB0aW1lcyBkb2VzIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIGluY3JlbWVudCBpbiAxLzEwMHRoDQotCQltaWxsaXNlY29uZC4gKi8NCi0JCWxsVGlja3NQZXJIdW5kZWR0aE1pbGxpc2Vjb25kID0gbGlQZXJmb3JtYW5jZUNvdW50ZXJGcmVxdWVuY3kuUXVhZFBhcnQgLyAxMDAwMDBMTDsNCi0NCi0JCS8qIFdoYXQgaXMgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgdmFsdWUgbm93LCB0aGlzIHdpbGwgYmUgc3VidHJhY3RlZA0KLQkJZnJvbSByZWFkaW5ncyB0YWtlbiBhdCBydW4gdGltZS4gKi8NCi0JCVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCAmbGlJbml0aWFsUnVuVGltZVZhbHVlICk7DQotCQlsbEluaXRpYWxSdW5UaW1lQ291bnRlclZhbHVlID0gbGlJbml0aWFsUnVuVGltZVZhbHVlLlF1YWRQYXJ0Ow0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXVuc2lnbmVkIGxvbmcgdWxHZXRSdW5UaW1lQ291bnRlclZhbHVlKCB2b2lkICkNCi17DQotTEFSR0VfSU5URUdFUiBsaUN1cnJlbnRDb3VudDsNCi11bnNpZ25lZCBsb25nIHVsUmV0dXJuOw0KLQ0KLQkvKiBXaGF0IGlzIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIHZhbHVlIG5vdz8gKi8NCi0JUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoICZsaUN1cnJlbnRDb3VudCApOw0KLQ0KLQkvKiBTdWJ0cmFjdCB0aGUgcGVyZm9ybWFuY2UgY291bnRlciB2YWx1ZSByZWFkaW5nIHRha2VuIHdoZW4gdGhlIA0KLQlhcHBsaWNhdGlvbiBzdGFydGVkIHRvIGdldCBhIGNvdW50IGZyb20gdGhhdCByZWZlcmVuY2UgcG9pbnQsIHRoZW4NCi0Jc2NhbGUgdG8gKHNpbXVsYXRlZCkgMS8xMDB0aHMgb2YgYSBtaWxsaXNlY29uZC4gKi8NCi0JdWxSZXR1cm4gPSAoIHVuc2lnbmVkIGxvbmcgKSAoICggbGlDdXJyZW50Q291bnQuUXVhZFBhcnQgLSBsbEluaXRpYWxSdW5UaW1lQ291bnRlclZhbHVlICkgLyBsbFRpY2tzUGVySHVuZGVkdGhNaWxsaXNlY29uZCApOw0KLQ0KLQlyZXR1cm4gdWxSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1NhbXBsZS1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1NhbXBsZS1DTEktY29tbWFuZHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMwODU1NS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIFNlZSB0aGUgZm9sbG93aW5nIFVSTCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGNvbW1hbmRzIGRlZmluZWQgaW4gdGhpcyBmaWxlOg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMvRnJlZVJUT1NfUGx1c19VRFAvRW1iZWRkZWRfRXRoZXJuZXRfRXhhbXBsZXMvRXRoZXJuZXRfUmVsYXRlZF9DTElfQ29tbWFuZHMuc2h0bWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLQ0KLS8qIEZyZWVSVE9TK0NMSSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1NfQ0xJLmgiDQotDQotI2lmbmRlZiAgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUw0KLQkjZGVmaW5lIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgMA0KLSNlbmRpZg0KLQ0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgcnVuLXRpbWUtc3RhdHMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZUYXNrU3RhdHNDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIHRhc2stc3RhdHMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZSdW5UaW1lU3RhdHNDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIGVjaG8tdGhyZWUtcGFyYW1ldGVycyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBCYXNlVHlwZV90IHBydlRocmVlUGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgZWNoby1wYXJhbWV0ZXJzIGNvbW1hbmQuDQotICovDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2UGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgInRyYWNlIHN0YXJ0IiBhbmQgInRyYWNlIHN0b3AiIGNvbW1hbmRzOw0KLSAqLw0KLSNpZiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDENCi0Jc3RhdGljIEJhc2VUeXBlX3QgcHJ2U3RhcnRTdG9wVHJhY2VDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0jZW5kaWYNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAicnVuLXRpbWUtc3RhdHMiIGNvbW1hbmQgbGluZSBjb21tYW5kLiAgIFRoaXMNCi1nZW5lcmF0ZXMgYSB0YWJsZSB0aGF0IHNob3dzIGhvdyBtdWNoIHJ1biB0aW1lIGVhY2ggdGFzayBoYXMgKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhSdW5UaW1lU3RhdHMgPQ0KLXsNCi0JInJ1bi10aW1lLXN0YXRzIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxucnVuLXRpbWUtc3RhdHM6XHJcbiBEaXNwbGF5cyBhIHRhYmxlIHNob3dpbmcgaG93IG11Y2ggcHJvY2Vzc2luZyB0aW1lIGVhY2ggRnJlZVJUT1MgdGFzayBoYXMgdXNlZFxyXG4iLA0KLQlwcnZSdW5UaW1lU3RhdHNDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkwIC8qIE5vIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgInRhc2stc3RhdHMiIGNvbW1hbmQgbGluZSBjb21tYW5kLiAgVGhpcyBnZW5lcmF0ZXMNCi1hIHRhYmxlIHRoYXQgZ2l2ZXMgaW5mb3JtYXRpb24gb24gZWFjaCB0YXNrIGluIHRoZSBzeXN0ZW0uICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VGFza1N0YXRzID0NCi17DQotCSJ0YXNrLXN0YXRzIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxudGFzay1zdGF0czpcclxuIERpc3BsYXlzIGEgdGFibGUgc2hvd2luZyB0aGUgc3RhdGUgb2YgZWFjaCBGcmVlUlRPUyB0YXNrXHJcbiIsDQotCXBydlRhc2tTdGF0c0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTAgLyogTm8gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAiZWNob18zX3BhcmFtZXRlcnMiIGNvbW1hbmQgbGluZSBjb21tYW5kLiAgVGhpcw0KLXRha2VzIGV4YWN0bHkgdGhyZWUgcGFyYW1ldGVycyB0aGF0IHRoZSBjb21tYW5kIHNpbXBseSBlY2hvcyBiYWNrIG9uZSBhdCBhDQotdGltZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhUaHJlZVBhcmFtZXRlckVjaG8gPQ0KLXsNCi0JImVjaG8tMy1wYXJhbWV0ZXJzIiwNCi0JIlxyXG5lY2hvLTMtcGFyYW1ldGVycyA8cGFyYW0xPiA8cGFyYW0yPiA8cGFyYW0zPjpcclxuIEV4cGVjdHMgdGhyZWUgcGFyYW1ldGVycywgZWNob3MgZWFjaCBpbiB0dXJuXHJcbiIsDQotCXBydlRocmVlUGFyYW1ldGVyRWNob0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTMgLyogVGhyZWUgcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQsIHdoaWNoIGNhbiB0YWtlIGFueSB2YWx1ZS4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJlY2hvX3BhcmFtZXRlcnMiIGNvbW1hbmQgbGluZSBjb21tYW5kLiAgVGhpcw0KLXRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCB0aGUgY29tbWFuZCBzaW1wbHkgZWNob3MgYmFjayBvbmUgYXQNCi1hIHRpbWUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4UGFyYW1ldGVyRWNobyA9DQotew0KLQkiZWNoby1wYXJhbWV0ZXJzIiwNCi0JIlxyXG5lY2hvLXBhcmFtZXRlcnMgPC4uLj46XHJcbiBUYWtlIHZhcmlhYmxlIG51bWJlciBvZiBwYXJhbWV0ZXJzLCBlY2hvcyBlYWNoIGluIHR1cm5cclxuIiwNCi0JcHJ2UGFyYW1ldGVyRWNob0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCS0xIC8qIFRoZSB1c2VyIGNhbiBlbnRlciBhbnkgbnVtYmVyIG9mIGNvbW1hbmRzLiAqLw0KLX07DQotDQotI2lmIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgPT0gMQ0KLQkvKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAidHJhY2UiIGNvbW1hbmQgbGluZSBjb21tYW5kLiAgVGhpcyB0YWtlcyBhIHNpbmdsZQ0KLQlwYXJhbWV0ZXIsIHdoaWNoIGNhbiBiZSBlaXRoZXIgInN0YXJ0IiBvciAic3RvcCIuICovDQotCXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFN0YXJ0U3RvcFRyYWNlID0NCi0Jew0KLQkJInRyYWNlIiwNCi0JCSJcclxudHJhY2UgW3N0YXJ0IHwgc3RvcF06XHJcbiBTdGFydHMgb3Igc3RvcHMgYSB0cmFjZSByZWNvcmRpbmcgZm9yIHZpZXdpbmcgaW4gRnJlZVJUT1MrVHJhY2VcclxuIiwNCi0JCXBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gIFZhbGlkIHZhbHVlcyBhcmUgInN0YXJ0IiBhbmQgInN0b3AiLiAqLw0KLQl9Ow0KLSNlbmRpZiAvKiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTICovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UmVnaXN0ZXJTYW1wbGVDTElDb21tYW5kcyggdm9pZCApDQotew0KLQkvKiBSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmQgbGluZSBjb21tYW5kcyBkZWZpbmVkIGltbWVkaWF0ZWx5IGFib3ZlLiAqLw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VGFza1N0YXRzICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhSdW5UaW1lU3RhdHMgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFRocmVlUGFyYW1ldGVyRWNobyApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4UGFyYW1ldGVyRWNobyApOw0KLQ0KLQkjaWYoIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgPT0gMSApDQotCXsNCi0JCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJiB4U3RhcnRTdG9wVHJhY2UgKTsNCi0JfQ0KLQkjZW5kaWYNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2VGFza1N0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqY29uc3QgcGNIZWFkZXIgPSAiVGFzayAgICAgICAgICBTdGF0ZSAgUHJpb3JpdHkgIFN0YWNrCSNcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiI7DQotDQotCS8qIFJlbW92ZSBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMsIGFuZCBjaGVjayB0aGUNCi0Jd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0Jd3JpdGUgYnVmZmVyIGxlbmd0aCBpcyBhZGVxdWF0ZSwgc28gZG9lcyBub3QgY2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuICovDQotCSggdm9pZCApIHBjQ29tbWFuZFN0cmluZzsNCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQljb25maWdBU1NFUlQoIHBjV3JpdGVCdWZmZXIgKTsNCi0NCi0JLyogR2VuZXJhdGUgYSB0YWJsZSBvZiB0YXNrIHN0YXRzLiAqLw0KLQlzdHJjcHkoIHBjV3JpdGVCdWZmZXIsIHBjSGVhZGVyICk7DQotCXZUYXNrTGlzdCggcGNXcml0ZUJ1ZmZlciArIHN0cmxlbiggcGNIZWFkZXIgKSApOw0KLQ0KLQkvKiBUaGVyZSBpcyBubyBtb3JlIGRhdGEgdG8gcmV0dXJuIGFmdGVyIHRoaXMgc2luZ2xlIHN0cmluZywgc28gcmV0dXJuDQotCXBkRkFMU0UuICovDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZSdW5UaW1lU3RhdHNDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICogY29uc3QgcGNIZWFkZXIgPSAiVGFzayAgICAgICAgICAgIEFicyBUaW1lICAgICAgJSBUaW1lXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIjsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQkvKiBHZW5lcmF0ZSBhIHRhYmxlIG9mIHRhc2sgc3RhdHMuICovDQotCXN0cmNweSggcGNXcml0ZUJ1ZmZlciwgcGNIZWFkZXIgKTsNCi0JdlRhc2tHZXRSdW5UaW1lU3RhdHMoIHBjV3JpdGVCdWZmZXIgKyBzdHJsZW4oIHBjSGVhZGVyICkgKTsNCi0NCi0JLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQlwZEZBTFNFLiAqLw0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIEJhc2VUeXBlX3QgcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotQmFzZVR5cGVfdCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuOw0KLXN0YXRpYyBCYXNlVHlwZV90IGxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCWlmKCBsUGFyYW1ldGVyTnVtYmVyID09IDAgKQ0KLQl7DQotCQkvKiBUaGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuDQotCQllbnRlcmVkIGp1c3QgYSBoZWFkZXIgc3RyaW5nIGlzIHJldHVybmVkLiAqLw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRoZSB0aHJlZSBwYXJhbWV0ZXJzIHdlcmU6XHJcbiIgKTsNCi0NCi0JCS8qIE5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2lsbCBiZSBlY2hvZWQNCi0JCWJhY2suICovDQotCQlsUGFyYW1ldGVyTnVtYmVyID0gMUw7DQotDQotCQkvKiBUaGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgcmV0dXJuZWQgYXMgbm8gcGFyYW1ldGVycyBoYXZlIGJlZW4gZWNob2VkDQotCQliYWNrIHlldC4gKi8NCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJbFBhcmFtZXRlck51bWJlciwJCS8qIFJldHVybiB0aGUgbmV4dCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBSZXR1cm4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVkOiAiLCAoIGludCApIGxQYXJhbWV0ZXJOdW1iZXIgKTsNCi0JCXN0cm5jYXQoIHBjV3JpdGVCdWZmZXIsIHBjUGFyYW1ldGVyLCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoICk7DQotCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCS8qIElmIHRoaXMgaXMgdGhlIGxhc3Qgb2YgdGhlIHRocmVlIHBhcmFtZXRlcnMgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZQ0KLQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAzTCApDQotCQl7DQotCQkJLyogSWYgdGhpcyBpcyB0aGUgbGFzdCBvZiB0aGUgdGhyZWUgcGFyYW1ldGVycyB0aGVuIHRoZXJlIGFyZSBubyBtb3JlDQotCQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQkJeFJldHVybiA9IHBkRkFMU0U7DQotCQkJbFBhcmFtZXRlck51bWJlciA9IDBMOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFRoZXJlIGFyZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgQmFzZVR5cGVfdCBwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotQmFzZVR5cGVfdCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuOw0KLXN0YXRpYyBCYXNlVHlwZV90IGxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCWlmKCBsUGFyYW1ldGVyTnVtYmVyID09IDAgKQ0KLQl7DQotCQkvKiBUaGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuDQotCQllbnRlcmVkIGp1c3QgYSBoZWFkZXIgc3RyaW5nIGlzIHJldHVybmVkLiAqLw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRoZSBwYXJhbWV0ZXJzIHdlcmU6XHJcbiIgKTsNCi0NCi0JCS8qIE5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2lsbCBiZSBlY2hvZWQNCi0JCWJhY2suICovDQotCQlsUGFyYW1ldGVyTnVtYmVyID0gMUw7DQotDQotCQkvKiBUaGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgcmV0dXJuZWQgYXMgbm8gcGFyYW1ldGVycyBoYXZlIGJlZW4gZWNob2VkDQotCQliYWNrIHlldC4gKi8NCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJbFBhcmFtZXRlck51bWJlciwJCS8qIFJldHVybiB0aGUgbmV4dCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJaWYoIHBjUGFyYW1ldGVyICE9IE5VTEwgKQ0KLQkJew0KLQkJCS8qIFJldHVybiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlZDogIiwgKCBpbnQgKSBsUGFyYW1ldGVyTnVtYmVyICk7DQotCQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgcGNQYXJhbWV0ZXIsIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGggKTsNCi0JCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCQkvKiBUaGVyZSBtaWdodCBiZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIE5vIG1vcmUgcGFyYW1ldGVycyB3ZXJlIGZvdW5kLiAgTWFrZSBzdXJlIHRoZSB3cml0ZSBidWZmZXIgZG9lcw0KLQkJCW5vdCBjb250YWluIGEgdmFsaWQgc3RyaW5nLiAqLw0KLQkJCXBjV3JpdGVCdWZmZXJbIDAgXSA9IDB4MDA7DQotDQotCQkJLyogTm8gbW9yZSBkYXRhIHRvIHJldHVybi4gKi8NCi0JCQl4UmV0dXJuID0gcGRGQUxTRTsNCi0NCi0JCQkvKiBTdGFydCBvdmVyIHRoZSBuZXh0IHRpbWUgdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiAqLw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotDQotCXN0YXRpYyBCYXNlVHlwZV90IHBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi0Jew0KLQljb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi0JQmFzZVR5cGVfdCBsUGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLQ0KLQkJLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQkJd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0JCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkJKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkJKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQkJY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJJmxQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCSk7DQotDQotCQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JCS8qIFRoZXJlIGFyZSBvbmx5IHR3byB2YWxpZCBwYXJhbWV0ZXIgdmFsdWVzLiAqLw0KLQkJaWYoIHN0cm5jbXAoIHBjUGFyYW1ldGVyLCAic3RhcnQiLCBzdHJsZW4oICJzdGFydCIgKSApID09IDAgKQ0KLQkJew0KLQkJCS8qIFN0YXJ0IG9yIHJlc3RhcnQgdGhlIHRyYWNlLiAqLw0KLQkJCXZUcmFjZVN0b3AoKTsNCi0JCQl2VHJhY2VDbGVhcigpOw0KLQkJCXZUcmFjZVN0YXJ0KCk7DQotDQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRyYWNlIHJlY29yZGluZyAocmUpc3RhcnRlZC5cclxuIiApOw0KLQkJfQ0KLQkJZWxzZSBpZiggc3RybmNtcCggcGNQYXJhbWV0ZXIsICJzdG9wIiwgc3RybGVuKCAic3RvcCIgKSApID09IDAgKQ0KLQkJew0KLQkJCS8qIEVuZCB0aGUgdHJhY2UsIGlmIG9uZSBpcyBydW5uaW5nLiAqLw0KLQkJCXZUcmFjZVN0b3AoKTsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiU3RvcHBpbmcgdHJhY2UgcmVjb3JkaW5nLlxyXG4iICk7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlZhbGlkIHBhcmFtZXRlcnMgYXJlICdzdGFydCcgYW5kICdzdG9wJy5cclxuIiApOw0KLQkJfQ0KLQ0KLQkJLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQkJcGRGQUxTRS4gKi8NCi0JCXJldHVybiBwZEZBTFNFOw0KLQl9DQotDQotI2VuZGlmIC8qIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9VRFBDb21tYW5kU2VydmVyLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9VRFBDb21tYW5kU2VydmVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZDE1ZTAuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvVURQQ29tbWFuZFNlcnZlci5jCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLQ0KLSNwcmFnbWEgY29tbWVudCggbGliLCAid3MyXzMyLmxpYiIgKQ0KLQ0KLS8qIFdpbjMyIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxXaW5Tb2NrMi5oPg0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLQ0KLS8qIEZyZWVSVE9TK0NMSSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1NfQ0xJLmgiDQotDQotLyogRGltZW5zaW9ucyB0aGUgYnVmZmVyIGludG8gd2hpY2ggaW5wdXQgY2hhcmFjdGVycyBhcmUgcGxhY2VkLiAqLw0KLSNkZWZpbmUgY21kTUFYX0lOUFVUX1NJWkUJNjANCi0NCi0vKiBEaW1lbnNpb25zIHRoZSBidWZmZXIgaW50byB3aGljaCBzdHJpbmcgb3V0cHV0cyBjYW4gYmUgcGxhY2VkLiAqLw0KLSNkZWZpbmUgY21kTUFYX09VVFBVVF9TSVpFCTEwMjQNCi0NCi0vKiBEaW1lbnNpb25zIHRoZSBidWZmZXIgcGFzc2VkIHRvIHRoZSByZWN2ZnJvbSgpIGNhbGwuICovDQotI2RlZmluZSBjbWRTT0NLRVRfSU5QVVRfQlVGRkVSX1NJWkUgNjANCi0NCi0vKiBERUwgYWN0cyBhcyBhIGJhY2tzcGFjZS4gKi8NCi0jZGVmaW5lIGNtZEFTQ0lJX0RFTAkJKCAweDdGICkNCi0NCi0vKg0KLSAqIE9wZW4gYW5kIGNvbmZpZ3VyZSB0aGUgVURQIHNvY2tldC4NCi0gKi8NCi1zdGF0aWMgU09DS0VUIHBydk9wZW5VRFBTb2NrZXQoIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRhc2sgdGhhdCBwcm92aWRlcyB0aGUgaW5wdXQgYW5kIG91dHB1dCBmb3IgdGhlIEZyZWVSVE9TK0NMSSBjb21tYW5kDQotICogaW50ZXJwcmV0ZXIuICBJbiB0aGlzIGNhc2UgYSBXaW5Tb2NrIFVEUCBwb3J0IGlzIHVzZWQgZm9yIGNvbnZlbmllbmNlIGFzIHRoaXMNCi0gKiBkZW1vIHJ1bnMgaW4gYSBzaW11bGF0ZWQgZW52aXJvbm1lbnQgb24gYSBXaW5kb3dzIFBDLiAgU2VlIHRoZSBVUkwgaW4gdGhlDQotICogY29tbWVudHMgd2l0aGluIG1haW4uYyBmb3IgdGhlIGxvY2F0aW9uIG9mIHRoZSBvbmxpbmUgZG9jdW1lbnRhdGlvbi4NCi0gKi8NCi12b2lkIHZVRFBDb21tYW5kSW50ZXJwcmV0ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi1sb25nIGxCeXRlcywgbEJ5dGU7DQotc2lnbmVkIGNoYXIgY0luQ2hhciwgY0lucHV0SW5kZXggPSAwOw0KLXN0YXRpYyBzaWduZWQgY2hhciBjSW5wdXRTdHJpbmdbIGNtZE1BWF9JTlBVVF9TSVpFIF0sIGNPdXRwdXRTdHJpbmdbIGNtZE1BWF9PVVRQVVRfU0laRSBdLCBjTG9jYWxCdWZmZXJbIGNtZFNPQ0tFVF9JTlBVVF9CVUZGRVJfU0laRSBdOw0KLUJhc2VUeXBlX3QgeE1vcmVEYXRhVG9Gb2xsb3c7DQotdm9sYXRpbGUgaW50IGlFcnJvckNvZGUgPSAwOw0KLXN0cnVjdCBzb2NrYWRkcl9pbiB4Q2xpZW50Ow0KLWludCB4Q2xpZW50QWRkcmVzc0xlbmd0aCA9IHNpemVvZiggc3RydWN0IHNvY2thZGRyX2luICk7DQotU09DS0VUIHhTb2NrZXQ7DQotDQotCS8qIEp1c3QgdG8gcHJldmVudCBjb21waWxlciB3YXJuaW5ncy4gKi8NCi0JKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KLQ0KLQkvKiBBdHRlbXB0IHRvIG9wZW4gdGhlIHNvY2tldC4gKi8NCi0JeFNvY2tldCA9IHBydk9wZW5VRFBTb2NrZXQoKTsNCi0NCi0JaWYoIHhTb2NrZXQgIT0gSU5WQUxJRF9TT0NLRVQgKQ0KLQl7DQotCQlmb3IoIDs7ICkNCi0JCXsNCi0JCQkvKiBXYWl0IGZvciBpbmNvbWluZyBkYXRhIG9uIHRoZSBvcGVuZWQgc29ja2V0LiAqLw0KLQkJCWxCeXRlcyA9IHJlY3Zmcm9tKCB4U29ja2V0LCBjTG9jYWxCdWZmZXIsIHNpemVvZiggY0xvY2FsQnVmZmVyICksIDAsICggc3RydWN0IHNvY2thZGRyICogKSAmeENsaWVudCwgJnhDbGllbnRBZGRyZXNzTGVuZ3RoICk7DQotDQotCQkJaWYoIGxCeXRlcyA9PSBTT0NLRVRfRVJST1IgKQ0KLQkJCXsNCi0JCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIGJ1dCBpdCBpcyBub3QgaGFuZGxlZCBieSB0aGlzIHNpbXBsZQ0KLQkJCQlleGFtcGxlLiAqLw0KLQkJCQlpRXJyb3JDb2RlID0gV1NBR2V0TGFzdEVycm9yKCk7DQotCQkJfQ0KLQkJCWVsc2UNCi0JCQl7DQotCQkJCS8qIFByb2Nlc3MgZWFjaCByZWNlaXZlZCBieXRlIGluIHR1cm4uICovDQotCQkJCWxCeXRlID0gMDsNCi0JCQkJd2hpbGUoIGxCeXRlIDwgbEJ5dGVzICkNCi0JCQkJew0KLQkJCQkJLyogVGhlIG5leHQgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBidWZmZXIuICovDQotCQkJCQljSW5DaGFyID0gY0xvY2FsQnVmZmVyWyBsQnl0ZSBdOw0KLQkJCQkJbEJ5dGUrKzsNCi0NCi0JCQkJCS8qIE5ld2xpbmUgY2hhcmFjdGVycyBhcmUgdGFrZW4gYXMgdGhlIGVuZCBvZiB0aGUgY29tbWFuZA0KLQkJCQkJc3RyaW5nLiAqLw0KLQkJCQkJaWYoIGNJbkNoYXIgPT0gJ1xuJyApDQotCQkJCQl7DQotCQkJCQkJLyogUHJvY2VzcyB0aGUgaW5wdXQgc3RyaW5nIHJlY2VpdmVkIHByaW9yIHRvIHRoZQ0KLQkJCQkJCW5ld2xpbmUuICovDQotCQkJCQkJZG8NCi0JCQkJCQl7DQotCQkJCQkJCS8qIFBhc3MgdGhlIHN0cmluZyB0byBGcmVlUlRPUytDTEkuICovDQotCQkJCQkJCXhNb3JlRGF0YVRvRm9sbG93ID0gRnJlZVJUT1NfQ0xJUHJvY2Vzc0NvbW1hbmQoIGNJbnB1dFN0cmluZywgY091dHB1dFN0cmluZywgY21kTUFYX09VVFBVVF9TSVpFICk7DQotDQotCQkJCQkJCS8qIFNlbmQgdGhlIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIGNvbW1hbmQncw0KLQkJCQkJCQlpbXBsZW1lbnRhdGlvbi4gKi8NCi0JCQkJCQkJc2VuZHRvKCB4U29ja2V0LCBjT3V0cHV0U3RyaW5nLCAgc3RybGVuKCBjT3V0cHV0U3RyaW5nICksIDAsICggU09DS0FERFIgKiApICZ4Q2xpZW50LCB4Q2xpZW50QWRkcmVzc0xlbmd0aCApOw0KLQ0KLQkJCQkJCX0gd2hpbGUoIHhNb3JlRGF0YVRvRm9sbG93ICE9IHBkRkFMU0UgKTsgLyogVW50aWwgdGhlIGNvbW1hbmQgZG9lcyBub3QgZ2VuZXJhdGUgYW55IG1vcmUgb3V0cHV0LiAqLw0KLQ0KLQkJCQkJCS8qIEFsbCB0aGUgc3RyaW5ncyBnZW5lcmF0ZWQgYnkgdGhlIGNvbW1hbmQgcHJvY2Vzc2luZw0KLQkJCQkJCWhhdmUgYmVlbiBzZW50LiAgQ2xlYXIgdGhlIGlucHV0IHN0cmluZyByZWFkeSB0byByZWNlaXZlDQotCQkJCQkJdGhlIG5leHQgY29tbWFuZC4gKi8NCi0JCQkJCQljSW5wdXRJbmRleCA9IDA7DQotCQkJCQkJbWVtc2V0KCBjSW5wdXRTdHJpbmcsIDB4MDAsIGNtZE1BWF9JTlBVVF9TSVpFICk7DQotDQotCQkJCQkJLyogVHJhbnNtaXQgYSBzcGFjZXIsIGp1c3QgdG8gbWFrZSB0aGUgY29tbWFuZCBjb25zb2xlDQotCQkJCQkJZWFzaWVyIHRvIHJlYWQuICovDQotCQkJCQkJc2VuZHRvKCB4U29ja2V0LCAiXHJcbiIsICBzdHJsZW4oICJcclxuIiApLCAwLCAoIFNPQ0tBRERSICogKSAmeENsaWVudCwgeENsaWVudEFkZHJlc3NMZW5ndGggKTsNCi0JCQkJCX0NCi0JCQkJCWVsc2UNCi0JCQkJCXsNCi0JCQkJCQlpZiggY0luQ2hhciA9PSAnXHInICkNCi0JCQkJCQl7DQotCQkJCQkJCS8qIElnbm9yZSB0aGUgY2hhcmFjdGVyLiAgTmV3bGluZXMgYXJlIHVzZWQgdG8NCi0JCQkJCQkJZGV0ZWN0IHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gKi8NCi0JCQkJCQl9DQotCQkJCQkJZWxzZSBpZiggKCBjSW5DaGFyID09ICdcYicgKSB8fCAoIGNJbkNoYXIgPT0gY21kQVNDSUlfREVMICkgKQ0KLQkJCQkJCXsNCi0JCQkJCQkJLyogQmFja3NwYWNlIHdhcyBwcmVzc2VkLiAgRXJhc2UgdGhlIGxhc3QgY2hhcmFjdGVyDQotCQkJCQkJCWluIHRoZSBzdHJpbmcgLSBpZiBhbnkuICovDQotCQkJCQkJCWlmKCBjSW5wdXRJbmRleCA+IDAgKQ0KLQkJCQkJCQl7DQotCQkJCQkJCQljSW5wdXRJbmRleC0tOw0KLQkJCQkJCQkJY0lucHV0U3RyaW5nWyBjSW5wdXRJbmRleCBdID0gJ1wwJzsNCi0JCQkJCQkJfQ0KLQkJCQkJCX0NCi0JCQkJCQllbHNlDQotCQkJCQkJew0KLQkJCQkJCQkvKiBBIGNoYXJhY3RlciB3YXMgZW50ZXJlZC4gIEFkZCBpdCB0byB0aGUgc3RyaW5nDQotCQkJCQkJCWVudGVyZWQgc28gZmFyLiAgV2hlbiBhIFxuIGlzIGVudGVyZWQgdGhlIGNvbXBsZXRlDQotCQkJCQkJCXN0cmluZyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZCBpbnRlcnByZXRlci4gKi8NCi0JCQkJCQkJaWYoIGNJbnB1dEluZGV4IDwgY21kTUFYX0lOUFVUX1NJWkUgKQ0KLQkJCQkJCQl7DQotCQkJCQkJCQljSW5wdXRTdHJpbmdbIGNJbnB1dEluZGV4IF0gPSBjSW5DaGFyOw0KLQkJCQkJCQkJY0lucHV0SW5kZXgrKzsNCi0JCQkJCQkJfQ0KLQkJCQkJCX0NCi0JCQkJCX0NCi0JCQkJfQ0KLQkJCX0NCi0JCX0NCi0JfQ0KLQllbHNlDQotCXsNCi0JCS8qIFRoZSBzb2NrZXQgY291bGQgbm90IGJlIG9wZW5lZC4gKi8NCi0JCXZUYXNrRGVsZXRlKCBOVUxMICk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIFNPQ0tFVCBwcnZPcGVuVURQU29ja2V0KCB2b2lkICkNCi17DQotV1NBREFUQSB4V1NBRGF0YTsNCi1XT1JEIHdWZXJzaW9uUmVxdWVzdGVkOw0KLXN0cnVjdCBzb2NrYWRkcl9pbiB4U2VydmVyOw0KLVNPQ0tFVCB4U29ja2V0ID0gSU5WQUxJRF9TT0NLRVQ7DQotDQotCXdWZXJzaW9uUmVxdWVzdGVkID0gTUFLRVdPUkQoIDIsIDIgKTsNCi0NCi0JLyogUHJlcGFyZSB0byB1c2UgV2luU29jay4gKi8NCi0JaWYoIFdTQVN0YXJ0dXAoIHdWZXJzaW9uUmVxdWVzdGVkLCAmeFdTQURhdGEgKSAhPSAwICkNCi0Jew0KLQkJZnByaW50Ziggc3RkZXJyLCAiQ291bGQgbm90IG9wZW4gV2luZG93cyBjb25uZWN0aW9uLlxuIiApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJeFNvY2tldCA9IHNvY2tldCggQUZfSU5FVCwgU09DS19ER1JBTSwgMCApOw0KLQkJaWYoIHhTb2NrZXQgPT0gSU5WQUxJRF9TT0NLRVQpDQotCQl7DQotCQkJZnByaW50Ziggc3RkZXJyLCAiQ291bGQgbm90IGNyZWF0ZSBzb2NrZXQuXG4iICk7DQotCQkJV1NBQ2xlYW51cCgpOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFplcm8gb3V0IHRoZSBzZXJ2ZXIgc3RydWN0dXJlLiAqLw0KLQkJCW1lbXNldCggKCB2b2lkICogKSAmeFNlcnZlciwgMHgwMCwgc2l6ZW9mKCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKSApOw0KLQ0KLQkJCS8qIFNldCBmYW1pbHkgYW5kIHBvcnQuICovDQotCQkJeFNlcnZlci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCi0JCQl4U2VydmVyLnNpbl9wb3J0ID0gaHRvbnMoIGNvbmZpZ1VEUF9DTElfUE9SVF9OVU1CRVIgKTsNCi0NCi0JCQkvKiBBc3NpZ24gdGhlIGxvb3BiYWNrIGFkZHJlc3MgKi8NCi0JCQl4U2VydmVyLnNpbl9hZGRyLlNfdW4uU191bl9iLnNfYjEgPSAxMjc7DQotCQkJeFNlcnZlci5zaW5fYWRkci5TX3VuLlNfdW5fYi5zX2IyID0gMDsNCi0JCQl4U2VydmVyLnNpbl9hZGRyLlNfdW4uU191bl9iLnNfYjMgPSAwOw0KLQkJCXhTZXJ2ZXIuc2luX2FkZHIuU191bi5TX3VuX2Iuc19iNCA9IDE7DQotDQotCQkJLyogQmluZCB0aGUgYWRkcmVzcyB0byB0aGUgc29ja2V0LiAqLw0KLQkJCWlmKCBiaW5kKCB4U29ja2V0LCAoIHN0cnVjdCBzb2NrYWRkciAqICkgJnhTZXJ2ZXIsIHNpemVvZiggc3RydWN0IHNvY2thZGRyX2luICkgKSA9PSAtMSApDQotCQkJew0KLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJDb3VsZCBub3Qgc29ja2V0IHRvIHBvcnQgJWQuXG4iLCBjb25maWdVRFBfQ0xJX1BPUlRfTlVNQkVSICk7DQotCQkJCWNsb3Nlc29ja2V0KCB4U29ja2V0ICk7DQotCQkJCXhTb2NrZXQgPSBJTlZBTElEX1NPQ0tFVDsNCi0JCQkJV1NBQ2xlYW51cCgpOw0KLQkJCX0NCi0JCX0NCi0JfQ0KLQ0KLQlyZXR1cm4geFNvY2tldDsNCi19DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvV0lOMzIudmN4cHJvaiBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dJTjMyLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NTIzOWEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvV0lOMzIudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCi0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCi0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+DQotICAgIDxQcm9qZWN0R3VpZD57QzY4NjMyNUUtMzI2MS00MkY3LUFFQjEtRERFNTI4MEUxQ0VCfTwvUHJvamVjdEd1aWQ+DQotICAgIDxQcm9qZWN0TmFtZT5SVE9TRGVtbzwvUHJvamVjdE5hbWU+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPg0KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCi0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4NCi0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpTWljcm9zb2Z0LkNQUC5VcGdyYWRlRnJvbVZDNjAucHJvcHMiIC8+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKU1pY3Jvc29mdC5DUFAuVXBncmFkZUZyb21WQzYwLnByb3BzIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KLSAgPFByb3BlcnR5R3JvdXA+DQotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4NCi0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+LlxEZWJ1Z1w8L091dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+LlxEZWJ1Z1w8L0ludERpcj4NCi0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi5cUmVsZWFzZVw8L091dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uXFJlbGVhc2VcPC9JbnREaXI+DQotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCi0gICAgPE1pZGw+DQotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXERlYnVnL1dJTjMyLnRsYjwvVHlwZUxpYnJhcnlOYW1lPg0KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4NCi0gICAgICA8L0hlYWRlckZpbGVOYW1lPg0KLSAgICA8L01pZGw+DQotICAgIDxDbENvbXBpbGU+DQotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxpbmNsdWRlOy4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxwb3J0YWJsZVxNU1ZDLU1pbmdXOy4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSTsuOy5cLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGFwaTsuXC4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcdGVzdDsuXENvbmZpZ3VyYXRpb25GaWxlczslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7X1dJTjMyX1dJTk5UPTB4MDUwMDtXSU5WRVI9MHg0MDA7X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCi0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCi0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8UHJlY29tcGlsZWRIZWFkZXJPdXRwdXRGaWxlPi5cRGVidWcvV0lOMzIucGNoPC9QcmVjb21waWxlZEhlYWRlck91dHB1dEZpbGU+DQotICAgICAgPEFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj4uXERlYnVnLzwvQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPg0KLSAgICAgIDxPYmplY3RGaWxlTmFtZT4uXERlYnVnLzwvT2JqZWN0RmlsZU5hbWU+DQotICAgICAgPFByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPi5cRGVidWcvPC9Qcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPg0KLSAgICAgIDxEaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zPmZhbHNlPC9EaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zPg0KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PkVkaXRBbmRDb250aW51ZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxSZXNvdXJjZUNvbXBpbGU+DQotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPEN1bHR1cmU+MHgwYzA5PC9DdWx0dXJlPg0KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4NCi0gICAgPExpbms+DQotICAgICAgPE91dHB1dEZpbGU+LlxEZWJ1Zy9SVE9TRGVtby5leGU8L091dHB1dEZpbGU+DQotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+DQotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+LlxEZWJ1Zy9XSU4zMi5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+DQotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCi0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPg0KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi5cV2luUENhcDwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4NCi0gICAgPC9MaW5rPg0KLSAgICA8QnNjbWFrZT4NCi0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4NCi0gICAgICA8T3V0cHV0RmlsZT4uXERlYnVnL1dJTjMyLmJzYzwvT3V0cHV0RmlsZT4NCi0gICAgPC9Cc2NtYWtlPg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQotICAgIDxNaWRsPg0KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlxSZWxlYXNlL1dJTjMyLnRsYjwvVHlwZUxpYnJhcnlOYW1lPg0KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4NCi0gICAgICA8L0hlYWRlckZpbGVOYW1lPg0KLSAgICA8L01pZGw+DQotICAgIDxDbENvbXBpbGU+DQotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPg0KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lOU09DS0FQSV87V0lOMzI7TkRFQlVHO19DT05TT0xFO19DUlRfU0VDVVJFX05PX1dBUk5JTkdTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCi0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+DQotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyT3V0cHV0RmlsZT4uXFJlbGVhc2UvV0lOMzIucGNoPC9QcmVjb21waWxlZEhlYWRlck91dHB1dEZpbGU+DQotICAgICAgPEFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj4uXFJlbGVhc2UvPC9Bc3NlbWJsZXJMaXN0aW5nTG9jYXRpb24+DQotICAgICAgPE9iamVjdEZpbGVOYW1lPi5cUmVsZWFzZS88L09iamVjdEZpbGVOYW1lPg0KLSAgICAgIDxQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT4uXFJlbGVhc2UvPC9Qcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXENvbW1vblxVdGlsczsuLlxDb21tb25cZXRoZXJuZXRcbHdpcC0xLjQuMFxwb3J0c1x3aW4zMlxXaW5QQ2FwOy4uXENvbW1vblxldGhlcm5ldFxsd2lwLTEuNC4wXHNyY1xpbmNsdWRlXGlwdjQ7Li5cQ29tbW9uXGV0aGVybmV0XGx3aXAtMS40LjBcc3JjXGluY2x1ZGU7Li5cLi5cU291cmNlXGluY2x1ZGU7Li5cLi5cU291cmNlXHBvcnRhYmxlXE1TVkMtTWluZ1c7Li5cQ29tbW9uXGV0aGVybmV0XGx3aXAtMS40LjBccG9ydHNcd2luMzJcaW5jbHVkZTsuLlxDb21tb25cSW5jbHVkZTsuXGx3SVBfQXBwczsuOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8UmVzb3VyY2VDb21waWxlPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxDdWx0dXJlPjB4MGMwOTwvQ3VsdHVyZT4NCi0gICAgPC9SZXNvdXJjZUNvbXBpbGU+DQotICAgIDxMaW5rPg0KLSAgICAgIDxPdXRwdXRGaWxlPi5cUmVsZWFzZS9SVE9TRGVtby5leGU8L091dHB1dEZpbGU+DQotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+DQotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+LlxSZWxlYXNlL1dJTjMyLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4NCi0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCi0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXENvbW1vblxldGhlcm5ldFxsd2lwLTEuNC4wXHBvcnRzXHdpbjMyXFdpblBDYXA8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+DQotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3BjYXAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+DQotICAgIDwvTGluaz4NCi0gICAgPEJzY21ha2U+DQotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+DQotICAgICAgPE91dHB1dEZpbGU+LlxSZWxlYXNlL1dJTjMyLmJzYzwvT3V0cHV0RmlsZT4NCi0gICAgPC9Cc2NtYWtlPg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcbGlzdC5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxwb3J0YWJsZVxNU1ZDLU1pbmdXXHBvcnQuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VccXVldWUuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcdGFza3MuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcdGltZXJzLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGZfbG9jay5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcdGVzdFx0ZXN0LmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXHBzcFx0YXJnZXRcZmF0X3NsXHBzcF90ZXN0LmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmlsZS1SZWxlYXRlZC1DTEktY29tbWFuZHMuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJGaWxlLXN5c3RlbS1kZW1vLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZGlyLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZHJ2LmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmF0LmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmlsZS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWwuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx1dGlsX3Nmbi5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHZvbHVtZS5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxtZWRpYS1kcnZccmFtXHJhbWRydl9mLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXHBzcFx0YXJnZXRccnRjXHBzcF9ydGMuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWluLmMiPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJ1bi10aW1lLXN0YXRzLXV0aWxzLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2FtcGxlLUNMSS1jb21tYW5kcy5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlVEUENvbW1hbmRTZXJ2ZXIuYyIgLz4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcaW5jbHVkZVxGcmVlUlRPUy5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxpbmNsdWRlXHByb2pkZWZzLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVccXVldWUuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcaW5jbHVkZVxzZW1waHIuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcaW5jbHVkZVx0YXNrLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVcdGltZXJzLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxhcGlcZmF0X3NsLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZl9sb2NrLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iQ29uZmlndXJhdGlvbkZpbGVzXGNvbmZpZ19mYXRfc2wuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25maWd1cmF0aW9uRmlsZXNcY29uZmlnX2ZhdF9zbF90ZXN0LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZGlyLmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZHJ2LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmF0LmgiIC8+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmlsZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWwuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx1dGlsX3Nmbi5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHZvbHVtZS5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkNvbmZpZ3VyYXRpb25GaWxlc1xGcmVlUlRPU0NvbmZpZy5oIiAvPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCi0gIDwvSW1wb3J0R3JvdXA+DQotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dJTjMyLnZjeHByb2ouZmlsdGVycyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dJTjMyLnZjeHByb2ouZmlsdGVycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyZmZiYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XSU4zMi52Y3hwcm9qLmZpbHRlcnMKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57Mzg3MTIxOTktY2ViZi00MTI0LWJmMTUtMzk4ZjdjMzQxOWVhfTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgICA8RXh0ZW5zaW9ucz5pY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU8L0V4dGVuc2lvbnM+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWYzNDQ1YTEtNDkwOC00MTcwLTg5ZWQtMzkzNDVkOTBkMzBjfTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgPC9GaWx0ZXI+DQotICAgIDxGaWx0ZXIgSW5jbHVkZT0iRnJlZVJUT1NcU291cmNlIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZjMyYmUzNTYtNDc2My00Y2FlLTkwMjAtOTc0YTI2MzhjYjA4fTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgICA8RXh0ZW5zaW9ucz4qLmM8L0V4dGVuc2lvbnM+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TXFNvdXJjZVxQb3J0YWJsZSI+DQotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezg4ZjQwOWU2LWQzOTYtNGFjNS05NGJkLTdhOTljOTE0YmU0Nn08L1VuaXF1ZUlkZW50aWZpZXI+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TKyI+DQotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2U1YWQ0ZWM3LTIzZGMtNDI5NS04YWRkLTJhY2FlZTQ4OGY1YX08L1VuaXF1ZUlkZW50aWZpZXI+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TK1xGcmVlUlRPUytDTEkiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmZDQzYzBlZC1mZGJjLTQzN2YtYTVhMy1jNTAzOTk2OTBiZDd9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJGcmVlUlRPUytcRnJlZVJUT1MrQ0xJXGluY2x1ZGUiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjNTg4OWZlMi1hZjBmLTRjZWEtOTI3Zi02YTY5MzVlYzVlMTR9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJGcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZDI2MTYxMWEtNTQxNi00NDU1LWJiMzMtM2JkODQzODFlYTQwfTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgPC9GaWx0ZXI+DQotICAgIDxGaWx0ZXIgSW5jbHVkZT0iRnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTFxNZWRpYV9Ecml2ZXIiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxN2MxYTc5NC1hNGE2LTQzNTgtODUwZi0yYTg4YmZlM2JkMzN9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJGcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMXHBzcCI+DQotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ZiN2NjYzFkLWM0YWQtNDc1YS05OGQ5LTJlOGFlMjMwMWM5OX08L1VuaXF1ZUlkZW50aWZpZXI+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0xccHNwXHRhcmdldCI+DQotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezM0YmI0YTk4LWZiODgtNDFmYy04MWYyLTRlM2YxYzUwYzUyOH08L1VuaXF1ZUlkZW50aWZpZXI+DQotICAgIDwvRmlsdGVyPg0KLSAgICA8RmlsdGVyIEluY2x1ZGU9IkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0xccHNwXHRhcmdldFxydGMiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyODZiZjY1Yy05M2NkLTQ0ODAtODM2My0wZmIyYzJiYzdjZTF9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJDb25maWd1cmF0aW9uIEZpbGVzIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57MTlmZjFhMzQtMzZkZS00YzQ4LTlkMTAtM2ZiMWZhMGQxZmE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sPC9FeHRlbnNpb25zPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJGcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMXHRlc3RzIj4NCi0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTQxMDVkODEtODAyYS00MjEwLWI0MGItZDVkZDNjZjZlNjQzfTwvVW5pcXVlSWRlbnRpZmllcj4NCi0gICAgPC9GaWx0ZXI+DQotICAgIDxGaWx0ZXIgSW5jbHVkZT0iRnJlZVJUT1NcU291cmNlXGluY2x1ZGUiPg0KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthYjIzODI3Yy0xMjZjLTRlNWEtYmM5OS04ZWZhNDRkOGE4YmR9PC9VbmlxdWVJZGVudGlmaWVyPg0KLSAgICA8L0ZpbHRlcj4NCi0gICAgPEZpbHRlciBJbmNsdWRlPSJGcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMXGFwaSI+DQotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezllMWM5Y2Y1LWMyYzctNGY4ZC1iMDlkLTBiN2YzMjllYWM1N308L1VuaXF1ZUlkZW50aWZpZXI+DQotICAgIDwvRmlsdGVyPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxwb3J0YWJsZVxNU1ZDLU1pbmdXXHBvcnQuYyI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPU1xTb3VyY2VcUG9ydGFibGU8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXHRpbWVycy5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TXFNvdXJjZTwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcbGlzdC5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TXFNvdXJjZTwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VccXVldWUuYyI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPU1xTb3VyY2U8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXHRhc2tzLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1NcU291cmNlPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TXFNvdXJjZVxQb3J0YWJsZTwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTElcRnJlZVJUT1NfQ0xJLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0NMSTwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcbWVkaWEtZHJ2XHJhbVxyYW1kcnZfZi5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0xcTWVkaWFfRHJpdmVyPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxwc3BcdGFyZ2V0XHJ0Y1xwc3BfcnRjLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTFxwc3BcdGFyZ2V0XHJ0YzwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxkaXIuYyI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGRydi5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0w8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmF0LmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxmaWxlLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx1dGlsLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx1dGlsX3Nmbi5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0w8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cdm9sdW1lLmMiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJVRFBDb21tYW5kU2VydmVyLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iRmlsZS1SZWxlYXRlZC1DTEktY29tbWFuZHMuYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJGaWxlLXN5c3RlbS1kZW1vLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IlJ1bi10aW1lLXN0YXRzLXV0aWxzLmMiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iU2FtcGxlLUNMSS1jb21tYW5kcy5jIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxwc3BcdGFyZ2V0XGZhdF9zbFxwc3BfdGVzdC5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0w8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFx0ZXN0XHRlc3QuYyI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMXHRlc3RzPC9GaWx0ZXI+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGZfbG9jay5jIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0w8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5oIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytDTElcaW5jbHVkZTwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx2b2x1bWUuaCI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGRpci5oIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TK1xGcmVlUlRPUytGQVQgU0w8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZHJ2LmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxmYXQuaCI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGZpbGUuaCI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWwuaCI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPUytcRnJlZVJUT1MrRkFUIFNMPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWxfc2ZuLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25maWd1cmF0aW9uRmlsZXNcY29uZmlnX2ZhdF9zbC5oIj4NCi0gICAgICA8RmlsdGVyPkNvbmZpZ3VyYXRpb24gRmlsZXM8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVcdGltZXJzLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1NcU291cmNlXGluY2x1ZGU8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVcRnJlZVJUT1MuaCI+DQotICAgICAgPEZpbHRlcj5GcmVlUlRPU1xTb3VyY2VcaW5jbHVkZTwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPU1xTb3VyY2VcaW5jbHVkZVxwcm9qZGVmcy5oIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TXFNvdXJjZVxpbmNsdWRlPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXC4uXEZyZWVSVE9TXFNvdXJjZVxpbmNsdWRlXHF1ZXVlLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1NcU291cmNlXGluY2x1ZGU8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVcc2VtcGhyLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1NcU291cmNlXGluY2x1ZGU8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1NcU291cmNlXGluY2x1ZGVcdGFzay5oIj4NCi0gICAgICA8RmlsdGVyPkZyZWVSVE9TXFNvdXJjZVxpbmNsdWRlPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxhcGlcZmF0X3NsLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTFxhcGk8L0ZpbHRlcj4NCi0gICAgPC9DbEluY2x1ZGU+DQotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZl9sb2NrLmgiPg0KLSAgICAgIDxGaWx0ZXI+RnJlZVJUT1MrXEZyZWVSVE9TK0ZBVCBTTDwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25maWd1cmF0aW9uRmlsZXNcY29uZmlnX2ZhdF9zbF90ZXN0LmgiPg0KLSAgICAgIDxGaWx0ZXI+Q29uZmlndXJhdGlvbiBGaWxlczwvRmlsdGVyPg0KLSAgICA8L0NsSW5jbHVkZT4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSJDb25maWd1cmF0aW9uRmlsZXNcRnJlZVJUT1NDb25maWcuaCI+DQotICAgICAgPEZpbHRlcj5Db25maWd1cmF0aW9uIEZpbGVzPC9GaWx0ZXI+DQotICAgIDwvQ2xJbmNsdWRlPg0KLSAgPC9JdGVtR3JvdXA+DQotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dJTjMyLnZjeHByb2oudXNlciBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX0ZBVF9TTF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dJTjMyLnZjeHByb2oudXNlcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1YjVjNy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XSU4zMi52Y3hwcm9qLnVzZXIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19GQVRfU0xfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZmI4YWEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfRkFUX1NMX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIFRoaXMgZGVtbyBpcyBkZXNjcmliZWQgb24gdGhlIGZvbGxvd2luZyB3ZWIgcGFnZToNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzL0ZyZWVSVE9TX1BsdXNfRkFUX1NML0RlbW9zL0ZpbGVfU3lzdGVtX1dpbjMyX1NpbXVsYXRvcl9kZW1vLnNodG1sDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8RnJlZVJUT1MuaD4NCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiY29uZmlnX2ZhdF9zbC5oIg0KLQ0KLS8qIFByaW9yaXRpZXMgYXQgd2hpY2ggdGhlIHRhc2tzIGFyZSBjcmVhdGVkLiAqLw0KLSNkZWZpbmUgbWFpblVEUF9DTElfVEFTS19QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSApDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBSZWdpc3RlciB0aGUgZ2VuZXJpYyBjb21tYW5kcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggRnJlZVJUT1MrQ0xJLg0KLSAqLw0KLWV4dGVybiB2b2lkIHZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCB2b2lkICk7DQotDQotLyoNCi0gKiBSZWdpc3RlciB0aGUgZmlsZSBzeXN0ZW0gY29tbWFuZHMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIEZyZWVSVE9TK0NMSS4NCi0gKi8NCi1leHRlcm4gdm9pZCB2UmVnaXN0ZXJGaWxlU3lzdGVtQ0xJQ29tbWFuZHMoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIFRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyB0aGUgVURQIGNvbW1hbmQgaW50ZXJwcmV0ZXIgdXNpbmcgRnJlZVJUT1MrQ0xJLg0KLSAqLw0KLWV4dGVybiB2b2lkIHZVRFBDb21tYW5kSW50ZXJwcmV0ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCi0NCi0vKg0KLSAqIENyZWF0ZXMgYW5kIHZlcmlmaWVzIGRpZmZlcmVudCBmaWxlcyBvbiB0aGUgdm9sdW1lLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YNCi0gKiB2YXJpb3VzIGRpZmZlcmVudCBBUEkgZnVuY3Rpb25zLg0KLSAqLw0KLWV4dGVybiB2b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIFRoaXMgZGVtbyBpcyBkZXNjcmliZWQgb24gdGhlIGZvbGxvd2luZyB3ZWIgcGFnZToNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzL0ZyZWVSVE9TX1BsdXNfRkFUX1NML0RlbW9zL0ZpbGVfU3lzdGVtX1dpbjMyX1NpbXVsYXRvcl9kZW1vLnNodG1sDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLWludCBtYWluKCB2b2lkICkNCi17DQotY29uc3QgdWludDMyX3QgdWxMb25nVGltZV9tcyA9IDI1MFVMOw0KLQ0KLQkvKiBJZiB0aGUgZmlsZSBzeXN0ZW0gaXMgb25seSBnb2luZyB0byBiZSBhY2Nlc3NlZCBmcm9tIG9uZSB0YXNrIHRoZW4NCi0JRl9GU19USFJFQURfQVdBUkUgY2FuIGJlIHNldCB0byAwIGFuZCB0aGUgc2V0IG9mIGV4YW1wbGUgZmlsZXMgYXJlIGNyZWF0ZWQNCi0JYmVmb3JlIHRoZSBSVE9TIHNjaGVkdWxlciBpcyBzdGFydGVkLiAgSWYgdGhlIGZpbGUgc3lzdGVtIGlzIGdvaW5nIHRvIGJlDQotCWFjY2VzcyBmcm9tIG1vcmUgdGhhbiBvbmUgdGFzayB0aGVuIEZfRlNfVEhSRUFEX0FXQVJFIG11c3QgYmUgc2V0IHRvIDEgYW5kDQotCXRoZQlzZXQgb2Ygc2FtcGxlIGZpbGVzIGFyZSBjcmVhdGVkIGZyb20gdGhlIGlkbGUgdGFzayBob29rIGZ1bmN0aW9uDQotCXZBcHBsaWNhdGlvbklkbGVIb29rKCkgLSB3aGljaCBpcyBkZWZpbmVkIGluIHRoaXMgZmlsZS4gKi8NCi0JI2lmIEZfRlNfVEhSRUFEX0FXQVJFID09IDANCi0Jew0KLQkJLyogSW5pdGlhbGlzZSB0aGUgZHJpdmUgYW5kIGZpbGUgc3lzdGVtLCB0aGVuIGNyZWF0ZSBhIGZldyBleGFtcGxlDQotCQlmaWxlcy4gIFRoZSBvdXRwdXQgZnJvbSB0aGlzIGZ1bmN0aW9uIGp1c3QgZ29lcyB0byB0aGUgc3Rkb3V0IHdpbmRvdywNCi0JCWFsbG93aW5nIHRoZSBvdXRwdXQgdG8gYmUgdmlld2VkIHdoZW4gdGhlIFVEUCBjb21tYW5kIGNvbnNvbGUgaXMgbm90DQotCQljb25uZWN0ZWQuICovDQotCQl2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoKTsNCi0JfQ0KLQkjZW5kaWYNCi0NCi0JLyogUmVnaXN0ZXIgZ2VuZXJpYyBjb21tYW5kcyB3aXRoIHRoZSBGcmVlUlRPUytDTEkgY29tbWFuZCBpbnRlcnByZXRlci4gKi8NCi0JdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoKTsNCi0NCi0JLyogUmVnaXN0ZXIgZmlsZSBzeXN0ZW0gcmVsYXRlZCBjb21tYW5kcyB3aXRoIHRoZSBGcmVlUlRPUytDTEkgY29tbWFuZA0KLQlpbnRlcnByZXRlci4gKi8NCi0JdlJlZ2lzdGVyRmlsZVN5c3RlbUNMSUNvbW1hbmRzKCk7DQotDQotCS8qIENyZWF0ZSB0aGUgdGFzayB0aGF0IGhhbmRsZXMgdGhlIENMSSBvbiBhIFVEUCBwb3J0LiAgVGhlIHBvcnQgbnVtYmVyDQotCWlzIHNldCB1c2luZyB0aGUgY29uZmlnVURQX0NMSV9QT1JUX05VTUJFUiBzZXR0aW5nIGluIEZyZWVSVE9TQ29uZmlnLmguICovDQotCXhUYXNrQ3JlYXRlKCB2VURQQ29tbWFuZEludGVycHJldGVyVGFzaywgCS8qIFRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgSU8gaGFuZGxpbmcuICovDQotCQkJCSJDTEkiLCAJCQkJCQkJLyogVGhlIG5hbWUgb2YgdGhlIHRhc2sgLSBqdXN0IHRvIGFzc2lzdCBkZWJ1Z2dpbmcuICovDQotCQkJCWNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFsbG9jYXRlZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJbWFpblVEUF9DTElfVEFTS19QUklPUklUWSwgCQkvKiBUaGUgcHJpb3JpdHkgYXQgd2hpY2ggdGhlIHRhc2sgd2lsbCBydW4uICovDQotCQkJCU5VTEwgKTsJCQkJCQkJLyogQSBoYW5kbGUgdG8gdGhlIHRhc2sgaXMgbm90IHJlcXVpcmVkLCBzbyBOVUxMIGlzIHBhc3NlZC4gKi8NCi0NCi0JLyogU3RhcnQgdGhlIFJUT1Mgc2NoZWR1bGVyLiAqLw0KLQl2VGFza1N0YXJ0U2NoZWR1bGVyKCk7DQotDQotCS8qIElmIGFsbCBpcyB3ZWxsLCB0aGUgc2NoZWR1bGVyIHdpbGwgbm93IGJlIHJ1bm5pbmcsIGFuZCB0aGUgZm9sbG93aW5nDQotCWxpbmUgd2lsbCBuZXZlciBiZSByZWFjaGVkLiAgSWYgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgZXhlY3V0ZSwgdGhlbg0KLQl0aGVyZSB3YXMgaW5zdWZmaWNpZW50IEZyZWVSVE9TIGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgdGhlIGlkbGUgYW5kL29yDQotCXRpbWVyIHRhc2tzCXRvIGJlIGNyZWF0ZWQuICBTZWUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHNlY3Rpb24gb24gdGhlDQotCUZyZWVSVE9TIHdlYiBzaXRlIGZvciBtb3JlIGRldGFpbHMgKHRoaXMgaXMgc3RhbmRhcmQgdGV4dCB0aGF0IGlzIG5vdA0KLQlyZWFsbHkgYXBwbGljYWJsZSB0byB0aGUgV2luMzIgc2ltdWxhdG9yIHBvcnQpLiAqLw0KLQlmb3IoIDs7ICkNCi0Jew0KLQkJU2xlZXAoIHVsTG9uZ1RpbWVfbXMgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICkNCi17DQotY29uc3QgdW5zaWduZWQgbG9uZyB1bE1TVG9TbGVlcCA9IDU7DQotDQotCS8qIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBvbmx5IGdvaW5nIHRvIGJlIGFjY2Vzc2VkIGZyb20gb25lIHRhc2sgdGhlbg0KLQlGX0ZTX1RIUkVBRF9BV0FSRSBjYW4gYmUgc2V0IHRvIDAgYW5kIHRoZSBzZXQgb2YgZXhhbXBsZSBmaWxlcyBpcyBjcmVhdGVkDQotCWJlZm9yZSB0aGUgUlRPUyBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBnb2luZyB0byBiZQ0KLQlhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2sgdGhlbiBGX0ZTX1RIUkVBRF9BV0FSRSBtdXN0IGJlIHNldCB0byAxIGFuZA0KLQl0aGUJc2V0IG9mIHNhbXBsZSBmaWxlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSBpZGxlIHRhc2sgaG9vayBmdW5jdGlvbi4gKi8NCi0JI2lmIEZfRlNfVEhSRUFEX0FXQVJFID09IDENCi0Jew0KLQkJc3RhdGljIEJhc2VUeXBlX3QgeENyZWF0ZWRTYW1wbGVGaWxlcyA9IHBkRkFMU0U7DQotDQotCQkvKiBJbml0aWFsaXNlIHRoZSBkcml2ZSBhbmQgZmlsZSBzeXN0ZW0sIHRoZW4gY3JlYXRlIGEgZmV3IGV4YW1wbGUNCi0JCWZpbGVzLiAgVGhlIG91dHB1dCBmcm9tIHRoaXMgZnVuY3Rpb24ganVzdCBnb2VzIHRvIHRoZSBzdGRvdXQgd2luZG93LA0KLQkJYWxsb3dpbmcgdGhlIG91dHB1dCB0byBiZSB2aWV3ZWQgd2hlbiB0aGUgVURQIGNvbW1hbmQgY29uc29sZSBpcyBub3QNCi0JCWNvbm5lY3RlZC4gKi8NCi0JCWlmKCB4Q3JlYXRlZFNhbXBsZUZpbGVzID09IHBkRkFMU0UgKQ0KLQkJew0KLQkJCXZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcygpOw0KLQkJCXhDcmVhdGVkU2FtcGxlRmlsZXMgPSBwZFRSVUU7DQotCQl9DQotCX0NCi0JI2VuZGlmDQotDQotCS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGVhY2ggY3ljbGUgb2YgdGhlIGlkbGUgdGFzayBpZg0KLQljb25maWdVU0VfSURMRV9IT09LIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBTbGVlcCB0byByZWR1Y2UgQ1BVDQotCWxvYWQuICovDQotCVNsZWVwKCB1bE1TVG9TbGVlcCApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBc3NlcnRDYWxsZWQoIGNvbnN0IGNoYXIgKnBjRmlsZSwgdW5zaWduZWQgbG9uZyB1bExpbmUgKQ0KLXsNCi0JcHJpbnRmKCAiQVNTRVJUIEZBSUxFRDogRmlsZSAlcywgbGluZSAldVxyXG4iLCBwY0ZpbGUsIHVsTGluZSApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKQ0KLXsNCi0JLyogdkFwcGxpY2F0aW9uTWFsbG9jRmFpbGVkSG9vaygpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYNCi0JY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgaXMgYSBob29rDQotCWZ1bmN0aW9uIHRoYXQgd2lsbCBnZXQgY2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscy4NCi0JcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGtlcm5lbCB3aGVuZXZlciBhIHRhc2ssIHF1ZXVlLA0KLQl0aW1lciBvciBzZW1hcGhvcmUgaXMgY3JlYXRlZC4gIEl0IGlzIGFsc28gY2FsbGVkIGJ5IHZhcmlvdXMgcGFydHMgb2YgdGhlDQotCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYywgaGVhcF8yLmMgb3IgaGVhcF80LmMgYXJlIHVzZWQsIHRoZW4gdGhlDQotCXNpemUgb2YgdGhlIGhlYXAgYXZhaWxhYmxlIHRvIHB2UG9ydE1hbGxvYygpIGlzIGRlZmluZWQgYnkNCi0JY29uZmlnVE9UQUxfSEVBUF9TSVpFIGluIEZyZWVSVE9TQ29uZmlnLmgsIGFuZCB0aGUgeFBvcnRHZXRGcmVlSGVhcFNpemUoKQ0KLQlBUEkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcXVlcnkgdGhlIHNpemUgb2YgZnJlZSBoZWFwIHNwYWNlIHRoYXQgcmVtYWlucw0KLQkoYWx0aG91Z2ggaXQgZG9lcyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHJlbWFpbmluZyBoZWFwIG1pZ2h0DQotCWJlIGZyYWdtZW50ZWQpLiAqLw0KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQotCWZvciggOzsgKTsNCi19DQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0NvbmZpZ3VyYXRpb25GaWxlcy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0NvbmZpZ3VyYXRpb25GaWxlcy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDc3MWI1ODguLjY0MWU5ODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9Db25maWd1cmF0aW9uRmlsZXMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvQ29uZmlndXJhdGlvbkZpbGVzL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZpbGUtUmVsYXRlZC1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GaWxlLVJlbGF0ZWQtQ0xJLWNvbW1hbmRzLmMKaW5kZXggMjA5YjJlMy4uYWE0ZDM4ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZpbGUtUmVsYXRlZC1DTEktY29tbWFuZHMuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1SZWxhdGVkLUNMSS1jb21tYW5kcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1zeXN0ZW0tZGVtby5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZpbGUtc3lzdGVtLWRlbW8uYwppbmRleCBkYTAzNWMzLi45YTZhODEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRmlsZS1zeXN0ZW0tZGVtby5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GaWxlLXN5c3RlbS1kZW1vLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogU2VlIHRoZSBVUkwgaW4gdGhlIGNvbW1lbnRzIHdpdGhpbiBtYWluLmMgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUgb25saW5lDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwppbmRleCAwYWY0YTk1Li5iNWJmOGQwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBVdGlsaXR5IGZ1bmN0aW9ucyByZXF1aXJlZCB0byBnYXRoZXIgcnVuIHRpbWUgc3RhdGlzdGljcy4gIFNlZToNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvU2FtcGxlLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1NhbXBsZS1DTEktY29tbWFuZHMuYwppbmRleCBiYzA4NTU1Li5jODhmMDgzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvU2FtcGxlLUNMSS1jb21tYW5kcy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvVURQQ29tbWFuZFNlcnZlci5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1VEUENvbW1hbmRTZXJ2ZXIuYwppbmRleCA1OWQxNWUwLi41Y2I5ZTQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvVURQQ29tbWFuZFNlcnZlci5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9VRFBDb21tYW5kU2VydmVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNwcmFnbWEgY29tbWVudCggbGliLCAid3MyXzMyLmxpYiIgKQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19SZWxpYW5jZV9FZGdlX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCmluZGV4IGM4NmI0YTAuLjYxNjFhZGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1JlbGlhbmNlX0VkZ2VfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfUmVsaWFuY2VfRWRnZV9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1NpbXBsZVVEUENsaWVudEFuZFNlcnZlci5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1NpbXBsZVVEUENsaWVudEFuZFNlcnZlci5jCmluZGV4IDllNjdjOWEuLmQ5NDM0MDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9TaW1wbGVVRFBDbGllbnRBbmRTZXJ2ZXIuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvU2ltcGxlVURQQ2xpZW50QW5kU2VydmVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIHR3byB0cmFuc21pdHRpbmcgdGFza3MgYW5kIHR3byByZWNlaXZpbmcgdGFza3MuICBUaGUgdHJhbnNtaXR0aW5nDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1RDUEVjaG9DbGllbnRfU2luZ2xlVGFza3MuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9UQ1BFY2hvQ2xpZW50X1NpbmdsZVRhc2tzLmMKaW5kZXggNGViZDZlMy4uMzc4ZjJmZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1RDUEVjaG9DbGllbnRfU2luZ2xlVGFza3MuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvVENQRWNob0NsaWVudF9TaW5nbGVUYXNrcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4hQU5EIE1PRElGSUVEIEJZITw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQSBzZXQgb2YgdGFza3MgYXJlIGNyZWF0ZWQgdGhhdCBzZW5kIFRDUCBlY2hvIHJlcXVlc3RzIHRvIHRoZSBzdGFuZGFyZCBlY2hvDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL2luY2x1ZGUvU2ltcGxlVURQQ2xpZW50QW5kU2VydmVyLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVVRFBDbGllbnRBbmRTZXJ2ZXIuaAppbmRleCBkYWVlYzQ5Li5iMTU2Y2IxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVVRFBDbGllbnRBbmRTZXJ2ZXIuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVVRFBDbGllbnRBbmRTZXJ2ZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+IUFORCBNT0RJRklFRCBCWSE8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNJTVBMRV9VRFBfQ0xJRU5UX0FORF9TRVJWRVJfSA0KICNkZWZpbmUgU0lNUExFX1VEUENMSUVOVF9BTkRfU0VSVkVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9UQ1BFY2hvQ2xpZW50X1NpbmdsZVRhc2tzLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9UQ1BFY2hvQ2xpZW50X1NpbmdsZVRhc2tzLmgKaW5kZXggMDNkYWUyZi4uN2Y4ODM5YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL2luY2x1ZGUvVENQRWNob0NsaWVudF9TaW5nbGVUYXNrcy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1RDUEVjaG9DbGllbnRfU2luZ2xlVGFza3MuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+IUFORCBNT0RJRklFRCBCWSE8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNJTkdMRV9UQVNLX1RDUF9FQ0hPX0NMSUVOVFNfSA0KICNkZWZpbmUgU0lOR0xFX1RBU0tfVENQX0VDSE9fQ0xJRU5UU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGY2MmY1YS4uOTMyNTdlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4hQU5EIE1PRElGSUVEIEJZITw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NJUENvbmZpZy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NJUENvbmZpZy5oCmluZGV4IDliZTMzM2UuLjFhMDk3YTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TSVBDb25maWcuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0lQQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvV2luUENhcC9hcmNoLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYwppbmRleCBjOTBmMDMwLi5jMWFjYTczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+IUFORCBNT0RJRklFRCBCWSE8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBXaW5QQ2FwIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJwY2FwLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvV2luUENhcC9uZXRpZi5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvV2luUENhcC9uZXRpZi5oCmluZGV4IDY5ODJjYTAuLjczMjc0OGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL1dpblBDYXAvbmV0aWYuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL25ldGlmLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBORVRfSUZfSA0KICNkZWZpbmUgTkVUX0lGX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9kZW1vX2xvZ2dpbmcuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL2RlbW9fbG9nZ2luZy5jCmluZGV4IDY2NDZmYzcuLjBlMTJhMDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL2RlbW9fbG9nZ2luZy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL2RlbW9fbG9nZ2luZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4hQU5EIE1PRElGSUVEIEJZITw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogTG9nZ2luZyB1dGlsaXR5IHRoYXQgYWxsb3dzIEZyZWVSVE9TIHRhc2tzIHRvIGxvZyB0byBhIFVEUCBwb3J0LCBzdGRvdXQsIGFuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL2RlbW9fbG9nZ2luZy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvZGVtb19sb2dnaW5nLmgKaW5kZXggZTY0YWI3MC4uMmE2OGU5OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvZGVtb19sb2dnaW5nLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvZGVtb19sb2dnaW5nLmgKQEAgLTEsNzEgKzEsMzEgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQogI2lmbmRlZiBERU1PX0xPR0dJTkdfSA0KICNkZWZpbmUgREVNT19MT0dHSU5HX0gNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19UQ1BfTWluaW1hbF9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMKaW5kZXggYzAwOGYzNy4uYjA3ZDJjZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVENQX01pbmltYWxfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1RDUF9NaW5pbWFsX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+IUFORCBNT0RJRklFRCBCWSE8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgcHJvamVjdCBpcyBhIGN1dCBkb3duIHZlcnNpb24gb2YgdGhlIHByb2plY3QgZGVzY3JpYmVkIG9uIHRoZSBmb2xsb3dpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0NMSS1jb21tYW5kcy5jCmluZGV4IGU0ZjFlNmYuLjViNjc0OWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0NMSS1jb21tYW5kcy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0NMSS1jb21tYW5kcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRXhhbXBsZXMvVVNCX0NEQy9DRENDb21tYW5kQ29uc29sZS5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRXhhbXBsZXMvVVNCX0NEQy9DRENDb21tYW5kQ29uc29sZS5jCmluZGV4IDA2M2Q3YzAuLmJmN2Q0Y2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0V4YW1wbGVzL1VTQl9DREMvQ0RDQ29tbWFuZENvbnNvbGUuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9FeGFtcGxlcy9VU0JfQ0RDL0NEQ0NvbW1hbmRDb25zb2xlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogTk9URTogIFRoaXMgZmlsZSB1c2VzIGEgdGhpcmQgcGFydHkgVVNCIENEQyBkcml2ZXIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRXhhbXBsZXMvaW5jbHVkZS9DRENDb21tYW5kQ29uc29sZS5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRXhhbXBsZXMvaW5jbHVkZS9DRENDb21tYW5kQ29uc29sZS5oCmluZGV4IDcyM2VjN2UuLmRjYzY4NDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0V4YW1wbGVzL2luY2x1ZGUvQ0RDQ29tbWFuZENvbnNvbGUuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9FeGFtcGxlcy9pbmNsdWRlL0NEQ0NvbW1hbmRDb25zb2xlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ0RDX0NPTU1BTkRfQ09OU09MRV9IDQogI2RlZmluZSBDRENfQ09NTUFORF9DT05TT0xFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9FeGFtcGxlcy9pbmNsdWRlL1R3b0VjaG9DbGllbnRzLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9FeGFtcGxlcy9pbmNsdWRlL1R3b0VjaG9DbGllbnRzLmgKaW5kZXggMjFkZTEwZS4uYjAwNjY2MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRXhhbXBsZXMvaW5jbHVkZS9Ud29FY2hvQ2xpZW50cy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0V4YW1wbGVzL2luY2x1ZGUvVHdvRWNob0NsaWVudHMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBUV09fRUNIT19DTElFTlRTX0gNCiAjZGVmaW5lIFRXT19FQ0hPX0NMSUVOVFNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGE4MDVmNWUuLjRkYzliYzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9GcmVlUlRPU0lQQ29uZmlnLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9GcmVlUlRPU0lQQ29uZmlnLmgKaW5kZXggMmRkMWFlMS4uYzA1YTcxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvRnJlZVJUT1NJUENvbmZpZy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0ZyZWVSVE9TSVBDb25maWcuaApAQCAtMSwzOSArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC4xIChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogRnJlZVJUT1MrVURQIGlzIGFuIGFkZC1vbiBjb21wb25lbnQgdG8gRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydA0KLSAqIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytVRFAgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZQ0KLSAqIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytVRFAgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogKHZlcnkpIGxvdyBjb3N0IGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwNCi0gKiBzdXBwb3J0IGFuZCBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytVRFAgcHJvZHVjdC4gIENvbW1lcmNpYWwNCi0gKiBsaWNlbnNlcyBjYW4gYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueQ0KLSAqIHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9MRURzLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9MRURzLmMKaW5kZXggYjE0YmRmZS4uYzhlZWQ0MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvTEVEcy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL0xFRHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2ltcGxlIExFRCBJTyBmdW5jdGlvbnMuICBMRUQgMCBpcyB0b2dnbGVkIGJ5IGEgdGltZXIgZXZlcnkgaGFsZiBzZWNvbmQuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvUnVuVGltZVN0YXRzVGltZXIuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL1J1blRpbWVTdGF0c1RpbWVyLmMKaW5kZXggMTZmYzE1Zi4uZDhjOGRiNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvUnVuVGltZVN0YXRzVGltZXIuYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9SdW5UaW1lU3RhdHNUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9tYWluLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9MUEMxODMwX0dDQy9tYWluLmMKaW5kZXggNzI2YTEwOC4uZGE2Mzc2MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfTFBDMTgzMF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX0xQQzE4MzBfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KICNpbmNsdWRlIDxzdGRpby5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9TZWxlY3RTZXJ2ZXIuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9TZWxlY3RTZXJ2ZXIuYwppbmRleCBjNTQ2NzNjLi5mMjgzM2MwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvU2VsZWN0U2VydmVyLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1NlbGVjdFNlcnZlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEEgbnVtYmVyIG9mIHNvY2tldHMgYXJlIGNyZWF0ZWQgYW5kIGFkZGVkIHRvIGEgc2V0LiBPbmUgdGFzayB0aGVuIGJsb2NrcyBvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9TaW1wbGVDbGllbnRBbmRTZXJ2ZXIuYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9TaW1wbGVDbGllbnRBbmRTZXJ2ZXIuYwppbmRleCA4YTdmODJkLi5jYjUzY2Q5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvU2ltcGxlQ2xpZW50QW5kU2VydmVyLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1NpbXBsZUNsaWVudEFuZFNlcnZlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgdHdvIHRyYW5zbWl0dGluZyB0YXNrcyBhbmQgdHdvIHJlY2VpdmluZyB0YXNrcy4gIFRoZSB0cmFuc21pdHRpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvVURQQ29tbWFuZFNlcnZlci5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL1VEUENvbW1hbmRTZXJ2ZXIuYwppbmRleCA1MTA4ZTZkLi5kMDk2N2VkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvVURQQ29tbWFuZFNlcnZlci5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9VRFBDb21tYW5kU2VydmVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRpbnQuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TZWxlY3RTZXJ2ZXIuaCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1NlbGVjdFNlcnZlci5oCmluZGV4IGZkODdmMjguLjU0YjBmYTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1NlbGVjdFNlcnZlci5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1NlbGVjdFNlcnZlci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFTEVDVF9TRVJWRVJfSA0KICNkZWZpbmUgU0VMRUNUX1NFUlZFUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRGVtb1Rhc2tzL2luY2x1ZGUvU2ltcGxlQ2xpZW50QW5kU2VydmVyLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVDbGllbnRBbmRTZXJ2ZXIuaAppbmRleCA4NWM2MTQ0Li42MjAyN2MzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVDbGllbnRBbmRTZXJ2ZXIuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9TaW1wbGVDbGllbnRBbmRTZXJ2ZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTSU1QTEVfQ0xJRU5UX0FORF9TRVJWRVJfSA0KICNkZWZpbmUgU0lNUExFX0NMSUVOVF9BTkRfU0VSVkVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9EZW1vVGFza3MvaW5jbHVkZS9VRFBDb21tYW5kSW50ZXJwcmV0ZXIuaCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1VEUENvbW1hbmRJbnRlcnByZXRlci5oCmluZGV4IDUxNGM4YjkuLjhmZmZkYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1VEUENvbW1hbmRJbnRlcnByZXRlci5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0RlbW9UYXNrcy9pbmNsdWRlL1VEUENvbW1hbmRJbnRlcnByZXRlci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFVEUF9DT01NQU5EX0lOVEVSUFJFVEVSX0gNCiAjZGVmaW5lIFVEUF9DT01NQU5EX0lOVEVSUFJFVEVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaAppbmRleCA2NTk5N2MxLi4xMmFiOTQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NJUENvbmZpZy5oIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NJUENvbmZpZy5oCmluZGV4IDI4Y2U0NDQuLjk2NWQwNTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TSVBDb25maWcuaAorKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0lQQ29uZmlnLmgKQEAgLTEsMzggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuMCAoQykgMjAxMiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogRnJlZVJUT1MrVURQIGlzIGFuIGFkZC1vbiBjb21wb25lbnQgdG8gRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydA0KLSAqIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytVRFAgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZQ0KLSAqIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytVRFAgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogKHZlcnkpIGxvdyBjb3N0IGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwNCi0gKiBzdXBwb3J0IGFuZCBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytVRFAgcHJvZHVjdC4gIENvbW1lcmNpYWwNCi0gKiBsaWNlbnNlcyBjYW4gYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueQ0KLSAqIHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9SdW4tdGltZS1zdGF0cy11dGlscy5jIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwppbmRleCAzNjEwOGQyLi4yNjcxYjBkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9SdW4tdGltZS1zdGF0cy11dGlscy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVXRpbGl0eSBmdW5jdGlvbnMgcmVxdWlyZWQgdG8gZ2F0aGVyIHJ1biB0aW1lIHN0YXRpc3RpY3MuICBTZWU6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvV2luUENhcC9hcmNoLmMgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYwppbmRleCBjMDM0NDMwLi5mZTI4ZDQ2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYworKysgYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL2FyY2guYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogV2luUENhcCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAicGNhcC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dpblBDYXAvbmV0aWYuaCBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL1dpblBDYXAvbmV0aWYuaAppbmRleCBiY2ExZGM1Li43MzI3NDhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9XaW5QQ2FwL25ldGlmLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvV2luUENhcC9uZXRpZi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIE5FVF9JRl9IDQogI2RlZmluZSBORVRfSUZfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1VEUF9hbmRfQ0xJX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYwppbmRleCAyOTI0ZTRjLi5hNjA2OGFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19VRFBfYW5kX0NMSV9XaW5kb3dzX1NpbXVsYXRvci9tYWluLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfVURQX2FuZF9DTElfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkaW8uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19Xb2xmU1NMX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19Xb2xmU1NMX1dpbmRvd3NfU2ltdWxhdG9yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYjFlMmRiZi4uM2NmZjc4NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9EZW1vL0ZyZWVSVE9TX1BsdXNfV29sZlNTTF9XaW5kb3dzX1NpbXVsYXRvci9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19Xb2xmU1NMX1dpbmRvd3NfU2ltdWxhdG9yL1NlY3VyZVRDUENsaWVudFRhc2suYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQQ2xpZW50VGFzay5jCmluZGV4IDNjNDhkYTEuLjkwZTk1ZDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQQ2xpZW50VGFzay5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQQ2xpZW50VGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjcHJhZ21hIGNvbW1lbnQoIGxpYiwgIndzMl8zMi5saWIiICkNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19Xb2xmU1NMX1dpbmRvd3NfU2ltdWxhdG9yL1NlY3VyZVRDUFNlcnZlclRhc2suYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQU2VydmVyVGFzay5jCmluZGV4IDE0MTljMGMuLmE4YjM5ZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQU2VydmVyVGFzay5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvU2VjdXJlVENQU2VydmVyVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjcHJhZ21hIGNvbW1lbnQoIGxpYiwgIndzMl8zMi5saWIiICkNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL0RlbW8vRnJlZVJUT1NfUGx1c19Xb2xmU1NMX1dpbmRvd3NfU2ltdWxhdG9yL21haW4uYyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCmluZGV4IDM2ZjdjZGUuLjIwNDhmMTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvRGVtby9GcmVlUlRPU19QbHVzX1dvbGZTU0xfV2luZG93c19TaW11bGF0b3IvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkaW8uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUNMSS9GcmVlUlRPU19DTEkuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5jCmluZGV4IDU4ZTc5NWMuLjE4MDM3MGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5jCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK0NMSSBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqIEZyZWVSVE9TK0NMSSBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrQ0xJIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytDTEkgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrQ0xJIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrQ0xJIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrQ0xJIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBsb3cgY29zdCBjb21tZXJjaWFsDQotICogbGljZW5zZSBiZWZvcmUgaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytDTEkgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3INCi0gKiBkaXN0cmlidXRpb24gaW4gYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbQ0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9jbGkgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUNCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrQ0xJIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK0NMSSB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytDTEkgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUNMSS9GcmVlUlRPU19DTEkuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5oCmluZGV4IDdhYzY2NmQuLmQzMjgwZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJL0ZyZWVSVE9TX0NMSS5oCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK0NMSSBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICogRnJlZVJUT1MrQ0xJIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytDTEkgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK0NMSSBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytDTEkgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytDTEkgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytDTEkgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGxvdyBjb3N0IGNvbW1lcmNpYWwNCi0gKiBsaWNlbnNlIGJlZm9yZSBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0NMSSBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvcg0KLSAqIGRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2NsaSBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZQ0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytDTEkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrQ0xJIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK0NMSSBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgQ09NTUFORF9JTlRFUlBSRVRFUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvUmVhZE1lLnVybCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML1JlYWRNZS51cmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOTI0YzMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvUmVhZE1lLnVybAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotW0ludGVybmV0U2hvcnRjdXRdDQotVVJMPWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2ZhdA0KLUlETGlzdD0NCi1bezAwMDIxNEEwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0Nn1dDQotUHJvcDM9MTksMg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2FwaS9hcGlfbWRyaXZlci5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvYXBpL2FwaV9tZHJpdmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5OTQwYTMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvYXBpL2FwaV9tZHJpdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9BUElfTURSSVZFUl9IXw0KLSNkZWZpbmUgX0FQSV9NRFJJVkVSX0hfDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX21kcml2ZXIuaCINCi0jaWYgVkVSX01EUklWRVJfTUFKT1IgIT0gMSB8fCBWRVJfTURSSVZFUl9NSU5PUiAhPSAwDQotICNlcnJvciBJbmNvbXBhdGlibGUgTURSSVZFUiB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gIHVuc2lnbmVkIHNob3J0ICBudW1iZXJfb2ZfY3lsaW5kZXJzOw0KLSAgdW5zaWduZWQgc2hvcnQgIHNlY3Rvcl9wZXJfdHJhY2s7DQotICB1bnNpZ25lZCBzaG9ydCAgbnVtYmVyX29mX2hlYWRzOw0KLSAgdW5zaWduZWQgbG9uZyAgIG51bWJlcl9vZl9zZWN0b3JzOw0KLSAgdW5zaWduZWQgY2hhciAgIG1lZGlhX2Rlc2NyaXB0b3I7DQotDQotICB1bnNpZ25lZCBzaG9ydCAgYnl0ZXNfcGVyX3NlY3RvcjsNCi19IEZfUEhZOw0KLQ0KLS8qIG1lZGlhIGRlc2NyaXB0b3IgdG8gYmUgc2V0IGluIGdldHBoeSBmdW5jdGlvbiAqLw0KLSNkZWZpbmUgRl9NRURJQURFU0NfUkVNT1ZBQkxFIDB4ZjANCi0jZGVmaW5lIEZfTUVESUFERVNDX0ZJWCAgICAgICAweGY4DQotDQotLyogcmV0dXJuIGJpdHBhdHRlcm4gZm9yIGRyaXZlciBnZXRwaHkgZnVuY3Rpb24gKi8NCi0jZGVmaW5lIEZfU1RfTUlTU0lORyAgICAgICAgICAweDAwMDAwMDAxDQotI2RlZmluZSBGX1NUX0NIQU5HRUQgICAgICAgICAgMHgwMDAwMDAwMg0KLSNkZWZpbmUgRl9TVF9XUlBST1RFQ1QgICAgICAgIDB4MDAwMDAwMDQNCi0NCi0vKiBEcml2ZXIgZGVmaW5pdGlvbnMgKi8NCi10eXBlZGVmIHN0cnVjdCBGX0RSSVZFUiAgRl9EUklWRVI7DQotDQotdHlwZWRlZiBpbnQgICAgICAgICAgICggKkZfV1JJVEVTRUNUT1IgKSggRl9EUklWRVIgKiBkcml2ZXIsIHZvaWQgKiBkYXRhLCB1bnNpZ25lZCBsb25nIHNlY3RvciApOw0KLXR5cGVkZWYgaW50ICAgICAgICAgICAoICpGX1JFQURTRUNUT1IgKSggRl9EUklWRVIgKiBkcml2ZXIsIHZvaWQgKiBkYXRhLCB1bnNpZ25lZCBsb25nIHNlY3RvciApOw0KLXR5cGVkZWYgaW50ICAgICAgICAgICAoICpGX0dFVFBIWSApKCBGX0RSSVZFUiAqIGRyaXZlciwgRl9QSFkgKiBwaHkgKTsNCi10eXBlZGVmIGxvbmcgICAgICAgICAgKCAqRl9HRVRTVEFUVVMgKSggRl9EUklWRVIgKiBkcml2ZXIgKTsNCi10eXBlZGVmIHZvaWQgICAgICAgICAgKCAqRl9SRUxFQVNFICkoIEZfRFJJVkVSICogZHJpdmVyICk7DQotDQotdHlwZWRlZiBzdHJ1Y3QgRl9EUklWRVINCi17DQotICB1bnNpZ25lZCBsb25nICB1c2VyX2RhdGE7ICAgICAvKiB1c2VyIGRlZmluZWQgZGF0YSAqLw0KLSAgdm9pZCAgICAgICAgICogdXNlcl9wdHI7ICAgICAgLyogdXNlciBkZWZpbmUgcG9pbnRlciAqLw0KLQ0KLSAgLyogZHJpdmVyIGZ1bmN0aW9ucyAqLw0KLSAgRl9XUklURVNFQ1RPUiAgICAgICAgICB3cml0ZXNlY3RvcjsNCi0gIEZfUkVBRFNFQ1RPUiAgICAgICAgICAgcmVhZHNlY3RvcjsNCi0gIEZfR0VUUEhZICAgICAgICAgICAgICAgZ2V0cGh5Ow0KLSAgRl9HRVRTVEFUVVMgICAgICAgICAgICBnZXRzdGF0dXM7DQotICBGX1JFTEVBU0UgICAgICAgICAgICAgIHJlbGVhc2U7DQotfSBfRl9EUklWRVI7DQotDQotdHlwZWRlZiBGX0RSSVZFUiAqKCAqRl9EUklWRVJJTklUICkoIHVuc2lnbmVkIGxvbmcgZHJpdmVyX3BhcmFtICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBfQVBJX01EUklWRVJfSF8gKi8NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGkvYXBpX21kcml2ZXJfcmFtLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGkvYXBpX21kcml2ZXJfcmFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MDE2MmQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvYXBpL2FwaV9tZHJpdmVyX3JhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9BUElfTURSSVZFUl9SQU1fSF8NCi0jZGVmaW5lIF9BUElfTURSSVZFUl9SQU1fSF8NCi0NCi0jaW5jbHVkZSAiYXBpX21kcml2ZXIuaCINCi0NCi0jaW5jbHVkZSAiLi4vdmVyc2lvbi92ZXJfbWRyaXZlcl9yYW0uaCINCi0jaWYgVkVSX01EUklWRVJfUkFNX01BSk9SICE9IDEgfHwgVkVSX01EUklWRVJfUkFNX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBNRFJJVkVSX1JBTSB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0jZGVmaW5lIEZfUkFNX0RSSVZFMCAwDQotDQotZW51bQ0KLXsNCi0gIE1EUklWRVJfUkFNX05PX0VSUk9SDQotICAsIE1EUklWRVJfUkFNX0VSUl9TRUNUT1IgPSAxMDENCi0gICwgTURSSVZFUl9SQU1fRVJSX05PVEFWQUlMQUJMRQ0KLX07DQotDQotRl9EUklWRVIgKiByYW1faW5pdGZ1bmMgKCB1bnNpZ25lZCBsb25nIGRyaXZlcl9wYXJhbSApOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0NCi0jZW5kaWYgLyogX0FQSV9NRFJJVkVSX1JBTV9IXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2FwaS9mYXRfc2wuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2FwaS9mYXRfc2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc0YThiYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGkvZmF0X3NsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NTUgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9BUElfRkFUX1NMX0hfDQotI2RlZmluZSBfQVBJX0ZBVF9TTF9IXw0KLQ0KLSNpbmNsdWRlICJjb25maWdfZmF0X3NsLmgiDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgRl9NQVhOQU1FIDggICAgICAgICAgICAgICAgICAvKiA4IGJ5dGUgbmFtZSAqLw0KLSNkZWZpbmUgRl9NQVhFWFQgIDMgICAgICAgICAgICAgICAgICAvKiAzIGJ5dGUgZXh0ZW5zaW9uICovDQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICBjaGFyICBwYXRoW0ZfTUFYUEFUSF07ICAgICAgICAvKiAgL2RpcmVjdG9yeTEvZGlyMi8gICovDQotICBjaGFyICBmaWxlbmFtZVtGX01BWE5BTUVdOyAgICAvKiBmaWxlbmFtZSAqLw0KLSAgY2hhciAgZmlsZWV4dFtGX01BWEVYVF07ICAgICAgLyogZXh0ZW5zaW9uICovDQotfSBGX05BTUU7DQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICB1bnNpZ25lZCBsb25nICBjbHVzdGVyOw0KLSAgdW5zaWduZWQgbG9uZyAgc2VjdG9yOw0KLSAgdW5zaWduZWQgbG9uZyAgc2VjdG9yZW5kOw0KLSAgdW5zaWduZWQgbG9uZyAgcG9zOw0KLX0gRl9QT1M7DQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICBjaGFyICAgICAgICAgICAgZmlsZW5hbWVbRl9NQVhQQVRIXTsgLypmaWxlIG5hbWUrZXh0Ki8NCi0gIGNoYXIgICAgICAgICAgICBuYW1lW0ZfTUFYTkFNRV07ICAgICAvKmZpbGUgbmFtZSovDQotICBjaGFyICAgICAgICAgICAgZXh0W0ZfTUFYRVhUXTsgICAgICAgLypmaWxlIGV4dGVuc2lvbiovDQotICB1bnNpZ25lZCBjaGFyICAgYXR0cjsgICAgICAgICAgICAgICAgLyphdHRyaWJ1dGUgb2YgdGhlIGZpbGUqLw0KLQ0KLSAgdW5zaWduZWQgc2hvcnQgIGN0aW1lOyAgICAgICAgLypjcmVhdGlvbiB0aW1lKi8NCi0gIHVuc2lnbmVkIHNob3J0ICBjZGF0ZTsgICAgICAgIC8qY3JlYXRpb24gZGF0ZSovDQotICB1bnNpZ25lZCBsb25nICAgY2x1c3RlcjsNCi0NCi0gIGxvbmcgICAgICAgICAgICBmaWxlc2l6ZTsgICAgICAgICAvKmxlbmd0aCBvZiBmaWxlKi8NCi0NCi0gIEZfTkFNRSAgICAgICAgICBmaW5kZnNuYW1lOyAgIC8qZmluZCBwcm9wZXJ0aWVzKi8NCi0gIEZfUE9TICAgICAgICAgICBwb3M7DQotfSBGX0ZJTkQ7DQotDQotI2RlZmluZSBGX0FUVFJfQVJDICAgICAgICAgMHgyMA0KLSNkZWZpbmUgRl9BVFRSX0RJUiAgICAgICAgIDB4MTANCi0jZGVmaW5lIEZfQVRUUl9WT0xVTUUgICAgICAweDA4DQotI2RlZmluZSBGX0FUVFJfU1lTVEVNICAgICAgMHgwNA0KLSNkZWZpbmUgRl9BVFRSX0hJRERFTiAgICAgIDB4MDINCi0jZGVmaW5lIEZfQVRUUl9SRUFET05MWSAgICAweDAxDQotDQotI2RlZmluZSBGX0NMVVNURVJfRlJFRSAgICAgKCAodW5zaWduZWQgbG9uZykweDAwMDAwMDAwICkNCi0jZGVmaW5lIEZfQ0xVU1RFUl9SRVNFUlZFRCAoICh1bnNpZ25lZCBsb25nKTB4MGZmZmZmZjAgKQ0KLSNkZWZpbmUgRl9DTFVTVEVSX0JBRCAgICAgICggKHVuc2lnbmVkIGxvbmcpMHgwZmZmZmZmNyApDQotI2RlZmluZSBGX0NMVVNURVJfTEFTVCAgICAgKCAodW5zaWduZWQgbG9uZykweDBmZmZmZmY4ICkNCi0jZGVmaW5lIEZfQ0xVU1RFUl9MQVNURjMyUiAoICh1bnNpZ25lZCBsb25nKTB4MGZmZmZmZmYgKQ0KLQ0KLSNkZWZpbmUgRl9TVF9NSVNTSU5HICAgICAgIDB4MDAwMDAwMDENCi0jZGVmaW5lIEZfU1RfQ0hBTkdFRCAgICAgICAweDAwMDAwMDAyDQotI2RlZmluZSBGX1NUX1dSUFJPVEVDVCAgICAgMHgwMDAwMDAwNA0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgdW5zaWduZWQgbG9uZyAgYWJzcG9zOw0KLSAgdW5zaWduZWQgbG9uZyAgZmlsZXNpemU7DQotICB1bnNpZ25lZCBsb25nICBzdGFydGNsdXN0ZXI7DQotICB1bnNpZ25lZCBsb25nICByZWxwb3M7DQotICB1bnNpZ25lZCBjaGFyICBtb2RpZmllZDsNCi0gIHVuc2lnbmVkIGNoYXIgIG1vZGU7DQotICB1bnNpZ25lZCBjaGFyICBfdGRhdGFbRl9TRUNUT1JfU0laRV07DQotICBGX1BPUyAgICAgICAgICBwb3M7DQotICBGX1BPUyAgICAgICAgICBkaXJwb3M7DQotI2lmIEZfRklMRV9DSEFOR0VEX0VWRU5UDQotICBjaGFyICAgICAgICAgICBmaWxlbmFtZVtGX01BWFBBVEhdOyAgIC8qIGZpbGVuYW1lIHdpdGggZnVsbCBwYXRoICovDQotI2VuZGlmDQotfSBGX0ZJTEU7DQotDQotZW51bQ0KLXsNCi0gIEZfVU5LTk9XTl9NRURJQQ0KLSAgLCBGX0ZBVDEyX01FRElBDQotICAsIEZfRkFUMTZfTUVESUENCi0gICwgRl9GQVQzMl9NRURJQQ0KLX07DQotDQotZW51bQ0KLXsNCi0vKiAgMCAqLw0KLSAgRl9OT19FUlJPUiwNCi0NCi0vKiAgMSAqLyBGX0VSUl9SRVNFUlZFRF8xLA0KLQ0KLS8qICAyICovIEZfRVJSX05PVEZPUk1BVFRFRCwNCi0NCi0vKiAgMyAqLyBGX0VSUl9JTlZBTElERElSLA0KLQ0KLS8qICA0ICovIEZfRVJSX0lOVkFMSUROQU1FLA0KLQ0KLS8qICA1ICovIEZfRVJSX05PVEZPVU5ELA0KLQ0KLS8qICA2ICovIEZfRVJSX0RVUExJQ0FURUQsDQotDQotLyogIDcgKi8gRl9FUlJfTk9NT1JFRU5UUlksDQotDQotLyogIDggKi8gRl9FUlJfTk9UT1BFTiwNCi0NCi0vKiAgOSAqLyBGX0VSUl9FT0YsDQotDQotLyogMTAgKi8gRl9FUlJfUkVTRVJWRURfMiwNCi0NCi0vKiAxMSAqLyBGX0VSUl9OT1RVU0VBQkxFLA0KLQ0KLS8qIDEyICovIEZfRVJSX0xPQ0tFRCwNCi0NCi0vKiAxMyAqLyBGX0VSUl9BQ0NFU1NERU5JRUQsDQotDQotLyogMTQgKi8gRl9FUlJfTk9URU1QVFksDQotDQotLyogMTUgKi8gRl9FUlJfSU5JVEZVTkMsDQotDQotLyogMTYgKi8gRl9FUlJfQ0FSRFJFTU9WRUQsDQotDQotLyogMTcgKi8gRl9FUlJfT05EUklWRSwNCi0NCi0vKiAxOCAqLyBGX0VSUl9JTlZBTElEU0VDVE9SLA0KLQ0KLS8qIDE5ICovIEZfRVJSX1JFQUQsDQotDQotLyogMjAgKi8gRl9FUlJfV1JJVEUsDQotDQotLyogMjEgKi8gRl9FUlJfSU5WQUxJRE1FRElBLA0KLQ0KLS8qIDIyICovIEZfRVJSX0JVU1ksDQotDQotLyogMjMgKi8gRl9FUlJfV1JJVEVQUk9URUNULA0KLQ0KLS8qIDI0ICovIEZfRVJSX0lOVkZBVFRZUEUsDQotDQotLyogMjUgKi8gRl9FUlJfTUVESUFUT09TTUFMTCwNCi0NCi0vKiAyNiAqLyBGX0VSUl9NRURJQVRPT0xBUkdFLA0KLQ0KLS8qIDI3ICovIEZfRVJSX05PVFNVUFBTRUNUT1JTSVpFDQotDQotLyogMjggKi8sIEZfRVJSX0FMTE9DQVRJT04NCi0NCi0jaWYgRl9GU19USFJFQURfQVdBUkUgPT0gMQ0KLS8qIDI5ICovLCBGX0VSUl9PUyA9IDI5DQotI2VuZGlmIC8qIEZfRlNfVEhSRUFEX0FXQVJFICovDQotfTsNCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gIHVuc2lnbmVkIGxvbmcgIHRvdGFsOw0KLSAgdW5zaWduZWQgbG9uZyAgZnJlZTsNCi0gIHVuc2lnbmVkIGxvbmcgIHVzZWQ7DQotICB1bnNpZ25lZCBsb25nICBiYWQ7DQotDQotICB1bnNpZ25lZCBsb25nICB0b3RhbF9oaWdoOw0KLSAgdW5zaWduZWQgbG9uZyAgZnJlZV9oaWdoOw0KLSAgdW5zaWduZWQgbG9uZyAgdXNlZF9oaWdoOw0KLSAgdW5zaWduZWQgbG9uZyAgYmFkX2hpZ2g7DQotfSBGX1NQQUNFOw0KLQ0KLWVudW0NCi17DQotICBGX1NFRUtfU0VUICAgLypCZWdpbm5pbmcgb2YgZmlsZSovDQotICAsIEZfU0VFS19DVVIgLypDdXJyZW50IHBvc2l0aW9uIG9mIGZpbGUgcG9pbnRlciovDQotICAsIEZfU0VFS19FTkQgLypFbmQgb2YgZmlsZSovDQotfTsNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm9yIGZpbGUgY2hhbmdlZCBldmVudHMNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotI2lmIEZfRklMRV9DSEFOR0VEX0VWRU5UDQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICB1bnNpZ25lZCBjaGFyICAgYWN0aW9uOw0KLSAgdW5zaWduZWQgY2hhciAgIGZsYWdzOw0KLSAgdW5zaWduZWQgY2hhciAgIGF0dHI7DQotICB1bnNpZ25lZCBzaG9ydCAgY3RpbWU7DQotICB1bnNpZ25lZCBzaG9ydCAgY2RhdGU7DQotICB1bnNpZ25lZCBsb25nICAgZmlsZXNpemU7DQotICBjaGFyICAgICAgICAgICAgZmlsZW5hbWVbRl9NQVhQQVRIXTsNCi19IFNUX0ZJTEVfQ0hBTkdFRDsNCi0NCi10eXBlZGVmIHZvaWQgKCAqRl9GSUxFX0NIQU5HRURfRVZFTlRGVU5DICkoIFNUX0ZJTEVfQ0hBTkdFRCAqIGZjICk7DQotDQotZXh0ZXJuIEZfRklMRV9DSEFOR0VEX0VWRU5URlVOQyAgZl9maWxlY2hhbmdlZGV2ZW50Ow0KLQ0KLSAjZGVmaW5lIGZfc2V0ZmlsZWNoYW5nZWRldmVudCggZmlsZWNoYW5nZWV2ZW50ICkgZl9maWxlY2hhbmdlZGV2ZW50ID0gZmlsZWNoYW5nZWV2ZW50DQotDQotLyogZmxhZ3MgKi8NCi0NCi0gI2RlZmluZSBGRkxBR1NfTk9ORSAgICAgICAgICAgICAgMHgwMDAwMDAwMA0KLQ0KLSAjZGVmaW5lIEZGTEFHU19GSUxFX05BTUUgICAgICAgICAweDAwMDAwMDAxDQotICNkZWZpbmUgRkZMQUdTX0RJUl9OQU1FICAgICAgICAgIDB4MDAwMDAwMDINCi0gI2RlZmluZSBGRkxBR1NfTkFNRSAgICAgICAgICAgICAgMHgwMDAwMDAwMw0KLSAjZGVmaW5lIEZGTEFHU19BVFRSSUJVVEVTICAgICAgICAweDAwMDAwMDA0DQotICNkZWZpbmUgRkZMQUdTX1NJWkUgICAgICAgICAgICAgIDB4MDAwMDAwMDgNCi0gI2RlZmluZSBGRkxBR1NfTEFTVF9XUklURSAgICAgICAgMHgwMDAwMDAxMA0KLQ0KLS8qIGFjdGlvbnMgKi8NCi0NCi0gI2RlZmluZSBGQUNUSU9OX0FEREVEICAgICAgICAgICAgMHgwMDAwMDAwMQ0KLSAjZGVmaW5lIEZBQ1RJT05fUkVNT1ZFRCAgICAgICAgICAweDAwMDAwMDAyDQotICNkZWZpbmUgRkFDVElPTl9NT0RJRklFRCAgICAgICAgIDB4MDAwMDAwMDMNCi0gI2RlZmluZSBGQUNUSU9OX1JFTkFNRURfT0xEX05BTUUgMHgwMDAwMDAwNA0KLSAjZGVmaW5lIEZBQ1RJT05fUkVOQU1FRF9ORVdfTkFNRSAweDAwMDAwMDA1DQotDQotI2VuZGlmIC8qIGlmIEZfRklMRV9DSEFOR0VEX0VWRU5UICovDQotDQotdW5zaWduZWQgY2hhciBmc19pbml0ICggdm9pZCApOw0KLXVuc2lnbmVkIGNoYXIgZnNfZGVsZXRlICggdm9pZCApOw0KLQ0KLSNkZWZpbmUgZl9pbml0dm9sdW1lIGZuX2luaXR2b2x1bWUNCi0jZGVmaW5lIGZfZGVsdm9sdW1lICBmbl9kZWx2b2x1bWUNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2luaXR2b2x1bWUgKCBGX0RSSVZFUklOSVQgaW5pdGZ1bmMgKTsNCi11bnNpZ25lZCBjaGFyIGZuX2RlbHZvbHVtZSAoIHZvaWQgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2dldGZyZWVzcGFjZSAoIEZfU1BBQ0UgKiBwc3BhY2UgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2NoZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKTsNCi11bnNpZ25lZCBjaGFyIGZuX21rZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKTsNCi11bnNpZ25lZCBjaGFyIGZuX3JtZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2ZpbmRmaXJzdCAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgRl9GSU5EICogZmluZCApOw0KLXVuc2lnbmVkIGNoYXIgZm5fZmluZG5leHQgKCBGX0ZJTkQgKiBmaW5kICk7DQotDQotbG9uZyBmbl9maWxlbGVuZ3RoICggY29uc3QgY2hhciAqIGZpbGVuYW1lICk7DQotDQotdW5zaWduZWQgY2hhciBmbl9jbG9zZSAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi1GX0ZJTEUgKiBmbl9vcGVuICggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBjb25zdCBjaGFyICogbW9kZSApOw0KLQ0KLWxvbmcgZm5fcmVhZCAoIHZvaWQgKiBidWYsIGxvbmcgc2l6ZSwgbG9uZyBfc2l6ZV90LCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotDQotbG9uZyBmbl93cml0ZSAoIGNvbnN0IHZvaWQgKiBidWYsIGxvbmcgc2l6ZSwgbG9uZyBfc2l6ZV90LCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotDQotdW5zaWduZWQgY2hhciBmbl9zZWVrICggRl9GSUxFICogZmlsZWhhbmRsZSwgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGNoYXIgd2hlbmNlICk7DQotDQotbG9uZyBmbl90ZWxsICggRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLWludCBmbl9nZXRjICggRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLWludCBmbl9wdXRjICggaW50IGNoLCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotdW5zaWduZWQgY2hhciBmbl9yZXdpbmQgKCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotdW5zaWduZWQgY2hhciBmbl9lb2YgKCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotDQotdW5zaWduZWQgY2hhciBmbl9kZWxldGUgKCBjb25zdCBjaGFyICogZmlsZW5hbWUgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX3NldGVvZiAoIEZfRklMRSAqICk7DQotDQotRl9GSUxFICogZm5fdHJ1bmNhdGUgKCBjb25zdCBjaGFyICosIGxvbmcgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2dldGN3ZCAoIGNoYXIgKiBidWZmZXIsIHVuc2lnbmVkIGNoYXIgbWF4bGVuLCBjaGFyIHJvb3QgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2hhcmRmb3JtYXQgKCB1bnNpZ25lZCBjaGFyIGZhdHR5cGUgKTsNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2dldHNlcmlhbCAoIHVuc2lnbmVkIGxvbmcgKiApOw0KLQ0KLQ0KLSNpZiBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAxDQotDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInNlbXBoci5oIg0KLQ0KLXVuc2lnbmVkIGNoYXIgZnJfaGFyZGZvcm1hdCAoIHVuc2lnbmVkIGNoYXIgZmF0dHlwZSApOw0KLSNkZWZpbmUgZl9oYXJkZm9ybWF0KCBmYXR0eXBlICkgZnJfaGFyZGZvcm1hdCggZmF0dHlwZSApDQotI2RlZmluZSBmX2Zvcm1hdCggZmF0dHlwZSApICAgIGZyX2hhcmRmb3JtYXQoIGZhdHR5cGUgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZnJfZ2V0Y3dkICggY2hhciAqIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBtYXhsZW4sIGNoYXIgcm9vdCApOw0KLSNkZWZpbmUgZl9nZXRjd2QoIGJ1ZmZlciwgbWF4bGVuICkgZnJfZ2V0Y3dkKCBidWZmZXIsIG1heGxlbiwgMSApDQotDQotdW5zaWduZWQgY2hhciBmcl9nZXRmcmVlc3BhY2UgKCBGX1NQQUNFICogcHNwYWNlICk7DQotI2RlZmluZSBmX2dldGZyZWVzcGFjZSBmcl9nZXRmcmVlc3BhY2UNCi0NCi0NCi11bnNpZ25lZCBjaGFyIGZyX2NoZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKTsNCi0jZGVmaW5lIGZfY2hkaXIoIGRpcm5hbWUgKSBmcl9jaGRpciggZGlybmFtZSApDQotdW5zaWduZWQgY2hhciBmcl9ta2RpciAoIGNvbnN0IGNoYXIgKiBkaXJuYW1lICk7DQotI2RlZmluZSBmX21rZGlyKCBkaXJuYW1lICkgZnJfbWtkaXIoIGRpcm5hbWUgKQ0KLXVuc2lnbmVkIGNoYXIgZnJfcm1kaXIgKCBjb25zdCBjaGFyICogZGlybmFtZSApOw0KLSNkZWZpbmUgZl9ybWRpciggZGlybmFtZSApIGZyX3JtZGlyKCBkaXJuYW1lICkNCi0NCi11bnNpZ25lZCBjaGFyIGZyX2ZpbmRmaXJzdCAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgRl9GSU5EICogZmluZCApOw0KLXVuc2lnbmVkIGNoYXIgZnJfZmluZG5leHQgKCBGX0ZJTkQgKiBmaW5kICk7DQotI2RlZmluZSBmX2ZpbmRmaXJzdCggZmlsZW5hbWUsIGZpbmQgKSBmcl9maW5kZmlyc3QoIGZpbGVuYW1lLCBmaW5kICkNCi0jZGVmaW5lIGZfZmluZG5leHQoIGZpbmQgKSAgICAgICAgICAgIGZyX2ZpbmRuZXh0KCBmaW5kICkNCi0NCi1sb25nIGZyX2ZpbGVsZW5ndGggKCBjb25zdCBjaGFyICogZmlsZW5hbWUgKTsNCi0jZGVmaW5lIGZfZmlsZWxlbmd0aCggZmlsZW5hbWUgKSBmcl9maWxlbGVuZ3RoKCBmaWxlbmFtZSApDQotDQotdW5zaWduZWQgY2hhciBmcl9jbG9zZSAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi1GX0ZJTEUgKiBmcl9vcGVuICggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBjb25zdCBjaGFyICogbW9kZSApOw0KLQ0KLWxvbmcgZnJfcmVhZCAoIHZvaWQgKiBidWYsIGxvbmcgc2l6ZSwgbG9uZyBfc2l6ZV90LCBGX0ZJTEUgKiBmaWxlaGFuZGxlICk7DQotDQotdW5zaWduZWQgY2hhciBmcl9nZXRzZXJpYWwgKCB1bnNpZ25lZCBsb25nICogKTsNCi0jZGVmaW5lIGZfZ2V0c2VyaWFsKCBzZXJpYWwgKSAgZnJfZ2V0c2VyaWFsKCBzZXJpYWwgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZnJfZmx1c2ggKCBGX0ZJTEUgKiBmICk7DQotI2RlZmluZSBmX2ZsdXNoKCBmaWxlaGFuZGxlICkgZnJfZmx1c2goIGZpbGVoYW5kbGUgKQ0KLQ0KLWxvbmcgZnJfd3JpdGUgKCBjb25zdCB2b2lkICogYnVmLCBsb25nIHNpemUsIGxvbmcgX3NpemVfdCwgRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLSNkZWZpbmUgZl93cml0ZSggYnVmLCBzaXplLCBfc2l6ZV90LCBmaWxlaGFuZGxlICkgZnJfd3JpdGUoIGJ1Ziwgc2l6ZSwgX3NpemVfdCwgZmlsZWhhbmRsZSApDQotDQotdW5zaWduZWQgY2hhciBmcl9zZWVrICggRl9GSUxFICogZmlsZWhhbmRsZSwgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGNoYXIgd2hlbmNlICk7DQotI2RlZmluZSBmX3NlZWsoIGZpbGVoYW5kbGUsIG9mZnNldCwgd2hlbmNlICkgZnJfc2VlayggZmlsZWhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UgKQ0KLQ0KLWxvbmcgZnJfdGVsbCAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfdGVsbCggZmlsZWhhbmRsZSApICAgICBmcl90ZWxsKCBmaWxlaGFuZGxlICkNCi1pbnQgZnJfZ2V0YyAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfZ2V0YyggZmlsZWhhbmRsZSApICAgICBmcl9nZXRjKCBmaWxlaGFuZGxlICkNCi1pbnQgZnJfcHV0YyAoIGludCBjaCwgRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLSNkZWZpbmUgZl9wdXRjKCBjaCwgZmlsZWhhbmRsZSApIGZyX3B1dGMoIGNoLCBmaWxlaGFuZGxlICkNCi11bnNpZ25lZCBjaGFyIGZyX3Jld2luZCAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfcmV3aW5kKCBmaWxlaGFuZGxlICkgICBmcl9yZXdpbmQoIGZpbGVoYW5kbGUgKQ0KLXVuc2lnbmVkIGNoYXIgZnJfZW9mICggRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLSNkZWZpbmUgZl9lb2YoIGZpbGVoYW5kbGUgKSAgICAgIGZyX2VvZiggZmlsZWhhbmRsZSApDQotDQotdW5zaWduZWQgY2hhciBmcl9kZWxldGUgKCBjb25zdCBjaGFyICogZmlsZW5hbWUgKTsNCi0jZGVmaW5lIGZfZGVsZXRlKCBmaWxlbmFtZSApIGZyX2RlbGV0ZSggZmlsZW5hbWUgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZnJfc2V0ZW9mICggRl9GSUxFICogKTsNCi0jZGVmaW5lIGZfc2V0ZW9mKCBmaWxlICkgZnJfc2V0ZW9mKCBmaWxlICkNCi0NCi1GX0ZJTEUgKiBmcl90cnVuY2F0ZSAoIGNvbnN0IGNoYXIgKiwgbG9uZyApOw0KLSNkZWZpbmUgZl90cnVuY2F0ZSggZmlsZW5hbWUsIGZpbGVzaXplICkgZnJfdHJ1bmNhdGUoIGZpbGVuYW1lLCBmaWxlc2l6ZSApDQotDQotI2RlZmluZSBmX2Nsb3NlKCBmaWxlaGFuZGxlICkgICAgICAgICAgICAgICAgICAgIGZyX2Nsb3NlKCBmaWxlaGFuZGxlICkNCi0jZGVmaW5lIGZfb3BlbiggZmlsZW5hbWUsIG1vZGUgKSAgICAgICAgICAgICAgICAgZnJfb3BlbiggZmlsZW5hbWUsIG1vZGUgKQ0KLSNkZWZpbmUgZl9yZWFkKCBidWYsIHNpemUsIF9zaXplX3QsIGZpbGVoYW5kbGUgKSBmcl9yZWFkKCBidWYsIHNpemUsIF9zaXplX3QsIGZpbGVoYW5kbGUgKQ0KLQ0KLSNlbHNlIC8qIEZfRlNfVEhSRUFEX0FXQVJFICovDQotDQotI2RlZmluZSBmX2hhcmRmb3JtYXQoIGZhdHR5cGUgKSBmbl9oYXJkZm9ybWF0KCBmYXR0eXBlICkNCi0jZGVmaW5lIGZfZm9ybWF0KCBmYXR0eXBlICkgICAgZm5faGFyZGZvcm1hdCggZmF0dHlwZSApDQotDQotI2RlZmluZSBmX2dldGN3ZCggYnVmZmVyLCBtYXhsZW4gKSBmbl9nZXRjd2QoIGJ1ZmZlciwgbWF4bGVuLCAxICkNCi0NCi11bnNpZ25lZCBjaGFyIGZuX2dldGZyZWVzcGFjZSAoIEZfU1BBQ0UgKiBwc3BhY2UgKTsNCi0jZGVmaW5lIGZfZ2V0ZnJlZXNwYWNlIGZuX2dldGZyZWVzcGFjZQ0KLQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZm5fY2hkaXIgKCBjb25zdCBjaGFyICogZGlybmFtZSApOw0KLSNkZWZpbmUgZl9jaGRpciggZGlybmFtZSApIGZuX2NoZGlyKCBkaXJuYW1lICkNCi11bnNpZ25lZCBjaGFyIGZuX21rZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKTsNCi0jZGVmaW5lIGZfbWtkaXIoIGRpcm5hbWUgKSBmbl9ta2RpciggZGlybmFtZSApDQotdW5zaWduZWQgY2hhciBmbl9ybWRpciAoIGNvbnN0IGNoYXIgKiBkaXJuYW1lICk7DQotI2RlZmluZSBmX3JtZGlyKCBkaXJuYW1lICkgZm5fcm1kaXIoIGRpcm5hbWUgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZm5fZmluZGZpcnN0ICggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBGX0ZJTkQgKiBmaW5kICk7DQotdW5zaWduZWQgY2hhciBmbl9maW5kbmV4dCAoIEZfRklORCAqIGZpbmQgKTsNCi0jZGVmaW5lIGZfZmluZGZpcnN0KCBmaWxlbmFtZSwgZmluZCApIGZuX2ZpbmRmaXJzdCggZmlsZW5hbWUsIGZpbmQgKQ0KLSNkZWZpbmUgZl9maW5kbmV4dCggZmluZCApICAgICAgICAgICAgZm5fZmluZG5leHQoIGZpbmQgKQ0KLQ0KLSNkZWZpbmUgZl9maWxlbGVuZ3RoKCBmaWxlbmFtZSApIGZuX2ZpbGVsZW5ndGgoIGZpbGVuYW1lICkNCi0NCi0jZGVmaW5lIGZfZ2V0c2VyaWFsKCBzZXJpYWwgKSAgZm5fZ2V0c2VyaWFsKCBzZXJpYWwgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZm5fZmx1c2ggKCBGX0ZJTEUgKiBmICk7DQotI2RlZmluZSBmX2ZsdXNoKCBmaWxlaGFuZGxlICkgZm5fZmx1c2goIGZpbGVoYW5kbGUgKQ0KLQ0KLSNkZWZpbmUgZl93cml0ZSggYnVmLCBzaXplLCBfc2l6ZV90LCBmaWxlaGFuZGxlICkgZm5fd3JpdGUoIGJ1Ziwgc2l6ZSwgX3NpemVfdCwgZmlsZWhhbmRsZSApDQotDQotI2RlZmluZSBmX3NlZWsoIGZpbGVoYW5kbGUsIG9mZnNldCwgd2hlbmNlICkgZm5fc2VlayggZmlsZWhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UgKQ0KLQ0KLWxvbmcgZm5fdGVsbCAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfdGVsbCggZmlsZWhhbmRsZSApICAgICBmbl90ZWxsKCBmaWxlaGFuZGxlICkNCi1pbnQgZm5fZ2V0YyAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfZ2V0YyggZmlsZWhhbmRsZSApICAgICBmbl9nZXRjKCBmaWxlaGFuZGxlICkNCi1pbnQgZm5fcHV0YyAoIGludCBjaCwgRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLSNkZWZpbmUgZl9wdXRjKCBjaCwgZmlsZWhhbmRsZSApIGZuX3B1dGMoIGNoLCBmaWxlaGFuZGxlICkNCi11bnNpZ25lZCBjaGFyIGZuX3Jld2luZCAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKTsNCi0jZGVmaW5lIGZfcmV3aW5kKCBmaWxlaGFuZGxlICkgICBmbl9yZXdpbmQoIGZpbGVoYW5kbGUgKQ0KLXVuc2lnbmVkIGNoYXIgZm5fZW9mICggRl9GSUxFICogZmlsZWhhbmRsZSApOw0KLSNkZWZpbmUgZl9lb2YoIGZpbGVoYW5kbGUgKSAgICAgIGZuX2VvZiggZmlsZWhhbmRsZSApDQotDQotdW5zaWduZWQgY2hhciBmbl9kZWxldGUgKCBjb25zdCBjaGFyICogZmlsZW5hbWUgKTsNCi0jZGVmaW5lIGZfZGVsZXRlKCBmaWxlbmFtZSApIGZuX2RlbGV0ZSggZmlsZW5hbWUgKQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZm5fc2V0ZW9mICggRl9GSUxFICogKTsNCi0jZGVmaW5lIGZfc2V0ZW9mKCBmaWxlICkgZm5fc2V0ZW9mKCBmaWxlICkNCi0NCi1GX0ZJTEUgKiBmbl90cnVuY2F0ZSAoIGNvbnN0IGNoYXIgKiwgbG9uZyApOw0KLSNkZWZpbmUgZl90cnVuY2F0ZSggZmlsZW5hbWUsIGZpbGVzaXplICkgZm5fdHJ1bmNhdGUoIGZpbGVuYW1lLCBmaWxlc2l6ZSApDQotDQotI2RlZmluZSBmX2Nsb3NlKCBmaWxlaGFuZGxlICkgICAgICAgICAgICAgICAgICAgIGZuX2Nsb3NlKCBmaWxlaGFuZGxlICkNCi0jZGVmaW5lIGZfb3BlbiggZmlsZW5hbWUsIG1vZGUgKSAgICAgICAgICAgICAgICAgZm5fb3BlbiggZmlsZW5hbWUsIG1vZGUgKQ0KLSNkZWZpbmUgZl9yZWFkKCBidWYsIHNpemUsIF9zaXplX3QsIGZpbGVoYW5kbGUgKSBmbl9yZWFkKCBidWYsIHNpemUsIF9zaXplX3QsIGZpbGVoYW5kbGUgKQ0KLQ0KLSNlbmRpZiAvKiBGX0ZTX1RIUkVBRF9BV0FSRSAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBlbmQgb2YgZmF0X3NsLmgNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKl9BUElfRkFUX1NMX0hfKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9jb25maWcvY29uZmlnX2ZhdF9zbF90ZW1wbGF0ZS5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvY29uZmlnL2NvbmZpZ19mYXRfc2xfdGVtcGxhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdiMzQzOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9jb25maWcvY29uZmlnX2ZhdF9zbF90ZW1wbGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UNCi0gKiB0ZXJtcy4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbQ0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUNCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19GQVRfU0xfSA0KLSNkZWZpbmUgX0NPTkZJR19GQVRfU0xfSA0KLQ0KLSNpbmNsdWRlICIuLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaW5jbHVkZSAiLi4vYXBpL2FwaV9tZHJpdmVyLmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKioNCi0qKiAgRkFUIFNMIHVzZXIgc2V0dGluZ3MNCi0qKg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgRl9TRUNUT1JfU0laRSAgICAgICAgICAgNTEydSAgLyogRGlzayBzZWN0b3Igc2l6ZS4gKi8NCi0jZGVmaW5lIEZfRlNfVEhSRUFEX0FXQVJFICAgICAgIDEgICAgIC8qIFNldCB0byBvbmUgaWYgdGhlIGZpbGUgc3lzdGVtIHdpbGwgYmUgYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrLiAqLw0KLSNkZWZpbmUgRl9NQVhQQVRIICAgICAgICAgICAgICAgNjQgICAgLyogTWF4aW11bSBsZW5ndGggYSBmaWxlIG5hbWUgKGluY2x1ZGluZyBpdHMgZnVsbCBwYXRoKSBjYW4gYmUuICovDQotI2RlZmluZSBGX01BWF9MT0NLX1dBSVRfVElDS1MgICAyMCAgICAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgUlRPUyB0aWNrcyB0byB3YWl0IHdoZW4gYXR0ZW1wdGluZyB0byBvYnRhaW4gYSBsb2NrIG9uIHRoZSBmaWxlIHN5c3RlbSB3aGVuIEZfRlNfVEhSRUFEX0FXQVJFIGlzIHNldCB0byAxLiAqLw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX0NPTkZJR19GQVRfU0xfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2NvbmZpZy9jb25maWdfbWRyaXZlcl9yYW1fdGVtcGxhdGUuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2NvbmZpZy9jb25maWdfbWRyaXZlcl9yYW1fdGVtcGxhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzYTRkMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9jb25maWcvY29uZmlnX21kcml2ZXJfcmFtX3RlbXBsYXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19NRFJJVkVSX1JBTV9IXw0KLSNkZWZpbmUgX0NPTkZJR19NRFJJVkVSX1JBTV9IXw0KLQ0KLSNpbmNsdWRlICIuLi92ZXJzaW9uL3Zlcl9tZHJpdmVyX3JhbS5oIg0KLSNpZiBWRVJfTURSSVZFUl9SQU1fTUFKT1IgIT0gMSB8fCBWRVJfTURSSVZFUl9SQU1fTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIE1EUklWRVJfUkFNIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTURSSVZFUl9SQU1fU0VDVE9SX1NJWkUgICA1MTIgICAgICAgLyogU2VjdG9yIHNpemUgKi8NCi0NCi0jZGVmaW5lIE1EUklWRVJfUkFNX1ZPTFVNRTBfU0laRSAgKDEyOCAqIDEwMjQpIC8qIGRlZmludGlvbiBmb3Igc2l6ZSBvZiByYW1kcml2ZTAgKi8NCi0NCi0jZGVmaW5lIE1EUklWRVJfTUVNX0xPTkdfQUNDRVNTICAgMSAgICAgICAgIC8qIHNldCB0aGlzIHZhbHVlIHRvIDEgaWYgMzJiaXQgYWNjZXNzIGF2YWlsYWJsZSAqLw0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX0NPTkZJR19NRFJJVkVSX1JBTV9IXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZGlyLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2Rpci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmZkMGQ5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZGlyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIxICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL2FwaS9mYXRfc2wuaCINCi0jaW5jbHVkZSAiLi4vLi4vcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oIg0KLQ0KLSNpbmNsdWRlICJkaXIuaCINCi0jaW5jbHVkZSAidXRpbC5oIg0KLSNpbmNsdWRlICJ2b2x1bWUuaCINCi0jaW5jbHVkZSAiZHJ2LmgiDQotI2luY2x1ZGUgImZhdC5oIg0KLSNpbmNsdWRlICJmaWxlLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9maW5kZmlsZXdjDQotICoNCi0gKiBpbnRlcm5hbCBmdW5jdGlvbiB0byBmaW5kaW5nIGZpbGUgaW4gZGlyZWN0b3J5IGVudHJ5IHdpdGggb3Igd2l0aG91dA0KLSAqIHdpbGRjYXJkDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIG5hbWUgLSBmaWxlbmFtZQ0KLSAqIGV4dCAtIGZpbGVleHRlbnNpb24NCi0gKiBwb3MgLSB3aGVyZSB0byBzdGFydCBzZWFyY2hpbmcsIGFuZCBjb250YWlucyBjdXJyZW50IHBvc2l0aW9uDQotICogcGRlIC0gc3RvcmUgYmFjayB0aGUgZGlyZWN0b3J5IGVudHJ5IHBvaW50ZXINCi0gKiB3YyAtIHdpbGRjYXJkIGNoZWNraW5nPw0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogMCAtIGlmIGZpbGUgd2FzIG5vdCBmb3VuZA0KLSAqIDEgLSBpZiBmaWxlIHdhcyBmb3VuZA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX2ZpbmRmaWxld2MgKCBjaGFyICogbmFtZSwgY2hhciAqIGV4dCwgRl9QT1MgKiBwb3MsIEZfRElSRU5UUlkgKiAqIHBkZSwgdW5zaWduZWQgY2hhciB3YyApDQotew0KLSAgd2hpbGUgKCBwb3MtPmNsdXN0ZXIgPCBGX0NMVVNURVJfUkVTRVJWRUQgKQ0KLSAgew0KLSAgICBmb3IgKCA7IHBvcy0+c2VjdG9yIDwgcG9zLT5zZWN0b3JlbmQgOyBwb3MtPnNlY3RvcisrICkNCi0gICAgew0KLSAgICAgIEZfRElSRU5UUlkgKiBkZSA9IChGX0RJUkVOVFJZICopKCBnbF9zZWN0b3IgKyBzaXplb2YoIEZfRElSRU5UUlkgKSAqIHBvcy0+cG9zICk7DQotDQotICAgICAgaWYgKCBfZl9yZWFkZ2xzZWN0b3IoIHBvcy0+c2VjdG9yICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypub3QgZm91bmQqLw0KLSAgICAgIH0NCi0NCi0gICAgICBmb3IgKCA7IHBvcy0+cG9zIDwgRl9TRUNUT1JfU0laRSAvIHNpemVvZiggRl9ESVJFTlRSWSApIDsgZGUrKywgcG9zLT5wb3MrKyApDQotICAgICAgew0KLSAgICAgICAgdW5zaWduZWQgY2hhciAgYiwgb2s7DQotDQotICAgICAgICBpZiAoICFkZS0+bmFtZVswXSApDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZW1wdHkqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgaWYgKCAodW5zaWduZWQgY2hhcikoIGRlLT5uYW1lWzBdICkgPT0gMHhlNSApDQotICAgICAgICB7DQotICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmRlbGV0ZWQqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgaWYgKCBkZS0+YXR0ciAmIEZfQVRUUl9WT0xVTUUgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBjb250aW51ZTsNCi0gICAgICAgIH0NCi0NCi0gICAgICAgIGlmICggd2MgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBmb3IgKCBiID0gMCwgb2sgPSAxIDsgYiA8IHNpemVvZiggZGUtPm5hbWUgKSA7IGIrKyApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICBpZiAoIG5hbWVbYl0gPT0gJyonICkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgaWYgKCBuYW1lW2JdICE9ICc/JyApDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgaWYgKCBkZS0+bmFtZVtiXSAhPSBuYW1lW2JdICkNCi0gICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgb2sgPSAwOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgaWYgKCBvayApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICBmb3IgKCBiID0gMCwgb2sgPSAxIDsgYiA8IHNpemVvZiggZGUtPmV4dCApIDsgYisrICkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICBpZiAoIGV4dFtiXSA9PSAnKicgKQ0KLSAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBpZiAoIHBkZSApDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAqcGRlID0gZGU7DQotICAgICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7DQotICAgICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgICBpZiAoIGV4dFtiXSAhPSAnPycgKQ0KLSAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBpZiAoIGRlLT5leHRbYl0gIT0gZXh0W2JdICkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgIG9rID0gMDsNCi0gICAgICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBpZiAoIG9rICkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICBpZiAoIHBkZSApDQotICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICpwZGUgPSBkZTsNCi0gICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgIHJldHVybiAxOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICBmb3IgKCBiID0gMCwgb2sgPSAxIDsgYiA8IHNpemVvZiggZGUtPm5hbWUgKSA7IGIrKyApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICBpZiAoIGRlLT5uYW1lW2JdICE9IG5hbWVbYl0gKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgIG9rID0gMDsNCi0gICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICBpZiAoIG9rICkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIGZvciAoIGIgPSAwLCBvayA9IDEgOyBiIDwgc2l6ZW9mKCBkZS0+ZXh0ICkgOyBiKysgKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgIGlmICggZGUtPmV4dFtiXSAhPSBleHRbYl0gKQ0KLSAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBvayA9IDA7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBpZiAoIG9rICkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICBpZiAoIHBkZSApDQotICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICpwZGUgPSBkZTsNCi0gICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgIHJldHVybiAxOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBwb3MtPnBvcyA9IDA7DQotICAgIH0NCi0NCi0gICAgaWYgKCAhcG9zLT5jbHVzdGVyICkNCi0gICAgew0KLSAgICAgIGlmICggZ2xfdm9sdW1lLm1lZGlhdHlwZSA9PSBGX0ZBVDMyX01FRElBICkNCi0gICAgICB7DQotICAgICAgICBwb3MtPmNsdXN0ZXIgPSBnbF92b2x1bWUuYm9vdHJlY29yZC5yb290Y2x1c3RlcjsNCi0gICAgICB9DQotICAgICAgZWxzZQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiAwOw0KLSAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICB7DQotICAgICAgdW5zaWduZWQgbG9uZyAgbmV4dGNsdXN0ZXI7DQotICAgICAgZ2xfdm9sdW1lLmZhdHNlY3RvciA9ICh1bnNpZ25lZCBsb25nKS0xOw0KLSAgICAgIGlmICggX2ZfZ2V0Y2x1c3RlcnZhbHVlKCBwb3MtPmNsdXN0ZXIsICZuZXh0Y2x1c3RlciApICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypub3QgZm91bmQqLw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIG5leHRjbHVzdGVyID49IEZfQ0xVU1RFUl9SRVNFUlZFRCApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmVvZiovDQotICAgICAgfQ0KLQ0KLSAgICAgIF9mX2NsdXN0ZXJ0b3BvcyggbmV4dGNsdXN0ZXIsIHBvcyApOw0KLSAgICB9DQotICB9IC8qIF9mX2ZpbmRmaWxld2MgKi8NCi0NCi0gIHJldHVybiAwOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfZ2V0ZmlsZW5hbWUNCi0gKg0KLSAqIGNyZWF0ZSBhIGNvbXBsZXRlIGZpbGVuYW1lIGZyb20gbmFtZSBhbmQgZXh0ZW5zaW9uDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGRlc3QgLSB3aGVyZSB0byBzdG9yZSBmaWxlbmFtZQ0KLSAqIG5hbWUgLSBuYW1lIG9mIHRoZSBmaWxlDQotICogZXh0IC0gZXh0ZW5zaW9uIG9mIHRoZSBmaWxlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIF9mX2dldGZpbGVuYW1lICggY2hhciAqIGRlc3QsIGNoYXIgKiBuYW1lLCBjaGFyICogZXh0ICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBhLCBsZW47DQotDQotICBmb3IgKCBsZW4gPSBhID0gRl9NQVhOQU1FIDsgYSA7IGEtLSwgbGVuLS0gKQ0KLSAgew0KLSAgICBpZiAoIG5hbWVbYSAtIDFdICE9ICcgJyApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgZm9yICggYSA9IDAgOyBhIDwgbGVuIDsgYSsrICkNCi0gIHsNCi0gICAgKmRlc3QrKyA9ICpuYW1lKys7DQotICB9DQotDQotDQotICBmb3IgKCBsZW4gPSBhID0gRl9NQVhFWFQgOyBhIDsgYS0tLCBsZW4tLSApDQotICB7DQotICAgIGlmICggZXh0W2EgLSAxXSAhPSAnICcgKQ0KLSAgICB7DQotICAgICAgYnJlYWs7DQotICAgIH0NCi0gIH0NCi0NCi0gIGlmICggbGVuICkNCi0gIHsNCi0gICAgKmRlc3QrKyA9ICcuJzsNCi0gIH0NCi0NCi0gIGZvciAoIGEgPSAwIDsgYSA8IGxlbiA7IGErKyApDQotICB7DQotICAgICpkZXN0KysgPSAqZXh0Kys7DQotICB9DQotDQotICAqZGVzdCA9IDA7IC8qdGVybWluYXRlaXQqLw0KLX0gLyogX2ZfZ2V0ZmlsZW5hbWUgKi8NCi0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfZ2V0ZGVjbHVzdGVyDQotICoNCi0gKiBnZXQgYSBkaXJlY3RvcnkgZW50cnkgc3RydWN0dXJlIHN0YXJ0IGNsdXN0ZXIgdmFsdWUNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZGUgLSBkaXJlY3RvcnkgZW50cnkNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGRpcmVjdG9yeSBlbnRyeSBjbHVzdGVyIHZhbHVlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGxvbmcgX2ZfZ2V0ZGVjbHVzdGVyICggRl9ESVJFTlRSWSAqIGRlICkNCi17DQotICB1bnNpZ25lZCBsb25nICBjbHVzdGVyOw0KLQ0KLSAgaWYgKCBnbF92b2x1bWUubWVkaWF0eXBlID09IEZfRkFUMzJfTUVESUEgKQ0KLSAgew0KLSAgICBjbHVzdGVyID0gX2ZfZ2V0d29yZCggJmRlLT5jbHVzdGVyaGkgKTsNCi0gICAgY2x1c3RlciA8PD0gMTY7DQotICAgIGNsdXN0ZXIgfD0gX2ZfZ2V0d29yZCggJmRlLT5jbHVzdGVybG8gKTsNCi0gICAgcmV0dXJuIGNsdXN0ZXI7DQotICB9DQotDQotICByZXR1cm4gX2ZfZ2V0d29yZCggJmRlLT5jbHVzdGVybG8gKTsNCi19DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX3NldGRlY2x1c3Rlcg0KLSAqDQotICogc2V0IGEgZGlyZWN0b3J5IGVudHJ5IHN0cnVjdHVyZSBzdGFydCBjbHVzdGVyIHZhbHVlDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGRlIC0gZGlyZWN0b3J5IGVudHJ5DQotICogY2x1c3RlciAtIHZhbHVlIG9mIHRoZSBzdGFydCBjbHVzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgX2Zfc2V0ZGVjbHVzdGVyICggRl9ESVJFTlRSWSAqIGRlLCB1bnNpZ25lZCBsb25nIGNsdXN0ZXIgKQ0KLXsNCi0gIF9mX3NldHdvcmQoICZkZS0+Y2x1c3RlcmxvLCAodW5zaWduZWQgc2hvcnQpKCBjbHVzdGVyICYgMHhmZmZmICkgKTsNCi0gIGlmICggZ2xfdm9sdW1lLm1lZGlhdHlwZSA9PSBGX0ZBVDMyX01FRElBICkNCi0gIHsNCi0gICAgX2Zfc2V0d29yZCggJmRlLT5jbHVzdGVyaGksICh1bnNpZ25lZCBzaG9ydCkoIGNsdXN0ZXIgPj4gMTYgKSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBfZl9zZXR3b3JkKCAmZGUtPmNsdXN0ZXJoaSwgKHVuc2lnbmVkIHNob3J0KTAgKTsNCi0gIH0NCi19DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2ZpbmRwYXRoDQotICoNCi0gKiBmaW5kaW5nIG91dCBpZiBwYXRoIGlzIHZhbGlkIGluIEZfTkFNRSBhbmQNCi0gKiBjb3JyZWN0IHBhdGggaW5mbyB3aXRoIGFic29sdXRlIHBhdGggKHJlbW92ZXMgcmVsYXRpdmVzKQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmc25hbWUgLSBmaWxsZWQgc3RydWN0dXJlIHdpdGggcGF0aCxkcml2ZQ0KLSAqIHBvcyAtIHdoZXJlIHRvIHN0YXJ0IHNlYXJjaGluZywgYW5kIGNvbnRhaW5zIGN1cnJlbnQgcG9zaXRpb24NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIDAgLSBpZiBwYXRoIHdhcyBub3QgZm91bmQgb3IgaW52YWxpZA0KLSAqIDEgLSBpZiBwYXRoIHdhcyBmb3VuZA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX2ZpbmRwYXRoICggRl9OQU1FICogZnNuYW1lLCBGX1BPUyAqIHBvcyApDQotew0KLSAgY2hhciAgICAgICAqIHBhdGggPSBmc25hbWUtPnBhdGg7DQotICBjaGFyICAgICAgICogbXBhdGggPSBwYXRoOw0KLSAgRl9ESVJFTlRSWSAqIGRlOw0KLQ0KLSAgX2ZfY2x1c3RlcnRvcG9zKCAwLCBwb3MgKTsNCi0NCi0gIGZvciAoIDsgKnBhdGggOyApDQotICB7DQotICAgIGNoYXIgICAgICAgICAgIG5hbWVbRl9NQVhOQU1FXTsNCi0gICAgY2hhciAgICAgICAgICAgZXh0W0ZfTUFYRVhUXTsNCi0NCi0gICAgdW5zaWduZWQgY2hhciAgbGVuID0gX2Zfc2V0bmFtZWV4dCggcGF0aCwgbmFtZSwgZXh0ICk7DQotDQotICAgIGlmICggKCBwb3MtPmNsdXN0ZXIgPT0gMCApICYmICggbGVuID09IDEgKSAmJiAoIG5hbWVbMF0gPT0gJy4nICkgKQ0KLSAgICB7DQotICAgICAgX2ZfY2x1c3RlcnRvcG9zKCAwLCBwb3MgKTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICBpZiAoICFfZl9maW5kZmlsZXdjKCBuYW1lLCBleHQsIHBvcywgJmRlLCAwICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiAwOw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoICEoIGRlLT5hdHRyICYgRl9BVFRSX0RJUiApICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gMDsNCi0gICAgICB9DQotDQotICAgICAgX2ZfY2x1c3RlcnRvcG9zKCBfZl9nZXRkZWNsdXN0ZXIoIGRlICksIHBvcyApOw0KLSAgICB9DQotDQotDQotICAgIGlmICggbmFtZVswXSA9PSAnLicgKQ0KLSAgICB7DQotICAgICAgaWYgKCBsZW4gPT0gMSApDQotICAgICAgew0KLSAgICAgICAgcGF0aCArPSBsZW47DQotDQotICAgICAgICBpZiAoICEoICpwYXRoICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBpZiAoIG1wYXRoICE9IGZzbmFtZS0+cGF0aCApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICBtcGF0aC0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlmIHdlIGFyZSBub3cgYXQgdGhlIHRvcCovDQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotDQotICAgICAgICBwYXRoKys7DQotICAgICAgICBjb250aW51ZTsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCBuYW1lWzFdICE9ICcuJyApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAvKmludmFsaWQgbmFtZSovDQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggbGVuICE9IDIgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUgISovDQotICAgICAgfQ0KLQ0KLSAgICAgIHBhdGggKz0gbGVuOw0KLQ0KLSAgICAgIGlmICggbXBhdGggPT0gZnNuYW1lLT5wYXRoICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKndlIGFyZSBpbiB0aGUgdG9wKi8NCi0gICAgICB9DQotDQotICAgICAgbXBhdGgtLTsgICAgICAgLypubyBvbiBzZXBhcmF0b3IqLw0KLSAgICAgIGZvciAoIDsgOyApDQotICAgICAgew0KLSAgICAgICAgaWYgKCBtcGF0aCA9PSBmc25hbWUtPnBhdGggKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qd2UgYXJlIG5vdyBhdCB0aGUgdG9wKi8NCi0gICAgICAgIH0NCi0NCi0gICAgICAgIG1wYXRoLS07DQotICAgICAgICBpZiAoICptcGF0aCA9PSAnLycgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBtcGF0aCsrOw0KLSAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCi0gICAgICB9DQotDQotICAgICAgaWYgKCAhKCAqcGF0aCApICkNCi0gICAgICB7DQotICAgICAgICBpZiAoIG1wYXRoICE9IGZzbmFtZS0+cGF0aCApDQotICAgICAgICB7DQotICAgICAgICAgIG1wYXRoLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlmIHdlIGFyZSBub3cgYXQgdGhlIHRvcCovDQotICAgICAgICB9DQotDQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotICAgICAgcGF0aCsrOw0KLSAgICAgIGNvbnRpbnVlOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgIGlmICggcGF0aCA9PSBtcGF0aCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppZiBubyB3YXMgZG90cyBqdXN0IHN0ZXAqLw0KLSAgICAgIHsNCi0gICAgICAgIHBhdGggKz0gbGVuOw0KLSAgICAgICAgbXBhdGggKz0gbGVuOw0KLSAgICAgIH0NCi0gICAgICBlbHNlDQotICAgICAgew0KLSAgICAgICAgdW5zaWduZWQgY2hhciAgYTsNCi0gICAgICAgIGZvciAoIGEgPSAwIDsgYSA8IGxlbiA7IGErKyApDQotICAgICAgICB7DQotICAgICAgICAgICptcGF0aCsrID0gKnBhdGgrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypjb3B5IGlmIGluIGRpZmZlcmVudCBwb3MqLw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICBpZiAoICEoICpwYXRoICkgKQ0KLSAgICB7DQotICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgcGF0aCsrOw0KLSAgICAqbXBhdGgrKyA9ICcvJzsgICAvKmFkZCBzZXBhcmF0b3IqLw0KLSAgfQ0KLQ0KLSAgKm1wYXRoID0gMDsgLyp0ZXJtaW5hdGUgaXQqLw0KLSAgcmV0dXJuIDE7DQotfSAvKiBfZl9maW5kcGF0aCAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9nZXRjd2QNCi0gKg0KLSAqIGdldHRpbmcgYSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgZHJpdmUNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogYnVmZmVyIC0gd2hlcmUgdG8gc3RvcmUgY3VycmVudCB3b3JraW5nIGZvbGRlcg0KLSAqIG1heGxlbiAtIGJ1ZmZlciBsZW5ndGggKHBvc3NpYmxlIHNpemUgaXMgRl9NQVhQQVRIKQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBmbl9nZXRjd2QgKCBjaGFyICogYnVmZmVyLCB1bnNpZ25lZCBjaGFyIG1heGxlbiwgY2hhciByb290ICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBhOw0KLQ0KLSAgaWYgKCAhbWF4bGVuICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfTk9fRVJST1I7DQotICB9DQotDQotICBtYXhsZW4tLTsgICAgIC8qbmVlZCBmb3IgdGVybWluYXRpb24qLw0KLSAgaWYgKCByb290ICYmIG1heGxlbiApDQotICB7DQotICAgICpidWZmZXIrKyA9ICcvJzsNCi0gICAgbWF4bGVuLS07DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCBtYXhsZW4gOyBhKysgKQ0KLSAgew0KLSAgICBjaGFyICBjaCA9IGdsX3ZvbHVtZS5jd2RbYV07DQotICAgIGJ1ZmZlclthXSA9IGNoOw0KLSAgICBpZiAoICFjaCApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgYnVmZmVyW2FdID0gMDsgICAgLyphZGQgdGVybWluYXRvciBhdCB0aGUgZW5kKi8NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogZm5fZ2V0Y3dkICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX2ZpbmRmaXJzdA0KLSAqDQotICogZmluZCBhIGZpbGUocykgb3IgZGlyZWN0b3J5KHMpIGluIGRpcmVjdG9yeQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlbmFtZSAtIGZpbGVuYW1lICh3aXRoIG9yIHdpdGhvdXQgd2lsZGNhcmRzKQ0KLSAqIGZpbmQgLSB3aGVyZSB0byBzdG9yZSBmb3VuZCBmaWxlIGluZm9ybWF0aW9uDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2ZpbmRmaXJzdCAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgRl9GSU5EICogZmluZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgaWYgKCBfZl9zZXRmc25hbWUoIGZpbGVuYW1lLCAmZmluZC0+ZmluZGZzbmFtZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOyAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9jaGVja25hbWUoIGZpbmQtPmZpbmRmc25hbWUuZmlsZW5hbWUsIGZpbmQtPmZpbmRmc25hbWUuZmlsZWV4dCApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOyAgLyppbnZhbGlkIG5hbWUsIHdpbGRjYXJkIGlzIG9rKi8NCi0gIH0NCi0NCi0NCi0gIHJldCA9IF9mX2dldHZvbHVtZSgpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgaWYgKCAhX2ZfZmluZHBhdGgoICZmaW5kLT5maW5kZnNuYW1lLCAmZmluZC0+cG9zICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRERJUjsgICAvKnNlYXJjaCBmb3IgcGF0aCovDQotICB9DQotDQotICByZXR1cm4gZm5fZmluZG5leHQoIGZpbmQgKTsNCi19IC8qIGZuX2ZpbmRmaXJzdCAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9maW5kbmV4dA0KLSAqDQotICogZmluZCBmdXJ0aGVyIGZpbGUocykgb3IgZGlyZWN0b3J5KHMpIGluIGRpcmVjdG9yeQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaW5kIC0gd2hlcmUgdG8gc3RvcmUgZm91bmQgZmlsZSBpbmZvcm1hdGlvbiAoZmluZGZpcnN0IHNob3VsZCBjYWxsIDFzdCkNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgZm5fZmluZG5leHQgKCBGX0ZJTkQgKiBmaW5kICkNCi17DQotICBGX0RJUkVOVFJZICAgKiBkZTsNCi0gIHVuc2lnbmVkIGNoYXIgIGE7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotDQotICByZXQgPSBfZl9nZXR2b2x1bWUoKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIHJldDsNCi0gIH0NCi0NCi0gIGlmICggIV9mX2ZpbmRmaWxld2MoIGZpbmQtPmZpbmRmc25hbWUuZmlsZW5hbWUsIGZpbmQtPmZpbmRmc25hbWUuZmlsZWV4dCwgJmZpbmQtPnBvcywgJmRlLCAxICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9URk9VTkQ7DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWE5BTUUgOyBhKysgKQ0KLSAgew0KLSAgICBmaW5kLT5uYW1lW2FdID0gZGUtPm5hbWVbYV07DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWEVYVCA7IGErKyApDQotICB7DQotICAgIGZpbmQtPmV4dFthXSA9IGRlLT5leHRbYV07DQotICB9DQotDQotICBfZl9nZXRmaWxlbmFtZSggZmluZC0+ZmlsZW5hbWUsIChjaGFyICopZGUtPm5hbWUsIChjaGFyICopZGUtPmV4dCApOw0KLQ0KLSAgZmluZC0+YXR0ciA9IGRlLT5hdHRyOw0KLSAgZmluZC0+Y2RhdGUgPSBfZl9nZXR3b3JkKCAmZGUtPmNkYXRlICk7DQotICBmaW5kLT5jdGltZSA9IF9mX2dldHdvcmQoICZkZS0+Y3RpbWUgKTsNCi0gIGZpbmQtPmZpbGVzaXplID0gKGxvbmcpX2ZfZ2V0bG9uZyggJmRlLT5maWxlc2l6ZSApOw0KLSAgZmluZC0+Y2x1c3RlciA9IF9mX2dldGRlY2x1c3RlciggZGUgKTsNCi0gIGZpbmQtPnBvcy5wb3MrKzsgICAvKmdvdG8gbmV4dCBwb3NpdGlvbiovDQotDQotICByZXR1cm4gMDsNCi19IC8qIGZuX2ZpbmRuZXh0ICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX2NoZGlyDQotICoNCi0gKiBjaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBkaXJuYW1lIC0gbmV3IHdvcmtpbmcgZGlyZWN0b3J5IG5hbWUNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIDAgLSBpZiBzdWNjZXNzZnVsbHkNCi0gKiBvdGhlciAtIGlmIGFueSBlcnJvcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2NoZGlyICggY29uc3QgY2hhciAqIGRpcm5hbWUgKQ0KLXsNCi0gIEZfUE9TICAgICAgICAgIHBvczsNCi0gIEZfTkFNRSAgICAgICAgIGZzbmFtZTsNCi0gIHVuc2lnbmVkIGNoYXIgIGxlbjsNCi0gIHVuc2lnbmVkIGNoYXIgIGE7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotDQotICByZXQgPSBfZl9zZXRmc25hbWUoIGRpcm5hbWUsICZmc25hbWUgKTsNCi0NCi0gIGlmICggcmV0ID09IDEgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRE5BTUU7ICAgICAgICAgICAgIC8qaW52YWxpZCBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggX2ZfY2hlY2tuYW1ld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTlZBTElETkFNRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBmb3IgKCBsZW4gPSAwIDsgZnNuYW1lLnBhdGhbbGVuXSA7ICkNCi0gIHsNCi0gICAgbGVuKys7DQotICB9DQotDQotICBpZiAoIGxlbiAmJiAoICggZnNuYW1lLmZpbGVuYW1lWzBdICE9IDMyICkgfHwgKCBmc25hbWUuZmlsZWV4dFswXSAhPSAzMiApICkgKQ0KLSAgew0KLSAgICBmc25hbWUucGF0aFtsZW4rK10gPSAnLyc7DQotICB9DQotDQotICBfZl9nZXRmaWxlbmFtZSggZnNuYW1lLnBhdGggKyBsZW4sIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKTsNCi0NCi0gIGlmICggISggX2ZfZmluZHBhdGgoICZmc25hbWUsICZwb3MgKSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVEZPVU5EOw0KLSAgfQ0KLQ0KLSAgZm9yICggYSA9IDAgOyBhIDwgRl9NQVhQQVRIIDsgYSsrICkNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLmN3ZFthXSA9IGZzbmFtZS5wYXRoW2FdOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIEZfTk9fRVJST1I7DQotfSAvKiBmbl9jaGRpciAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9pbml0ZW50cnkNCi0gKg0KLSAqIGluaXQgZGlyZWN0b3J5IGVudHJ5LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiBhIG5ldyBlbnRyeSBpcyBjb21pbmcNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZGUgLSBkaXJlY3RvcnkgZW50cnkgd2hpY2ggbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQNCi0gKiBuYW1lIC0gZmlsIGVuYW1lICAoOCkNCi0gKiBleHQgLSBmaWxlIGV4dGVuc2lvbiAoMykNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHZvaWQgX2ZfaW5pdGVudHJ5ICggRl9ESVJFTlRSWSAqIGRlLCBjaGFyICogbmFtZSwgY2hhciAqIGV4dCApDQotew0KLSAgdW5zaWduZWQgc2hvcnQgIGRhdGU7DQotICB1bnNpZ25lZCBzaG9ydCAgdGltZTsNCi0NCi0gIHBzcF9tZW1zZXQoIGRlLCAwLCBzaXplb2YoIEZfRElSRU5UUlkgKSApOyAvKnJlc2V0IGFsbCBlbnRyaWVzKi8NCi0NCi0gIHBzcF9tZW1jcHkoIGRlLT5uYW1lLCBuYW1lLCBzaXplb2YoIGRlLT5uYW1lICkgKTsNCi0gIHBzcF9tZW1jcHkoIGRlLT5leHQsIGV4dCwgc2l6ZW9mKCBkZS0+ZXh0ICkgKTsNCi0NCi0gIGZfaWdldHRpbWVkYXRlKCAmdGltZSwgJmRhdGUgKTsNCi0gIF9mX3NldHdvcmQoICZkZS0+Y2RhdGUsIGRhdGUgKTsgLyppZiB0aGVyZSBpcyByZWFsdGltZSBjbG9jayB0aGVuIGNyZWF0aW9uIGRhdGUgY291bGQgYmUgc2V0IGZyb20qLw0KLSAgX2Zfc2V0d29yZCggJmRlLT5jdGltZSwgdGltZSApOyAvKmlmIHRoZXJlIGlzIHJlYWx0aW1lIGNsb2NrIHRoZW4gY3JlYXRpb24gdGltZSBjb3VsZCBiZSBzZXQgZnJvbSovDQotfQ0KLQ0KLQ0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9hZGRlbnRyeQ0KLSAqDQotICogQWRkIGEgbmV3IGRpcmVjdG9yeSBlbnRyeSBpbnRvIGRyaWVjdG9yeSBsaXN0DQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGZzX25hbWUgLSBmaWxsZWQgc3RydWN0dXJlIHdoYXQgdG8gYWRkIGludG8gZGlyZWN0b3J5IGxpc3QNCi0gKiBwb3MgLSB3aGVyZSBkaXJlY3RvcnkgY2x1c3RlciBjaGFpbnMgc3RhcnRzDQotICogcGRlIC0gRl9ESVJFTlRSWSBwb2ludGVyIHdoZXJlIHRvIHN0b3JlIHRoZSBlbnRyeSB3aGVyZSBpdCB3YXMgYWRkZWQNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIDAgLSBpZiBzdWNjZXNzZnVsbHkgYWRkZWQNCi0gKiBvdGhlciAtIGlmIGFueSBlcnJvciAoc2VlIEZTX3h4eCBlcnJvcmNvZGVzKQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX2FkZGVudHJ5ICggRl9OQU1FICogZnNuYW1lLCBGX1BPUyAqIHBvcywgRl9ESVJFTlRSWSAqICogcGRlICkNCi17DQotICB1bnNpZ25lZCBjaGFyICAgcmV0Ow0KLSAgdW5zaWduZWQgc2hvcnQgIGRhdGU7DQotICB1bnNpZ25lZCBzaG9ydCAgdGltZTsNCi0NCi0gIGlmICggIWZzbmFtZS0+ZmlsZW5hbWVbMF0gKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRE5BTUU7DQotICB9DQotDQotICBpZiAoIGZzbmFtZS0+ZmlsZW5hbWVbMF0gPT0gJy4nICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOw0KLSAgfQ0KLQ0KLSAgd2hpbGUgKCBwb3MtPmNsdXN0ZXIgPCBGX0NMVVNURVJfUkVTRVJWRUQgKQ0KLSAgew0KLSAgICBmb3IgKCA7IHBvcy0+c2VjdG9yIDwgcG9zLT5zZWN0b3JlbmQgOyBwb3MtPnNlY3RvcisrICkNCi0gICAgew0KLSAgICAgIEZfRElSRU5UUlkgKiBkZSA9IChGX0RJUkVOVFJZICopKCBnbF9zZWN0b3IgKyBzaXplb2YoIEZfRElSRU5UUlkgKSAqIHBvcy0+cG9zICk7DQotDQotICAgICAgcmV0ID0gX2ZfcmVhZGdsc2VjdG9yKCBwb3MtPnNlY3RvciApOw0KLSAgICAgIGlmICggcmV0ICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgIH0NCi0NCi0gICAgICBmb3IgKCA7IHBvcy0+cG9zIDwgRl9TRUNUT1JfU0laRSAvIHNpemVvZiggRl9ESVJFTlRSWSApIDsgZGUrKywgcG9zLT5wb3MrKyApDQotICAgICAgew0KLSAgICAgICAgaWYgKCAoICFkZS0+bmFtZVswXSApIHx8ICggKHVuc2lnbmVkIGNoYXIpKCBkZS0+bmFtZVswXSApID09IDB4ZTUgKSApDQotICAgICAgICB7DQotICAgICAgICAgIF9mX2luaXRlbnRyeSggZGUsIGZzbmFtZS0+ZmlsZW5hbWUsIGZzbmFtZS0+ZmlsZWV4dCApOw0KLSAgICAgICAgICBpZiAoIGdsX3ZvbHVtZS5tZWRpYXR5cGUgPT0gRl9GQVQzMl9NRURJQSApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICBmX2lnZXR0aW1lZGF0ZSggJnRpbWUsICZkYXRlICk7DQotICAgICAgICAgICAgX2Zfc2V0d29yZCggJmRlLT5jcnRkYXRlLCBkYXRlICk7ICAgICAgICAgICAgIC8qaWYgdGhlcmUgaXMgcmVhbHRpbWUgY2xvY2sgdGhlbiBjcmVhdGlvbiBkYXRlIGNvdWxkIGJlIHNldCBmcm9tKi8NCi0gICAgICAgICAgICBfZl9zZXR3b3JkKCAmZGUtPmNydHRpbWUsIHRpbWUgKTsgICAgICAgICAgICAgLyppZiB0aGVyZSBpcyByZWFsdGltZSBjbG9jayB0aGVuIGNyZWF0aW9uIHRpbWUgY291bGQgYmUgc2V0IGZyb20qLw0KLSAgICAgICAgICAgIF9mX3NldHdvcmQoICZkZS0+bGFzdGFjY2Vzc2RhdGUsIGRhdGUgKTsgICAgICAvKmlmIHRoZXJlIGlzIHJlYWx0aW1lIGNsb2NrIHRoZW4gY3JlYXRpb24gZGF0ZSBjb3VsZCBiZSBzZXQgZnJvbSovDQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgaWYgKCBwZGUgKQ0KLSAgICAgICAgICB7DQotICAgICAgICAgICAgKnBkZSA9IGRlOw0KLSAgICAgICAgICB9DQotDQotICAgICAgICAgIHJldHVybiBGX05PX0VSUk9SOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBwb3MtPnBvcyA9IDA7DQotICAgIH0NCi0NCi0gICAgaWYgKCAhcG9zLT5jbHVzdGVyICkNCi0gICAgew0KLSAgICAgIGlmICggZ2xfdm9sdW1lLm1lZGlhdHlwZSA9PSBGX0ZBVDMyX01FRElBICkNCi0gICAgICB7DQotICAgICAgICBwb3MtPmNsdXN0ZXIgPSBnbF92b2x1bWUuYm9vdHJlY29yZC5yb290Y2x1c3RlcjsNCi0gICAgICB9DQotICAgICAgZWxzZQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiBGX0VSUl9OT01PUkVFTlRSWTsNCi0gICAgICB9DQotICAgIH0NCi0NCi0gICAgew0KLSAgICAgIHVuc2lnbmVkIGxvbmcgIGNsdXN0ZXI7DQotDQotICAgICAgZ2xfdm9sdW1lLmZhdHNlY3RvciA9ICh1bnNpZ25lZCBsb25nKS0xOw0KLSAgICAgIHJldCA9IF9mX2dldGNsdXN0ZXJ2YWx1ZSggcG9zLT5jbHVzdGVyLCAmY2x1c3RlciApOyAgICAvKnRyeSB0byBnZXQgbmV4dCBjbHVzdGVyKi8NCi0gICAgICBpZiAoIHJldCApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCBjbHVzdGVyIDwgRl9DTFVTVEVSX1JFU0VSVkVEICkNCi0gICAgICB7DQotICAgICAgICBfZl9jbHVzdGVydG9wb3MoIGNsdXN0ZXIsIHBvcyApOw0KLSAgICAgIH0NCi0gICAgICBlbHNlDQotICAgICAgew0KLSAgICAgICAgcmV0ID0gX2ZfYWxsb2NjbHVzdGVyKCAmY2x1c3RlciApOyAgICAgICAgLypnZXQgYSBuZXcgb25lKi8NCi0gICAgICAgIGlmICggcmV0ICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICAgIH0NCi0NCi0gICAgICAgIGlmICggY2x1c3RlciA8IEZfQ0xVU1RFUl9SRVNFUlZFRCApDQotICAgICAgICB7DQotICAgICAgICAgIGlmICggZ2xfZmlsZS5tb2RlICE9IEZfRklMRV9DTE9TRSApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gRl9FUlJfTk9NT1JFRU5UUlk7DQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgX2ZfY2x1c3RlcnRvcG9zKCBjbHVzdGVyLCAmZ2xfZmlsZS5wb3MgKTsNCi0NCi0gICAgICAgICAgcmV0ID0gX2Zfc2V0Y2x1c3RlcnZhbHVlKCBnbF9maWxlLnBvcy5jbHVzdGVyLCBGX0NMVVNURVJfTEFTVCApOw0KLSAgICAgICAgICBpZiAoIHJldCApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgICAgICB9DQotDQotICAgICAgICAgIHJldCA9IF9mX3NldGNsdXN0ZXJ2YWx1ZSggcG9zLT5jbHVzdGVyLCBnbF9maWxlLnBvcy5jbHVzdGVyICk7DQotICAgICAgICAgIGlmICggcmV0ICkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIHJldHVybiByZXQ7DQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgcmV0ID0gX2Zfd3JpdGVmYXRzZWN0b3IoKTsNCi0gICAgICAgICAgaWYgKCByZXQgKQ0KLSAgICAgICAgICB7DQotICAgICAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICBnbF92b2x1bWUuZmF0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpLTE7DQotICAgICAgICAgIHBzcF9tZW1zZXQoIGdsX3NlY3RvciwgMCwgRl9TRUNUT1JfU0laRSApOw0KLSAgICAgICAgICB3aGlsZSAoIGdsX2ZpbGUucG9zLnNlY3RvciA8IGdsX2ZpbGUucG9zLnNlY3RvcmVuZCApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCBnbF9maWxlLnBvcy5zZWN0b3IgKTsNCi0gICAgICAgICAgICBpZiAoIHJldCApDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZ2xfZmlsZS5wb3Muc2VjdG9yKys7DQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgX2ZfY2x1c3RlcnRvcG9zKCBnbF9maWxlLnBvcy5jbHVzdGVyLCBwb3MgKTsNCi0gICAgICAgIH0NCi0gICAgICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIEZfRVJSX05PTU9SRUVOVFJZOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0gICAgfQ0KLSAgfSAvKiBfZl9hZGRlbnRyeSAqLw0KLQ0KLSAgcmV0dXJuIEZfRVJSX05PTU9SRUVOVFJZOw0KLX0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fbWtkaXINCi0gKg0KLSAqIG1ha2luZyBhIG5ldyBkaXJlY3RvcnkNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZGlybmFtZSAtIG5ldyBkaXJlY3RvcnkgbmFtZQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBmbl9ta2RpciAoIGNvbnN0IGNoYXIgKiBkaXJuYW1lICkNCi17DQotICBGX1BPUyAgICAgICAgICBwb3NkaXI7DQotICBGX1BPUyAgICAgICAgICBwb3M7DQotICBGX0RJUkVOVFJZICAgKiBkZTsNCi0gIEZfTkFNRSAgICAgICAgIGZzbmFtZTsNCi0gIHVuc2lnbmVkIGxvbmcgIGNsdXN0ZXI7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotDQotICNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgU1RfRklMRV9DSEFOR0VEICBmYzsNCi0gI2VuZGlmDQotDQotICBpZiAoIF9mX3NldGZzbmFtZSggZGlybmFtZSwgJmZzbmFtZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaW52YWxpZCBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggX2ZfY2hlY2tuYW1ld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTlZBTElETkFNRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBpZiAoICFfZl9maW5kcGF0aCggJmZzbmFtZSwgJnBvc2RpciApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSURESVI7DQotICB9DQotDQotICBwb3MgPSBwb3NkaXI7DQotDQotICBpZiAoIGZzbmFtZS5maWxlbmFtZVswXSA9PSAnLicgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9URk9VTkQ7DQotICB9DQotDQotICBpZiAoIF9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZwb3MsICZkZSwgMCApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0RVUExJQ0FURUQ7DQotICB9DQotDQotICBwb3MgPSBwb3NkaXI7DQotDQotICBnbF92b2x1bWUuZmF0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpLTE7DQotICByZXQgPSBfZl9hbGxvY2NsdXN0ZXIoICZjbHVzdGVyICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICByZXQgPSBfZl9hZGRlbnRyeSggJmZzbmFtZSwgJnBvcywgJmRlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBkZS0+YXR0ciB8PSBGX0FUVFJfRElSOyAgICAgICAvKnNldCBhcyBkaXJlY3RvcnkqLw0KLQ0KLSAjaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQNCi0gIGlmICggZl9maWxlY2hhbmdlZGV2ZW50ICkNCi0gIHsNCi0gICAgZmMuYWN0aW9uID0gRkFDVElPTl9BRERFRDsNCi0gICAgZmMuZmxhZ3MgPSBGRkxBR1NfRElSX05BTUUgfCBGRkxBR1NfQVRUUklCVVRFUyB8IEZGTEFHU19TSVpFIHwgRkZMQUdTX0xBU1RfV1JJVEU7DQotICAgIGZjLmF0dHIgPSBkZS0+YXR0cjsNCi0gICAgZmMuY3RpbWUgPSBfZl9nZXR3b3JkKCBkZS0+Y3RpbWUgKTsNCi0gICAgZmMuY2RhdGUgPSBfZl9nZXR3b3JkKCBkZS0+Y2RhdGUgKTsNCi0gICAgZmMuZmlsZXNpemUgPSBfZl9nZXRsb25nKCBkZS0+ZmlsZXNpemUgKTsNCi0gIH0NCi0NCi0gI2VuZGlmDQotDQotICBpZiAoIGdsX2ZpbGUubW9kZSAhPSBGX0ZJTEVfQ0xPU0UgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTE9DS0VEOw0KLSAgfQ0KLQ0KLSAgX2ZfY2x1c3RlcnRvcG9zKCBjbHVzdGVyLCAmZ2xfZmlsZS5wb3MgKTsNCi0gIF9mX3NldGRlY2x1c3RlciggZGUsIGNsdXN0ZXIgKTsgLypuZXcgZGlyKi8NCi0NCi0gICh2b2lkKV9mX3dyaXRlZ2xzZWN0b3IoICh1bnNpZ25lZCBsb25nKS0xICk7ICAvKndyaXRlIGFjdHVhbCBkaXJlY3Rvcnkgc2VjdG9yKi8NCi0NCi0NCi0gIGRlID0gKEZfRElSRU5UUlkgKilnbF9zZWN0b3I7DQotDQotICBfZl9pbml0ZW50cnkoIGRlLCAiLiAgICAgICAiLCAiICAgIiApOw0KLSAgZGUtPmF0dHIgPSBGX0FUVFJfRElSOyAgICAgICAgICAvKnNldCBhcyBkaXJlY3RvcnkqLw0KLSAgX2Zfc2V0ZGVjbHVzdGVyKCBkZSwgY2x1c3RlciApOyAvKmN1cnJlbnQqLw0KLSAgZGUrKzsNCi0NCi0gIF9mX2luaXRlbnRyeSggZGUsICIuLiAgICAgICIsICIgICAiICk7DQotICBkZS0+YXR0ciA9IEZfQVRUUl9ESVI7ICAgICAgICAgICAgICAgICAvKnNldCBhcyBkaXJlY3RvcnkqLw0KLSAgX2Zfc2V0ZGVjbHVzdGVyKCBkZSwgcG9zZGlyLmNsdXN0ZXIgKTsgLypwYXJlbnQqLw0KLSAgZGUrKzsNCi0NCi0gIHBzcF9tZW1zZXQoIGRlLCAwLCAoIEZfU0VDVE9SX1NJWkUgLSAyICogc2l6ZW9mKCBGX0RJUkVOVFJZICkgKSApOw0KLQ0KLQ0KLSAgcmV0ID0gX2Zfd3JpdGVnbHNlY3RvciggZ2xfZmlsZS5wb3Muc2VjdG9yICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBnbF9maWxlLnBvcy5zZWN0b3IrKzsNCi0gIHBzcF9tZW1zZXQoIGdsX3NlY3RvciwgMCwgKCAyICogc2l6ZW9mKCBGX0RJUkVOVFJZICkgKSApOw0KLSAgd2hpbGUgKCBnbF9maWxlLnBvcy5zZWN0b3IgPCBnbF9maWxlLnBvcy5zZWN0b3JlbmQgKQ0KLSAgew0KLSAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCBnbF9maWxlLnBvcy5zZWN0b3IgKTsNCi0gICAgaWYgKCByZXQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIHJldDsNCi0gICAgfQ0KLQ0KLSAgICBnbF9maWxlLnBvcy5zZWN0b3IrKzsNCi0gIH0NCi0NCi0gIGdsX3ZvbHVtZS5mYXRzZWN0b3IgPSAodW5zaWduZWQgbG9uZyktMTsNCi0gIHJldCA9IF9mX3NldGNsdXN0ZXJ2YWx1ZSggZ2xfZmlsZS5wb3MuY2x1c3RlciwgRl9DTFVTVEVSX0xBU1QgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIHJldDsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX3dyaXRlZmF0c2VjdG9yKCk7DQotICNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgaWYgKCBmX2ZpbGVjaGFuZ2VkZXZlbnQgJiYgIXJldCApDQotICB7DQotICAgIGZjLmFjdGlvbiA9IEZBQ1RJT05fQURERUQ7DQotICAgIGZjLmZsYWdzID0gRkZMQUdTX0RJUl9OQU1FOw0KLQ0KLSAgICBpZiAoICFfZl9jcmVhdGVmdWxsbmFtZSggZmMuZmlsZW5hbWUsIHNpemVvZiggZmMuZmlsZW5hbWUgKSwgZnNuYW1lLnBhdGgsIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKSApDQotICAgIHsNCi0gICAgICBmX2ZpbGVjaGFuZ2VkZXZlbnQoICZmYyApOw0KLSAgICB9DQotICB9DQotDQotICNlbmRpZg0KLQ0KLSAgcmV0dXJuIHJldDsNCi19IC8qIGZuX21rZGlyICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX3JtZGlyDQotICoNCi0gKiBSZW1vdmUgZGlyZWN0b3J5LCBvbmx5IGNvdWxkIGJlIHJlbW92ZWQgaWYgZW1wdHkNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZGlybmFtZSAtIHdoaWNoIGRpcmVjdG9yeSBuZWVkZWQgdG8gYmUgcmVtb3ZlZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBmbl9ybWRpciAoIGNvbnN0IGNoYXIgKiBkaXJuYW1lICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotICBGX1BPUyAgICAgICAgICBwb3M7DQotICBGX0RJUkVOVFJZICAgKiBkZTsNCi0gIEZfTkFNRSAgICAgICAgIGZzbmFtZTsNCi0gIHVuc2lnbmVkIGxvbmcgIGRpcnNlY3RvcjsNCi0gIHVuc2lnbmVkIGNoYXIgIGE7DQotDQotICBpZiAoIF9mX3NldGZzbmFtZSggZGlybmFtZSwgJmZzbmFtZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaW52YWxpZCBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggX2ZfY2hlY2tuYW1ld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTlZBTElETkFNRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBmc25hbWUuZmlsZW5hbWVbMF0gPT0gJy4nICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVEZPVU5EOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBpZiAoICEoIF9mX2ZpbmRwYXRoKCAmZnNuYW1lLCAmcG9zICkgKSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTlZBTElERElSOw0KLSAgfQ0KLQ0KLSAgaWYgKCAhX2ZfZmluZGZpbGV3YyggZnNuYW1lLmZpbGVuYW1lLCBmc25hbWUuZmlsZWV4dCwgJnBvcywgJmRlLCAwICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9URk9VTkQ7DQotICB9DQotDQotICBpZiAoICEoIGRlLT5hdHRyICYgRl9BVFRSX0RJUiApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSURESVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypub3QgYSBkaXJlY3RvcnkqLw0KLSAgfQ0KLQ0KLSAgZGlyc2VjdG9yID0gZ2xfdm9sdW1lLmFjdHNlY3RvcjsNCi0NCi0gIGlmICggZ2xfZmlsZS5tb2RlICE9IEZfRklMRV9DTE9TRSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9MT0NLRUQ7DQotICB9DQotDQotICBfZl9jbHVzdGVydG9wb3MoIF9mX2dldGRlY2x1c3RlciggZGUgKSwgJmdsX2ZpbGUucG9zICk7DQotDQotICBmb3IgKCA7IDsgKQ0KLSAgew0KLSAgICBGX0RJUkVOVFJZICogZGUyOw0KLSAgICBjaGFyICAgICAgICAgY2ggPSAwOw0KLQ0KLSAgICByZXQgPSBfZl9nZXRjdXJyc2VjdG9yKCk7DQotICAgIGlmICggcmV0ID09IEZfRVJSX0VPRiApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gcmV0Ow0KLSAgICB9DQotDQotICAgIGRlMiA9IChGX0RJUkVOVFJZICopZ2xfc2VjdG9yOw0KLSAgICBmb3IgKCBhID0gMCA7IGEgPCAoIEZfU0VDVE9SX1NJWkUgLyBzaXplb2YoIEZfRElSRU5UUlkgKSApIDsgYSsrLCBkZTIrKyApDQotICAgIHsNCi0gICAgICBjaCA9IGRlMi0+bmFtZVswXTsNCi0gICAgICBpZiAoICFjaCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggKHVuc2lnbmVkIGNoYXIpY2ggPT0gMHhlNSApDQotICAgICAgew0KLSAgICAgICAgY29udGludWU7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggY2ggPT0gJy4nICkNCi0gICAgICB7DQotICAgICAgICBjb250aW51ZTsNCi0gICAgICB9DQotDQotICAgICAgcmV0dXJuIEZfRVJSX05PVEVNUFRZOyAgICAgICAvKnNvbWV0aGluZyBpcyB0aGVyZSovDQotICAgIH0NCi0NCi0gICAgaWYgKCAhY2ggKQ0KLSAgICB7DQotICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgZ2xfZmlsZS5wb3Muc2VjdG9yKys7DQotICB9DQotDQotICByZXQgPSBfZl9yZWFkZ2xzZWN0b3IoIGRpcnNlY3RvciApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgZGUtPm5hbWVbMF0gPSAodW5zaWduZWQgY2hhcikweGU1Ow0KLQ0KLSAgcmV0ID0gX2Zfd3JpdGVnbHNlY3RvciggZGlyc2VjdG9yICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBnbF92b2x1bWUuZmF0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpLTE7DQotICByZXQgPSBfZl9yZW1vdmVjaGFpbiggX2ZfZ2V0ZGVjbHVzdGVyKCBkZSApICk7DQotICNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgaWYgKCBmX2ZpbGVjaGFuZ2VkZXZlbnQgJiYgIXJldCApDQotICB7DQotICAgIFNUX0ZJTEVfQ0hBTkdFRCAgZmM7DQotICAgIGZjLmFjdGlvbiA9IEZBQ1RJT05fUkVNT1ZFRDsNCi0gICAgZmMuZmxhZ3MgPSBGRkxBR1NfRElSX05BTUU7DQotDQotICAgIGlmICggIV9mX2NyZWF0ZWZ1bGxuYW1lKCBmYy5maWxlbmFtZSwgc2l6ZW9mKCBmYy5maWxlbmFtZSApLCBmc25hbWUucGF0aCwgZnNuYW1lLmZpbGVuYW1lLCBmc25hbWUuZmlsZWV4dCApICkNCi0gICAgew0KLSAgICAgIGZfZmlsZWNoYW5nZWRldmVudCggJmZjICk7DQotICAgIH0NCi0gIH0NCi0NCi0gI2VuZGlmDQotICByZXR1cm4gcmV0Ow0KLX0gLyogZm5fcm1kaXIgKi8NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2Rpci5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9kaXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJkOGEyYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2Rpci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfX0RJUl9IDQotI2RlZmluZSBfX0RJUl9IDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLQ0KLS8qIGRlZmluaXRpb25zIGZvciBjdGltZSAqLw0KLSNkZWZpbmUgRl9DVElNRV9TRUNfU0hJRlQgICAwDQotI2RlZmluZSBGX0NUSU1FX1NFQ19NQVNLICAgIDB4MDAxZiAgLyowLTMwIGluIDJzZWNvbmRzKi8NCi0jZGVmaW5lIEZfQ1RJTUVfTUlOX1NISUZUICAgNQ0KLSNkZWZpbmUgRl9DVElNRV9NSU5fTUFTSyAgICAweDA3ZTAgIC8qMC01OSAqLw0KLSNkZWZpbmUgRl9DVElNRV9IT1VSX1NISUZUICAxMQ0KLSNkZWZpbmUgRl9DVElNRV9IT1VSX01BU0sgICAweGY4MDAgIC8qMC0yMyovDQotDQotDQotLyogZGVmaW5pdGlvbnMgZm9yIGNkYXRlICovDQotI2RlZmluZSBGX0NEQVRFX0RBWV9TSElGVCAgIDANCi0jZGVmaW5lIEZfQ0RBVEVfREFZX01BU0sgICAgMHgwMDFmICAvKjAtMzEqLw0KLSNkZWZpbmUgRl9DREFURV9NT05USF9TSElGVCA1DQotI2RlZmluZSBGX0NEQVRFX01PTlRIX01BU0sgIDB4MDFlMCAgLyoxLTEyKi8NCi0jZGVmaW5lIEZfQ0RBVEVfWUVBUl9TSElGVCAgOQ0KLSNkZWZpbmUgRl9DREFURV9ZRUFSX01BU0sgICAweGZlMDAgIC8qMC0xMTkgKDE5ODArdmFsdWUpKi8NCi0NCi0NCi0jZGVmaW5lIE5UUkVTX0xPVyAgICAgICAgICAgMHgwOCAvKmxvd2VyIGNhc2UgbmFtZSovDQotDQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICB1bnNpZ25lZCBjaGFyICBuYW1lW0ZfTUFYTkFNRV07ICAgLyogOCszICovDQotICB1bnNpZ25lZCBjaGFyICBleHRbRl9NQVhFWFRdOw0KLSAgdW5zaWduZWQgY2hhciAgYXR0cjsgICAgICAgICAgICAgICAgICAvKiAwMEFEVlNIUiAqLw0KLQ0KLSAgdW5zaWduZWQgY2hhciAgbnRyZXM7ICAgICAgICAgICAgIC8qIEZBVDMyIG9ubHkgICovDQotICB1bnNpZ25lZCBjaGFyICBjcnR0aW1ldGVudGg7ICAgICAgLyogRkFUMzIgb25seSAgKi8NCi0gIHVuc2lnbmVkIGNoYXIgIGNydHRpbWVbMl07ICAgICAgICAvKiBGQVQzMiBvbmx5ICAqLw0KLSAgdW5zaWduZWQgY2hhciAgY3J0ZGF0ZVsyXTsgICAgICAgIC8qIEZBVDMyIG9ubHkgKi8NCi0gIHVuc2lnbmVkIGNoYXIgIGxhc3RhY2Nlc3NkYXRlWzJdOyAvKiBGQVQzMiBvbmx5ICovDQotDQotICB1bnNpZ25lZCBjaGFyICBjbHVzdGVyaGlbMl07IC8qIEZBVDMyIG9ubHkgKi8NCi0gIHVuc2lnbmVkIGNoYXIgIGN0aW1lWzJdOw0KLSAgdW5zaWduZWQgY2hhciAgY2RhdGVbMl07DQotICB1bnNpZ25lZCBjaGFyICBjbHVzdGVybG9bMl07IC8qIGZhdDEyLGZhdDE2LGZhdDMyICovDQotICB1bnNpZ25lZCBjaGFyICBmaWxlc2l6ZVs0XTsNCi19IEZfRElSRU5UUlk7DQotDQotDQotdW5zaWduZWQgY2hhciBfZl9nZXRkaXJzZWN0b3IgKCB1bnNpZ25lZCBsb25nICk7DQotdW5zaWduZWQgY2hhciBfZl9maW5kZmlsZXdjICggY2hhciAqLCBjaGFyICosIEZfUE9TICosIEZfRElSRU5UUlkgKiAqLCB1bnNpZ25lZCBjaGFyICk7DQotdW5zaWduZWQgY2hhciBfZl9maW5kcGF0aCAoIEZfTkFNRSAqLCBGX1BPUyAqICk7DQotdW5zaWduZWQgbG9uZyBfZl9nZXRkZWNsdXN0ZXIgKCBGX0RJUkVOVFJZICogKTsNCi0NCi11bnNpZ25lZCBjaGFyIF9mX3dyaXRlZGlyc2VjdG9yICggdm9pZCApOw0KLXZvaWQgX2Zfc2V0ZGVjbHVzdGVyICggRl9ESVJFTlRSWSAqLCB1bnNpZ25lZCBsb25nICk7DQotdW5zaWduZWQgY2hhciBfZl9hZGRlbnRyeSAoIEZfTkFNRSAqLCBGX1BPUyAqLCBGX0RJUkVOVFJZICogKiApOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9fRElSX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2Rydi5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9kcnYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NjMjMyNC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2Rydi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL2FwaS9mYXRfc2wuaCINCi0jaW5jbHVkZSAiLi4vLi4vcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oIg0KLQ0KLSNpbmNsdWRlICJkcnYuaCINCi0jaW5jbHVkZSAidXRpbC5oIg0KLSNpbmNsdWRlICJ2b2x1bWUuaCINCi0NCi0jaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotRl9EUklWRVIgKiBtZHJ2ID0gTlVMTDsgIC8qIGRyaXZlciBzdHJ1Y3R1cmUgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfY2hlY2tzdGF0dXMNCi0gKg0KLSAqIGNoZWNraW5nIGEgdm9sdW1lIGRyaXZlciBzdGF0dXMsIGlmIG1lZGlhIGlzIHJlbW92ZWQgb3IgaGFzIGJlZW4gY2hhbmdlZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl9jaGVja3N0YXR1cyAoIHZvaWQgKQ0KLXsNCi0gIGlmICggbWRydi0+Z2V0c3RhdHVzICE9IE5VTEwgKQ0KLSAgew0KLSAgICBpZiAoIG1kcnYtPmdldHN0YXR1cyggbWRydiApICYgKCBGX1NUX01JU1NJTkcgfCBGX1NUX0NIQU5HRUQgKSApDQotICAgIHsNCi0gICAgICBnbF92b2x1bWUuc3RhdGUgPSBGX1NUQVRFX05FRURNT1VOVDsgLypjYXJkIGhhcyBiZWVuIHJlbW92ZWQ7Ki8NCi0gICAgICByZXR1cm4gRl9FUlJfQ0FSRFJFTU9WRUQ7DQotICAgIH0NCi0gIH0NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2Zfd3JpdGVzZWN0b3INCi0gKg0KLSAqIHdyaXRlIHNlY3RvciBkYXRhIG9uIGEgdm9sdW1lLCBpdCBjYWxscyBsb3cgbGV2ZWwgZHJpdmVyIGZ1bmN0aW9uLCBpdA0KLSAqIHdyaXRlcyBhIGNvbXBsZXRlIHNlY3Rvcg0KLSAqDQotICogSU5QVVRTDQotICogc2VjdG9yIC0gd2hpY2ggcGh5c2ljYWwgc2VjdG9yDQotICoNCi0gKiBSRVRVUk5TDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl93cml0ZWdsc2VjdG9yICggdW5zaWduZWQgbG9uZyBzZWN0b3IgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldHJ5Ow0KLQ0KLSAgaWYgKCBtZHJ2LT53cml0ZXNlY3RvciA9PSBOVUxMICkNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLnN0YXRlID0gRl9TVEFURV9ORUVETU9VTlQ7IC8qbm8gd3JpdGUgZnVuY3Rpb24qLw0KLSAgICByZXR1cm4gRl9FUlJfQUNDRVNTREVOSUVEOw0KLSAgfQ0KLQ0KLSAgaWYgKCBzZWN0b3IgPT0gKHVuc2lnbmVkIGxvbmcpLTEgKQ0KLSAgew0KLSAgICBpZiAoIGdsX2ZpbGUubW9kaWZpZWQgKQ0KLSAgICB7DQotICAgICAgc2VjdG9yID0gZ2xfZmlsZS5wb3Muc2VjdG9yOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgIHNlY3RvciA9IGdsX3ZvbHVtZS5hY3RzZWN0b3I7DQotICAgIH0NCi0gIH0NCi0NCi0gIGlmICggc2VjdG9yICE9ICh1bnNpZ25lZCBsb25nKS0xICkNCi0gIHsNCi0gICAgaWYgKCBtZHJ2LT5nZXRzdGF0dXMgIT0gTlVMTCApDQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBpbnQgIHN0YXR1czsNCi0NCi0gICAgICBzdGF0dXMgPSBtZHJ2LT5nZXRzdGF0dXMoIG1kcnYgKTsNCi0NCi0gICAgICBpZiAoIHN0YXR1cyAmICggRl9TVF9NSVNTSU5HIHwgRl9TVF9DSEFOR0VEICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIGdsX3ZvbHVtZS5zdGF0ZSA9IEZfU1RBVEVfTkVFRE1PVU5UOyAvKmNhcmQgaGFzIGJlZW4gcmVtb3ZlZDsqLw0KLSAgICAgICAgcmV0dXJuIEZfRVJSX0NBUkRSRU1PVkVEOw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIHN0YXR1cyAmICggRl9TVF9XUlBST1RFQ1QgKSApDQotICAgICAgew0KLSAgICAgICAgZ2xfdm9sdW1lLnN0YXRlID0gRl9TVEFURV9ORUVETU9VTlQ7ICAvKmNhcmQgaGFzIGJlZW4gcmVtb3ZlZDsqLw0KLSAgICAgICAgcmV0dXJuIEZfRVJSX1dSSVRFUFJPVEVDVDsNCi0gICAgICB9DQotICAgIH0NCi0NCi0gICAgZ2xfdm9sdW1lLm1vZGlmaWVkID0gMDsNCi0gICAgZ2xfZmlsZS5tb2RpZmllZCA9IDA7DQotICAgIGdsX3ZvbHVtZS5hY3RzZWN0b3IgPSBzZWN0b3I7DQotICAgIGZvciAoIHJldHJ5ID0gMyA7IHJldHJ5IDsgcmV0cnktLSApDQotICAgIHsNCi0gICAgICBpbnQgbWRydl9yZXQ7DQotICAgICAgbWRydl9yZXQgPSBtZHJ2LT53cml0ZXNlY3RvciggbWRydiwgKHVuc2lnbmVkIGNoYXIgKilnbF9zZWN0b3IsIHNlY3RvciApOw0KLSAgICAgIGlmICggIW1kcnZfcmV0ICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gRl9OT19FUlJPUjsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCBtZHJ2X3JldCA9PSAtMSApDQotICAgICAgew0KLSAgICAgICAgZ2xfdm9sdW1lLnN0YXRlID0gRl9TVEFURV9ORUVETU9VTlQ7IC8qY2FyZCBoYXMgYmVlbiByZW1vdmVkOyovDQotICAgICAgICByZXR1cm4gRl9FUlJfQ0FSRFJFTU9WRUQ7DQotICAgICAgfQ0KLSAgICB9DQotICB9DQotDQotDQotICByZXR1cm4gRl9FUlJfT05EUklWRTsNCi19IC8qIF9mX3dyaXRlZ2xzZWN0b3IgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfcmVhZHNlY3Rvcg0KLSAqDQotICogcmVhZCBzZWN0b3IgZGF0YSBmcm9tIGEgdm9sdW1lLCBpdCBjYWxscyBsb3cgbGV2ZWwgZHJpdmVyIGZ1bmN0aW9uLCBpdA0KLSAqIHJlYWRzIGEgY29tcGxldGUgc2VjdG9yDQotICoNCi0gKiBJTlBVVFMNCi0gKiBzZWN0b3IgLSB3aGljaCBwaHlzaWNhbCBzZWN0b3IgaXMgcmVhZA0KLSAqDQotICogUkVUVVJOUw0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgX2ZfcmVhZGdsc2VjdG9yICggdW5zaWduZWQgbG9uZyBzZWN0b3IgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldHJ5Ow0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgaWYgKCBzZWN0b3IgPT0gZ2xfdm9sdW1lLmFjdHNlY3RvciApDQotICB7DQotICAgIHJldHVybiBGX05PX0VSUk9SOw0KLSAgfQ0KLQ0KLSAgaWYgKCBnbF92b2x1bWUubW9kaWZpZWQgfHwgZ2xfZmlsZS5tb2RpZmllZCApDQotICB7DQotICAgIHJldCA9IF9mX3dyaXRlZ2xzZWN0b3IoICh1bnNpZ25lZCBsb25nKS0xICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0gIH0NCi0NCi0NCi0gIGZvciAoIHJldHJ5ID0gMyA7IHJldHJ5IDsgcmV0cnktLSApDQotICB7DQotICAgIGludCBtZHJ2X3JldDsNCi0gICAgbWRydl9yZXQgPSBtZHJ2LT5yZWFkc2VjdG9yKCBtZHJ2LCAodW5zaWduZWQgY2hhciAqKWdsX3NlY3Rvciwgc2VjdG9yICk7DQotICAgIGlmICggIW1kcnZfcmV0ICkNCi0gICAgew0KLSAgICAgIGdsX3ZvbHVtZS5hY3RzZWN0b3IgPSBzZWN0b3I7DQotICAgICAgcmV0dXJuIEZfTk9fRVJST1I7DQotICAgIH0NCi0NCi0gICAgaWYgKCBtZHJ2X3JldCA9PSAtMSApDQotICAgIHsNCi0gICAgICBnbF92b2x1bWUuc3RhdGUgPSBGX1NUQVRFX05FRURNT1VOVDsgLypjYXJkIGhhcyBiZWVuIHJlbW92ZWQ7Ki8NCi0gICAgICByZXR1cm4gRl9FUlJfQ0FSRFJFTU9WRUQ7DQotICAgIH0NCi0gIH0NCi0NCi0gIGdsX3ZvbHVtZS5hY3RzZWN0b3IgPSAodW5zaWduZWQgbG9uZyktMTsNCi0gIHJldHVybiBGX0VSUl9PTkRSSVZFOw0KLX0gLyogX2ZfcmVhZGdsc2VjdG9yICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9kcnYuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZHJ2LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMGZmNzIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9kcnYuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfX0RSVl9IDQotI2RlZmluZSBfX0RSVl9IDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLWV4dGVybiBGX0RSSVZFUiAqIG1kcnY7ICAvKiBkcml2ZXIgc3RydWN0dXJlICovDQotDQotdW5zaWduZWQgY2hhciBfZl9jaGVja3N0YXR1cyAoIHZvaWQgKTsNCi11bnNpZ25lZCBjaGFyIF9mX3JlYWRnbHNlY3RvciAoIHVuc2lnbmVkIGxvbmcgKTsNCi11bnNpZ25lZCBjaGFyIF9mX3dyaXRlZ2xzZWN0b3IgKCB1bnNpZ25lZCBsb25nICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX19EUlZfSCAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZl9sb2NrLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2ZfbG9jay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTZjYTYzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZl9sb2NrLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2NDQgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jZGVmaW5lIEZTX01VVEVYX0RFRklORUQNCi0NCi0jaW5jbHVkZSAiLi4vLi4vYXBpL2ZhdF9zbC5oIg0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaWYgRl9GU19USFJFQURfQVdBUkUgPT0gMQ0KLQ0KLXhTZW1hcGhvcmVIYW5kbGUgZnNfbG9ja19zZW1hcGhvcmU7DQotDQotDQotLyoNCi0qKiBmcl9maW5kZmlyc3QNCi0qKg0KLSoqIGZpbmQgZmlyc3QgdGltZSBhIGZpbGUgdXNpbmcgd2lsZGNhcmRzDQotKioNCi0qKiBJTlBVVCA6IGZpbGVuYW1lIC0gbmFtZSBvZiB0aGUgZmlsZQ0KLSoqICAgICAgICAgKmZpbmQgLSBwb2ludGVyIHRvIGEgcHJlLWRlZmluZSBGX0ZJTkQgc3RydWN0dXJlDQotKiogUkVUVVJOOiBGX05PRVJSIC0gb24gc3VjY2Vzcw0KLSoqICAgICAgICAgRl9FUlJfTk9URk9VTkQgLSBpZiBub3QgZm91bmQNCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfZmluZGZpcnN0ICggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBGX0ZJTkQgKiBmaW5kICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByYzsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIHJjID0gZm5fZmluZGZpcnN0KCBmaWxlbmFtZSwgZmluZCApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSBGX0VSUl9PUzsNCi0gIH0NCi0NCi0gIHJldHVybiByYzsNCi19DQotDQotDQotLyoNCi0qKiBmcl9maW5kbmV4dA0KLSoqDQotKiogZmluZCBuZXh0IHRpbWUgYSBmaWxlIHVzaW5nIHdpbGRjYXJkcw0KLSoqDQotKiogSU5QVVQgOiAqZmluZCAtIHBvaW50ZXIgdG8gYSBwcmUtZGVmaW5lIEZfRklORCBzdHJ1Y3R1cmUNCi0qKiBSRVRVUk46IEZfTk9FUlIgLSBvbiBzdWNjZXNzDQotKiogICAgICAgICBGX0VSUl9OT1RGT1VORCAtIGlmIG5vdCBmb3VuZA0KLSovDQotdW5zaWduZWQgY2hhciBmcl9maW5kbmV4dCAoIEZfRklORCAqIGZpbmQgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9maW5kbmV4dCggZmluZCApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSBGX0VSUl9PUzsNCi0gIH0NCi0NCi0gIHJldHVybiByYzsNCi19DQotDQotDQotLyoNCi0qKiBmcl9maWxlbGVuZ3RoDQotKioNCi0qKiBHZXQgdGhlIGxlbmd0aCBvZiBhIGZpbGUNCi0qKg0KLSoqIElOUFVUIDogZmlsZW5hbWUgLSBuYW1lIG9mIHRoZSBmaWxlDQotKiogUkVUVVJOOiBzaXplIG9mIHRoZSBmaWxlIG9yIEZfRVJSX0lOVkFMSUQgaWYgbm90IGV4aXN0cyBvciB2b2x1bWUgbm90IHdvcmtpbmcNCi0qLw0KLWxvbmcgZnJfZmlsZWxlbmd0aCAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApDQotew0KLSAgdW5zaWduZWQgbG9uZyAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX2ZpbGVsZW5ndGgoIGZpbGVuYW1lICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IDA7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLQ0KLS8qDQotKiogZnJfb3Blbg0KLSoqDQotKiogb3BlbiBhIGZpbGUNCi0qKg0KLSoqIElOUFVUIDogZmlsZW5hbWUgLSBmaWxlIHRvIGJlIG9wZW5lZA0KLSoqICAgICAgICAgbW9kZSAtIG9wZW4gbWV0aG9kIChyLHcsYSxyKyx3KyxhKykNCi0qKiBSRVRVUk46IHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3Igb3IgMCBvbiBlcnJvcg0KLSovDQotRl9GSUxFICogZnJfb3BlbiAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgY29uc3QgY2hhciAqIG1vZGUgKQ0KLXsNCi0gIEZfRklMRSAqIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9vcGVuKCBmaWxlbmFtZSwgbW9kZSApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSBOVUxMOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2Nsb3NlDQotKioNCi0qKiBDbG9zZSBhIHByZXZpb3VzbHkgb3BlbmVkIGZpbGUuDQotKioNCi0qKiBJTlBVVCA6ICpmaWxlaGFuZGxlIC0gcG9pbnRlciB0byB0aGUgZmlsZSBkZXNjcmlwdG9yDQotKiogUkVUVVJOOiBGX05PRVJSIG9uIHN1Y2Nlc3MsIG90aGVyIGlmIGVycm9yDQotKi8NCi11bnNpZ25lZCBjaGFyIGZyX2Nsb3NlICggRl9GSUxFICogZmlsZWhhbmRsZSApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX2Nsb3NlKCBmaWxlaGFuZGxlICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX3JlYWQNCi0qKg0KLSoqIFJlYWQgZnJvbSBhIGZpbGUuDQotKioNCi0qKiBJTlBVVCA6IGJ1ZiAtIGJ1ZmZlciB0byByZWFkIGRhdGENCi0qKiAgICAgICAgIHNpemUgLSBudW1iZXIgb2YgdW5pcXVlDQotKiogICAgICAgICBzaXplX3N0IC0gc2l6ZSBvZiB1bmlxdWUNCi0qKiAgICAgICAgICpmaWxlaGFuZGxlIC0gcG9pbnRlciB0byBmaWxlIGRlc2NyaXB0b3INCi0qKiBPVVRQVVQ6IG51bWJlciBvZiByZWFkIGJ5dGVzDQotKi8NCi1sb25nIGZyX3JlYWQgKCB2b2lkICogYmJ1ZiwgbG9uZyBzaXplLCBsb25nIHNpemVfc3QsIEZfRklMRSAqIGZpbGVoYW5kbGUgKQ0KLXsNCi0gIGxvbmcgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9yZWFkKCBiYnVmLCBzaXplLCBzaXplX3N0LCBmaWxlaGFuZGxlICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IDA7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLQ0KLS8qDQotKiogZnJfd3JpdGUNCi0qKg0KLSoqIElOUFVUIDogYmJ1ZiAtIGJ1ZmZlciB0byB3cml0ZSBmcm9tDQotKiogICAgICAgICBzaXplIC0gbnVtYmVyIG9mIHVuaXF1ZQ0KLSoqICAgICAgICAgc2l6ZV9zdCAtIHNpemUgb2YgdW5pcXVlDQotKiogICAgICAgICAqZmlsZWhhbmRsZSAtIHBvaW50ZXIgdG8gdGhlIGZpbGUgZGVzY3JpcHRvcg0KLSoqIFJFVFVSTjogbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMNCi0qLw0KLWxvbmcgZnJfd3JpdGUgKCBjb25zdCB2b2lkICogYmJ1ZiwgbG9uZyBzaXplLCBsb25nIHNpemVfc3QsIEZfRklMRSAqIGZpbGVoYW5kbGUgKQ0KLXsNCi0gIGxvbmcgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl93cml0ZSggYmJ1Ziwgc2l6ZSwgc2l6ZV9zdCwgZmlsZWhhbmRsZSApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSAwOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0vKg0KLSoqIGZyX3NlZWsNCi0qKg0KLSoqIFNlZWsgaW4gYSBmaWxlLg0KLSoqDQotKiogSU5QVVQgOiAqZmlsZWhhbmRsZSAtIHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3INCi0qKiAgICAgICAgIG9mZnNldCAtIG9mZnNldA0KLSoqICAgICAgICAgd2hlbmNlIC0gRl9TRUVLX1NFVDogcG9zaXRpb24gPSBvZmZzZXQNCi0qKiAgICAgICAgICAgICAgICAgIEZfU0VFS19DVVI6IHBvc2l0aW9uID0gcG9zaXRpb24gKyBvZmZzZXQNCi0qKiAgICAgICAgICAgICAgICAgIEZfU0VFS19FTkQ6IHBvc2l0aW9uID0gZW5kIG9mIGZpbGUgKG9mZnNldD0wKQ0KLSoqIFJFVFVSTjogRl9OT0VSUiBvbiBzdWNjZXMsIG90aGVyIGlmIGVycm9yLg0KLSovDQotdW5zaWduZWQgY2hhciBmcl9zZWVrICggRl9GSUxFICogZmlsZWhhbmRsZSwgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGNoYXIgd2hlbmNlICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByYzsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIHJjID0gZm5fc2VlayggZmlsZWhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UgKTsNCi0gICAgeFNlbWFwaG9yZUdpdmUoIGZzX2xvY2tfc2VtYXBob3JlICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHJjID0gRl9FUlJfT1M7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLS8qDQotKiogZnJfdGVsbA0KLSoqDQotKiogZ2V0IGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGZpbGUNCi0qKg0KLSoqIElOUFVUIDogKmZpbGVoYW5kbGUgLSBwb2ludGVyIHRvIGEgZmlsZSBkZXNjcmlwdG9yDQotKiogUkVUVVJOOiAtMSBvbiBlcnJvciBvciBjdXJyZW50IHBvc2l0aW9uLg0KLSovDQotbG9uZyBmcl90ZWxsICggRl9GSUxFICogZmlsZWhhbmRsZSApDQotew0KLSAgbG9uZyAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX3RlbGwoIGZpbGVoYW5kbGUgKTsNCi0gICAgeFNlbWFwaG9yZUdpdmUoIGZzX2xvY2tfc2VtYXBob3JlICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHJjID0gLTE7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLS8qDQotKiogZnJfZ2V0Yw0KLSoqDQotKiogcmVhZCBvbmUgYnl0ZSBmcm9tIGEgZmlsZQ0KLSoqDQotKiogSU5QVVQgOiAqZmlsZWhhbmRsZSAtIHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3INCi0qKiBSRVRVUk46IC0xIGlmIGVycm9yLCBvdGhlcndpc2UgdGhlIHJlYWQgY2hhcmFjdGVyLg0KLSovDQotaW50IGZyX2dldGMgKCBGX0ZJTEUgKiBmaWxlaGFuZGxlICkNCi17DQotICBpbnQgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9nZXRjKCBmaWxlaGFuZGxlICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IC0xOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0vKg0KLSoqIGZyX3B1dGMNCi0qKg0KLSoqIHdyaXRlIG9uZSBieXRlIHRvIGEgZmlsZQ0KLSoqDQotKiogSU5QVVQgOiBjaCAtIGNoYXJhY3RlciB0byB3cml0ZQ0KLSoqICAgICAgICAgKmZpbGVoYW5kbGUgLSBwb2ludGVyIHRvIGEgZmlsZSBoYW5kbGVyDQotKiogUkVUVVJOOiBjaCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcg0KLSovDQotaW50IGZyX3B1dGMgKCBpbnQgY2gsIEZfRklMRSAqIGZpbGVoYW5kbGUgKQ0KLXsNCi0gIGludCAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX3B1dGMoIGNoLCBmaWxlaGFuZGxlICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IC0xOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0vKg0KLSoqIGZyX3Jld2luZA0KLSoqDQotKiogc2V0IGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZw0KLSoqDQotKiogSU5QVVQgOiAqZmlsZWhhbmRsZSAtIHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3INCi0qKiBSRVRVUk46IEZfTk9FUlIgb24gc3VjY2VzLCBvdGhlciBpZiBlcnJvci4NCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfcmV3aW5kICggRl9GSUxFICogZmlsZWhhbmRsZSApDQotew0KLSAgdW5zaWduZWQgY2hhciByYzsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIHJjID0gZm5fcmV3aW5kKCBmaWxlaGFuZGxlICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0vKg0KLSoqIGZyX2VvZg0KLSoqDQotKiogY2hlY2sgaWYgY3VycmVudCBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLg0KLSoqDQotKiogSU5QVVQgOiAqZmlsZWhhbmRsZSAtIHBvaW50ZXIgdG8gYSBmaWxlIGRlc2NyaXB0b3INCi0qKiBSRVRVUk46IEZfRVJSX0VPRiAtIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUNCi0qKiAgICAgICAgIEZfTk9FUlIgLSBubyBlcnJvciwgZW5kIG9mIHRoZSBmaWxlIG5vdCByZWFjaGVkDQotKiogICAgICAgICBvdGhlciAtIG9uIGVycm9yDQotKi8NCi11bnNpZ25lZCBjaGFyIGZyX2VvZiAoIEZfRklMRSAqIGZpbGVoYW5kbGUgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9lb2YoIGZpbGVoYW5kbGUgKTsNCi0gICAgeFNlbWFwaG9yZUdpdmUoIGZzX2xvY2tfc2VtYXBob3JlICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHJjID0gRl9FUlJfT1M7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLS8qDQotKiogRm9ybWF0IHRoZSBkZXZpY2UNCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfaGFyZGZvcm1hdCAoIHVuc2lnbmVkIGNoYXIgZmF0dHlwZSApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX2hhcmRmb3JtYXQoIGZhdHR5cGUgKTsNCi0gICAgeFNlbWFwaG9yZUdpdmUoIGZzX2xvY2tfc2VtYXBob3JlICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHJjID0gRl9FUlJfT1M7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLS8qDQotKiogZnJfZ2V0X3NlcmlhbA0KLSoqDQotKiogR2V0IHNlcmlhbCBudW1iZXINCi0qKg0KLSoqIE9VVFBVVDogc2VyaWFsIC0gd2hlcmUgdG8gd3JpdGUgdGhlIHNlcmlhbCBudW1iZXINCi0qKiBSRVRVUk46IGVycm9yIGNvZGUNCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfZ2V0c2VyaWFsICggdW5zaWduZWQgbG9uZyAqIHNlcmlhbCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX2dldHNlcmlhbCggc2VyaWFsICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2RlbGV0ZQ0KLSoqDQotKiogRGVsZXRlIGEgZmlsZS4gUmVtb3ZlcyB0aGUgY2hhaW4gdGhhdCBiZWxvbmdzIHRvIHRoZSBmaWxlIGFuZCBpbnNlcnRzIGEgbmV3IGRlc2NyaXB0b3INCi0qKiB0byB0aGUgZGlyZWN0b3J5IHdpdGggZmlyc3RfY2x1c3RlciBzZXQgdG8gMC4NCi0qKg0KLSoqIElOUFVUIDogZmlsZW5hbWUgLSBuYW1lIG9mIHRoZSBmaWxlIHRvIGRlbGV0ZQ0KLSoqIFJFVFVSTjogRl9OT0VSUiBvbiBzdWNjZXNzLCBvdGhlciBpZiBlcnJvci4NCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfZGVsZXRlICggY29uc3QgY2hhciAqIGZpbGVuYW1lICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByYzsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIHJjID0gZm5fZGVsZXRlKCBmaWxlbmFtZSApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSBGX0VSUl9PUzsNCi0gIH0NCi0NCi0gIHJldHVybiByYzsNCi19DQotDQotLyoNCi0qKiBmcl90cnVuY2F0ZQ0KLSoqDQotKiogT3BlbiBhIGZpbGUgYW5kIHNldCBlbmQgb2YgZmlsZQ0KLSoqDQotKiogSU5QVVQ6CWZpbGVuYW1lIC0gbmFtZSBvZiB0aGUgZmlsZQ0KLSoqCQlmaWxlc2l6ZSAtIHJlcXVpcmVkIG5ldyBzaXplDQotKiogUkVUVVJOOglOVUxMIG9uIGVycm9yLCBvdGhlcndpc2UgZmlsZSBwb2ludGVyDQotKi8NCi1GX0ZJTEUgKiBmcl90cnVuY2F0ZSAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgbG9uZyBmaWxlc2l6ZSApDQotew0KLSAgRl9GSUxFICogZjsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIGYgPSBmbl90cnVuY2F0ZSggZmlsZW5hbWUsIGZpbGVzaXplICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBmID0gTlVMTDsNCi0gIH0NCi0NCi0gIHJldHVybiBmOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2dldGZyZWVzcGFjZQ0KLSoqDQotKiogR2V0IGZyZWUgc3BhY2Ugb24gdGhlIHZvbHVtZQ0KLSoqDQotKiogT1VUUFVUOiAqc3AgLSBwcmUtZGVmaW5lZCBGX1NQQUNFIHN0cnVjdHVyZSwgd2hlcmUgaW5mb3JtYXRpb24gd2lsbCBiZSBzdG9yZWQNCi0qKiBSRVRVUk46IEZfTk9FUlIgLSBvbiBzdWNjZXNzDQotKiogICAgICAgICBGX0VSUl9OT1RGT1JNQVRURUQgLSBpZiB2b2x1bWUgaXMgbm90IGZvcm1hdHRlZA0KLSovDQotdW5zaWduZWQgY2hhciBmcl9nZXRmcmVlc3BhY2UgKCBGX1NQQUNFICogc3AgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9nZXRmcmVlc3BhY2UoIHNwICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2NoZGlyDQotKioNCi0qKiBDaGFuZ2UgdG8gYSBkaXJlY3RvcnkNCi0qKg0KLSoqIElOUFVUOiAgcGF0aCAtIHBhdGggdG8gdGhlIGRpcmNldG9yeQ0KLSoqIFJFVFVSTjogMCAtIG9uIHN1Y2Nlc3MsIG90aGVyIGlmIGVycm9yDQotKi8NCi11bnNpZ25lZCBjaGFyIGZyX2NoZGlyICggY29uc3QgY2hhciAqIHBhdGggKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjOw0KLQ0KLSAgaWYoIHhTZW1hcGhvcmVUYWtlKCBmc19sb2NrX3NlbWFwaG9yZSwgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICkgPT0gcGRQQVNTICkNCi0gIHsNCi0gICAgcmMgPSBmbl9jaGRpciggcGF0aCApOw0KLSAgICB4U2VtYXBob3JlR2l2ZSggZnNfbG9ja19zZW1hcGhvcmUgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmMgPSBGX0VSUl9PUzsNCi0gIH0NCi0NCi0gIHJldHVybiByYzsNCi19DQotDQotDQotLyoNCi0qKiBmcl9ta2Rpcg0KLSoqDQotKiogQ3JlYXRlIGEgZGlyZWN0b3J5DQotKioNCi0qKiBJTlBVVDogIHBhdGggLSBuZXcgZGlyZWN0b3J5IHBhdGgNCi0qKiBSRVRVUk46IDAgLSBvbiBzdWNjZXNzLCBvdGhlciBpZiBlcnJvcg0KLSovDQotdW5zaWduZWQgY2hhciBmcl9ta2RpciAoIGNvbnN0IGNoYXIgKiBwYXRoICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByYzsNCi0NCi0gIGlmKCB4U2VtYXBob3JlVGFrZSggZnNfbG9ja19zZW1hcGhvcmUsIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyApID09IHBkUEFTUyApDQotICB7DQotICAgIHJjID0gZm5fbWtkaXIoIHBhdGggKTsNCi0gICAgeFNlbWFwaG9yZUdpdmUoIGZzX2xvY2tfc2VtYXBob3JlICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHJjID0gRl9FUlJfT1M7DQotICB9DQotDQotICByZXR1cm4gcmM7DQotfQ0KLQ0KLQ0KLS8qDQotKiogZnJfcm1kaXINCi0qKg0KLSoqIFJlbW92ZXMgYSBkaXJlY3RvcnkNCi0qKg0KLSoqIElOUFVUOiAgcGF0aCAtIHBhdGggdG8gcmVtb3ZlDQotKiogUkVUVVJOOiAwIC0gb24gc3VjY2Vzcywgb3RoZXIgaWYgZXJyb3INCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnJfcm1kaXIgKCBjb25zdCBjaGFyICogcGF0aCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX3JtZGlyKCBwYXRoICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2dldGN3ZA0KLSoqDQotKiogR2V0IGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkNCi0qKg0KLSoqIElOUFVUOiAgbWF4bGVuIC0gbWF4aW11bSBsZW5ndGggYWxsb3dlZA0KLSoqIE9VVFBVVDogcGF0aCAtIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkNCi0qKiBSRVRVUk46IDAgLSBvbiBzdWNjZXNzLCBvdGhlciBpZiBlcnJvcg0KLSovDQotdW5zaWduZWQgY2hhciBmcl9nZXRjd2QgKCBjaGFyICogcGF0aCwgdW5zaWduZWQgY2hhciBtYXhsZW4sIGNoYXIgcm9vdCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiggeFNlbWFwaG9yZVRha2UoIGZzX2xvY2tfc2VtYXBob3JlLCBGX01BWF9MT0NLX1dBSVRfVElDS1MgKSA9PSBwZFBBU1MgKQ0KLSAgew0KLSAgICByYyA9IGZuX2dldGN3ZCggcGF0aCwgbWF4bGVuLCByb290ICk7DQotICAgIHhTZW1hcGhvcmVHaXZlKCBmc19sb2NrX3NlbWFwaG9yZSApOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICByYyA9IEZfRVJSX09TOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZyX2luaXQNCi0qKg0KLSoqIEluaXRpYWxpemUgRkFUX1NMIE9TIG1vZHVsZQ0KLSoqDQotKiogUkVUVVJOOiBGX05PX0VSUk9SIG9yIEZfRVJSX09TDQotKi8NCi11bnNpZ25lZCBjaGFyIGZyX2luaXQgKCB2b2lkICkNCi17DQotICByZXR1cm4gRl9OT19FUlJPUjsNCi19DQotDQotI2VuZGlmIC8qIEZfRlNfVEhSRUFEX0FXQVJFICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9mX2xvY2suaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZl9sb2NrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2Mjc5NjAuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9mX2xvY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfRl9SVE9TX0gNCi0jZGVmaW5lIF9GX1JUT1NfSA0KLQ0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi11bnNpZ25lZCBjaGFyIGZzcl9pbml0ICggdm9pZCApOw0KLXVuc2lnbmVkIGNoYXIgZnNyX2RlbGV0ZSAoIHZvaWQgKTsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfRl9SVE9TX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2ZhdC5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9mYXQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU3NTU4ZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2ZhdC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTk3ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotI2luY2x1ZGUgIi4uLy4uL2FwaS9mYXRfc2wuaCINCi0NCi0jaW5jbHVkZSAiZmF0LmgiDQotI2luY2x1ZGUgInV0aWwuaCINCi0jaW5jbHVkZSAidm9sdW1lLmgiDQotI2luY2x1ZGUgImRydi5oIg0KLQ0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2Zfd3JpdGVmYXRzZWN0b3INCi0gKg0KLSAqIHdyaXRpbmcgZmF0IHNlY3RvciBpbnRvIHZvbHVtZSwgdGhpcyBmdW5jdGlvbiBjaGVjayBpZiBmYXQgd2FzIG1vZGlmaWVkDQotICogYW5kIHdyaXRlcyBkYXRhDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX3dyaXRlZmF0c2VjdG9yICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgYTsNCi0NCi0gIGlmICggZ2xfdm9sdW1lLm1vZGlmaWVkICkNCi0gIHsNCi0gICAgdW5zaWduZWQgbG9uZyAgZmF0c2VjdG9yID0gZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciArIGdsX3ZvbHVtZS5mYXRzZWN0b3I7DQotDQotICAgIGlmICggZ2xfdm9sdW1lLmZhdHNlY3RvciA+PSBnbF92b2x1bWUuZmlyc3RmYXQubnVtICkNCi0gICAgew0KLSAgICAgIHJldHVybiBGX0VSUl9JTlZBTElEU0VDVE9SOw0KLSAgICB9DQotDQotICAgIGZvciAoIGEgPSAwIDsgYSA8IGdsX3ZvbHVtZS5ib290cmVjb3JkLm51bWJlcl9vZl9GQVRzIDsgYSsrICkNCi0gICAgew0KLSAgICAgIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0gICAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCBmYXRzZWN0b3IgKTsNCi0gICAgICBpZiAoIHJldCApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICB9DQotDQotICAgICAgZmF0c2VjdG9yICs9IGdsX3ZvbHVtZS5maXJzdGZhdC5udW07DQotICAgIH0NCi0NCi0gICAgZ2xfdm9sdW1lLm1vZGlmaWVkID0gMDsNCi0gIH0NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogX2Zfd3JpdGVmYXRzZWN0b3IgKi8NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfZ2V0ZmF0c2VjdG9yDQotICoNCi0gKiByZWFkIGEgZmF0IHNlY3RvciBmcm9tIG1lZGlhDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIHNlY3RvciAtIHdoaWNoIGZhdCBzZWN0b3IgaXMgbmVlZGVkLCB0aGlzIHNlY3RvciBudW1iZXIgaXMgemVybyBiYXNlZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl9nZXRmYXRzZWN0b3IgKCB1bnNpZ25lZCBsb25nIHNlY3RvciApDQotew0KLSAgdW5zaWduZWQgY2hhciAgYTsNCi0NCi0gIGlmICggZ2xfdm9sdW1lLmZhdHNlY3RvciAhPSBzZWN0b3IgKQ0KLSAgew0KLSAgICB1bnNpZ25lZCBsb25nICBmYXRzZWN0b3I7DQotDQotICAgIGdsX3ZvbHVtZS5mYXRzZWN0b3IgPSBzZWN0b3I7DQotDQotICAgIGlmICggZ2xfdm9sdW1lLmZhdHNlY3RvciA+PSBnbF92b2x1bWUuZmlyc3RmYXQubnVtICkNCi0gICAgew0KLSAgICAgIHJldHVybiBGX0VSUl9JTlZBTElEU0VDVE9SOw0KLSAgICB9DQotDQotICAgIGZhdHNlY3RvciA9IGdsX3ZvbHVtZS5maXJzdGZhdC5zZWN0b3IgKyBnbF92b2x1bWUuZmF0c2VjdG9yOw0KLQ0KLSAgICBmb3IgKCBhID0gMCA7IGEgPCBnbF92b2x1bWUuYm9vdHJlY29yZC5udW1iZXJfb2ZfRkFUcyA7IGErKyApDQotICAgIHsNCi0gICAgICBpZiAoICFfZl9yZWFkZ2xzZWN0b3IoIGZhdHNlY3RvciApICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gRl9OT19FUlJPUjsNCi0gICAgICB9DQotDQotICAgICAgZmF0c2VjdG9yICs9IGdsX3ZvbHVtZS5maXJzdGZhdC5udW07DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIEZfRVJSX1JFQUQ7DQotICB9DQotDQotICByZXR1cm4gRl9OT19FUlJPUjsNCi19IC8qIF9mX2dldGZhdHNlY3RvciAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9zZXRjbHVzdGVydmFsdWUNCi0gKg0KLSAqIHNldCBhIGNsdXN0ZXIgdmFsdWUgaW4gdGhlIEZBVA0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBjbHVzdGVyIC0gd2hpY2ggY2x1c3RlcidzIHZhbHVlIG5lZWQgdG8gYmUgbW9kaWZpZWQNCi0gKiBkYXRhIC0gbmV3IHZhbHVlIG9mIHRoZSBjbHVzdGVyDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX3NldGNsdXN0ZXJ2YWx1ZSAoIHVuc2lnbmVkIGxvbmcgY2x1c3RlciwgdW5zaWduZWQgbG9uZyBfdGRhdGEgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0NCi0gIHN3aXRjaCAoIGdsX3ZvbHVtZS5tZWRpYXR5cGUgKQ0KLSAgew0KLSAgICBjYXNlIEZfRkFUMTZfTUVESUE6DQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBsb25nICAgc2VjdG9yID0gY2x1c3RlcjsNCi0gICAgICB1bnNpZ25lZCBzaG9ydCAgc19kYXRhID0gKHVuc2lnbmVkIHNob3J0KSggX3RkYXRhICYgMHhmZmZmICk7IC8qa2VlcCAxNiBiaXQgb25seSovDQotDQotICAgICAgc2VjdG9yIC89ICggRl9TRUNUT1JfU0laRSAvIDIgKTsNCi0gICAgICBjbHVzdGVyIC09IHNlY3RvciAqICggRl9TRUNUT1JfU0laRSAvIDIgKTsNCi0NCi0gICAgICByZXQgPSBfZl9nZXRmYXRzZWN0b3IoIHNlY3RvciApOw0KLSAgICAgIGlmICggcmV0ICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIF9mX2dldHdvcmQoICZnbF9zZWN0b3JbY2x1c3RlciA8PCAxXSApICE9IHNfZGF0YSApDQotICAgICAgew0KLSAgICAgICAgX2Zfc2V0d29yZCggJmdsX3NlY3RvcltjbHVzdGVyIDw8IDFdLCBzX2RhdGEgKTsNCi0gICAgICAgIGdsX3ZvbHVtZS5tb2RpZmllZCA9IDE7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGJyZWFrOw0KLQ0KLSAgICBjYXNlIEZfRkFUMTJfTUVESUE6DQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBjaGFyICAgZjEybmV3WzJdOw0KLSAgICAgIHVuc2lnbmVkIGxvbmcgICBzZWN0b3IgPSBjbHVzdGVyOw0KLSAgICAgIHVuc2lnbmVkIHNob3J0ICBwb3M7DQotICAgICAgdW5zaWduZWQgc2hvcnQgIHNfZGF0YSA9ICh1bnNpZ25lZCBzaG9ydCkoIF90ZGF0YSAmIDB4MGZmZiApOyAvKmtlZXAgMTIgYml0IG9ubHkqLw0KLQ0KLSAgICAgIGlmICggY2x1c3RlciAmIDEgKQ0KLSAgICAgIHsNCi0gICAgICAgIHNfZGF0YSA8PD0gNDsNCi0gICAgICB9DQotDQotICAgICAgX2Zfc2V0d29yZCggZjEybmV3LCBzX2RhdGEgKTsgLypjcmVhdGUgbmV3IGRhdGEqLw0KLQ0KLSAgICAgIHNlY3RvciArPSBzZWN0b3IgLyAyOyAgICAgICAvKjEuNSBieXRlcyovDQotICAgICAgcG9zID0gKHVuc2lnbmVkIHNob3J0KSggc2VjdG9yICUgRl9TRUNUT1JfU0laRSApOw0KLSAgICAgIHNlY3RvciAvPSBGX1NFQ1RPUl9TSVpFOw0KLQ0KLSAgICAgIHJldCA9IF9mX2dldGZhdHNlY3Rvciggc2VjdG9yICk7DQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByZXQ7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggY2x1c3RlciAmIDEgKQ0KLSAgICAgIHsNCi0gICAgICAgIGYxMm5ld1swXSB8PSBnbF9zZWN0b3JbcG9zXSAmIDB4MGY7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggZ2xfc2VjdG9yW3Bvc10gIT0gZjEybmV3WzBdICkNCi0gICAgICB7DQotICAgICAgICBnbF9zZWN0b3JbcG9zXSA9IGYxMm5ld1swXTsNCi0gICAgICAgIGdsX3ZvbHVtZS5tb2RpZmllZCA9IDE7DQotICAgICAgfQ0KLQ0KLSAgICAgIHBvcysrOw0KLSAgICAgIGlmICggcG9zID49IDUxMiApDQotICAgICAgew0KLSAgICAgICAgcmV0ID0gX2ZfZ2V0ZmF0c2VjdG9yKCBzZWN0b3IgKyAxICk7DQotICAgICAgICBpZiAoIHJldCApDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybiByZXQ7DQotICAgICAgICB9DQotDQotICAgICAgICBwb3MgPSAwOw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoICEoIGNsdXN0ZXIgJiAxICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIGYxMm5ld1sxXSB8PSBnbF9zZWN0b3JbcG9zXSAmIDB4ZjA7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggZ2xfc2VjdG9yW3Bvc10gIT0gZjEybmV3WzFdICkNCi0gICAgICB7DQotICAgICAgICBnbF9zZWN0b3JbcG9zXSA9IGYxMm5ld1sxXTsNCi0gICAgICAgIGdsX3ZvbHVtZS5tb2RpZmllZCA9IDE7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGJyZWFrOw0KLQ0KLSAgICBjYXNlIEZfRkFUMzJfTUVESUE6DQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBsb25nICBzZWN0b3IgPSBjbHVzdGVyOw0KLSAgICAgIHVuc2lnbmVkIGxvbmcgIG9sZHY7DQotDQotICAgICAgc2VjdG9yIC89ICggRl9TRUNUT1JfU0laRSAvIDQgKTsNCi0gICAgICBjbHVzdGVyIC09IHNlY3RvciAqICggRl9TRUNUT1JfU0laRSAvIDQgKTsNCi0NCi0gICAgICByZXQgPSBfZl9nZXRmYXRzZWN0b3IoIHNlY3RvciApOw0KLSAgICAgIGlmICggcmV0ICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgIH0NCi0NCi0gICAgICBvbGR2ID0gX2ZfZ2V0bG9uZyggJmdsX3NlY3RvcltjbHVzdGVyIDw8IDJdICk7DQotDQotICAgICAgX3RkYXRhICY9IDB4MGZmZmZmZmY7DQotICAgICAgX3RkYXRhIHw9IG9sZHYgJiAweGYwMDAwMDAwOyAvKmtlZXAgNCB0b3AgYml0cyovDQotDQotICAgICAgaWYgKCBfdGRhdGEgIT0gb2xkdiApDQotICAgICAgew0KLSAgICAgICAgX2Zfc2V0bG9uZyggJmdsX3NlY3RvcltjbHVzdGVyIDw8IDJdLCBfdGRhdGEgKTsNCi0gICAgICAgIGdsX3ZvbHVtZS5tb2RpZmllZCA9IDE7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGJyZWFrOw0KLQ0KLSAgICBkZWZhdWx0Og0KLSAgICAgIHJldHVybiBGX0VSUl9JTlZBTElETUVESUE7DQotICB9IC8qIHN3aXRjaCAqLw0KLQ0KLSAgcmV0dXJuIEZfTk9fRVJST1I7DQotfSAvKiBfZl9zZXRjbHVzdGVydmFsdWUgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfZ2V0Y2x1c3RlcnZhbHVlDQotICoNCi0gKiBnZXQgYSBjbHVzdGVyIHZhbHVlIGZyb20gRkFUDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGNsdXN0ZXIgLSB3aGljaCBjbHVzdGVyIHZhbHVlIGlzIHJlcXVlc3RlZA0KLSAqIHB2YWx1ZSAtIHdoZXJlIHRvIHN0b3JlIGRhdGENCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgX2ZfZ2V0Y2x1c3RlcnZhbHVlICggdW5zaWduZWQgbG9uZyBjbHVzdGVyLCB1bnNpZ25lZCBsb25nICogcHZhbHVlICkNCi17DQotICB1bnNpZ25lZCBsb25nICB2YWw7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotDQotICBzd2l0Y2ggKCBnbF92b2x1bWUubWVkaWF0eXBlICkNCi0gIHsNCi0gICAgY2FzZSBGX0ZBVDE2X01FRElBOg0KLSAgICB7DQotICAgICAgdW5zaWduZWQgbG9uZyAgc2VjdG9yID0gY2x1c3RlcjsNCi0gICAgICBzZWN0b3IgLz0gKCBGX1NFQ1RPUl9TSVpFIC8gMiApOw0KLSAgICAgIGNsdXN0ZXIgLT0gc2VjdG9yICogKCBGX1NFQ1RPUl9TSVpFIC8gMiApOw0KLQ0KLSAgICAgIHJldCA9IF9mX2dldGZhdHNlY3Rvciggc2VjdG9yICk7DQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByZXQ7DQotICAgICAgfQ0KLQ0KLSAgICAgIHZhbCA9IF9mX2dldHdvcmQoICZnbF9zZWN0b3JbY2x1c3RlciA8PCAxXSApOw0KLSAgICAgIGlmICggdmFsID49ICggRl9DTFVTVEVSX1JFU0VSVkVEICYgMHhmZmZmICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHZhbCB8PSAweDBmZmZmMDAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZXh0ZW5kcyBpdCovDQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggcHZhbHVlICkNCi0gICAgICB7DQotICAgICAgICAqcHZhbHVlID0gdmFsOw0KLSAgICAgIH0NCi0gICAgfQ0KLSAgICBicmVhazsNCi0NCi0gICAgY2FzZSBGX0ZBVDEyX01FRElBOg0KLSAgICB7DQotICAgICAgdW5zaWduZWQgY2hhciAgIGRhdGFmMTJbMl07DQotICAgICAgdW5zaWduZWQgbG9uZyAgIHNlY3RvciA9IGNsdXN0ZXI7DQotICAgICAgdW5zaWduZWQgc2hvcnQgIHBvczsNCi0NCi0gICAgICBzZWN0b3IgKz0gc2VjdG9yIC8gMjsgICAgICAgLyoxLjUgYnl0ZXMqLw0KLSAgICAgIHBvcyA9ICh1bnNpZ25lZCBzaG9ydCkoIHNlY3RvciAlIEZfU0VDVE9SX1NJWkUgKTsNCi0gICAgICBzZWN0b3IgLz0gRl9TRUNUT1JfU0laRTsNCi0NCi0gICAgICByZXQgPSBfZl9nZXRmYXRzZWN0b3IoIHNlY3RvciApOw0KLSAgICAgIGlmICggcmV0ICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgIH0NCi0NCi0gICAgICBkYXRhZjEyWzBdID0gZ2xfc2VjdG9yW3BvcysrXTsNCi0NCi0gICAgICBpZiAoIHBvcyA+PSA1MTIgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldCA9IF9mX2dldGZhdHNlY3Rvciggc2VjdG9yICsgMSApOw0KLSAgICAgICAgaWYgKCByZXQgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgcG9zID0gMDsNCi0gICAgICB9DQotDQotICAgICAgZGF0YWYxMlsxXSA9IGdsX3NlY3Rvcltwb3NdOw0KLQ0KLSAgICAgIHZhbCA9IF9mX2dldHdvcmQoIGRhdGFmMTIgKTsNCi0NCi0gICAgICBpZiAoIGNsdXN0ZXIgJiAxICkNCi0gICAgICB7DQotICAgICAgICB2YWwgPSB2YWwgPj4gNDsNCi0gICAgICB9DQotICAgICAgZWxzZQ0KLSAgICAgIHsNCi0gICAgICAgIHZhbCA9IHZhbCAmIDB4ZmZmOw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIHZhbCA+PSAoIEZfQ0xVU1RFUl9SRVNFUlZFRCAmIDB4ZmZmICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHZhbCB8PSAweDBmZmZmMDAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypleHRlbmRzIGl0Ki8NCi0gICAgICB9DQotDQotICAgICAgaWYgKCBwdmFsdWUgKQ0KLSAgICAgIHsNCi0gICAgICAgICpwdmFsdWUgPSB2YWw7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGJyZWFrOw0KLQ0KLSAgICBjYXNlIEZfRkFUMzJfTUVESUE6DQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBsb25nICBzZWN0b3IgPSBjbHVzdGVyOw0KLSAgICAgIHNlY3RvciAvPSAoIEZfU0VDVE9SX1NJWkUgLyA0ICk7DQotICAgICAgY2x1c3RlciAtPSBzZWN0b3IgKiAoIEZfU0VDVE9SX1NJWkUgLyA0ICk7DQotDQotICAgICAgcmV0ID0gX2ZfZ2V0ZmF0c2VjdG9yKCBzZWN0b3IgKTsNCi0gICAgICBpZiAoIHJldCApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIHJldDsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCBwdmFsdWUgKQ0KLSAgICAgIHsNCi0gICAgICAgICpwdmFsdWUgPSBfZl9nZXRsb25nKCAmZ2xfc2VjdG9yW2NsdXN0ZXIgPDwgMl0gKSAmIDB4MGZmZmZmZmY7ICAgICAgIC8qMjhiaXQqLw0KLSAgICAgIH0NCi0gICAgfQ0KLSAgICBicmVhazsNCi0NCi0gICAgZGVmYXVsdDoNCi0gICAgICByZXR1cm4gRl9FUlJfSU5WQUxJRE1FRElBOw0KLSAgfSAvKiBzd2l0Y2ggKi8NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogX2ZfZ2V0Y2x1c3RlcnZhbHVlICovDQotDQotDQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2NsdXN0ZXJ0b3Bvcw0KLSAqDQotICogY29udmVydCBhIGNsdXN0ZXIgcG9zaXRpb24gaW50byBwaHlzaWNhbCBzZWN0b3IgcG9zaXRpb24NCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogY2x1c3RlciAtIG9yaWdpbmFsIGNsdXN0ZXIgcG9zaXRpb24NCi0gKiBwb3MgLSBwb3NpdGlvbiBzdHJ1Y3R1cmUgdG8gZmlsbHMgdGhlIHBvc2l0aW9uDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgX2ZfY2x1c3RlcnRvcG9zICggdW5zaWduZWQgbG9uZyBjbHVzdGVyLCBGX1BPUyAqIHBvcyApDQotew0KLSAgcG9zLT5jbHVzdGVyID0gY2x1c3RlcjsNCi0NCi0gIGlmICggIWNsdXN0ZXIgKQ0KLSAgew0KLSAgICBwb3MtPnNlY3RvciA9IGdsX3ZvbHVtZS5yb290LnNlY3RvcjsNCi0gICAgcG9zLT5zZWN0b3JlbmQgPSBwb3MtPnNlY3RvciArIGdsX3ZvbHVtZS5yb290Lm51bTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgdW5zaWduZWQgbG9uZyAgc2VjdG9yY291ID0gZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9jbHVzdGVyOw0KLSAgICBwb3MtPnNlY3RvciA9ICggcG9zLT5jbHVzdGVyIC0gMiApICogc2VjdG9yY291ICsgZ2xfdm9sdW1lLl90ZGF0YS5zZWN0b3I7DQotICAgIHBvcy0+c2VjdG9yZW5kID0gcG9zLT5zZWN0b3IgKyBzZWN0b3Jjb3U7DQotICB9DQotDQotICBpZiAoIGNsdXN0ZXIgPj0gRl9DTFVTVEVSX1JFU0VSVkVEICkNCi0gIHsNCi0gICAgcG9zLT5zZWN0b3JlbmQgPSAwOw0KLSAgfQ0KLQ0KLSAgcG9zLT5wb3MgPSAwOw0KLX0gLyogX2ZfY2x1c3RlcnRvcG9zICovDQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2dldGN1cnJzZWN0b3INCi0gKg0KLSAqIHJlYWQgY3VycmVudCBzZWN0b3IgYWNjb3JkaW5nIGluIGZpbGUgc3RydWN0dXJlDQotICoNCi0gKiBJTlBVVFMNCi0gKiBmIC0gaW50ZXJuYWwgZmlsZSBwb2ludGVyDQotICoNCi0gKiBSRVRVUk5TDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl9nZXRjdXJyc2VjdG9yICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLSAgdW5zaWduZWQgbG9uZyAgY2x1c3RlcjsNCi0NCi0gIGlmICggZ2xfZmlsZS5wb3Muc2VjdG9yID09IGdsX2ZpbGUucG9zLnNlY3RvcmVuZCApDQotICB7DQotICAgIGdsX3ZvbHVtZS5mYXRzZWN0b3IgPSAodW5zaWduZWQgbG9uZyktMTsNCi0gICAgcmV0ID0gX2ZfZ2V0Y2x1c3RlcnZhbHVlKCBnbF9maWxlLnBvcy5jbHVzdGVyLCAmY2x1c3RlciApOw0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gcmV0Ow0KLSAgICB9DQotDQotICAgIGlmICggY2x1c3RlciA+PSBGX0NMVVNURVJfUkVTRVJWRUQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIEZfRVJSX0VPRjsNCi0gICAgfQ0KLQ0KLSAgICBfZl9jbHVzdGVydG9wb3MoIGNsdXN0ZXIsICZnbF9maWxlLnBvcyApOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIF9mX3JlYWRnbHNlY3RvciggZ2xfZmlsZS5wb3Muc2VjdG9yICk7DQotfSAvKiBfZl9nZXRjdXJyc2VjdG9yICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2FsbG9jY2x1c3Rlcg0KLSAqDQotICogYWxsb2NhdGUgY2x1c3RlciBmcm9tIEZBVA0KLSAqDQotICogSU5QVVRTDQotICogcGNsdXN0ZXIgLSB3aGVyZSB0byBzdG9yZSB0aGUgYWxsb2NhdGVkIGNsdXN0ZXIgbnVtYmVyDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX2FsbG9jY2x1c3RlciAoIHVuc2lnbmVkIGxvbmcgKiBwY2x1c3RlciApDQotew0KLSAgdW5zaWduZWQgbG9uZyAgbWF4Y2x1c3RlciA9IGdsX3ZvbHVtZS5tYXhjbHVzdGVyOw0KLSAgdW5zaWduZWQgbG9uZyAgY291Ow0KLSAgdW5zaWduZWQgbG9uZyAgY2x1c3RlciA9IGdsX3ZvbHVtZS5sYXN0YWxsb2NjbHVzdGVyOw0KLSAgdW5zaWduZWQgbG9uZyAgdmFsdWU7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotDQotICBmb3IgKCBjb3UgPSAwIDsgY291IDwgbWF4Y2x1c3RlciA7IGNvdSsrICkNCi0gIHsNCi0gICAgaWYgKCBjbHVzdGVyID49IG1heGNsdXN0ZXIgKQ0KLSAgICB7DQotICAgICAgY2x1c3RlciA9IDA7DQotICAgIH0NCi0NCi0gICAgcmV0ID0gX2ZfZ2V0Y2x1c3RlcnZhbHVlKCBjbHVzdGVyLCAmdmFsdWUgKTsNCi0gICAgaWYgKCByZXQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIHJldDsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoICF2YWx1ZSApDQotICAgIHsNCi0gICAgICBnbF92b2x1bWUubGFzdGFsbG9jY2x1c3RlciA9IGNsdXN0ZXIgKyAxOyAgIC8qc2V0IG5leHQgb25lKi8NCi0gICAgICAqcGNsdXN0ZXIgPSBjbHVzdGVyOw0KLQ0KLSAgICAgIHJldHVybiBGX05PX0VSUk9SOw0KLSAgICB9DQotDQotICAgIGNsdXN0ZXIrKzsNCi0gIH0NCi0NCi0gIHJldHVybiBGX0VSUl9OT01PUkVFTlRSWTsNCi19IC8qIF9mX2FsbG9jY2x1c3RlciAqLw0KLQ0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9yZW1vdmVjaGFpbg0KLSAqDQotICogcmVtb3ZlIGNsdXN0ZXIgY2hhaW4gZnJvbSBmYXQNCi0gKg0KLSAqIElOUFVUUw0KLSAqIGNsdXN0ZXIgLSBmaXJzdCBjbHVzdGVyIGluIHRoZSBjbHVzdGVyIGNoYWluDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX3JlbW92ZWNoYWluICggdW5zaWduZWQgbG9uZyBjbHVzdGVyICkNCi17DQotICBnbF92b2x1bWUuZmF0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpLTE7DQotDQotICBpZiAoIGNsdXN0ZXIgPCBnbF92b2x1bWUubGFzdGFsbG9jY2x1c3RlciApIC8qdGhpcyBjb3VsZCBiZSB0aGUgYmVnaW5pbmcgb2YgYWxsb2MqLw0KLSAgew0KLSAgICBnbF92b2x1bWUubGFzdGFsbG9jY2x1c3RlciA9IGNsdXN0ZXI7DQotICB9DQotDQotICB3aGlsZSAoIGNsdXN0ZXIgPCBGX0NMVVNURVJfUkVTRVJWRUQgJiYgY2x1c3RlciA+PSAyICkNCi0gIHsNCi0gICAgdW5zaWduZWQgbG9uZyAgbmV4dGNsdXN0ZXI7DQotDQotICAgIHVuc2lnbmVkIGNoYXIgIHJldCA9IF9mX2dldGNsdXN0ZXJ2YWx1ZSggY2x1c3RlciwgJm5leHRjbHVzdGVyICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0NCi0gICAgcmV0ID0gX2Zfc2V0Y2x1c3RlcnZhbHVlKCBjbHVzdGVyLCBGX0NMVVNURVJfRlJFRSApOw0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gcmV0Ow0KLSAgICB9DQotDQotICAgIGNsdXN0ZXIgPSBuZXh0Y2x1c3RlcjsNCi0gIH0NCi0NCi0gIHJldHVybiBfZl93cml0ZWZhdHNlY3RvcigpOw0KLX0gLyogX2ZfcmVtb3ZlY2hhaW4gKi8NCi0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2ZhdC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9mYXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZiNmU5NS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL2ZhdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9fRkFUX0gNCi0jZGVmaW5lIF9fRkFUX0gNCi0NCi0jaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotdW5zaWduZWQgY2hhciBfZl9nZXRmYXRzZWN0b3IgKCB1bnNpZ25lZCBsb25nICk7DQotdW5zaWduZWQgY2hhciBfZl9nZXRjbHVzdGVydmFsdWUgKCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nICogKTsNCi12b2lkIF9mX2NsdXN0ZXJ0b3BvcyAoIHVuc2lnbmVkIGxvbmcsIEZfUE9TICogKTsNCi11bnNpZ25lZCBjaGFyIF9mX2dldGN1cnJzZWN0b3IgKCB2b2lkICk7DQotDQotdW5zaWduZWQgY2hhciBfZl93cml0ZWZhdHNlY3RvciAoIHZvaWQgKTsNCi11bnNpZ25lZCBjaGFyIF9mX3NldGNsdXN0ZXJ2YWx1ZSAoIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcgKTsNCi11bnNpZ25lZCBjaGFyIF9mX2FsbG9jY2x1c3RlciAoIHVuc2lnbmVkIGxvbmcgKiApOw0KLXVuc2lnbmVkIGNoYXIgX2ZfcmVtb3ZlY2hhaW4gKCB1bnNpZ25lZCBsb25nICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX19GQVRfSCAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZmlsZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9maWxlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NGI4NmMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9maWxlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQxICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL2FwaS9mYXRfc2wuaCINCi0jaW5jbHVkZSAiLi4vLi4vcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oIg0KLQ0KLSNpbmNsdWRlICJ1dGlsLmgiDQotI2luY2x1ZGUgInZvbHVtZS5oIg0KLSNpbmNsdWRlICJkcnYuaCINCi0jaW5jbHVkZSAiZmF0LmgiDQotI2luY2x1ZGUgImRpci5oIg0KLSNpbmNsdWRlICJmaWxlLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIF9mX3N0ZXBuZXh0c2VjdG9yICggdm9pZCApOw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9maWxlbGVuZ3RoDQotICoNCi0gKiBHZXQgYSBmaWxlIGxlbmd0aA0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlbmFtZSAtIGZpbGUgd2hvc2UgbGVuZ3RoIGlzIG5lZWRlZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogbGVuZ3RoIG9mIHRoZSBmaWxlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLWxvbmcgZm5fZmlsZWxlbmd0aCAoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApDQotew0KLSAgRl9QT1MgICAgICAgIHBvczsNCi0gIEZfRElSRU5UUlkgKiBkZTsNCi0gIEZfTkFNRSAgICAgICBmc25hbWU7DQotDQotICBpZiAoIF9mX3NldGZzbmFtZSggZmlsZW5hbWUsICZmc25hbWUgKSApDQotICB7DQotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmludmFsaWQgbmFtZSovDQotICB9DQotDQotICBpZiAoIF9mX2NoZWNrbmFtZXdjKCBmc25hbWUuZmlsZW5hbWUsIGZzbmFtZS5maWxlZXh0ICkgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9nZXR2b2x1bWUoKSApDQotICB7DQotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgIC8qY2FuJ3QgZ2V0IHRoZSBzaXplKi8NCi0gIH0NCi0NCi0gIGlmICggIV9mX2ZpbmRwYXRoKCAmZnNuYW1lLCAmcG9zICkgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsNCi0gIH0NCi0NCi0gIGlmICggIV9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZwb3MsICZkZSwgMCApICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICBpZiAoIGRlLT5hdHRyICYgRl9BVFRSX0RJUiApDQotICB7DQotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmRpcmVjdG9yeSovDQotICB9DQotDQotICByZXR1cm4gKGxvbmcpX2ZfZ2V0bG9uZyggJmRlLT5maWxlc2l6ZSApOw0KLX0gLyogZm5fZmlsZWxlbmd0aCAqLw0KLQ0KLQ0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9lbXB0eXdyaXRlYnVmZmVyDQotICoNCi0gKiBlbXB0eSB3cml0ZSBidWZmZXIgaWYgaXQgY29udGFpbnMgdW53cml0dGVuIGRhdGENCi0gKg0KLSAqIFJFVFVSTlMNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl9zdGVwbmV4dHNlY3RvciAoIHZvaWQgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0gIHVuc2lnbmVkIGNoYXIgIGJfYWxsb2M7DQotDQotICBiX2FsbG9jID0gMDsNCi0gIGdsX3ZvbHVtZS5mYXRzZWN0b3IgPSAodW5zaWduZWQgbG9uZyktMTsNCi0gIGlmICggZ2xfZmlsZS5zdGFydGNsdXN0ZXIgPT0gMCApDQotICB7DQotICAgIGJfYWxsb2MgPSAxOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICArK2dsX2ZpbGUucG9zLnNlY3RvcjsNCi0gICAgaWYgKCBnbF9maWxlLnBvcy5zZWN0b3IgPj0gZ2xfZmlsZS5wb3Muc2VjdG9yZW5kICkNCi0gICAgew0KLSAgICAgIHVuc2lnbmVkIGxvbmcgIHZhbHVlOw0KLQ0KLSAgICAgIHJldCA9IF9mX2dldGNsdXN0ZXJ2YWx1ZSggZ2xfZmlsZS5wb3MuY2x1c3RlciwgJnZhbHVlICk7DQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByZXQ7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggKCB2YWx1ZSA+PSAyICkgJiYgKCB2YWx1ZSA8IEZfQ0xVU1RFUl9SRVNFUlZFRCApICkgLyp3ZSBhcmUgaW4gY2hhaW4qLw0KLSAgICAgIHsNCi0gICAgICAgIF9mX2NsdXN0ZXJ0b3BvcyggdmFsdWUsICZnbF9maWxlLnBvcyApOyAgICAvKmdvIHRvIG5leHQgY2x1c3RlciovDQotICAgICAgfQ0KLSAgICAgIGVsc2UNCi0gICAgICB7DQotICAgICAgICBiX2FsbG9jID0gMTsNCi0gICAgICB9DQotICAgIH0NCi0gIH0NCi0NCi0gIGlmICggYl9hbGxvYyAhPSAwICkNCi0gIHsNCi0gICAgdW5zaWduZWQgbG9uZyAgbmV4dGNsdXN0ZXI7DQotDQotICAgIHJldCA9IF9mX2FsbG9jY2x1c3RlciggJm5leHRjbHVzdGVyICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0NCi0gICAgcmV0ID0gX2Zfc2V0Y2x1c3RlcnZhbHVlKCBuZXh0Y2x1c3RlciwgRl9DTFVTVEVSX0xBU1QgKTsNCi0gICAgaWYgKCByZXQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIHJldDsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIGdsX2ZpbGUuc3RhcnRjbHVzdGVyID09IDAgKQ0KLSAgICB7DQotICAgICAgZ2xfZmlsZS5zdGFydGNsdXN0ZXIgPSBuZXh0Y2x1c3RlcjsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICByZXQgPSBfZl9zZXRjbHVzdGVydmFsdWUoIGdsX2ZpbGUucG9zLmNsdXN0ZXIsIG5leHRjbHVzdGVyICk7DQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByZXQ7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIF9mX2NsdXN0ZXJ0b3BvcyggbmV4dGNsdXN0ZXIsICZnbF9maWxlLnBvcyApOw0KLQ0KLSAgICByZXR1cm4gX2Zfd3JpdGVmYXRzZWN0b3IoKTsNCi0gIH0NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogX2Zfc3RlcG5leHRzZWN0b3IgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfZXh0ZW5kDQotICoNCi0gKiBFeHRlbmQgZmlsZSB0byBhIGNlcnRhaW4gc2l6ZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl9leHRlbmQgKCBsb25nIHNpemUgKQ0KLXsNCi0gIHVuc2lnbmVkIGxvbmcgIF9zaXplOw0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBzaXplIC09IGdsX2ZpbGUuZmlsZXNpemU7DQotICBfc2l6ZSA9ICh1bnNpZ25lZCBsb25nKXNpemU7DQotDQotICBpZiAoIGdsX2ZpbGUuc3RhcnRjbHVzdGVyID09IDAgKQ0KLSAgew0KLSAgICBpZiAoIF9mX3N0ZXBuZXh0c2VjdG9yKCkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIEZfRVJSX1dSSVRFOw0KLSAgICB9DQotICB9DQotICBlbHNlDQotICB7DQotICAgIGlmICggKCBnbF9maWxlLnJlbHBvcyA+IDAgKSAmJiAoIGdsX2ZpbGUucmVscG9zIDwgRl9TRUNUT1JfU0laRSApICkNCi0gICAgew0KLSAgICAgIHJjID0gX2ZfZ2V0Y3VycnNlY3RvcigpOw0KLSAgICAgIGlmICggcmMgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByYzsNCi0gICAgICB9DQotICAgIH0NCi0gIH0NCi0NCi0gIGlmICggZ2xfZmlsZS5yZWxwb3MgKyBfc2l6ZSA+PSBGX1NFQ1RPUl9TSVpFICkNCi0gIHsNCi0gICAgaWYgKCBnbF9maWxlLnJlbHBvcyA8IEZfU0VDVE9SX1NJWkUgKQ0KLSAgICB7DQotICAgICAgcHNwX21lbXNldCggZ2xfc2VjdG9yICsgZ2xfZmlsZS5yZWxwb3MsIDAsICggRl9TRUNUT1JfU0laRSAtIGdsX2ZpbGUucmVscG9zICkgKTsNCi0gICAgICBfc2l6ZSAtPSAoIEZfU0VDVE9SX1NJWkUgLSBnbF9maWxlLnJlbHBvcyApOw0KLQ0KLSAgICAgIGlmICggX2Zfd3JpdGVnbHNlY3RvciggZ2xfZmlsZS5wb3Muc2VjdG9yICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiBGX0VSUl9XUklURTsNCi0gICAgICB9DQotICAgIH0NCi0NCi0gICAgaWYgKCBfZl9zdGVwbmV4dHNlY3RvcigpICkNCi0gICAgew0KLSAgICAgIHJldHVybiBGX0VSUl9XUklURTsNCi0gICAgfQ0KLQ0KLSAgICBwc3BfbWVtc2V0KCBnbF9zZWN0b3IsIDAsIEZfU0VDVE9SX1NJWkUgKTsNCi0NCi0gICAgd2hpbGUgKCBfc2l6ZSA+PSBGX1NFQ1RPUl9TSVpFICkNCi0gICAgew0KLSAgICAgIGlmICggX2Zfd3JpdGVnbHNlY3RvciggZ2xfZmlsZS5wb3Muc2VjdG9yICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiBGX0VSUl9XUklURTsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCBfZl9zdGVwbmV4dHNlY3RvcigpICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gRl9FUlJfV1JJVEU7DQotICAgICAgfQ0KLQ0KLSAgICAgIHBzcF9tZW1zZXQoIGdsX3NlY3RvciwgMCwgRl9TRUNUT1JfU0laRSApOw0KLQ0KLSAgICAgIF9zaXplIC09IEZfU0VDVE9SX1NJWkU7DQotICAgIH0NCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcHNwX21lbXNldCggZ2xfc2VjdG9yICsgZ2xfZmlsZS5yZWxwb3MsIDAsICggRl9TRUNUT1JfU0laRSAtIGdsX2ZpbGUucmVscG9zICkgKTsNCi0gICAgX3NpemUgKz0gZ2xfZmlsZS5yZWxwb3M7DQotICB9DQotDQotICBnbF9maWxlLm1vZGlmaWVkID0gMTsNCi0gIGdsX2ZpbGUuZmlsZXNpemUgKz0gc2l6ZTsNCi0gIGdsX2ZpbGUuYWJzcG9zID0gZ2xfZmlsZS5maWxlc2l6ZSAmICggfiggRl9TRUNUT1JfU0laRSAtIDEgKSApOw0KLSAgZ2xfZmlsZS5yZWxwb3MgPSBfc2l6ZTsNCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogX2ZfZXh0ZW5kICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2ZzZWVrDQotICoNCi0gKiBzdWJmdW5jdGlvbiBmb3IgZl9zZWVrIGl0IG1vdmVzIHBvc2l0aW9uIGludG8gZ2l2ZW4gb2Zmc2V0IGFuZCByZWFkDQotICogdGhlIGN1cnJlbnQgc2VjdG9yDQotICoNCi0gKiBJTlBVVFMNCi0gKiBvZmZzZXQgLSBwb3NpdGlvbiBmcm9tIHN0YXJ0DQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl9mc2VlayAoIGxvbmcgb2Zmc2V0ICkNCi17DQotICB1bnNpZ25lZCBsb25nICBjbHVzdGVyOw0KLSAgdW5zaWduZWQgbG9uZyAgdG1wOw0KLSAgdW5zaWduZWQgY2hhciAgcmV0ID0gRl9OT19FUlJPUjsNCi0gIGxvbmcgICAgICAgICAgIHJlbWFpbjsNCi0NCi0gIGlmICggb2Zmc2V0IDwgMCApDQotICB7DQotICAgIG9mZnNldCA9IDA7DQotICB9DQotDQotICBpZiAoICggKHVuc2lnbmVkIGxvbmcpIG9mZnNldCA8PSBnbF9maWxlLmZpbGVzaXplICkNCi0gICAgICAgJiYgKCAodW5zaWduZWQgbG9uZykgb2Zmc2V0ID49IGdsX2ZpbGUuYWJzcG9zICkNCi0gICAgICAgJiYgKCAodW5zaWduZWQgbG9uZykgb2Zmc2V0IDwgZ2xfZmlsZS5hYnNwb3MgKyBGX1NFQ1RPUl9TSVpFICkgKQ0KLSAgew0KLSAgICBnbF9maWxlLnJlbHBvcyA9ICh1bnNpZ25lZCBzaG9ydCkoIG9mZnNldCAtIGdsX2ZpbGUuYWJzcG9zICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIGlmICggZ2xfZmlsZS5tb2RpZmllZCApDQotICAgIHsNCi0gICAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCAodW5zaWduZWQgbG9uZyktMSApOw0KLSAgICAgIGlmICggcmV0ICkNCi0gICAgICB7DQotICAgICAgICBnbF9maWxlLm1vZGUgPSBGX0ZJTEVfQ0xPU0U7IC8qY2FudCBhY2Nlc3NlZCBhbnkgbW9yZSovDQotICAgICAgICByZXR1cm4gcmV0Ow0KLSAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICBpZiAoIGdsX2ZpbGUuc3RhcnRjbHVzdGVyICkNCi0gICAgew0KLSAgICAgIGdsX2ZpbGUuYWJzcG9zID0gMDsNCi0gICAgICBnbF9maWxlLnJlbHBvcyA9IDA7DQotICAgICAgZ2xfZmlsZS5wb3MuY2x1c3RlciA9IGdsX2ZpbGUuc3RhcnRjbHVzdGVyOw0KLSAgICAgIHJlbWFpbiA9IGdsX2ZpbGUuZmlsZXNpemU7DQotDQotICAgICAgdG1wID0gZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9jbHVzdGVyOw0KLSAgICAgIHRtcCAqPSBGX1NFQ1RPUl9TSVpFOyAgIC8qIHNldCB0byBjbHVzdGVyIHNpemUgKi8NCi0NCi0gICAgICAvKmNhbGMgY2x1c3RlciovDQotICAgICAgZ2xfdm9sdW1lLmZhdHNlY3RvciA9ICh1bnNpZ25lZCBsb25nKS0xOw0KLSAgICAgIHdoaWxlICggKHVuc2lnbmVkIGxvbmcpb2Zmc2V0ID49IHRtcCApDQotICAgICAgew0KLSAgICAgICAgcmV0ID0gX2ZfZ2V0Y2x1c3RlcnZhbHVlKCBnbF9maWxlLnBvcy5jbHVzdGVyLCAmY2x1c3RlciApOw0KLSAgICAgICAgaWYgKCByZXQgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBnbF9maWxlLm1vZGUgPSBGX0ZJTEVfQ0xPU0U7DQotICAgICAgICAgIHJldHVybiByZXQ7DQotICAgICAgICB9DQotDQotICAgICAgICBpZiAoIChsb25nKSB0bXAgPj0gcmVtYWluICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotDQotICAgICAgICByZW1haW4gLT0gdG1wOw0KLSAgICAgICAgb2Zmc2V0IC09IHRtcDsNCi0gICAgICAgIGdsX2ZpbGUuYWJzcG9zICs9IHRtcDsNCi0gICAgICAgIGlmICggY2x1c3RlciA+PSBGX0NMVVNURVJfUkVTRVJWRUQgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCi0NCi0gICAgICAgIGdsX2ZpbGUucG9zLmNsdXN0ZXIgPSBjbHVzdGVyOw0KLSAgICAgIH0NCi0NCi0gICAgICBfZl9jbHVzdGVydG9wb3MoIGdsX2ZpbGUucG9zLmNsdXN0ZXIsICZnbF9maWxlLnBvcyApOw0KLSAgICAgIGlmICggcmVtYWluICYmIG9mZnNldCApDQotICAgICAgew0KLSAgICAgICAgd2hpbGUgKCAoIG9mZnNldCA+IChsb25nKSBGX1NFQ1RPUl9TSVpFICkNCi0gICAgICAgICAgICAgICAmJiAoIHJlbWFpbiA+IChsb25nKSBGX1NFQ1RPUl9TSVpFICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBnbF9maWxlLnBvcy5zZWN0b3IrKzsNCi0gICAgICAgICAgb2Zmc2V0IC09IEZfU0VDVE9SX1NJWkU7DQotICAgICAgICAgIHJlbWFpbiAtPSBGX1NFQ1RPUl9TSVpFOw0KLSAgICAgICAgICBnbF9maWxlLmFic3BvcyArPSBGX1NFQ1RPUl9TSVpFOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIHJlbWFpbiA8IG9mZnNldCApDQotICAgICAgew0KLSAgICAgICAgZ2xfZmlsZS5yZWxwb3MgPSAodW5zaWduZWQgc2hvcnQpcmVtYWluOw0KLSAgICAgICAgcmV0ID0gX2ZfZXh0ZW5kKCBnbF9maWxlLmZpbGVzaXplICsgb2Zmc2V0IC0gcmVtYWluICk7DQotICAgICAgfQ0KLSAgICAgIGVsc2UNCi0gICAgICB7DQotICAgICAgICBnbF9maWxlLnJlbHBvcyA9ICh1bnNpZ25lZCBzaG9ydClvZmZzZXQ7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgIHJldCA9IF9mX2V4dGVuZCggb2Zmc2V0ICk7DQotICAgIH0NCi0gIH0NCi0NCi0gIHJldHVybiByZXQ7DQotfSAvKiBfZl9mc2VlayAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9vcGVuDQotICoNCi0gKiBvcGVuIGEgZmlsZSBmb3IgcmVhZGluZy93cml0aW5nL2FwcGVuZGluZw0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlbmFtZSAtIHdoaWNoIGZpbGUgbmVlZCB0byBiZSBvcGVuZWQNCi0gKiBtb2RlIC0gc3RyaW5nIGhvdyB0byBvcGVuICgiciItcmVhZCwgInciLXdyaXRlLCAidysiLW92ZXJ3cml0ZSwgImEiLWFwcGVuZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogRl9GSUxFIHBvaW50ZXIgaWYgc3VjY2Vzc2Z1bGx5DQotICogMCAtIGlmIGFueSBlcnJvcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1GX0ZJTEUgKiBmbl9vcGVuICggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBjb25zdCBjaGFyICogbW9kZSApDQotew0KLSAgRl9ESVJFTlRSWSAgICAqIGRlOw0KLSAgRl9OQU1FICAgICAgICAgIGZzbmFtZTsNCi0gIHVuc2lnbmVkIHNob3J0ICBkYXRlOw0KLSAgdW5zaWduZWQgc2hvcnQgIHRpbWU7DQotICB1bnNpZ25lZCBjaGFyICAgbV9tb2RlID0gRl9GSUxFX0NMT1NFOw0KLQ0KLSAgaWYgKCBtb2RlWzFdID09IDAgKQ0KLSAgew0KLSAgICBpZiAoIG1vZGVbMF0gPT0gJ3InICkNCi0gICAgew0KLSAgICAgIG1fbW9kZSA9IEZfRklMRV9SRDsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIG1vZGVbMF0gPT0gJ3cnICkNCi0gICAgew0KLSAgICAgIG1fbW9kZSA9IEZfRklMRV9XUjsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIG1vZGVbMF0gPT0gJ2EnICkNCi0gICAgew0KLSAgICAgIG1fbW9kZSA9IEZfRklMRV9BOw0KLSAgICB9DQotICB9DQotDQotICBpZiAoICggbW9kZVsxXSA9PSAnKycgKSAmJiAoIG1vZGVbMl0gPT0gMCApICkNCi0gIHsNCi0gICAgaWYgKCBtb2RlWzBdID09ICdyJyApDQotICAgIHsNCi0gICAgICBtX21vZGUgPSBGX0ZJTEVfUkRQOw0KLSAgICB9DQotDQotICAgIGlmICggbW9kZVswXSA9PSAndycgKQ0KLSAgICB7DQotICAgICAgbV9tb2RlID0gRl9GSUxFX1dSUDsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIG1vZGVbMF0gPT0gJ2EnICkNCi0gICAgew0KLSAgICAgIG1fbW9kZSA9IEZfRklMRV9BUDsNCi0gICAgfQ0KLQ0KLSAgfQ0KLQ0KLSAgaWYgKCBtX21vZGUgPT0gRl9GSUxFX0NMT1NFICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG1vZGUqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9zZXRmc25hbWUoIGZpbGVuYW1lLCAmZnNuYW1lICkgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppbnZhbGlkIG5hbWUqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9jaGVja25hbWV3YyggZnNuYW1lLmZpbGVuYW1lLCBmc25hbWUuZmlsZWV4dCApICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaW52YWxpZCBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggZnNuYW1lLmZpbGVuYW1lWzBdID09ICcuJyApDQotICB7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9nZXR2b2x1bWUoKSApDQotICB7DQotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgIC8qY2FudCBvcGVuIGFueSovDQotICB9DQotDQotICBpZiAoIGdsX2ZpbGUubW9kZSAhPSBGX0ZJTEVfQ0xPU0UgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsNCi0gIH0NCi0NCi0gIHBzcF9tZW1zZXQoICZnbF9maWxlLCAwLCBzaXplb2YoIEZfRklMRSApICk7DQotDQotICBpZiAoICFfZl9maW5kcGF0aCggJmZzbmFtZSwgJmdsX2ZpbGUuZGlycG9zICkgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsNCi0gIH0NCi0NCi0gIHN3aXRjaCAoIG1fbW9kZSApDQotICB7DQotICAgIGNhc2UgRl9GSUxFX1JEUDogICAvKnIqLw0KLSAgICBjYXNlIEZfRklMRV9SRDogICAvKnIqLw0KLSAgICAgIGlmICggIV9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZnbF9maWxlLmRpcnBvcywgJmRlLCAwICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiAwOw0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoIGRlLT5hdHRyICYgRl9BVFRSX0RJUiApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmRpcmVjdG9yeSovDQotICAgICAgfQ0KLQ0KLSAgICAgIGdsX2ZpbGUuc3RhcnRjbHVzdGVyID0gX2ZfZ2V0ZGVjbHVzdGVyKCBkZSApOw0KLQ0KLSAgICAgIGlmICggZ2xfZmlsZS5zdGFydGNsdXN0ZXIgKQ0KLSAgICAgIHsNCi0gICAgICAgIF9mX2NsdXN0ZXJ0b3BvcyggZ2xfZmlsZS5zdGFydGNsdXN0ZXIsICZnbF9maWxlLnBvcyApOw0KLSAgICAgICAgZ2xfZmlsZS5maWxlc2l6ZSA9IF9mX2dldGxvbmcoICZkZS0+ZmlsZXNpemUgKTsNCi0gICAgICAgIGdsX2ZpbGUuYWJzcG9zID0gKHVuc2lnbmVkIGxvbmcpICgtMSAqIChsb25nKSBGX1NFQ1RPUl9TSVpFKTsNCi0gICAgICAgIGlmICggX2ZfZnNlZWsoIDAgKSApDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybiAwOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0jaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQNCi0gICAgICBpZiAoIG1fbW9kZSA9PSBGX0ZJTEVfUkRQICkNCi0gICAgICB7DQotICAgICAgICBfZl9jcmVhdGVmdWxsbmFtZSggZ2xfZmlsZS5maWxlbmFtZSwgc2l6ZW9mKCBnbF9maWxlLmZpbGVuYW1lICksIGZzbmFtZS5wYXRoLCBmc25hbWUuZmlsZW5hbWUsIGZzbmFtZS5maWxlZXh0ICk7DQotICAgICAgfQ0KLQ0KLSNlbmRpZg0KLQ0KLSAgICAgIGJyZWFrOw0KLQ0KLSAgICBjYXNlIEZfRklMRV9BUDoNCi0gICAgY2FzZSBGX0ZJTEVfQTogLyphKi8NCi0gICAgICBwc3BfbWVtY3B5KCAmKCBnbF9maWxlLnBvcyApLCAmKCBnbF9maWxlLmRpcnBvcyApLCBzaXplb2YoIEZfUE9TICkgKTsNCi0gICAgICBpZiAoIF9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZnbF9maWxlLmRpcnBvcywgJmRlLCAwICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIGlmICggZGUtPmF0dHIgJiAoIEZfQVRUUl9ESVIgfCBGX0FUVFJfUkVBRE9OTFkgKSApDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybiAwOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZ2xfZmlsZS5zdGFydGNsdXN0ZXIgPSBfZl9nZXRkZWNsdXN0ZXIoIGRlICk7DQotICAgICAgICBnbF9maWxlLmZpbGVzaXplID0gX2ZfZ2V0bG9uZyggJmRlLT5maWxlc2l6ZSApOw0KLQ0KLSAgICAgICAgaWYgKCBnbF9maWxlLnN0YXJ0Y2x1c3RlciApDQotICAgICAgICB7DQotICAgICAgICAgIF9mX2NsdXN0ZXJ0b3BvcyggZ2xfZmlsZS5zdGFydGNsdXN0ZXIsICZnbF9maWxlLnBvcyApOw0KLSAgICAgICAgICBnbF9maWxlLmFic3BvcyA9ICh1bnNpZ25lZCBsb25nKSAoLTEgKiAobG9uZykgRl9TRUNUT1JfU0laRSk7ICAgLypmb3JjaW5nIHNlZWsgdG8gcmVhZCAxc3Qgc2VjdG9yISBhYnNwb3M9MDsqLw0KLSAgICAgICAgICBpZiAoIF9mX2ZzZWVrKCAobG9uZylnbF9maWxlLmZpbGVzaXplICkgKQ0KLSAgICAgICAgICB7DQotICAgICAgICAgICAgZ2xfZmlsZS5tb2RlID0gRl9GSUxFX0NMT1NFOw0KLSAgICAgICAgICAgIHJldHVybiAwOw0KLSAgICAgICAgICB9DQotICAgICAgICB9DQotICAgICAgfQ0KLSAgICAgIGVsc2UNCi0gICAgICB7DQotICAgICAgICBwc3BfbWVtY3B5KCAmKCBnbF9maWxlLmRpcnBvcyApLCAmKCBnbF9maWxlLnBvcyApLCBzaXplb2YoIEZfUE9TICkgKTsNCi0gICAgICAgIF9mX2NsdXN0ZXJ0b3BvcyggZ2xfZmlsZS5kaXJwb3MuY2x1c3RlciwgJmdsX2ZpbGUucG9zICk7DQotDQotICAgICAgICBpZiAoIF9mX2FkZGVudHJ5KCAmZnNuYW1lLCAmZ2xfZmlsZS5kaXJwb3MsICZkZSApICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmNvdWxkbnQgYmUgYWRkZWQqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZGUtPmF0dHIgfD0gRl9BVFRSX0FSQzsgICAgICAgICAvKnNldCBhcyBhcmNoaXYqLw0KLSAgICAgICAgaWYgKCBfZl93cml0ZWdsc2VjdG9yKCAodW5zaWduZWQgbG9uZyktMSApICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDA7DQotICAgICAgICB9DQotICAgICAgfQ0KLQ0KLSAjaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQNCi0gICAgICBfZl9jcmVhdGVmdWxsbmFtZSggZ2xfZmlsZS5maWxlbmFtZSwgc2l6ZW9mKCBnbF9maWxlLmZpbGVuYW1lICksIGZzbmFtZS5wYXRoLCBmc25hbWUuZmlsZW5hbWUsIGZzbmFtZS5maWxlZXh0ICk7DQotICNlbmRpZg0KLSAgICAgIGJyZWFrOw0KLQ0KLQ0KLSAgICBjYXNlIEZfRklMRV9XUjogIC8qdyovDQotICAgIGNhc2UgRl9GSUxFX1dSUDogLyp3KyovDQotICAgICAgX2ZfY2x1c3RlcnRvcG9zKCBnbF9maWxlLmRpcnBvcy5jbHVzdGVyLCAmZ2xfZmlsZS5wb3MgKTsNCi0gICAgICBpZiAoIF9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZnbF9maWxlLnBvcywgJmRlLCAwICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgIGNsdXN0ZXIgPSBfZl9nZXRkZWNsdXN0ZXIoIGRlICk7ICAgIC8qZXhpc3QqLw0KLQ0KLSAgICAgICAgaWYgKCBkZS0+YXR0ciAmICggRl9BVFRSX0RJUiB8IEZfQVRUUl9SRUFET05MWSApICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDA7DQotICAgICAgICB9DQotDQotICAgICAgICBwc3BfbWVtY3B5KCAmKCBnbF9maWxlLmRpcnBvcyApLCAmKCBnbF9maWxlLnBvcyApLCBzaXplb2YoIEZfUE9TICkgKTsNCi0NCi0gICAgICAgIF9mX3NldGxvbmcoIGRlLT5maWxlc2l6ZSwgMCApOyAgLypyZXNldCBzaXplOyovDQotICAgICAgICBkZS0+YXR0ciB8PSBGX0FUVFJfQVJDOyAgICAgICAgIC8qc2V0IGFzIGFyY2hpdiovDQotICAgICAgICBfZl9zZXR3b3JkKCBkZS0+Y2x1c3RlcmxvLCAwICk7IC8qbm8gcG9pbnRzIGFueXdoZXJlKi8NCi0gICAgICAgIF9mX3NldHdvcmQoIGRlLT5jbHVzdGVyaGksIDAgKTsNCi0NCi0gICAgICAgIGlmICggZ2xfdm9sdW1lLm1lZGlhdHlwZSA9PSBGX0ZBVDMyX01FRElBICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgZl9pZ2V0dGltZWRhdGUoICZ0aW1lLCAmZGF0ZSApOw0KLSAgICAgICAgICBfZl9zZXR3b3JkKCAmZGUtPmNydGRhdGUsIGRhdGUgKTsgICAgICAgIC8qaWYgdGhlcmUgaXMgcmVhbHRpbWUgY2xvY2sgdGhlbiBjcmVhdGlvbiBkYXRlIGNvdWxkIGJlIHNldCBmcm9tKi8NCi0gICAgICAgICAgX2Zfc2V0d29yZCggJmRlLT5jcnR0aW1lLCB0aW1lICk7ICAgICAgICAvKmlmIHRoZXJlIGlzIHJlYWx0aW1lIGNsb2NrIHRoZW4gY3JlYXRpb24gdGltZSBjb3VsZCBiZSBzZXQgZnJvbSovDQotICAgICAgICAgIF9mX3NldHdvcmQoICZkZS0+bGFzdGFjY2Vzc2RhdGUsIGRhdGUgKTsgLyppZiB0aGVyZSBpcyByZWFsdGltZSBjbG9jayB0aGVuIGNyZWF0aW9uIGRhdGUgY291bGQgYmUgc2V0IGZyb20qLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgaWYgKCBfZl93cml0ZWdsc2VjdG9yKCAodW5zaWduZWQgbG9uZyktMSApICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDA7DQotICAgICAgICB9DQotDQotICAgICAgICBpZiAoIF9mX3JlbW92ZWNoYWluKCBjbHVzdGVyICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qcmVtb3ZlICovDQotICAgICAgICB9DQotICAgICAgfQ0KLSAgICAgIGVsc2UNCi0gICAgICB7DQotICAgICAgICBpZiAoIF9mX2FkZGVudHJ5KCAmZnNuYW1lLCAmZ2xfZmlsZS5kaXJwb3MsICZkZSApICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmNvdWxkbnQgYmUgYWRkZWQqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgcHNwX21lbXNldCggJmdsX2ZpbGUsIDAsIDIxICk7DQotICAgICAgICBkZS0+YXR0ciB8PSBGX0FUVFJfQVJDOyAgICAgICAgIC8qc2V0IGFzIGFyY2hpdiovDQotICAgICAgICBpZiAoIF9mX3dyaXRlZ2xzZWN0b3IoICh1bnNpZ25lZCBsb25nKS0xICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4gMDsNCi0gICAgICAgIH0NCi0gICAgICB9DQotDQotICNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgICAgIF9mX2NyZWF0ZWZ1bGxuYW1lKCBnbF9maWxlLmZpbGVuYW1lLCBzaXplb2YoIGdsX2ZpbGUuZmlsZW5hbWUgKSwgZnNuYW1lLnBhdGgsIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQgKTsNCi0gI2VuZGlmDQotDQotICAgICAgYnJlYWs7DQotDQotICAgIGRlZmF1bHQ6DQotICAgICAgcmV0dXJuIDA7ICAgICAgICAvKmludmFsaWQgbW9kZSovDQotICB9IC8qIHN3aXRjaCAqLw0KLQ0KLSAgZ2xfZmlsZS5tb2RlID0gbV9tb2RlOyAvKiBsb2NrIGl0ICovDQotICByZXR1cm4gKEZfRklMRSAqKTE7DQotfSAvKiBmbl9vcGVuICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBfZl91cGRhdGVmaWxlZW50cnkNCi0gKiBVcGRhdGVkIGEgZmlsZSBkaXJlY3RvcnkgZW50cnkgb3IgcmVtb3ZlcyB0aGUgZW50cnkNCi0gKiBhbmQgdGhlIGZhdCBjaGFpbiBiZWxvbmdpbmcgdG8gaXQuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl91cGRhdGVmaWxlZW50cnkgKCBpbnQgcmVtb3ZlICkNCi17DQotICBGX0RJUkVOVFJZICAgICogZGU7DQotICB1bnNpZ25lZCBzaG9ydCAgZGF0ZTsNCi0gIHVuc2lnbmVkIHNob3J0ICB0aW1lOw0KLQ0KLSAgZGUgPSAoRl9ESVJFTlRSWSAqKSggZ2xfc2VjdG9yICsgc2l6ZW9mKCBGX0RJUkVOVFJZICkgKiBnbF9maWxlLmRpcnBvcy5wb3MgKTsNCi0gIGlmICggX2ZfcmVhZGdsc2VjdG9yKCBnbF9maWxlLmRpcnBvcy5zZWN0b3IgKSB8fCByZW1vdmUgKQ0KLSAgew0KLSAgICBfZl9zZXRkZWNsdXN0ZXIoIGRlLCAwICk7DQotICAgIF9mX3NldGxvbmcoICZkZS0+ZmlsZXNpemUsIDAgKTsNCi0gICAgKHZvaWQpX2Zfd3JpdGVnbHNlY3RvciggKHVuc2lnbmVkIGxvbmcpLTEgKTsNCi0gICAgKHZvaWQpX2ZfcmVtb3ZlY2hhaW4oIGdsX2ZpbGUuc3RhcnRjbHVzdGVyICk7DQotICAgIHJldHVybiBGX0VSUl9XUklURTsNCi0gIH0NCi0NCi0gIF9mX3NldGRlY2x1c3RlciggZGUsIGdsX2ZpbGUuc3RhcnRjbHVzdGVyICk7DQotICBfZl9zZXRsb25nKCAmZGUtPmZpbGVzaXplLCBnbF9maWxlLmZpbGVzaXplICk7DQotICBmX2lnZXR0aW1lZGF0ZSggJnRpbWUsICZkYXRlICk7DQotICBfZl9zZXR3b3JkKCAmZGUtPmNkYXRlLCBkYXRlICk7ICAvKmlmIHRoZXJlIGlzIHJlYWx0aW1lIGNsb2NrIHRoZW4gY3JlYXRpb24gZGF0ZSBjb3VsZCBiZSBzZXQgZnJvbSovDQotICBfZl9zZXR3b3JkKCAmZGUtPmN0aW1lLCB0aW1lICk7ICAvKmlmIHRoZXJlIGlzIHJlYWx0aW1lIGNsb2NrIHRoZW4gY3JlYXRpb24gdGltZSBjb3VsZCBiZSBzZXQgZnJvbSovDQotICBpZiAoIGdsX3ZvbHVtZS5tZWRpYXR5cGUgPT0gRl9GQVQzMl9NRURJQSApDQotICB7DQotICAgIF9mX3NldHdvcmQoICZkZS0+bGFzdGFjY2Vzc2RhdGUsIGRhdGUgKTsgIC8qaWYgdGhlcmUgaXMgcmVhbHRpbWUgY2xvY2sgdGhlbiBjcmVhdGlvbiBkYXRlIGNvdWxkIGJlIHNldCBmcm9tKi8NCi0gIH0NCi0NCi0gIHJldHVybiBfZl93cml0ZWdsc2VjdG9yKCAodW5zaWduZWQgbG9uZyktMSApOw0KLX0gLyogX2ZfdXBkYXRlZmlsZWVudHJ5ICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX2Nsb3NlDQotICoNCi0gKiBjbG9zZSBhIHByZXZpb3VzbHkgb3BlbmVkIGZpbGUNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZmlsZWhhbmRsZSAtIHdoaWNoIGZpbGUgbmVlZHMgdG8gYmUgY2xvc2VkDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2Nsb3NlICggRl9GSUxFICogZiApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgdW5zaWduZWQgY2hhciAgbW9kZTsNCi0jZW5kaWYNCi0NCi0gIGlmICggIWYgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9UT1BFTjsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX2dldHZvbHVtZSgpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgaWYgKCBnbF9maWxlLm1vZGUgPT0gRl9GSUxFX0NMT1NFICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVE9QRU47DQotICB9DQotDQotICBlbHNlIGlmICggZ2xfZmlsZS5tb2RlID09IEZfRklMRV9SRCApDQotICB7DQotICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsNCi0gICAgcmV0dXJuIEZfTk9fRVJST1I7DQotICB9DQotICBlbHNlDQotICB7DQotICNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgICBtb2RlID0gZi0+bW9kZTsNCi0gI2VuZGlmDQotICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsNCi0NCi0gICAgaWYgKCBnbF9maWxlLm1vZGlmaWVkICkNCi0gICAgew0KLSAgICAgIGlmICggX2Zfd3JpdGVnbHNlY3RvciggKHVuc2lnbmVkIGxvbmcpLTEgKSApDQotICAgICAgew0KLSAgICAgICAgKHZvaWQpX2ZfdXBkYXRlZmlsZWVudHJ5KCAxICk7DQotICAgICAgICByZXR1cm4gRl9FUlJfV1JJVEU7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIHJldCA9IF9mX3VwZGF0ZWZpbGVlbnRyeSggMCApOw0KLQ0KLSAjaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQNCi0gICAgaWYgKCBmX2ZpbGVjaGFuZ2VkZXZlbnQgJiYgIXJldCApDQotICAgIHsNCi0gICAgICBTVF9GSUxFX0NIQU5HRUQgIGZjOw0KLSAgICAgIGlmICggKCBtb2RlID09IEZfRklMRV9XUiApICB8fCAoIG1vZGUgPT0gRl9GSUxFX1dSUCApICkNCi0gICAgICB7DQotICAgICAgICBmYy5hY3Rpb24gPSBGQUNUSU9OX0FEREVEOw0KLSAgICAgICAgZmMuZmxhZ3MgID0gRkZMQUdTX0ZJTEVfTkFNRTsNCi0gICAgICB9DQotICAgICAgZWxzZSBpZiAoICggbW9kZSA9PSBGX0ZJTEVfQSApICB8fCAoIG1vZGUgPT0gRl9GSUxFX1JEUCApICkNCi0gICAgICB7DQotICAgICAgICBmYy5hY3Rpb24gPSBGQUNUSU9OX01PRElGSUVEOw0KLSAgICAgICAgZmMuZmxhZ3MgID0gRkZMQUdTX0ZJTEVfTkFNRSB8IEZGTEFHU19TSVpFOw0KLSAgICAgIH0NCi0NCi0gICAgICBzdHJjcHkoIGZjLmZpbGVuYW1lLCBmLT5maWxlbmFtZSApOw0KLSAgICAgIGlmICggZi0+ZmlsZW5hbWVbMF0gKQ0KLSAgICAgIHsNCi0gICAgICAgIGZfZmlsZWNoYW5nZWRldmVudCggJmZjICk7DQotICAgICAgfQ0KLQ0KLSAgICAgIGYtPmZpbGVuYW1lWzBdID0gJ1wwJzsNCi0gICAgfQ0KLQ0KLSAjZW5kaWYgLyogaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQgKi8NCi0gICAgcmV0dXJuIHJldDsNCi0gIH0NCi19IC8qIGZuX2Nsb3NlICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX2ZsdXNoDQotICoNCi0gKiBmbHVzaCBhIHByZXZpb3VzbHkgb3BlbmVkIGZpbGUNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZmlsZWhhbmRsZSAtIHdoaWNoIGZpbGUgbmVlZHMgdG8gYmUgY2xvc2VkDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2ZsdXNoICggRl9GSUxFICogZiApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgaWYgKCAhZiApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9OT1RPUEVOOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBpZiAoIGdsX2ZpbGUubW9kZSA9PSBGX0ZJTEVfQ0xPU0UgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9UT1BFTjsNCi0gIH0NCi0gIGVsc2UgaWYgKCBnbF9maWxlLm1vZGUgIT0gRl9GSUxFX1JEICkNCi0gIHsNCi0gICAgaWYgKCBnbF9maWxlLm1vZGlmaWVkICkNCi0gICAgew0KLSAgICAgIGlmICggX2Zfd3JpdGVnbHNlY3RvciggKHVuc2lnbmVkIGxvbmcpLTEgKSApDQotICAgICAgew0KLSAgICAgICAgKHZvaWQpX2ZfdXBkYXRlZmlsZWVudHJ5KCAxICk7DQotICAgICAgICByZXR1cm4gRl9FUlJfV1JJVEU7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIHJldHVybiBfZl91cGRhdGVmaWxlZW50cnkoIDAgKTsNCi0gIH0NCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogZm5fZmx1c2ggKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fcmVhZA0KLSAqDQotICogcmVhZCBkYXRhIGZyb20gZmlsZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBidWYgLSB3aGVyZSB0aGUgc3RvcmUgZGF0YQ0KLSAqIHNpemUgLSBzaXplIG9mIGl0ZW1zIHRvIGJlIHJlYWQNCi0gKiBfc2l6ZV90IC0gbnVtYmVyIG9mIGl0ZW1zIG5lZWQgdG8gYmUgcmVhZA0KLSAqIGZpbGVoYW5kbGUgLSBmaWxlIHdoZXJlIHRvIHJlYWQgZnJvbQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogd2l0aCB0aGUgbnVtYmVyIG9mIHJlYWQgYnl0ZXMNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotbG9uZyBmbl9yZWFkICggdm9pZCAqIGJ1ZiwgbG9uZyBzaXplLCBsb25nIF9zaXplX3N0LCBGX0ZJTEUgKiBmICkNCi17DQotICBjaGFyICogYnVmZmVyID0gKGNoYXIgKilidWY7DQotICBsb25nICAgcmV0c2l6ZTsNCi0NCi0gIGlmICggIWYgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsNCi0gIH0NCi0NCi0gIGlmICggKCBnbF9maWxlLm1vZGUgJiAoIEZfRklMRV9SRCB8IEZfRklMRV9SRFAgfCBGX0ZJTEVfV1JQIHwgRl9GSUxFX0FQICkgKSA9PSAwICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICByZXRzaXplID0gc2l6ZTsNCi0gIHNpemUgKj0gX3NpemVfc3Q7DQotICBfc2l6ZV9zdCA9IHJldHNpemU7DQotICByZXRzaXplID0gMDsNCi0NCi0gIGlmICggX2ZfZ2V0dm9sdW1lKCkgKQ0KLSAgew0KLSAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAvKmNhbnQgcmVhZCBhbnkqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBzaXplICsgZ2xfZmlsZS5yZWxwb3MgKyBnbF9maWxlLmFic3BvcyA+PSBnbF9maWxlLmZpbGVzaXplICkgLypyZWFkIGxlbiBsb25nZXIgdGhhbiB0aGUgZmlsZSovDQotICB7DQotICAgIHNpemUgPSAobG9uZykoICggZ2xfZmlsZS5maWxlc2l6ZSApIC0gKCBnbF9maWxlLnJlbHBvcyApIC0gKCBnbF9maWxlLmFic3BvcyApICk7IC8qY2FsY3VsYXRlIG5ldyBzaXplKi8NCi0gIH0NCi0NCi0gIGlmICggc2l6ZSA8PSAwICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICBpZiAoIF9mX2dldGN1cnJzZWN0b3IoKSApDQotICB7DQotICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsgLypubyBtb3JlIHJlYWQgYWxsb3dlZCovDQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgZm9yKCA7IDsgKQ0KLSAgew0KLSAgICB1bnNpZ25lZCBsb25nICByZHNpemUgPSAodW5zaWduZWQgbG9uZylzaXplOw0KLQ0KLSAgICBpZiAoIGdsX2ZpbGUucmVscG9zID09IEZfU0VDVE9SX1NJWkUgKQ0KLSAgICB7DQotICAgICAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgICAgIGdsX2ZpbGUuYWJzcG9zICs9IGdsX2ZpbGUucmVscG9zOw0KLSAgICAgIGdsX2ZpbGUucmVscG9zID0gMDsNCi0NCi0gICAgICBpZiAoIGdsX2ZpbGUubW9kaWZpZWQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldCA9IF9mX3dyaXRlZ2xzZWN0b3IoICh1bnNpZ25lZCBsb25nKS0xICk7ICAgICAvKmVtcHR5IHdyaXRlIGJ1ZmZlciAqLw0KLSAgICAgICAgaWYgKCByZXQgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBnbF9maWxlLm1vZGUgPSBGX0ZJTEVfQ0xPU0U7ICAgICAgICAgLypubyBtb3JlIHJlYWQgYWxsb3dlZCovDQotICAgICAgICAgIHJldHVybiByZXRzaXplOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBnbF9maWxlLnBvcy5zZWN0b3IrKzsgICAgICAgICAvKmdvdG8gbmV4dCovDQotDQotICAgICAgcmV0ID0gX2ZfZ2V0Y3VycnNlY3RvcigpOw0KLSAgICAgIGlmICggKCByZXQgPT0gRl9FUlJfRU9GICkgJiYgKCAhc2l6ZSApICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gcmV0c2l6ZTsNCi0gICAgICB9DQotDQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsgICAgICAgLypubyBtb3JlIHJlYWQgYWxsb3dlZCovDQotICAgICAgICByZXR1cm4gcmV0c2l6ZTsNCi0gICAgICB9DQotICAgIH0NCi0NCi0gICAgaWYgKCAhc2l6ZSApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIHJkc2l6ZSA+PSBGX1NFQ1RPUl9TSVpFIC0gZ2xfZmlsZS5yZWxwb3MgKQ0KLSAgICB7DQotICAgICAgcmRzaXplID0gKHVuc2lnbmVkIGxvbmcpKCBGX1NFQ1RPUl9TSVpFIC0gZ2xfZmlsZS5yZWxwb3MgKTsNCi0gICAgfQ0KLQ0KLSAgICBwc3BfbWVtY3B5KCBidWZmZXIsIGdsX3NlY3RvciArIGdsX2ZpbGUucmVscG9zLCByZHNpemUgKTsgLyphbHdheXMgbGVzcyB0aGFuIDUxMiovDQotDQotICAgIGJ1ZmZlciArPSByZHNpemU7DQotICAgIGdsX2ZpbGUucmVscG9zICs9IHJkc2l6ZTsNCi0gICAgc2l6ZSAtPSByZHNpemU7DQotICAgIHJldHNpemUgKz0gcmRzaXplOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJldHNpemUgLyBfc2l6ZV9zdDsNCi19IC8qIGZuX3JlYWQgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fd3JpdGUNCi0gKg0KLSAqIHdyaXRlIGRhdGEgaW50byBmaWxlDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGJ1ZiAtIHdoZXJlIHRoZSBzdG9yZSBkYXRhDQotICogc2l6ZSAtIHNpemUgb2YgaXRlbXMgdG8gYmUgcmVhZA0KLSAqIHNpemVfdCAtIG51bWJlciBvZiBpdGVtcyBuZWVkIHRvIGJlIHJlYWQNCi0gKiBmaWxlaGFuZGxlIC0gZmlsZSB3aGVyZSB0byByZWFkIGZyb20NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIHdpdGggdGhlIG51bWJlciBvZiByZWFkIGJ5dGVzDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLWxvbmcgZm5fd3JpdGUgKCBjb25zdCB2b2lkICogYnVmLCBsb25nIHNpemUsIGxvbmcgX3NpemVfc3QsIEZfRklMRSAqIGYgKQ0KLXsNCi0gIGNoYXIgKiBidWZmZXIgPSAoY2hhciAqKWJ1ZjsNCi0gIGxvbmcgICByZXRzaXplOw0KLSAgbG9uZyAgIHJldCA9IDA7DQotDQotICBpZiAoICFmICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICBpZiAoICggZ2xfZmlsZS5tb2RlICYgKCBGX0ZJTEVfV1IgfCBGX0ZJTEVfQSB8IEZfRklMRV9SRFAgfCBGX0ZJTEVfV1JQIHwgRl9GSUxFX0FQICkgKSA9PSAwICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICByZXRzaXplID0gc2l6ZTsNCi0gIHNpemUgKj0gX3NpemVfc3Q7DQotICBfc2l6ZV9zdCA9IHJldHNpemU7DQotICByZXRzaXplID0gMDsNCi0NCi0gIGlmICggc2l6ZSA9PSAwICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7DQotICB9DQotDQotICBpZiAoIF9mX2dldHZvbHVtZSgpICkNCi0gIHsNCi0gICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgLypjYW4ndCB3cml0ZSovDQotICB9DQotDQotICBpZiAoICggZ2xfZmlsZS5tb2RlICkgJiAoIEZfRklMRV9BIHwgRl9GSUxFX0FQICkgKQ0KLSAgew0KLSAgICBpZiAoIF9mX2ZzZWVrKCAobG9uZylnbF9maWxlLmZpbGVzaXplICkgKQ0KLSAgICB7DQotICAgICAgZ2xfZmlsZS5tb2RlID0gRl9GSUxFX0NMT1NFOw0KLSAgICAgIHJldHVybiAwOw0KLSAgICB9DQotICB9DQotDQotICBpZiAoIGdsX2ZpbGUuc3RhcnRjbHVzdGVyID09IDAgKQ0KLSAgew0KLSAgICBpZiAoIF9mX3N0ZXBuZXh0c2VjdG9yKCkgKQ0KLSAgICB7DQotICAgICAgZ2xfZmlsZS5tb2RlID0gRl9GSUxFX0NMT1NFOw0KLSAgICAgIHJldHVybiAwOw0KLSAgICB9DQotICB9DQotICBlbHNlDQotICB7DQotICAgIGlmICggX2ZfZ2V0Y3VycnNlY3RvcigpICkNCi0gICAgew0KLSAgICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsNCi0gICAgICByZXR1cm4gMDsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgZm9yKCA7IDsgKQ0KLSAgew0KLSAgICB1bnNpZ25lZCBsb25nICB3cnNpemUgPSAodW5zaWduZWQgbG9uZylzaXplOw0KLQ0KLSAgICBpZiAoIGdsX2ZpbGUucmVscG9zID09IEZfU0VDVE9SX1NJWkUgKQ0KLSAgICB7ICAgICAvKm5vdyBmdWxsKi8NCi0gICAgICBpZiAoIGdsX2ZpbGUubW9kaWZpZWQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGlmICggX2Zfd3JpdGVnbHNlY3RvciggZ2xfZmlsZS5wb3Muc2VjdG9yICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICBnbF9maWxlLm1vZGUgPSBGX0ZJTEVfQ0xPU0U7DQotICAgICAgICAgIGlmICggX2ZfdXBkYXRlZmlsZWVudHJ5KCAwICkgPT0gMCApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gcmV0c2l6ZTsNCi0gICAgICAgICAgfQ0KLSAgICAgICAgICBlbHNlDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gMDsNCi0gICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZ2xfZmlsZS5tb2RpZmllZCA9IDA7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggX2Zfc3RlcG5leHRzZWN0b3IoKSApDQotICAgICAgew0KLSAgICAgICAgZ2xfZmlsZS5tb2RlID0gRl9GSUxFX0NMT1NFOw0KLSAgICAgICAgaWYgKCBfZl91cGRhdGVmaWxlZW50cnkoIDAgKSA9PSAwICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIHJldHNpemU7DQotICAgICAgICB9DQotICAgICAgICBlbHNlDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybiAwOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBnbF9maWxlLmFic3BvcyArPSBnbF9maWxlLnJlbHBvczsNCi0gICAgICBnbF9maWxlLnJlbHBvcyA9IDA7DQotDQotICAgICAgaWYgKCB3cnNpemUgJiYgKCB3cnNpemUgPCBGX1NFQ1RPUl9TSVpFICkgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldCA9IF9mX2dldGN1cnJzZWN0b3IoKTsNCi0NCi0gICAgICAgIGlmICggcmV0ICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgaWYgKCByZXQgIT0gRl9FUlJfRU9GICkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIGdsX2ZpbGUubW9kZSA9IEZfRklMRV9DTE9TRTsgICAgICAgLypubyBtb3JlIHJlYWQgYWxsb3dlZCovDQotICAgICAgICAgICAgcmV0dXJuIHJldHNpemU7DQotICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAgICB9DQotICAgIH0NCi0NCi0gICAgaWYgKCAhc2l6ZSApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoIHdyc2l6ZSA+PSBGX1NFQ1RPUl9TSVpFIC0gZ2xfZmlsZS5yZWxwb3MgKQ0KLSAgICB7DQotICAgICAgd3JzaXplID0gKHVuc2lnbmVkIGxvbmcpKCBGX1NFQ1RPUl9TSVpFIC0gZ2xfZmlsZS5yZWxwb3MgKTsNCi0gICAgfQ0KLQ0KLQ0KLSAgICBwc3BfbWVtY3B5KCBnbF9zZWN0b3IgKyBnbF9maWxlLnJlbHBvcywgYnVmZmVyLCB3cnNpemUgKTsNCi0gICAgZ2xfZmlsZS5tb2RpZmllZCA9IDE7ICAgIC8qc2VjdG9yIGlzIG1vZGlmaWVkKi8NCi0NCi0gICAgYnVmZmVyICs9IHdyc2l6ZTsNCi0gICAgZ2xfZmlsZS5yZWxwb3MgKz0gd3JzaXplOw0KLSAgICBzaXplIC09IHdyc2l6ZTsNCi0gICAgcmV0c2l6ZSArPSB3cnNpemU7DQotDQotICAgIGlmICggZ2xfZmlsZS5maWxlc2l6ZSA8IGdsX2ZpbGUuYWJzcG9zICsgZ2xfZmlsZS5yZWxwb3MgKQ0KLSAgICB7DQotICAgICAgZ2xfZmlsZS5maWxlc2l6ZSA9IGdsX2ZpbGUuYWJzcG9zICsgZ2xfZmlsZS5yZWxwb3M7DQotICAgIH0NCi0gIH0NCi0NCi0gIHJldHVybiByZXRzaXplIC8gX3NpemVfc3Q7DQotfSAvKiBmbl93cml0ZSAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9zZWVrDQotICoNCi0gKiBtb3ZlcyBwb3NpdGlvbiBpbnRvIGdpdmVuIG9mZnNldCBpbiBnaXZlbiBmaWxlDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGZpbGVoYW5kbGUgLSBGX0ZJTEUgc3RydWN0dXJlIHdoaWNoIGZpbGUgcG9zaXRpb24gbmVlZGVkIHRvIGJlIG1vZGlmaWVkDQotICogb2Zmc2V0IC0gcmVsYXRpdmUgcG9zaXRpb24NCi0gKiB3aGVuY2UgLSB3aGVyZSB0byBjYWxjdWxhdGUgcG9zaXRpb24gKEZfU0VFS19TRVQsRl9TRUVLX0NVUixGX1NFRUtfRU5EKQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogMCAtIGlmIHN1Y2Nlc3NmdWxseQ0KLSAqIG90aGVyIC0gaWYgYW55IGVycm9yDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLXVuc2lnbmVkIGNoYXIgZm5fc2VlayAoIEZfRklMRSAqIGYsIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBjaGFyIHdoZW5jZSApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgaWYgKCAhZiApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9OT1RPUEVOOw0KLSAgfQ0KLQ0KLSAgaWYgKCAoIGdsX2ZpbGUubW9kZSAmICggRl9GSUxFX1JEIHwgRl9GSUxFX1dSIHwgRl9GSUxFX0EgfCBGX0ZJTEVfUkRQIHwgRl9GSUxFX1dSUCB8IEZfRklMRV9BUCApICkgPT0gMCApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9OT1RPUEVOOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBpZiAoIHdoZW5jZSA9PSBGX1NFRUtfQ1VSICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX2ZzZWVrKCAobG9uZykoIGdsX2ZpbGUuYWJzcG9zICsgZ2xfZmlsZS5yZWxwb3MgKyBvZmZzZXQgKSApOw0KLSAgfQ0KLSAgZWxzZSBpZiAoIHdoZW5jZSA9PSBGX1NFRUtfRU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX2ZzZWVrKCAobG9uZykoIGdsX2ZpbGUuZmlsZXNpemUgKyBvZmZzZXQgKSApOw0KLSAgfQ0KLSAgZWxzZSBpZiAoIHdoZW5jZSA9PSBGX1NFRUtfU0VUICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX2ZzZWVrKCBvZmZzZXQgKTsNCi0gIH0NCi0NCi0gIHJldHVybiBGX0VSUl9OT1RVU0VBQkxFOw0KLX0gLyogZm5fc2VlayAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl90ZWxsDQotICoNCi0gKiBUZWxscyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBvcGVuZWQgZmlsZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlaGFuZGxlIC0gd2hpY2ggZmlsZSBuZWVkcyB0aGUgcG9zaXRpb24NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIHBvc2l0aW9uIGluIHRoZSBmaWxlIGZyb20gc3RhcnQNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotbG9uZyBmbl90ZWxsICggRl9GSUxFICogZiApDQotew0KLSAgaWYgKCAhZiApDQotICB7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgaWYgKCAoIGdsX2ZpbGUubW9kZSAmICggRl9GSUxFX1JEIHwgRl9GSUxFX1dSIHwgRl9GSUxFX0EgfCBGX0ZJTEVfUkRQIHwgRl9GSUxFX1dSUCB8IEZfRklMRV9BUCApICkgPT0gMCApDQotICB7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIChsb25nKSggZ2xfZmlsZS5hYnNwb3MgKyBnbF9maWxlLnJlbHBvcyApOw0KLX0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fZW9mDQotICoNCi0gKiBUZWxscyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBlbmQgb2YgZmlsZSBvciBub3QNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZmlsZWhhbmRsZSAtIHdoaWNoIGZpbGUgbmVlZHMgdGhlIGNoZWNraW5nDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiAwIC0gaWYgbm90IEVPRg0KLSAqIG90aGVyIC0gaWYgRU9GIG9yIGludmFsaWQgZmlsZSBoYW5kbGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotdW5zaWduZWQgY2hhciBmbl9lb2YgKCBGX0ZJTEUgKiBmICkNCi17DQotICBpZiAoICFmICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVE9QRU47ICAgICAgICAgIC8qaWYgZXJyb3IqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBnbF9maWxlLmFic3BvcyArIGdsX2ZpbGUucmVscG9zIDwgZ2xfZmlsZS5maWxlc2l6ZSApDQotICB7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIEZfRVJSX0VPRjsgIC8qRU9GKi8NCi19DQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX3Jld2luZA0KLSAqDQotICogc2V0IHRoZSBmaWxlcG9zaXRpb24gaW4gdGhlIG9wZW5lZCBmaWxlIHRvIHRoZSBiZWdpbmluZw0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlaGFuZGxlIC0gd2hpY2ggZmlsZSBuZWVkcyB0byBiZSByZXdpbmRlZA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogZXJyb3IgY29kZSBvciB6ZXJvIGlmIHN1Y2Nlc3NmdWwNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotdW5zaWduZWQgY2hhciBmbl9yZXdpbmQgKCBGX0ZJTEUgKiBmaWxlaGFuZGxlICkNCi17DQotICByZXR1cm4gZm5fc2VlayggZmlsZWhhbmRsZSwgMEwsIEZfU0VFS19TRVQgKTsNCi19DQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX3B1dGMNCi0gKg0KLSAqIHdyaXRlIGEgY2hhcmFjdGVyIGludG8gZmlsZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBjaCAtIHdoYXQgdG8gd3JpdGUgaW50byBmaWxlDQotICogZmlsZWhhbmRsZSAtIGZpbGUgd2hlcmUgdG8gd3JpdGUNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIHdpdGggdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzICgxLXN1Y2Nlc3MsIDAtbm90IHN1Y2Nlc3NmdWxseSkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotaW50IGZuX3B1dGMgKCBpbnQgY2gsIEZfRklMRSAqIGZpbGVoYW5kbGUgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHRtcGNoID0gKHVuc2lnbmVkIGNoYXIpY2g7DQotDQotICBpZiAoIGZuX3dyaXRlKCAmdG1wY2gsIDEsIDEsIGZpbGVoYW5kbGUgKSApDQotICB7DQotICAgIHJldHVybiBjaDsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcmV0dXJuIC0xOw0KLSAgfQ0KLX0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fZ2V0Yw0KLSAqDQotICogZ2V0IGEgY2hhcmFjdGVyIGZyb20gZmlsZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBmaWxlaGFuZGxlIC0gZmlsZSB3aGVyZSB0byByZWFkIGZyb20NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIHdpdGggdGhlIHJlYWQgY2hhcmFjdGVyIG9yIC0xIGlmIHJlYWQgd2FzIG5vdCBzdWNjZXNzZnVsbHkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50IGZuX2dldGMgKCBGX0ZJTEUgKiBmaWxlaGFuZGxlICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBjaDsNCi0NCi0gIGlmICggIWZuX3JlYWQoICZjaCwgMSwgMSwgZmlsZWhhbmRsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIC0xOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIChpbnQpY2g7DQotfQ0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9kZWxldGUNCi0gKg0KLSAqIGRlbGV0ZSBhIGZpbGUNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogZmlsZW5hbWUgLSBmaWxlIHdoaWNoIHdhbnRlZCB0byBiZSBkZWxldGVkICh3aXRoIG9yIHdpdGhvdXQgcGF0aCkNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgZm5fZGVsZXRlICggY29uc3QgY2hhciAqIGZpbGVuYW1lICkNCi17DQotICBGX1BPUyAgICAgICAgICBwb3M7DQotICBGX0RJUkVOVFJZICAgKiBkZTsNCi0gIEZfTkFNRSAgICAgICAgIGZzbmFtZTsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0NCi0gIGlmICggX2Zfc2V0ZnNuYW1lKCBmaWxlbmFtZSwgJmZzbmFtZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX0lOVkFMSUROQU1FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmludmFsaWQgbmFtZSovDQotICB9DQotDQotICBpZiAoIF9mX2NoZWNrbmFtZXdjKCBmc25hbWUuZmlsZW5hbWUsIGZzbmFtZS5maWxlZXh0ICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRE5BTUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qaW52YWxpZCBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggZnNuYW1lLmZpbGVuYW1lWzBdID09ICcuJyApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9OT1RGT1VORDsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX2dldHZvbHVtZSgpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgaWYgKCAhKCBfZl9maW5kcGF0aCggJmZzbmFtZSwgJnBvcyApICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRERJUjsNCi0gIH0NCi0NCi0gIGlmICggIV9mX2ZpbmRmaWxld2MoIGZzbmFtZS5maWxlbmFtZSwgZnNuYW1lLmZpbGVleHQsICZwb3MsICZkZSwgMCApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVEZPVU5EOw0KLSAgfQ0KLQ0KLSAgaWYgKCBkZS0+YXR0ciAmIEZfQVRUUl9ESVIgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRERJUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qZGlyZWN0b3J5Ki8NCi0gIH0NCi0NCi0gIGlmICggZGUtPmF0dHIgJiBGX0FUVFJfUkVBRE9OTFkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfQUNDRVNTREVOSUVEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypyZWFkb25seSovDQotICB9DQotDQotICBpZiAoICggZ2xfZmlsZS5tb2RlICE9IEZfRklMRV9DTE9TRSApICYmICggZ2xfZmlsZS5kaXJwb3Muc2VjdG9yID09IHBvcy5zZWN0b3IgKSAmJiAoIGdsX2ZpbGUuZGlycG9zLnBvcyA9PSBwb3MucG9zICkgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTE9DS0VEOw0KLSAgfQ0KLQ0KLSAgZGUtPm5hbWVbMF0gPSAodW5zaWduZWQgY2hhcikweGU1OyAvKnJlbW92ZXMgaXQqLw0KLSAgcmV0ID0gX2Zfd3JpdGVnbHNlY3RvciggKHVuc2lnbmVkIGxvbmcpLTEgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIHJldDsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX3JlbW92ZWNoYWluKCBfZl9nZXRkZWNsdXN0ZXIoIGRlICkgKTsNCi0NCi0gI2lmIEZfRklMRV9DSEFOR0VEX0VWRU5UDQotICBpZiAoIGZfZmlsZWNoYW5nZWRldmVudCAmJiAhcmV0ICkNCi0gIHsNCi0gICAgU1RfRklMRV9DSEFOR0VEICBmYzsNCi0gICAgZmMuYWN0aW9uID0gRkFDVElPTl9SRU1PVkVEOw0KLSAgICBmYy5mbGFncyA9IEZGTEFHU19GSUxFX05BTUU7DQotDQotICAgIGlmICggIV9mX2NyZWF0ZWZ1bGxuYW1lKCBmYy5maWxlbmFtZSwgc2l6ZW9mKCBmYy5maWxlbmFtZSApLCBmc25hbWUucGF0aCwgZnNuYW1lLmZpbGVuYW1lLCBmc25hbWUuZmlsZWV4dCApICkNCi0gICAgew0KLSAgICAgIGZfZmlsZWNoYW5nZWRldmVudCggJmZjICk7DQotICAgIH0NCi0gIH0NCi0NCi0gI2VuZGlmDQotDQotICByZXR1cm4gcmV0Ow0KLX0gLyogZm5fZGVsZXRlICovDQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX3NldGVvZg0KLSAqDQotICogU2V0IGVuZCBvZiBmaWxlDQotICoNCi0gKiBJTlBVVDoJZiAtIGZpbGUgcG9pbnRlcg0KLSAqCQlmaWxlc2l6ZSAtIHJlcXVpcmVkIG5ldyBzaXplDQotICogUkVUVVJOOglGX05PX0VSUk9SIC0gb24gc3VjY2Vzcw0KLSAqCQlvdGhlciBpZiBlcnJvcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX3NldGVvZiAoIEZfRklMRSAqIGYsIGxvbmcgZmlsZXNpemUgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjID0gRl9OT19FUlJPUjsNCi0NCi0gIGlmICggIWYgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfTk9UT1BFTjsgICAgICAgIC8qaWYgZXJyb3IqLw0KLSAgfQ0KLQ0KLSAgaWYgKCAoIHVuc2lnbmVkIGxvbmcpIGZpbGVzaXplIDwgZ2xfZmlsZS5maWxlc2l6ZSApDQotICB7DQotICAgIHJjID0gX2ZfZnNlZWsoIGZpbGVzaXplICk7DQotICAgIGlmICggcmMgPT0gRl9OT19FUlJPUiApDQotICAgIHsNCi0gICAgICB1bnNpZ25lZCBsb25nICBjbHVzdGVyOw0KLSAgICAgIHJjID0gX2ZfZ2V0Y2x1c3RlcnZhbHVlKCBnbF9maWxlLnBvcy5jbHVzdGVyLCAmY2x1c3RlciApOw0KLSAgICAgIGlmICggcmMgPT0gRl9OT19FUlJPUiApDQotICAgICAgew0KLSAgICAgICAgaWYgKCBjbHVzdGVyICE9IEZfQ0xVU1RFUl9MQVNUICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmMgPSBfZl9yZW1vdmVjaGFpbiggY2x1c3RlciApOw0KLSAgICAgICAgICBpZiAoIHJjICkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIHJldHVybiByYzsNCi0gICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICByYyA9IF9mX3NldGNsdXN0ZXJ2YWx1ZSggZ2xfZmlsZS5wb3MuY2x1c3RlciwgRl9DTFVTVEVSX0xBU1QgKTsNCi0gICAgICAgICAgaWYgKCByYyApDQotICAgICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gcmM7DQotICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgcmMgPSBfZl93cml0ZWZhdHNlY3RvcigpOw0KLSAgICAgICAgICBpZiAoIHJjICkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgIHJldHVybiByYzsNCi0gICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZ2xfZmlsZS5maWxlc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZpbGVzaXplOw0KLSAgICAgIH0NCi0gICAgfQ0KLSAgfQ0KLSAgZWxzZSBpZiAoICh1bnNpZ25lZCBsb25nKSBmaWxlc2l6ZSA+IGdsX2ZpbGUuZmlsZXNpemUgKQ0KLSAgew0KLSAgICByYyA9IF9mX2ZzZWVrKCBmaWxlc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0gLyogX2Zfc2V0ZW9mICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX3NldGVvZg0KLSAqDQotICogU2V0IGVuZCBvZiBmaWxlDQotICoNCi0gKiBJTlBVVDoJZiAtIGZpbGUgcG9pbnRlcg0KLSAqCQlmaWxlc2l6ZSAtIHJlcXVpcmVkIG5ldyBzaXplDQotICogUkVUVVJOOglGX05PX0VSUk9SIC0gb24gc3VjY2Vzcw0KLSAqCQlvdGhlciBpZiBlcnJvcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX3NldGVvZiAoIEZfRklMRSAqIGYgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjID0gRl9OT19FUlJPUjsNCi0NCi0gIHJjID0gX2Zfc2V0ZW9mKCBmLCAoIGdsX2ZpbGUuYWJzcG9zICsgZ2xfZmlsZS5yZWxwb3MgKSApOw0KLQ0KLSAgcmV0dXJuIHJjOw0KLX0gLyogZm5fc2V0ZW9mICovDQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX3RydW5jYXRlDQotICoNCi0gKiBPcGVuIGEgZmlsZSBhbmQgc2V0IGVuZCBvZiBmaWxlDQotICoNCi0gKiBJTlBVVDoJZmlsZW5hbWUgLSBuYW1lIG9mIHRoZSBmaWxlDQotICoJCWZpbGVzaXplIC0gcmVxdWlyZWQgbmV3IHNpemUNCi0gKiBSRVRVUk46CU5VTEwgb24gZXJyb3IsIG90aGVyd2lzZSBmaWxlIHBvaW50ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotRl9GSUxFICogZm5fdHJ1bmNhdGUgKCBjb25zdCBjaGFyICogZmlsZW5hbWUsIGxvbmcgZmlsZXNpemUgKQ0KLXsNCi0gIEZfRklMRSAgICAgICAqIGYgPSBmbl9vcGVuKCBmaWxlbmFtZSwgInIrIiApOw0KLSAgdW5zaWduZWQgY2hhciAgcmM7DQotDQotICBpZiAoIGYgIT0gTlVMTCApDQotICB7DQotICAgIHJjID0gX2ZfZnNlZWsoIChsb25nKWdsX2ZpbGUuZmlsZXNpemUgKTsNCi0gICAgaWYgKCByYyA9PSBGX05PX0VSUk9SICkNCi0gICAgew0KLSAgICAgIHJjID0gX2Zfc2V0ZW9mKCBmLCBmaWxlc2l6ZSApOw0KLSAgICB9DQotDQotICAgIGlmICggcmMgKQ0KLSAgICB7DQotICAgICAgZm5fY2xvc2UoIGYgKTsNCi0gICAgICBmID0gTlVMTDsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIGY7DQotfSAvKiBmbl90cnVuY2F0ZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vZmlsZS5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9maWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NjA5M2YuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi9maWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX19GSUxFX0gNCi0jZGVmaW5lIF9fRklMRV9IDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgRl9GSUxFX0NMT1NFIDB4MDANCi0jZGVmaW5lIEZfRklMRV9SRCAgICAweDAxDQotI2RlZmluZSBGX0ZJTEVfV1IgICAgMHgwMg0KLSNkZWZpbmUgRl9GSUxFX0EgICAgIDB4MDQNCi0jZGVmaW5lIEZfRklMRV9SRFAgICAweDA4DQotI2RlZmluZSBGX0ZJTEVfV1JQICAgMHgxMA0KLSNkZWZpbmUgRl9GSUxFX0FQICAgIDB4MjANCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfX0ZJTEVfSCAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdXRpbC5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ODQyYTguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaW5jbHVkZSAiLi4vLi4vYXBpL2ZhdF9zbC5oIg0KLSNpbmNsdWRlICIuLi8uLi9wc3AvaW5jbHVkZS9wc3BfcnRjLmgiDQotI2luY2x1ZGUgImRpci5oIg0KLQ0KLSNpbmNsdWRlICJ1dGlsLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9nZXR3b3JkDQotICoNCi0gKiBnZXQgYSB3b3JkIDE2Yml0IG51bWJlciBmcm9tIGEgbWVtb3J5IChpdCB1c2VzIExJVFRMRSBFTkRJQU4gbW9kZSBhbHdheXMpDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIHB0ciAtIHBvaW50ZXIgd2hlcmUgZGF0YSBpcw0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogd29yZCBudW1iZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgc2hvcnQgX2ZfZ2V0d29yZCAoIHZvaWQgKiBwdHIgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgKiBzcHRyID0gKHVuc2lnbmVkIGNoYXIgKilwdHI7DQotICB1bnNpZ25lZCBzaG9ydCAgcmV0Ow0KLQ0KLSAgcmV0ID0gKHVuc2lnbmVkIHNob3J0KSggc3B0clsxXSAmIDB4ZmYgKTsNCi0gIHJldCA8PD0gODsNCi0gIHJldCB8PSAoIHNwdHJbMF0gJiAweGZmICk7DQotICByZXR1cm4gcmV0Ow0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2Zfc2V0d29yZA0KLSAqDQotICogc2V0IGEgd29yZCAxNmJpdCBudW1iZXIgaW50byBhIG1lbW9yeSAoaXQgdXNlcyBMSVRUTEUgRU5ESUFOIG1vZGUgYWx3YXlzKQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBwdHIgLSB3aGVyZSB0byBzdG9yZSBkYXRhDQotICogbnVtIC0gMTYgYml0IG51bWJlciB0byBzdG9yZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIF9mX3NldHdvcmQgKCB2b2lkICogcHRyLCB1bnNpZ25lZCBzaG9ydCBudW0gKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgKiBzcHRyID0gKHVuc2lnbmVkIGNoYXIgKilwdHI7DQotDQotICBzcHRyWzFdID0gKHVuc2lnbmVkIGNoYXIpKCBudW0gPj4gOCApOw0KLSAgc3B0clswXSA9ICh1bnNpZ25lZCBjaGFyKSggbnVtICk7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9nZXRsb25nDQotICoNCi0gKiBnZXQgYSBsb25nIDMyYml0IG51bWJlciBmcm9tIGEgbWVtb3J5IChpdCB1c2VzIExJVFRMRSBFTkRJQU4gbW9kZSBhbHdheXMpDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIHB0ciAtIHBvaW50ZXIgd2hlcmUgZGF0YSBpcw0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogbG9uZyBudW1iZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgbG9uZyBfZl9nZXRsb25nICggdm9pZCAqIHB0ciApDQotew0KLSAgdW5zaWduZWQgY2hhciAqIHNwdHIgPSAodW5zaWduZWQgY2hhciAqKXB0cjsNCi0gIHVuc2lnbmVkIGxvbmcgICByZXQ7DQotDQotICByZXQgPSAodW5zaWduZWQgbG9uZykoIHNwdHJbM10gJiAweGZmICk7DQotICByZXQgPDw9IDg7DQotICByZXQgfD0gKCBzcHRyWzJdICYgMHhmZiApOw0KLSAgcmV0IDw8PSA4Ow0KLSAgcmV0IHw9ICggc3B0clsxXSAmIDB4ZmYgKTsNCi0gIHJldCA8PD0gODsNCi0gIHJldCB8PSAoIHNwdHJbMF0gJiAweGZmICk7DQotICByZXR1cm4gcmV0Ow0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2Zfc2V0bG9uZw0KLSAqDQotICogc2V0IGEgbG9uZyAzMmJpdCBudW1iZXIgaW50byBhIG1lbW9yeSAoaXQgdXNlcyBMSVRUTEUgRU5ESUFOIG1vZGUgYWx3YXlzKQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBwdHIgLSB3aGVyZSB0byBzdG9yZSBkYXRhDQotICogbnVtIC0gMzIgYml0IG51bWJlciB0byBzdG9yZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIF9mX3NldGxvbmcgKCB2b2lkICogcHRyLCB1bnNpZ25lZCBsb25nIG51bSApDQotew0KLSAgdW5zaWduZWQgY2hhciAqIHNwdHIgPSAodW5zaWduZWQgY2hhciAqKXB0cjsNCi0NCi0gIHNwdHJbM10gPSAodW5zaWduZWQgY2hhcikoIG51bSA+PiAyNCApOw0KLSAgc3B0clsyXSA9ICh1bnNpZ25lZCBjaGFyKSggbnVtID4+IDE2ICk7DQotICBzcHRyWzFdID0gKHVuc2lnbmVkIGNoYXIpKCBudW0gPj4gOCApOw0KLSAgc3B0clswXSA9ICh1bnNpZ25lZCBjaGFyKSggbnVtICk7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfc2V0Y2hhcnplcm8NCi0gKg0KLSAqIGZpbGxzIHdpdGggemVybyBjaGFyYXRlciB0byBtZW1vcnkNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogbnVtIC0gbnVtYmVyIG9mIGNoYXJhY3RlcnMNCi0gKiBwdHIgLSB3aGVyZSB0byBzdG9yZSBkYXRhDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBsYXN0IHdyaXRlIHBvc2l0aW9uDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgKiBfc2V0Y2hhcnplcm8gKCBpbnQgbnVtLCB1bnNpZ25lZCBjaGFyICogcHRyICkNCi17DQotICB3aGlsZSAoIG51bS0tICkNCi0gIHsNCi0gICAgKnB0cisrID0gMDsNCi0gIH0NCi0NCi0gIHJldHVybiBwdHI7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfc2V0Y2hhcg0KLSAqDQotICogY29weSBhIGNoYXJhdGVyIHN0cmluZyB0byBtZW1vcnkNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogYXJyYXkgLSBvcmlnaW5hbCBjb2RlIHdoYXQgdG8gY29weQ0KLSAqIG51bSAtIG51bWJlciBvZiBjaGFyYWN0ZXJzDQotICogcHRyIC0gd2hlcmUgdG8gc3RvcmUgZGF0YQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogbGFzdCB3cml0ZSBwb3NpdGlvbg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyICogX3NldGNoYXIgKCBjb25zdCB1bnNpZ25lZCBjaGFyICogYXJyYXksIGludCBudW0sIHVuc2lnbmVkIGNoYXIgKiBwdHIgKQ0KLXsNCi0gIGlmICggIWFycmF5ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9zZXRjaGFyemVybyggbnVtLCBwdHIgKTsNCi0gIH0NCi0NCi0gIHdoaWxlICggbnVtLS0gKQ0KLSAgew0KLSAgICAqcHRyKysgPSAqYXJyYXkrKzsNCi0gIH0NCi0NCi0gIHJldHVybiBwdHI7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfc2V0d29yZA0KLSAqDQotICogc3RvcmUgYSAxNmJpdCB3b3JkIGludG8gbWVtb3J5DQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIG51bSAtIDE2Yml0IG51bWJlciB0byBzdG9yZQ0KLSAqIHB0ciAtIHdoZXJlIHRvIHN0b3JlIGRhdGENCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGxhc3Qgd3JpdGUgcG9zaXRpb24NCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciAqIF9zZXR3b3JkICggdW5zaWduZWQgc2hvcnQgbnVtLCB1bnNpZ25lZCBjaGFyICogcHRyICkNCi17DQotICBfZl9zZXR3b3JkKCBwdHIsIG51bSApOw0KLSAgcmV0dXJuIHB0ciArIDI7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfc2V0bG9uZw0KLSAqDQotICogc3RvcmUgYSAzMmJpdCBsb25nIG51bWJlciBpbnRvIG1lbW9yeQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBudW0gLSAzMmJpdCBudW1iZXIgdG8gc3RvcmUNCi0gKiBwdHIgLSB3aGVyZSB0byBzdG9yZSBkYXRhDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBsYXN0IHdyaXRlIHBvc2l0aW9uDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgKiBfc2V0bG9uZyAoIHVuc2lnbmVkIGxvbmcgbnVtLCB1bnNpZ25lZCBjaGFyICogcHRyICkNCi17DQotICBfZl9zZXRsb25nKCBwdHIsIG51bSApOw0KLSAgcmV0dXJuIHB0ciArIDQ7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl90b3VwcGVyDQotICoNCi0gKiBjb252ZXJ0IGEgc3RyaW5nIGludG8gbG93ZXIgY2FzZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBzIC0gaW5wdXQgc3RyaW5nIHRvIGNvbnZlcnQNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotY2hhciBfZl90b3VwcGVyICggY2hhciBjaCApDQotew0KLSAgaWYgKCAoIGNoID49ICdhJyApICYmICggY2ggPD0gJ3onICkgKQ0KLSAgew0KLSAgICByZXR1cm4gKGNoYXIpKCBjaCAtICdhJyArICdBJyApOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIGNoOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZl9pZ2V0dGltZWRhdGUNCi0gKg0KLSAqIElOUFVUUw0KLSAqICAgIHRpbWUgLSBwb2ludGVyIHRvIHRpbWUgdmFyaWFibGUNCi0gKiAgICBkYXRlIC0gcG9pbnRlciB0byBkYXRlIHZhcmlhYmxlDQotICogT1VUUFVUUw0KLSAqICAgIHRpbWUgLSBjdXJyZW50IHRpbWUNCi0gKiAgICBkYXRlIC0gY3VycmVudCBkYXRlDQotICoNCi0gKiBSRVRVUk5TDQotICogICAgbm9uZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIGZfaWdldHRpbWVkYXRlICggdW5zaWduZWQgc2hvcnQgKiB0aW1lLCB1bnNpZ25lZCBzaG9ydCAqIGRhdGUgKQ0KLXsNCi0gIHRfcHNwX3RpbWVkYXRlICBzX3RpbWVkYXRlOw0KLQ0KLSAgcHNwX2dldGN1cnJlbnR0aW1lZGF0ZSggJnNfdGltZWRhdGUgKTsNCi0NCi0gICp0aW1lID0gKCAoICh1aW50MTZfdClzX3RpbWVkYXRlLmhvdXIgPDwgRl9DVElNRV9IT1VSX1NISUZUICkgJiBGX0NUSU1FX0hPVVJfTUFTSyApDQotICAgICAgICAgIHwgKCAoICh1aW50MTZfdClzX3RpbWVkYXRlLm1pbiA8PCBGX0NUSU1FX01JTl9TSElGVCApICAmIEZfQ1RJTUVfTUlOX01BU0sgKQ0KLSAgICAgICAgICB8ICggKCAoICh1aW50MTZfdClzX3RpbWVkYXRlLnNlYyA+PiAxICkgPDwgRl9DVElNRV9TRUNfU0hJRlQgKSAgJiBGX0NUSU1FX1NFQ19NQVNLICk7DQotDQotICAqZGF0ZSA9ICggKCAoIHNfdGltZWRhdGUueWVhciAtIDE5ODAgKSA8PCBGX0NEQVRFX1lFQVJfU0hJRlQgKSAmIEZfQ0RBVEVfWUVBUl9NQVNLICkNCi0gICAgICAgICAgfCAoICggKHVpbnQxNl90KXNfdGltZWRhdGUubW9udGggPDwgRl9DREFURV9NT05USF9TSElGVCApICYgRl9DREFURV9NT05USF9NQVNLICkNCi0gICAgICAgICAgfCAoICggKHVpbnQxNl90KXNfdGltZWRhdGUuZGF5IDw8IEZfQ0RBVEVfREFZX1NISUZUICkgJiBGX0NEQVRFX0RBWV9NQVNLICk7DQotDQotICByZXR1cm47DQotfQ0KLQ0KLQ0KLQ0KLQ0KLQ0KLQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdXRpbC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZmQ4YWMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX19VVElMX0gNCi0jZGVmaW5lIF9fVVRJTF9IDQotDQotI2luY2x1ZGUgInV0aWxfc2ZuLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLXZvaWQgZl9pZ2V0dGltZWRhdGUgKCB1bnNpZ25lZCBzaG9ydCAqIHRpbWUsIHVuc2lnbmVkIHNob3J0ICogZGF0ZSApOw0KLQ0KLXVuc2lnbmVkIHNob3J0IF9mX2dldHdvcmQgKCB2b2lkICogKTsNCi11bnNpZ25lZCBsb25nIF9mX2dldGxvbmcgKCB2b2lkICogKTsNCi1jaGFyIF9mX3RvdXBwZXIgKCBjaGFyICk7DQotdm9pZCBfZl9tZW1zZXQgKCB2b2lkICosIHVuc2lnbmVkIGNoYXIsIGludCApOw0KLXZvaWQgX2ZfbWVtY3B5ICggdm9pZCAqLCB2b2lkICosIGludCApOw0KLQ0KLXZvaWQgX2Zfc2V0d29yZCAoIHZvaWQgKiwgdW5zaWduZWQgc2hvcnQgKTsNCi12b2lkIF9mX3NldGxvbmcgKCB2b2lkICosIHVuc2lnbmVkIGxvbmcgKTsNCi11bnNpZ25lZCBjaGFyICogX3NldGNoYXJ6ZXJvICggaW50LCB1bnNpZ25lZCBjaGFyICogKTsNCi11bnNpZ25lZCBjaGFyICogX3NldGNoYXIgKCBjb25zdCB1bnNpZ25lZCBjaGFyICosIGludCwgdW5zaWduZWQgY2hhciAqICk7DQotdW5zaWduZWQgY2hhciAqIF9zZXR3b3JkICggdW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGNoYXIgKiApOw0KLXVuc2lnbmVkIGNoYXIgKiBfc2V0bG9uZyAoIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIgKiApOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9fVVRJTF9IICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsX3Nmbi5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi91dGlsX3Nmbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWM2NGJiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdXRpbF9zZm4uYworKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpbmNsdWRlICIuLi8uLi9hcGkvZmF0X3NsLmgiDQotDQotI2luY2x1ZGUgInV0aWwuaCINCi0NCi0jaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2NoZWNrbmFtZXByaW0NCi0gKg0KLSAqIGNoZWNraW5nIGEgc3RyaW5nIGlmIGNvdWxkIGJlIHZhbGlkDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIHB0ciAtIHBvaW50ZXIgdG8gbmFtZSBvciBleHRlbnNpb24NCi0gKiBsZW4gLSBudW1iZXIgbWF4IGNoYXIgb2YgbmFtZSBvciBleHRlbnNpb24NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgX2ZfY2hlY2tuYW1lcHJpbSAoIGNoYXIgKiBwdHIsIHVuc2lnbmVkIGNoYXIgbGVuICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBpbnNwYWNlID0gMDsNCi0NCi0gIHdoaWxlICggbGVuLS0gKQ0KLSAgew0KLSAgICBjaGFyICBjaCA9ICpwdHIrKzsNCi0gICAgaWYgKCAhaW5zcGFjZSApDQotICAgIHsNCi0gICAgICBpZiAoIGNoID09ICcgJyApDQotICAgICAgew0KLSAgICAgICAgaW5zcGFjZSA9IDE7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggKCBjaCA9PSAnfCcgKSB8fCAoIGNoID09ICdbJyApIHx8ICggY2ggPT0gJ10nICkgfHwgKCBjaCA9PSAnPCcgKSB8fCAoIGNoID09ICc+JyApIHx8ICggY2ggPT0gJy8nICkgfHwgKCBjaCA9PSAnXFwnICkgfHwgKCBjaCA9PSAnOicgKSApDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuIDE7DQotICAgICAgfQ0KLSAgICB9DQotICAgIGVsc2UgaWYgKCBjaCAhPSAnICcgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgLypubyBpbnNwYWNlIGFsbG93ZWQqLw0KLSAgICB9DQotICB9DQotDQotICByZXR1cm4gMDsNCi19IC8qIF9mX2NoZWNrbmFtZXByaW0gKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfY2hlY2tuYW1lDQotICoNCi0gKiBjaGVja2luZyBmaWxlbmFtZSBhbmQgZXh0ZW5zaW9uIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMNCi0gKg0KLSAqIElOUFVUUw0KLSAqDQotICogbmFtZSAtIGZpbGVuYW1lIChlLmcuOiBmaWxlbmFtZSkNCi0gKiBleHQgLSBleHRlbnNpb24gb2YgZmlsZSAoZS5nLjogdHh0KQ0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogMCAtIGlmIG5vIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyDQotICogb3RoZXIgLSBpZiBjb250YWlucyBhbnkgaW52YWxpZCBjaGFyYWN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl9jaGVja25hbWUgKCBjaGFyICogbmFtZSwgY2hhciAqIGV4dCApDQotew0KLSAgaWYgKCBfZl9jaGVja25hbWVwcmltKCBuYW1lLCBGX01BWE5BTUUgKSApDQotICB7DQotICAgIHJldHVybiAxOw0KLSAgfQ0KLQ0KLSAgaWYgKCBfZl9jaGVja25hbWVwcmltKCBleHQsIEZfTUFYRVhUICkgKQ0KLSAgew0KLSAgICByZXR1cm4gMTsNCi0gIH0NCi0NCi0gIHJldHVybiAwOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfY2hlY2tuYW1ld2MNCi0gKg0KLSAqIGNoZWNraW5nIGZpbGVuYW1lIGFuZCBleHRlbnNpb24gZm9yIHdpbGRjYXJkIGNoYXJhY3Rlcg0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBuYW1lIC0gZmlsZW5hbWUgKGUuZy46IGZpbGVuYW1lKQ0KLSAqIGV4dCAtIGV4dGVuc2lvbiBvZiBmaWxlIChlLmcuOiB0eHQpDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiAwIC0gaWYgbm8gY29udGFpbnMgd2lsZGNhcmQgY2hhcmFjdGVyICg/IG9yICopDQotICogb3RoZXIgLSBpZiBjb250YWlucyBhbnkgd2lsZGNhcmQgY2hhcmFjdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgX2ZfY2hlY2tuYW1ld2MgKCBjb25zdCBjaGFyICogbmFtZSwgY29uc3QgY2hhciAqIGV4dCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgYSA9IDA7DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWE5BTUUgOyBhKysgKQ0KLSAgew0KLSAgICBjaGFyICBjaCA9IG5hbWVbYV07DQotICAgIGlmICggKCBjaCA9PSAnPycgKSB8fCAoIGNoID09ICcqJyApICkNCi0gICAgew0KLSAgICAgIHJldHVybiAxOw0KLSAgICB9DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWEVYVCA7IGErKyApDQotICB7DQotICAgIGNoYXIgIGNoID0gZXh0W2FdOw0KLSAgICBpZiAoICggY2ggPT0gJz8nICkgfHwgKCBjaCA9PSAnKicgKSApDQotICAgIHsNCi0gICAgICByZXR1cm4gMTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIF9mX2NoZWNrbmFtZSggKGNoYXIgKiluYW1lLCAoY2hhciAqKWV4dCApOw0KLX0gLyogX2ZfY2hlY2tuYW1ld2MgKi8NCi0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2Zfc2V0bmFtZWV4dA0KLSAqDQotICogY29udmVydCBhIHN0cmluZyBpbnRvIGZpbGVuYW1lIGFuZCBleHRlbnNpb24gc2VwYXJhdGVsbHksIHRoZSB0ZXJtaW5hdG9yDQotICogY2hhcmFjdGVyIGNvdWxkIGJlIHplcm8gY2hhciwgJy8nIG9yICdcJw0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBzIC0gc291cmNlIHN0cmluZyAoZS5nLjogaGVsbG8udHh0KQ0KLSAqIG5hbWUgLSB3aGVyZSB0byBzdG9yZSBuYW1lICh0aGlzIGFycmF5IHNpemUgaGFzIHRvIGJlIEZfTUFYTkFNRSAoOCkpDQotICogZXh0IC0gd2hlcmUgdG8gc3RvcmUgZXh0ZW5zaW9uICh0aGlzIGFycmF5IHNpemUgaGFzIHRvIGJlIEZfTUFYRVhUICgzKSkNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGxlbmd0aCBvZiB0aGUgdXNlZCBieXRlcyBmcm9tIHNvdXJjZSBzdHJpbmcgYXJyYXkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdW5zaWduZWQgY2hhciBfZl9zZXRuYW1lZXh0ICggY2hhciAqIHMsIGNoYXIgKiBuYW1lLCBjaGFyICogZXh0ICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBsZW4sIGV4dGxlbiA9IDA7DQotICB1bnNpZ25lZCBjaGFyICBhOw0KLSAgdW5zaWduZWQgY2hhciAgc2V0ZXh0ID0gMTsNCi0NCi0gIGZvciAoIGxlbiA9IDAgOyA7ICkNCi0gIHsNCi0gICAgdW5zaWduZWQgY2hhciAgY2ggPSBzW2xlbl07DQotICAgIGlmICggKCBjaCA9PSAwICkgfHwgKCBjaCA9PSAnXFwnICkgfHwgKCBjaCA9PSAnLycgKSApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICBsZW4rKzsgICAgICAgICAgICAgICAgICAgICAgLypjYWxjdWxhdGUgbGVuKi8NCi0gIH0NCi0NCi0gIGlmICggbGVuICYmICggc1swXSA9PSAnLicgKSApDQotICB7DQotLyoJCWlmIChsZW49PTEgfHwgKHNbMV09PScuJyAmJiBsZW49PTIpKSBnb3RvIGRvdHM7CQkqLw0KLSAgICBpZiAoICggbGVuID09IDEgKSB8fCAoIHNbMV0gPT0gJy4nICkgKQ0KLSAgICB7DQotICAgICAgZ290byBkb3RzOw0KLSAgICB9DQotICB9DQotDQotICBmb3IgKCBhID0gbGVuIDsgYSA7IGEtLSApDQotICB7DQotICAgIGlmICggc1thIC0gMV0gPT0gJy4nICkNCi0gICAgew0KLSAgICAgIHVuc2lnbmVkIGNoYXIgIGI7DQotDQotICAgICAgZXh0bGVuID0gKHVuc2lnbmVkIGNoYXIpKCBsZW4gLSBhICsgMSApOw0KLSAgICAgIGxlbiA9ICh1bnNpZ25lZCBjaGFyKSggYSAtIDEgKTsNCi0NCi0gICAgICBmb3IgKCBiID0gMCA7IGIgPCBGX01BWEVYVCA7IGIrKyApDQotICAgICAgew0KLSAgICAgICAgaWYgKCBiIDwgZXh0bGVuIC0gMSApDQotICAgICAgICB7DQotICAgICAgICAgIGV4dFtiXSA9IF9mX3RvdXBwZXIoIHNbYSsrXSApOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICBleHRbYl0gPSAnICc7DQotICAgICAgICB9DQotICAgICAgfQ0KLQ0KLSAgICAgIHNldGV4dCA9IDA7DQotICAgICAgYnJlYWs7DQotICAgIH0NCi0gIH0NCi0NCi1kb3RzOg0KLSAgaWYgKCBzZXRleHQgKQ0KLSAgew0KLSAgICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWEVYVCA7IGErKyApDQotICAgIHsNCi0gICAgICBleHRbYV0gPSAnICc7DQotICAgIH0NCi0gIH0NCi0NCi0gIGZvciAoIGEgPSAwIDsgYSA8IEZfTUFYTkFNRSA7IGErKyApDQotICB7DQotICAgIGlmICggYSA8IGxlbiApDQotICAgIHsNCi0gICAgICBuYW1lW2FdID0gX2ZfdG91cHBlciggc1thXSApOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgIG5hbWVbYV0gPSAnICc7DQotICAgIH0NCi0gIH0NCi0NCi0gIHJldHVybiAodW5zaWduZWQgY2hhcikoIGxlbiArIGV4dGxlbiApOw0KLX0gLyogX2Zfc2V0bmFtZWV4dCAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9zZXRmc25hbWUNCi0gKg0KLSAqIGNvbnZlcnQgYSBzaW5nbGUgc3RyaW5nIGludG8gRl9OQU1FIHN0cnVjdHVyZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBuYW1lIC0gY29tYmluZWQgbmFtZSB3aXRoIGRyaXZlLHBhdGgsZmlsZW5hbWUsZXh0ZW5zaW9uIHVzZWQgZm9yIHNvdXJjZQ0KLSAqIGZzbmFtZSAtIHdoZXJlIHRvIGZpbGwgdGhpcyBzdHJ1Y3R1cmUgd2l0aCBzZXBhcmF0ZWQgZHJpdmUscGF0aCxuYW1lLGV4dA0KLSAqDQotICogUkVUVVJOUw0KLSAqDQotICogMCAtIGlmIHN1Y2Nlc3NmdWxseQ0KLSAqIG90aGVyIC0gaWYgbmFtZSBjb250YWlucyBpbnZhbGlkIHBhdGggb3IgbmFtZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX3NldGZzbmFtZSAoIGNvbnN0IGNoYXIgKiBuYW1lLCBGX05BTUUgKiBmc25hbWUgKQ0KLXsNCi0gIGNoYXIgICAgICAgICAgIHNbRl9NQVhQQVRIXTsNCi0gIHVuc2lnbmVkIGNoYXIgIG5hbWVwb3MgPSAwOw0KLQ0KLSAgdW5zaWduZWQgY2hhciAgcGF0aHBvcyA9IDA7DQotICB1bnNpZ25lZCBjaGFyICBhOw0KLQ0KLSAgc1swXSA9IDA7DQotDQotICBpZiAoICFuYW1lWzBdICkNCi0gIHsNCi0gICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgLypubyBuYW1lKi8NCi0gIH0NCi0NCi0gIGlmICggbmFtZVsxXSA9PSAnOicgKQ0KLSAgew0KLSAgICBuYW1lICs9IDI7DQotICB9DQotDQotICBpZiAoICggbmFtZVswXSAhPSAnLycgKSAmJiAoIG5hbWVbMF0gIT0gJ1xcJyApICkNCi0gIHsNCi0gICAgaWYgKCBmbl9nZXRjd2QoIGZzbmFtZS0+cGF0aCwgRl9NQVhQQVRILCAwICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmVycm9yKi8NCi0gICAgfQ0KLQ0KLSAgICBmb3IgKCBwYXRocG9zID0gMCA7IGZzbmFtZS0+cGF0aFtwYXRocG9zXSA7ICkNCi0gICAgew0KLSAgICAgIHBhdGhwb3MrKzsNCi0gICAgfQ0KLSAgfQ0KLQ0KLQ0KLSAgZm9yICggOyA7ICkNCi0gIHsNCi0gICAgY2hhciAgY2ggPSBfZl90b3VwcGVyKCAqbmFtZSsrICk7DQotDQotICAgIGlmICggIWNoICkNCi0gICAgew0KLSAgICAgIGJyZWFrOw0KLSAgICB9DQotDQotICAgIGlmICggY2ggPT0gJzonICkNCi0gICAgew0KLSAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAvKm5vdCBhbGxvd2VkKi8NCi0gICAgfQ0KLQ0KLSAgICBpZiAoICggY2ggPT0gJy8nICkgfHwgKCBjaCA9PSAnXFwnICkgKQ0KLSAgICB7DQotICAgICAgaWYgKCBwYXRocG9zICkNCi0gICAgICB7DQotICAgICAgICBpZiAoIGZzbmFtZS0+cGF0aFtwYXRocG9zIC0gMV0gPT0gJy8nICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5vdCBhbGxvd2VkIGRvdWJsZSAqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgaWYgKCBwYXRocG9zID49IEZfTUFYUEFUSCAtIDIgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnBhdGggdG9vIGxvbmcqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZnNuYW1lLT5wYXRoW3BhdGhwb3MrK10gPSAnLyc7DQotICAgICAgfQ0KLQ0KLSAgICAgIGZvciAoIDsgbmFtZXBvcyA7ICkNCi0gICAgICB7DQotICAgICAgICBpZiAoIHNbbmFtZXBvcyAtIDFdICE9ICcgJyApDQotICAgICAgICB7DQotICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgbmFtZXBvcy0tOyAgICAgICAgICAgICAgICAvKnJlbW92ZSBlbmQgc3BhY2VzKi8NCi0gICAgICB9DQotDQotICAgICAgZm9yICggYSA9IDAgOyBhIDwgbmFtZXBvcyA7IGErKyApDQotICAgICAgew0KLSAgICAgICAgaWYgKCBwYXRocG9zID49IEZfTUFYUEFUSCAtIDIgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnBhdGggdG9vIGxvbmcqLw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZnNuYW1lLT5wYXRoW3BhdGhwb3MrK10gPSBzW2FdOw0KLSAgICAgIH0NCi0NCi0gICAgICBuYW1lcG9zID0gMDsNCi0gICAgICBjb250aW51ZTsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoICggY2ggPT0gJyAnICkgJiYgKCAhbmFtZXBvcyApICkNCi0gICAgew0KLSAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qcmVtb3ZlIHN0YXJ0IHNwYWNlcyovDQotICAgIH0NCi0NCi0gICAgaWYgKCBuYW1lcG9zID49ICggc2l6ZW9mKCBzICkgLSAyICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbmFtZSB0b28gbG9uZyovDQotICAgIH0NCi0NCi0gICAgc1tuYW1lcG9zKytdID0gY2g7DQotICB9DQotDQotICBzW25hbWVwb3NdID0gMDsgLyp0ZXJtaW5hdGVzIGl0Ki8NCi0gIGZzbmFtZS0+cGF0aFtwYXRocG9zXSA9IDA7ICAvKnRlcm1pbmF0ZXMgaXQqLw0KLQ0KLSAgZm9yICggOyBuYW1lcG9zIDsgKQ0KLSAgew0KLSAgICBpZiAoIHNbbmFtZXBvcyAtIDFdICE9ICcgJyApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICBzW25hbWVwb3MgLSAxXSA9IDA7IC8qcmVtb3ZlIGVuZCBzcGFjZXMqLw0KLSAgICBuYW1lcG9zLS07DQotICB9DQotDQotICBpZiAoICFfZl9zZXRuYW1lZXh0KCBzLCBmc25hbWUtPmZpbGVuYW1lLCBmc25hbWUtPmZpbGVleHQgKSApDQotICB7DQotICAgIHJldHVybiAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbm8gbmFtZSovDQotICB9DQotDQotICBpZiAoIGZzbmFtZS0+ZmlsZW5hbWVbMF0gPT0gJyAnICkNCi0gIHsNCi0gICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qY2Fubm90IGJlKi8NCi0gIH0NCi0NCi0gIHJldHVybiAwOw0KLX0gLyogX2Zfc2V0ZnNuYW1lICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2NyZWF0ZWZ1bGxuYW1lDQotICoNCi0gKiBjcmVhdGUgZnVsbCBuYW1lDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGJ1ZmZlciAtIHdoZXJlIHRvIGNyZWF0ZQ0KLSAqIGJ1ZmZlcnNpemUgLSBzaXplIG9mIHRoZSBidWZmZXINCi0gKiBkcml2ZW51bSAtIGRyaXZlIG51bWJlcg0KLSAqIHBhdGggLSBwYXRoIG9mIHRoZSBmaWxlDQotICogZmlsZW5hbWUgLSBmaWxlIG5hbWUNCi0gKiBmaWxlZXh0IC0gZmlsZSBleHRlbnNpb24NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIDEgLSBpZiBmb3VuZCBhbmQgb3NpemUgaXMgZmlsbGVkDQotICogMCAtIG5vdCBmb3VuZA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQgX2ZfY3JlYXRlZnVsbG5hbWUgKCBjaGFyICogYnVmZmVyLCBpbnQgYnVmZmVyc2l6ZSwgY2hhciAqIHBhdGgsIGNoYXIgKiBmaWxlbmFtZSwgY2hhciAqIGZpbGVleHQgKQ0KLXsNCi0gIGNoYXIgKiBmdWxsbmFtZSA9IGJ1ZmZlcjsNCi0gIGludCAgICBhOw0KLQ0KLSAgLyogYWRkaW5nIGRyaXZlIGxldHRlciAqLw0KLSAgaWYgKCBidWZmZXJzaXplIDwgMSApDQotICB7DQotICAgIHJldHVybiAxOw0KLSAgfQ0KLQ0KLSAgKmZ1bGxuYW1lKysgPSAnLyc7DQotICBidWZmZXJzaXplIC09IDE7DQotDQotICAvKiBhZGRpbmcgcGF0aCAqLw0KLSAgaWYgKCBwYXRoWzBdICkNCi0gIHsNCi0gICAgZm9yICggOyA7ICkNCi0gICAgew0KLSAgICAgIGNoYXIgIGNoID0gKnBhdGgrKzsNCi0NCi0gICAgICBpZiAoICFjaCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggYnVmZmVyc2l6ZSA8PSAwICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gMTsNCi0gICAgICB9DQotDQotICAgICAgKmZ1bGxuYW1lKysgPSBjaDsNCi0gICAgICBidWZmZXJzaXplLS07DQotICAgIH0NCi0NCi0gICAgLyogYWRkaW5nIHNlcGFyYXRvciAqLw0KLSAgICBpZiAoIGJ1ZmZlcnNpemUgPD0gMCApDQotICAgIHsNCi0gICAgICByZXR1cm4gMTsNCi0gICAgfQ0KLQ0KLSAgICAqZnVsbG5hbWUrKyA9ICcvJzsNCi0gIH0NCi0NCi0gIC8qIGFkZGluZyBuYW1lICovDQotICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWE5BTUUgOyBhKysgKQ0KLSAgew0KLSAgICBjaGFyICBjaCA9ICpmaWxlbmFtZSsrOw0KLQ0KLSAgICBpZiAoICggIWNoICkgfHwgKCBjaCA9PSAzMiApICkNCi0gICAgew0KLSAgICAgIGJyZWFrOw0KLSAgICB9DQotDQotICAgIGlmICggYnVmZmVyc2l6ZSA8PSAwICkNCi0gICAgew0KLSAgICAgIHJldHVybiAxOw0KLSAgICB9DQotDQotICAgICpmdWxsbmFtZSsrID0gY2g7DQotICAgIGJ1ZmZlcnNpemUtLTsNCi0gIH0NCi0NCi0gIC8qIGFkZGluZyBleHQqLw0KLSAgaWYgKCBmaWxlZXh0WzBdICYmICggZmlsZWV4dFswXSAhPSAzMiApICkNCi0gIHsNCi0gICAgLyogYWRkaW5nIGRvdCAqLw0KLSAgICBpZiAoICFidWZmZXJzaXplICkNCi0gICAgew0KLSAgICAgIHJldHVybiAxOw0KLSAgICB9DQotDQotICAgICpmdWxsbmFtZSsrID0gJy4nOw0KLQ0KLSAgICBmb3IgKCBhID0gMCA7IGEgPCBGX01BWEVYVCA7IGErKyApDQotICAgIHsNCi0gICAgICBjaGFyICBjaCA9ICpmaWxlZXh0Kys7DQotDQotICAgICAgaWYgKCAoICFjaCApIHx8ICggY2ggPT0gMzIgKSApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlmICggYnVmZmVyc2l6ZSA8PSAwICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gMTsNCi0gICAgICB9DQotDQotICAgICAgKmZ1bGxuYW1lKysgPSBjaDsNCi0gICAgICBidWZmZXJzaXplLS07DQotICAgIH0NCi0gIH0NCi0NCi0gIC8qIGFkZGluZyB0ZXJtaW5hdG9yICovDQotICBpZiAoIGJ1ZmZlcnNpemUgPD0gMCApDQotICB7DQotICAgIHJldHVybiAxOw0KLSAgfQ0KLQ0KLSAgKmZ1bGxuYW1lKysgPSAwOw0KLQ0KLSAgcmV0dXJuIDA7DQotfSAvKiBfZl9jcmVhdGVmdWxsbmFtZSAqLw0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdXRpbF9zZm4uaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdXRpbF9zZm4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1NzY4YS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL3V0aWxfc2ZuLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX19VVElMX1NGTl9IDQotI2RlZmluZSBfX1VUSUxfU0ZOX0gNCi0NCi0jaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotdW5zaWduZWQgY2hhciBfZl9jaGVja25hbWV3YyAoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7DQotdW5zaWduZWQgY2hhciBfZl9jaGVja25hbWUgKCBjaGFyICosIGNoYXIgKiApOw0KLQ0KLXVuc2lnbmVkIGNoYXIgX2Zfc2V0bmFtZWV4dCAoIGNoYXIgKiwgY2hhciAqLCBjaGFyICogKTsNCi11bnNpZ25lZCBjaGFyIF9mX3NldGZzbmFtZSAoIGNvbnN0IGNoYXIgKiwgRl9OQU1FICogKTsNCi1pbnQgX2ZfY3JlYXRlZnVsbG5hbWUgKCBjaGFyICogYnVmZmVyLCBpbnQgYnVmZmVyc2l6ZSwgY2hhciAqIHBhdGgsIGNoYXIgKiBmaWxlbmFtZSwgY2hhciAqIGZpbGVleHQgKTsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfX1VUSUxfU0ZOX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL3ZvbHVtZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbi92b2x1bWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYzMDY4MS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL3ZvbHVtZS5jCisrKyAvZGV2L251bGwKQEAgLTEsOTgwICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL2FwaS9mYXRfc2wuaCINCi0jaW5jbHVkZSAiLi4vLi4vcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oIg0KLQ0KLSNpbmNsdWRlICJ2b2x1bWUuaCINCi0jaW5jbHVkZSAidXRpbC5oIg0KLSNpbmNsdWRlICJkcnYuaCINCi0jaW5jbHVkZSAiZmF0LmgiDQotI2luY2x1ZGUgImRpci5oIg0KLSNpbmNsdWRlICJmaWxlLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZiBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAxDQotICAjaW5jbHVkZSAiZl9sb2NrLmgiDQotI2VuZGlmDQotDQotRl9WT0xVTUUgIGdsX3ZvbHVtZTsgICAgICAgICAgICAgICAgLyogb25seSBvbmUgdm9sdW1lICovDQotRl9GSUxFICAgIGdsX2ZpbGU7ICAgICAgICAgICAgICAgICAgLyogZmlsZSAqLw0KLWNoYXIgICAgICBnbF9zZWN0b3JbRl9TRUNUT1JfU0laRV07IC8qIGFjdHVhbCBzZWN0b3IgKi8NCi0NCi0jaWYgRl9GSUxFX0NIQU5HRURfRVZFTlQNCi1GX0ZJTEVfQ0hBTkdFRF9FVkVOVEZVTkMgIGZfZmlsZWNoYW5nZWRldmVudDsNCi0jZW5kaWYNCi0NCi0NCi0vKiBEZWZpbmVzIHRoZSBudW1iZXIgb2Ygc2VjdG9ycyBwZXIgY2x1c3RlciBvbiBhIHNlY3RvciBudW1iZXIgYmFzaXMgKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gIHVuc2lnbmVkIGxvbmcgIG1heF9zZWN0b3JzOw0KLSAgdW5zaWduZWQgY2hhciAgc2VjdG9yX3Blcl9jbHVzdGVyOw0KLX0gdF9GQVQzMl9DUzsNCi0NCi1zdGF0aWMgY29uc3QgdF9GQVQzMl9DUyAgRkFUMzJfQ1NbXSA9DQotew0KLSAgeyAweDAwMDIwMDAwLCAxIH0gICAgIC8qIC0+NjRNQiAqLw0KLSAgLCB7IDB4MDAwNDAwMDAsIDIgfSAgIC8qIC0+MTI4TUIgKi8NCi0gICwgeyAweDAwMDgwMDAwLCA0IH0gICAvKiAtPjI1Nk1CICovDQotICAsIHsgMHgwMTAwMDAwMCwgOCB9ICAgLyogLT44R0IgKi8NCi0gICwgeyAweDAyMDAwMDAwLCAxNiB9ICAvKiAtPjE2R0IgKi8NCi0gICwgeyAweDBmZmZmZmYwLCAzMiB9ICAvKiAtPiAuLi4gKi8NCi19Ow0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl93cml0ZWJvb3RyZWNvcmQNCi0gKg0KLSAqIHdyaXRpbmcgYm9vdCByZWNvcmQgb250byBhIHZvbHVtZSwgaXQgdXNlcyBudW1iZXIgb2YgaGlkZGVuIHNlY3RvciB2YXJpYWJsZQ0KLSAqDQotICogSU5QVVRTDQotICogcGh5IC0gbWVkaWEgcGh5c2ljYWwgZGVzY3JpcHRvcg0KLSAqDQotICogUkVUVVJOUw0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIF9mX3dyaXRlYm9vdHJlY29yZCAoIEZfUEhZICogcGh5ICkNCi17DQotICB1bnNpZ25lZCBjaGFyICAganVtcF9jb2RlW10gPQ0KLSAgew0KLSAgICAweGViLCAweDNjLCAweDkwDQotICB9Ow0KLSAgdW5zaWduZWQgY2hhciAgIG9lbV9uYW1lW10gPSAiTVNET1M1LjAiOw0KLSAgdW5zaWduZWQgY2hhciAgIGV4ZWN1dGFibGVfbWFya2VyW10gPQ0KLSAgew0KLSAgICAweDU1LCAweGFhDQotICB9Ow0KLSAgdW5zaWduZWQgY2hhciAqIHB0ciA9ICh1bnNpZ25lZCBjaGFyICopZ2xfc2VjdG9yOw0KLSAgdW5zaWduZWQgY2hhciAgIHJzOw0KLSAgdW5zaWduZWQgc2hvcnQgIG1yZTsNCi0NCi0gIHVuc2lnbmVkIGNoYXIgICByZXQ7DQotICB1bnNpZ25lZCBjaGFyICAgX24gPSAwOw0KLQ0KLSAgaWYgKCBnbF92b2x1bWUubWVkaWF0eXBlID09IEZfRkFUMzJfTUVESUEgKQ0KLSAgeyAgLyp3cml0ZSBGU19JTkZPKi8NCi0gICAgdW5zaWduZWQgY2hhciAgYTsNCi0NCi0gICAgcnMgPSAzMiArIDQ7DQotICAgIG1yZSA9IDA7DQotDQotICAgIHBzcF9tZW1zZXQoIHB0ciwgMCwgRl9TRUNUT1JfU0laRSApOw0KLQ0KLSAgICBmb3IgKCBhID0gMCA7IGEgPCBycyA7IGErKyApDQotICAgIHsNCi0gICAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCBhICk7IC8qZXJhc2UgcmVzZXJ2ZWQgYXJlYSovDQotICAgICAgaWYgKCByZXQgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiByZXQ7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIHB0ciA9IF9zZXRsb25nKCAweDQxNjE1MjUyLCBwdHIgKTsgLypzaWduYXR1cmUqLw0KLSAgICBwdHIgPSBfc2V0Y2hhcnplcm8oIDQ4MCwgcHRyICk7ICAgIC8qcmVzZXJ2ZWQqLw0KLSAgICBwdHIgPSBfc2V0bG9uZyggMHg2MTQxNzI3MiwgcHRyICk7IC8qc2lnbmF0dXJlKi8NCi0gICAgcHRyID0gX3NldGxvbmcoIDB4ZmZmZmZmZmYsIHB0ciApOyAvKm5vIGxhc3QqLw0KLSAgICBwdHIgPSBfc2V0bG9uZyggMHhmZmZmZmZmZiwgcHRyICk7IC8qbm8gaGludCovDQotICAgIHB0ciA9IF9zZXRjaGFyemVybyggMTIsIHB0ciApOyAgICAgLypyZXNlcnZlZCovDQotICAgIHB0ciA9IF9zZXRsb25nKCAweGFhNTUwMDAwLCBwdHIgKTsgLyp0cmFpbCovDQotDQotDQotICAgIHJldCA9IF9mX3dyaXRlZ2xzZWN0b3IoIDEgKTsgLyp3cml0ZSBGU0lORk8qLw0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gcmV0Ow0KLSAgICB9DQotDQotICAgIHJldCA9IF9mX3dyaXRlZ2xzZWN0b3IoIDEgKyA2ICk7IC8qd3JpdGUgRlNJTkZPKi8NCi0gICAgaWYgKCByZXQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIHJldDsNCi0gICAgfQ0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBycyA9IDE7DQotICAgIG1yZSA9IDUxMjsNCi0gIH0NCi0NCi0gIHB0ciA9ICh1bnNpZ25lZCBjaGFyICopZ2xfc2VjdG9yOw0KLSAgcHRyID0gX3NldGNoYXIoIGp1bXBfY29kZSwgc2l6ZW9mKCBqdW1wX2NvZGUgKSwgcHRyICk7DQotICBwdHIgPSBfc2V0Y2hhciggb2VtX25hbWUsIHNpemVvZiggb2VtX25hbWUgKSAtIDEsIHB0ciApOw0KLSAgcHRyID0gX3NldHdvcmQoIEZfU0VDVE9SX1NJWkUsIHB0ciApOw0KLSAgKnB0cisrID0gZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9jbHVzdGVyOw0KLSAgcHRyID0gX3NldHdvcmQoIHJzLCBwdHIgKTsgIC8qIHJlc2VydmVkIHNlY3RvcnMgKi8NCi0gICpwdHIrKyA9IDI7ICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgRkFUcyAqLw0KLSAgcHRyID0gX3NldHdvcmQoIG1yZSwgcHRyICk7IC8qIG1heCByb290IGVudHJ5ICovDQotICBpZiAoIHBoeS0+bnVtYmVyX29mX3NlY3RvcnMgPCAweDEwMDAwICkNCi0gIHsNCi0gICAgcHRyID0gX3NldHdvcmQoICh1bnNpZ25lZCBzaG9ydClwaHktPm51bWJlcl9vZl9zZWN0b3JzLCBwdHIgKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgcHRyID0gX3NldHdvcmQoIDAsIHB0ciApOw0KLSAgfQ0KLQ0KLSAgKnB0cisrID0gMHhmMDsgICAgICAgICAgICAgICAgLyogbWVkaWEgZGVzY3JpcHRvciAqLw0KLSAgcHRyID0gX3NldHdvcmQoICh1bnNpZ25lZCBzaG9ydClnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX0ZBVCwgcHRyICk7DQotICBwdHIgPSBfc2V0d29yZCggcGh5LT5zZWN0b3JfcGVyX3RyYWNrLCBwdHIgKTsNCi0gIHB0ciA9IF9zZXR3b3JkKCBwaHktPm51bWJlcl9vZl9oZWFkcywgcHRyICk7DQotICBwdHIgPSBfc2V0bG9uZyggMCwgcHRyICk7IC8qIG51bWJlciBvZiBoaWRkZW4gc2VjdG9ycyAqLw0KLSAgaWYgKCBwaHktPm51bWJlcl9vZl9zZWN0b3JzID49IDB4MTAwMDAgKQ0KLSAgew0KLSAgICBwdHIgPSBfc2V0bG9uZyggcGh5LT5udW1iZXJfb2Zfc2VjdG9ycywgcHRyICk7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIHB0ciA9IF9zZXRsb25nKCAwLCBwdHIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2Ygc2VjdG9ycyAqLw0KLSAgfQ0KLQ0KLSAgaWYgKCBnbF92b2x1bWUubWVkaWF0eXBlID09IEZfRkFUMzJfTUVESUEgKQ0KLSAgew0KLSAgICBwdHIgPSBfc2V0bG9uZyggZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9GQVQzMiwgcHRyICk7DQotICAgIHB0ciA9IF9zZXR3b3JkKCAwLCBwdHIgKTsNCi0gICAgcHRyID0gX3NldHdvcmQoIDAsIHB0ciApOw0KLSAgICBwdHIgPSBfc2V0bG9uZyggMiwgcHRyICk7DQotICAgIHB0ciA9IF9zZXR3b3JkKCAxLCBwdHIgKTsNCi0gICAgcHRyID0gX3NldHdvcmQoIDYsIHB0ciApOw0KLSAgICBwdHIgPSBfc2V0Y2hhciggTlVMTCwgMTIsIHB0ciApOw0KLSAgICBfbiA9IDI4Ow0KLSAgfQ0KLQ0KLQ0KLSAgcHRyID0gX3NldHdvcmQoIDAsIHB0ciApOyAvKiBsb2dpY2FsIGRyaXZlIG51bSAqLw0KLSAgKnB0cisrID0gMHgyOTsgICAgICAgICAgICAvKiBleHRlbmRlZCBzaWduYXR1cmUgKi8NCi0gIHB0ciA9IF9zZXRsb25nKCAweDExMjIzMzQ0LCBwdHIgKTsNCi0gIHB0ciA9IF9zZXRjaGFyKCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSJOTyBOQU1FICAgICIsIDExLCBwdHIgKTsgLyogdm9sdW1lIG5hbWUgKi8NCi0NCi0gIHN3aXRjaCAoIGdsX3ZvbHVtZS5tZWRpYXR5cGUgKQ0KLSAgew0KLSAgICBjYXNlIEZfRkFUMTJfTUVESUE6DQotICAgICAgcHRyID0gX3NldGNoYXIoIChjb25zdCB1bnNpZ25lZCBjaGFyICopIkZBVDEyICAgIiwgOCwgcHRyICk7DQotICAgICAgYnJlYWs7DQotDQotICAgIGNhc2UgRl9GQVQxNl9NRURJQToNCi0gICAgICBwdHIgPSBfc2V0Y2hhciggKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikiRkFUMTYgICAiLCA4LCBwdHIgKTsNCi0gICAgICBicmVhazsNCi0NCi0gICAgY2FzZSBGX0ZBVDMyX01FRElBOg0KLSAgICAgIHB0ciA9IF9zZXRjaGFyKCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSJGQVQzMiAgICIsIDgsIHB0ciApOw0KLSAgICAgIGJyZWFrOw0KLQ0KLSAgICBkZWZhdWx0Og0KLSAgICAgIHJldHVybiBGX0VSUl9JTlZBTElETUVESUE7DQotICB9IC8qIHN3aXRjaCAqLw0KLQ0KLSAgcHRyID0gX3NldGNoYXIoIDAsIDQ0OCAtIF9uLCBwdHIgKTsNCi0gIHB0ciA9IF9zZXRjaGFyKCBleGVjdXRhYmxlX21hcmtlciwgc2l6ZW9mKCBleGVjdXRhYmxlX21hcmtlciApLCBwdHIgKTsNCi0NCi0gIGlmICggX24gKQ0KLSAgew0KLSAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCA2ICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0gIH0NCi0NCi0NCi0gIHJldHVybiBfZl93cml0ZWdsc2VjdG9yKCAwICk7IC8qd3JpdGUgYm9vdHJlY29yZCovDQotfSAvKiBfZl93cml0ZWJvb3RyZWNvcmQgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfYnVpbGRzZWN0b3JzDQotICoNCi0gKiBJTlBVVFMNCi0gKiBwaHkgLSBtZWRpYSBwaHlzaWNhbCBkZXNjcmlwdG9yDQotICoNCi0gKiBjYWxjdWxhdGUgcmVsYXRpdmUgc2VjdG9yIHBvc2l0aW9uIGZyb20gYm9vdCByZWNvcmQNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgX2ZfYnVpbGRzZWN0b3JzICggRl9QSFkgKiBwaHkgKQ0KLXsNCi0gIGdsX3ZvbHVtZS5tZWRpYXR5cGUgPSBGX1VOS05PV05fTUVESUE7DQotDQotDQotICBpZiAoIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfRkFUICkNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciA9IDE7DQotICAgIGdsX3ZvbHVtZS5maXJzdGZhdC5udW0gPSBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX0ZBVDsNCi0gICAgZ2xfdm9sdW1lLnJvb3Quc2VjdG9yID0gZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciArICggZ2xfdm9sdW1lLmZpcnN0ZmF0Lm51bSAqICh1bnNpZ25lZCBsb25nKSggZ2xfdm9sdW1lLmJvb3RyZWNvcmQubnVtYmVyX29mX0ZBVHMgKSApOw0KLSAgICBnbF92b2x1bWUucm9vdC5udW0gPSAoIDUxMiAqIHNpemVvZiggRl9ESVJFTlRSWSApICkgLyBGX1NFQ1RPUl9TSVpFOw0KLQ0KLSAgICBnbF92b2x1bWUuX3RkYXRhLnNlY3RvciA9IGdsX3ZvbHVtZS5yb290LnNlY3RvciArIGdsX3ZvbHVtZS5yb290Lm51bTsNCi0gICAgZ2xfdm9sdW1lLl90ZGF0YS5udW0gPSAwOyAgLyo/PyovDQotICB9DQotICBlbHNlDQotICB7DQotICAgIGdsX3ZvbHVtZS5maXJzdGZhdC5zZWN0b3IgPSAoIDMyICsgNCApOw0KLSAgICBnbF92b2x1bWUuZmlyc3RmYXQubnVtID0gZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9GQVQzMjsNCi0gICAgZ2xfdm9sdW1lLl90ZGF0YS5zZWN0b3IgPSBnbF92b2x1bWUuZmlyc3RmYXQuc2VjdG9yOw0KLSAgICBnbF92b2x1bWUuX3RkYXRhLnNlY3RvciArPSBnbF92b2x1bWUuZmlyc3RmYXQubnVtICogKHVuc2lnbmVkIGxvbmcpKCBnbF92b2x1bWUuYm9vdHJlY29yZC5udW1iZXJfb2ZfRkFUcyApOw0KLSAgICBnbF92b2x1bWUuX3RkYXRhLm51bSA9IDA7ICAvKj8/Ki8NCi0NCi0gICAgew0KLSAgICAgIHVuc2lnbmVkIGxvbmcgIHNlY3RvcmNvdSA9IGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlcjsNCi0gICAgICBnbF92b2x1bWUucm9vdC5zZWN0b3IgPSAoICggZ2xfdm9sdW1lLmJvb3RyZWNvcmQucm9vdGNsdXN0ZXIgLSAyICkgKiBzZWN0b3Jjb3UgKSArIGdsX3ZvbHVtZS5fdGRhdGEuc2VjdG9yOw0KLSAgICAgIGdsX3ZvbHVtZS5yb290Lm51bSA9IGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlcjsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgew0KLSAgICB1bnNpZ25lZCBsb25nICBtYXhjbHVzdGVyOw0KLSAgICBtYXhjbHVzdGVyID0gcGh5LT5udW1iZXJfb2Zfc2VjdG9yczsNCi0gICAgbWF4Y2x1c3RlciAtPSBnbF92b2x1bWUuX3RkYXRhLnNlY3RvcjsNCi0gICAgbWF4Y2x1c3RlciAvPSBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXI7DQotICAgIGdsX3ZvbHVtZS5tYXhjbHVzdGVyID0gbWF4Y2x1c3RlcjsNCi0gIH0NCi0NCi0gIGlmICggZ2xfdm9sdW1lLm1heGNsdXN0ZXIgPCAoIEZfQ0xVU1RFUl9SRVNFUlZFRCAmIDB4ZmZmICkgKQ0KLSAgew0KLSAgICBnbF92b2x1bWUubWVkaWF0eXBlID0gRl9GQVQxMl9NRURJQTsNCi0gIH0NCi0gIGVsc2UgaWYgKCBnbF92b2x1bWUubWF4Y2x1c3RlciA8ICggRl9DTFVTVEVSX1JFU0VSVkVEICYgMHhmZmZmICkgKQ0KLSAgew0KLSAgICBnbF92b2x1bWUubWVkaWF0eXBlID0gRl9GQVQxNl9NRURJQTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLm1lZGlhdHlwZSA9IEZfRkFUMzJfTUVESUE7DQotICB9DQotDQotICByZXR1cm4gRl9OT19FUlJPUjsNCi19IC8qIF9mX2J1aWxkc2VjdG9ycyAqLw0KLQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBfZl9wcmVwYXJlZm9ybWF0DQotICoNCi0gKiBwcmVwYXJpbmcgYm9vdCByZWNvcmQgZm9yIGZvcm1hdHRpbmcsIGl0IHNldHMgYW5kIGNhbGN1bGF0ZXMgdmFsdWVzDQotICoNCi0gKiBJTlBVVFMNCi0gKiBwaHkgLSBtZWRpYSBwaHlzaWNhbCBkZXNjcmlwdG9yDQotICogZl9ib290cmVjb3JkIC0gd2hpY2ggYm9vdHJlY29yZCBuZWVkIHRvIGJlIHByZXBhcmUNCi0gKiBudW1iZXJfb2ZfaGlkZGVuX3NlY3RvcnMgLSB3aGVyZSBib290IHJlY29yZCBzdGFydHMNCi0gKiBmYXR0eXBlIC0gb25lIG9mIHRoaXMgZGVmaW5pdGlvbnMgRl9GQVQxMl9NRURJQSxGX0ZBVDE2X01FRElBLEZfRkFUMzJfTUVESUENCi0gKg0KLSAqIFJFVFVSTlMNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl9wcmVwYXJlZm9ybWF0ICggRl9QSFkgKiBwaHksIHVuc2lnbmVkIGNoYXIgZmF0dHlwZSApDQotew0KLSAgaWYgKCAhcGh5LT5udW1iZXJfb2Zfc2VjdG9ycyApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTlZBTElEU0VDVE9SOw0KLSAgfQ0KLQ0KLSAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQubnVtYmVyX29mX0ZBVHMgPSAyOw0KLSAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQubWVkaWFfZGVzY3JpcHRvciA9IDB4ZjA7DQotDQotICBpZiAoIGZhdHR5cGUgIT0gRl9GQVQzMl9NRURJQSApDQotICB7DQotICAgIHVuc2lnbmVkIGxvbmcgIF9uOw0KLSAgICBzd2l0Y2ggKCBmYXR0eXBlICkNCi0gICAgew0KLSAgICAgIGNhc2UgRl9GQVQxMl9NRURJQToNCi0gICAgICAgIF9uID0gRl9DTFVTVEVSX1JFU0VSVkVEICYgMHhmZmY7DQotICAgICAgICBicmVhazsNCi0NCi0gICAgICBjYXNlIEZfRkFUMTZfTUVESUE6DQotICAgICAgICBfbiA9IEZfQ0xVU1RFUl9SRVNFUlZFRCAmIDB4ZmZmZjsNCi0gICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgIGRlZmF1bHQ6DQotICAgICAgICByZXR1cm4gRl9FUlJfSU5WRkFUVFlQRTsNCi0gICAgfQ0KLQ0KLSAgICBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXIgPSAxOw0KLSAgICB3aGlsZSAoIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlciApDQotICAgIHsNCi0gICAgICBpZiAoIHBoeS0+bnVtYmVyX29mX3NlY3RvcnMgLyBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXIgPCBfbiApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICAgIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlciA8PD0gMTsNCi0gICAgfQ0KLQ0KLSAgICBpZiAoICFnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXIgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIEZfRVJSX01FRElBVE9PTEFSR0U7DQotICAgIH0NCi0gIH0NCi0NCi0gIGVsc2UNCi0gIHsNCi0gICAgdW5zaWduZWQgY2hhciAgaTsNCi0gICAgZm9yICggaSA9IDAgOyBpPCggc2l6ZW9mKCBGQVQzMl9DUyApIC8gc2l6ZW9mKCB0X0ZBVDMyX0NTICkgKSAtIDEgJiYgcGh5LT5udW1iZXJfb2Zfc2VjdG9ycz5GQVQzMl9DU1tpXS5tYXhfc2VjdG9ycyA7IGkrKyApDQotICAgIHsNCi0gICAgfQ0KLQ0KLSAgICBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXIgPSBGQVQzMl9DU1tpXS5zZWN0b3JfcGVyX2NsdXN0ZXI7DQotICB9DQotDQotICBpZiAoICFnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXIgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfSU5WQUxJRE1FRElBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypmYXQxNiBjYW5ub3QgYmUgdGhlcmUqLw0KLSAgfQ0KLQ0KLSAgew0KLSAgICBsb25nICAgICAgICAgICBzZWNwZXJjbCA9IGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlcjsNCi0gICAgbG9uZyAgICAgICAgICAgbmZhdCA9IGdsX3ZvbHVtZS5ib290cmVjb3JkLm51bWJlcl9vZl9GQVRzOw0KLSAgICB1bnNpZ25lZCBsb25nICByb290czsNCi0gICAgdW5zaWduZWQgbG9uZyAgZmF0c2VjOw0KLQ0KLSAgICByb290cyA9ICggNTEyICogc2l6ZW9mKCBGX0RJUkVOVFJZICkgKSAvIEZfU0VDVE9SX1NJWkU7DQotDQotICAgIHN3aXRjaCAoIGZhdHR5cGUgKQ0KLSAgICB7DQotICAgICAgY2FzZSBGX0ZBVDMyX01FRElBOg0KLSAgICAgIHsNCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgIF9uID0gKHVuc2lnbmVkIGxvbmcpKCAxMjggKiBzZWNwZXJjbCArIG5mYXQgKTsNCi0gICAgICAgIGZhdHNlYyA9ICggcGh5LT5udW1iZXJfb2Zfc2VjdG9ycyAtICggMzIgKyA0ICkgKyAyICogc2VjcGVyY2wgKTsNCi0gICAgICAgIGZhdHNlYyArPSAoIF9uIC0gMSApOw0KLSAgICAgICAgZmF0c2VjIC89IF9uOw0KLSAgICAgICAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9GQVQzMiA9IGZhdHNlYzsNCi0gICAgICAgIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfRkFUID0gMDsNCi0gICAgICB9DQotICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSBGX0ZBVDE2X01FRElBOg0KLSAgICAgIHsNCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgIF9uID0gKHVuc2lnbmVkIGxvbmcpKCAyNTYgKiBzZWNwZXJjbCArIG5mYXQgKTsNCi0gICAgICAgIGZhdHNlYyA9ICggcGh5LT5udW1iZXJfb2Zfc2VjdG9ycyAtIDEgLSByb290cyArIDIgKiBzZWNwZXJjbCApOw0KLSAgICAgICAgZmF0c2VjICs9ICggX24gLSAxICk7DQotICAgICAgICBmYXRzZWMgLz0gX247DQotICAgICAgICBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX0ZBVCA9ICh1bnNpZ25lZCBzaG9ydCkoIGZhdHNlYyApOw0KLSAgICAgIH0NCi0gICAgICBicmVhazsNCi0NCi0gICAgICBjYXNlIEZfRkFUMTJfTUVESUE6DQotICAgICAgew0KLSAgICAgICAgdW5zaWduZWQgbG9uZyAgX24gPSAodW5zaWduZWQgbG9uZykoIDEwMjQgKiBzZWNwZXJjbCArIDMgKiBuZmF0ICk7DQotICAgICAgICBmYXRzZWMgPSAoIHBoeS0+bnVtYmVyX29mX3NlY3RvcnMgLSAxIC0gcm9vdHMgKyAyICogc2VjcGVyY2wgKTsNCi0gICAgICAgIGZhdHNlYyAqPSAzOw0KLSAgICAgICAgZmF0c2VjICs9ICggX24gLSAxICk7DQotICAgICAgICBmYXRzZWMgLz0gX247DQotICAgICAgICBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX0ZBVCA9ICh1bnNpZ25lZCBzaG9ydCkoIGZhdHNlYyApOw0KLSAgICAgIH0NCi0gICAgICBicmVhazsNCi0NCi0gICAgICBkZWZhdWx0Og0KLSAgICAgICAgcmV0dXJuIEZfRVJSX0lOVkFMSURNRURJQTsNCi0gICAgfSAvKiBzd2l0Y2ggKi8NCi0NCi0gICAgcmV0dXJuIEZfTk9fRVJST1I7DQotICB9DQotfSAvKiBfZl9wcmVwYXJlZm9ybWF0ICovDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX3Bvc3Rmb3JtYXQNCi0gKg0KLSAqIGVyYXNlIGZhdHMsIGVyYXNlIHJvb3QgZGlyZWN0b3J5LCByZXNldCB2YXJpYWJsZXMgYWZ0ZXIgZm9ybWF0dGluZw0KLSAqDQotICogSU5QVVRTDQotICogcGh5IC0gbWVkaWEgcGh5c2ljYWwgZGVzY3JpcHRvcg0KLSAqIGZhdHR5cGUgLSBvbmUgb2YgdGhpcyBkZWZpbml0aW9ucyBGX0ZBVDEyX01FRElBLEZfRkFUMTZfTUVESUEsRl9GQVQzMl9NRURJQQ0KLSAqDQotICogUkVUVVJOUw0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIF9mX3Bvc3Rmb3JtYXQgKCBGX1BIWSAqIHBoeSwgdW5zaWduZWQgY2hhciBmYXR0eXBlICkNCi17DQotICB1bnNpZ25lZCBsb25nICBhOw0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgX2ZfYnVpbGRzZWN0b3JzKCBwaHkgKTsgLypnZXQgcG9zaXRpb25zKi8NCi0gIGlmICggZ2xfdm9sdW1lLm1lZGlhdHlwZSAhPSBmYXR0eXBlICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX01FRElBVE9PU01BTEw7DQotICB9DQotDQotICBnbF92b2x1bWUuZmF0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpKCAtMSApOw0KLQ0KLSAgew0KLSAgICB1bnNpZ25lZCBjaGFyICogcHRyID0gKHVuc2lnbmVkIGNoYXIgKilnbF9zZWN0b3I7DQotICAgIHVuc2lnbmVkIGNoYXIgICBqID0gMjsNCi0gICAgdW5zaWduZWQgbG9uZyAgIGk7DQotDQotICAgIHBzcF9tZW1zZXQoIHB0ciwgMCwgRl9TRUNUT1JfU0laRSApOw0KLQ0KLSAgICBzd2l0Y2ggKCBnbF92b2x1bWUubWVkaWF0eXBlICkNCi0gICAgew0KLSAgICAgIGNhc2UgRl9GQVQxNl9NRURJQToNCi0gICAgICAgIGogPSAzOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSBGX0ZBVDMyX01FRElBOg0KLSAgICAgICAgaiA9IDExOw0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgKnB0ciA9IGdsX3ZvbHVtZS5ib290cmVjb3JkLm1lZGlhX2Rlc2NyaXB0b3I7DQotICAgIHBzcF9tZW1zZXQoIHB0ciArIDEsIDB4ZmYsIGogKTsNCi0gICAgaWYgKCBnbF92b2x1bWUubWVkaWF0eXBlID09IEZfRkFUMzJfTUVESUEgKQ0KLSAgICB7DQotICAgICAgKiggcHRyICsgOCApID0gKHVuc2lnbmVkIGNoYXIpKCBGX0NMVVNURVJfTEFTVCAmIDB4ZmYgKTsNCi0gICAgfQ0KLQ0KLSAgICAodm9pZClfZl93cml0ZWdsc2VjdG9yKCBnbF92b2x1bWUuZmlyc3RmYXQuc2VjdG9yICk7DQotICAgICh2b2lkKV9mX3dyaXRlZ2xzZWN0b3IoIGdsX3ZvbHVtZS5maXJzdGZhdC5zZWN0b3IgKyBnbF92b2x1bWUuZmlyc3RmYXQubnVtICk7DQotICAgIHBzcF9tZW1zZXQoIHB0ciwgMCwgKCBqICsgMSApICk7DQotDQotICAgIGZvciAoIGkgPSAxIDsgaSA8IGdsX3ZvbHVtZS5maXJzdGZhdC5udW0gOyBpKysgKQ0KLSAgICB7DQotICAgICAgKHZvaWQpX2Zfd3JpdGVnbHNlY3RvciggZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciArIGkgKTsNCi0gICAgICAodm9pZClfZl93cml0ZWdsc2VjdG9yKCBnbF92b2x1bWUuZmlyc3RmYXQuc2VjdG9yICsgaSArIGdsX3ZvbHVtZS5maXJzdGZhdC5udW0gKTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgZm9yICggYSA9IDAgOyBhIDwgZ2xfdm9sdW1lLnJvb3QubnVtIDsgYSsrICkgLypyZXNldCByb290IGRpcmVudHJpZXMqLw0KLSAgew0KLSAgICByZXQgPSBfZl93cml0ZWdsc2VjdG9yKCBnbF92b2x1bWUucm9vdC5zZWN0b3IgKyBhICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0gIH0NCi0NCi0gIHJldHVybiBfZl93cml0ZWJvb3RyZWNvcmQoIHBoeSApOw0KLX0gLyogX2ZfcG9zdGZvcm1hdCAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9oYXJkZm9ybWF0DQotICoNCi0gKiBNYWtpbmcgYSBjb21wbGV0ZSBmb3JtYXQgb24gbWVkaWEsIGluZGVwZW5kZW50bHkgZnJvbSBtYXN0ZXIgYm9vdCByZWNvcmQsDQotICogYWNjb3JkaW5nIHRvIG1lZGlhIHBoeXNpY2FsDQotICoNCi0gKiBJTlBVVFMNCi0gKiBmYXR0eXBlIC0gb25lIG9mIHRoaXMgZGVmaW5pdGlvbnMgRl9GQVQxMl9NRURJQSxGX0ZBVDE2X01FRElBLEZfRkFUMzJfTUVESUENCi0gKg0KLSAqIFJFVFVSTlMNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2hhcmRmb3JtYXQgKCB1bnNpZ25lZCBjaGFyIGZhdHR5cGUgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0gIGludCAgICAgICAgICAgIG1kcnZfcmV0Ow0KLSAgRl9QSFkgICAgICAgICAgcGh5Ow0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCAmJiAoIHJldCAhPSBGX0VSUl9OT1RGT1JNQVRURUQgKSApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICBnbF92b2x1bWUuc3RhdGUgPSBGX1NUQVRFX05FRURNT1VOVDsNCi0NCi0gIHBzcF9tZW1zZXQoICZwaHksIDAsIHNpemVvZiggRl9QSFkgKSApOw0KLQ0KLSAgbWRydl9yZXQgPSBtZHJ2LT5nZXRwaHkoIG1kcnYsICZwaHkgKTsNCi0gIGlmICggbWRydl9yZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gRl9FUlJfT05EUklWRTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX3ByZXBhcmVmb3JtYXQoICZwaHksIGZhdHR5cGUgKTsgLypubyBwYXJ0aXRpb24qLw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgcmV0dXJuIF9mX3Bvc3Rmb3JtYXQoICZwaHksIGZhdHR5cGUgKTsNCi19IC8qIGZuX2hhcmRmb3JtYXQgKi8NCi0NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogX2ZfcmVhZGJvb3RyZWNvcmQNCi0gKg0KLSAqIHJlYWQgYm9vdCByZWNvcmQgZnJvbSBhIHZvbHVtZSwgaXQgZGV0ZWN0cyBpZiB0aGVyZSBpcyBNQlIgb24gdGhlIG1lZGlhDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBfZl9yZWFkYm9vdHJlY29yZCAoIHZvaWQgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgICByZXQ7DQotICB1bnNpZ25lZCBjaGFyICogcHRyID0gKHVuc2lnbmVkIGNoYXIgKilnbF9zZWN0b3I7DQotICB1bnNpZ25lZCBsb25nICAgbWF4Y2x1c3RlciwgX247DQotICB1bnNpZ25lZCBsb25nICAgZmlyc3Rfc2VjdG9yID0gMDsNCi0NCi0gIGdsX3ZvbHVtZS5tZWRpYXR5cGUgPSBGX1VOS05PV05fTUVESUE7DQotDQotDQotICByZXQgPSBfZl9yZWFkZ2xzZWN0b3IoIDAgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIHJldDsNCi0gIH0NCi0NCi0NCi0gIGlmICggKCBwdHJbMHgxZmVdICE9IDB4NTUgKSB8fCAoIHB0clsweDFmZl0gIT0gMHhhYSApICkNCi0gIHsNCi0gICAgcmV0dXJuIEZfRVJSX05PVEZPUk1BVFRFRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyo/PyovDQotICB9DQotDQotICBpZiAoICggcHRyWzBdICE9IDB4ZWIgKSAmJiAoIHB0clswXSAhPSAweGU5ICkgKQ0KLSAgew0KLSAgICBmaXJzdF9zZWN0b3IgPSBfZl9nZXRsb25nKCAmcHRyWzB4MDggKyAweDFiZV0gKTsgLypzdGFydCBzZWN0b3IgZm9yIDFzdCBwYXJ0aW9vbiovDQotDQotICAgIHJldCA9IF9mX3JlYWRnbHNlY3RvciggZmlyc3Rfc2VjdG9yICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0NCi0gICAgaWYgKCAoIHB0clsweDFmZV0gIT0gMHg1NSApIHx8ICggcHRyWzB4MWZmXSAhPSAweGFhICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIEZfRVJSX05PVEZPUk1BVFRFRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKj8/Ki8NCi0gICAgfQ0KLQ0KLSAgICBpZiAoICggcHRyWzBdICE9IDB4ZWIgKSAmJiAoIHB0clswXSAhPSAweGU5ICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIEZfRVJSX05PVEZPUk1BVFRFRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyo/PyovDQotICAgIH0NCi0gIH0NCi0NCi0gIHB0ciArPSAxMTsNCi0gIGlmICggX2ZfZ2V0d29yZCggcHRyICkgIT0gRl9TRUNUT1JfU0laRSApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9OT1RTVVBQU0VDVE9SU0laRTsNCi0gIH0NCi0NCi0gIHB0ciArPSAyOw0KLSAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VjdG9yX3Blcl9jbHVzdGVyID0gKnB0cisrOw0KLSAgZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciA9IF9mX2dldHdvcmQoIHB0ciApOw0KLSAgcHRyICs9IDI7DQotICBnbF92b2x1bWUuYm9vdHJlY29yZC5udW1iZXJfb2ZfRkFUcyA9ICpwdHIrKzsNCi0gIGdsX3ZvbHVtZS5yb290Lm51bSA9IF9mX2dldHdvcmQoIHB0ciApOw0KLSAgcHRyICs9IDI7DQotICBnbF92b2x1bWUucm9vdC5udW0gKj0gc2l6ZW9mKCBGX0RJUkVOVFJZICk7DQotICBnbF92b2x1bWUucm9vdC5udW0gLz0gRl9TRUNUT1JfU0laRTsNCi0gIG1heGNsdXN0ZXIgPSBfZl9nZXR3b3JkKCBwdHIgKTsNCi0gIHB0ciArPSAyOw0KLSAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQubWVkaWFfZGVzY3JpcHRvciA9ICpwdHIrKzsNCi0gIGdsX3ZvbHVtZS5maXJzdGZhdC5udW0gPSBfZl9nZXR3b3JkKCBwdHIgKTsNCi0gIHB0ciArPSA2Ow0KLSAgX24gPSBfZl9nZXRsb25nKCBwdHIgKTsNCi0gIHB0ciArPSA0Ow0KLSAgaWYgKCBfbiA8IGZpcnN0X3NlY3RvciApDQotICB7DQotICAgIF9uID0gZmlyc3Rfc2VjdG9yOw0KLSAgfQ0KLQ0KLSAgZ2xfdm9sdW1lLmZpcnN0ZmF0LnNlY3RvciArPSBfbjsNCi0gIGlmICggIW1heGNsdXN0ZXIgKQ0KLSAgew0KLSAgICBtYXhjbHVzdGVyID0gX2ZfZ2V0bG9uZyggcHRyICk7DQotICB9DQotDQotICBwdHIgKz0gNDsNCi0NCi0NCi0gIGlmICggZ2xfdm9sdW1lLmZpcnN0ZmF0Lm51bSApDQotICB7DQotICAgIGdsX3ZvbHVtZS5yb290LnNlY3RvciA9IGdsX3ZvbHVtZS5maXJzdGZhdC5zZWN0b3IgKyAoIGdsX3ZvbHVtZS5maXJzdGZhdC5udW0gKiBnbF92b2x1bWUuYm9vdHJlY29yZC5udW1iZXJfb2ZfRkFUcyApOw0KLSAgICBnbF92b2x1bWUuX3RkYXRhLnNlY3RvciA9IGdsX3ZvbHVtZS5yb290LnNlY3RvciArIGdsX3ZvbHVtZS5yb290Lm51bTsNCi0gICAgZ2xfdm9sdW1lLl90ZGF0YS5udW0gPSAwOw0KLSAgICBwdHIgKz0gMzsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLmZpcnN0ZmF0Lm51bSA9IF9mX2dldGxvbmcoIHB0ciApOw0KLSAgICBwdHIgKz0gODsNCi0gICAgZ2xfdm9sdW1lLl90ZGF0YS5zZWN0b3IgPSBnbF92b2x1bWUuZmlyc3RmYXQuc2VjdG9yOw0KLSAgICBnbF92b2x1bWUuX3RkYXRhLnNlY3RvciArPSBnbF92b2x1bWUuZmlyc3RmYXQubnVtICogZ2xfdm9sdW1lLmJvb3RyZWNvcmQubnVtYmVyX29mX0ZBVHM7DQotICAgIGdsX3ZvbHVtZS5fdGRhdGEubnVtID0gMDsNCi0gICAgZ2xfdm9sdW1lLmJvb3RyZWNvcmQucm9vdGNsdXN0ZXIgPSBfZl9nZXRsb25nKCBwdHIgKTsNCi0gICAgcHRyICs9IDIzOw0KLSAgICBnbF92b2x1bWUucm9vdC5udW0gPSBnbF92b2x1bWUuYm9vdHJlY29yZC5zZWN0b3JfcGVyX2NsdXN0ZXI7DQotICAgIGdsX3ZvbHVtZS5yb290LnNlY3RvciA9ICggKCBnbF92b2x1bWUuYm9vdHJlY29yZC5yb290Y2x1c3RlciAtIDIgKSAqIGdsX3ZvbHVtZS5yb290Lm51bSApICsgZ2xfdm9sdW1lLl90ZGF0YS5zZWN0b3I7DQotICB9DQotDQotICBnbF92b2x1bWUuYm9vdHJlY29yZC5zZXJpYWxfbnVtYmVyID0gX2ZfZ2V0bG9uZyggcHRyICk7DQotDQotICBtYXhjbHVzdGVyIC09IGdsX3ZvbHVtZS5fdGRhdGEuc2VjdG9yOw0KLSAgbWF4Y2x1c3RlciArPSBfbjsNCi0gIGdsX3ZvbHVtZS5tYXhjbHVzdGVyID0gbWF4Y2x1c3RlciAvIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlcjsNCi0NCi0gIGlmICggZ2xfdm9sdW1lLm1heGNsdXN0ZXIgPCAoIEZfQ0xVU1RFUl9SRVNFUlZFRCAmIDB4ZmZmICkgKQ0KLSAgew0KLSAgICBnbF92b2x1bWUubWVkaWF0eXBlID0gRl9GQVQxMl9NRURJQTsNCi0gIH0NCi0gIGVsc2UgaWYgKCBnbF92b2x1bWUubWF4Y2x1c3RlciA8ICggRl9DTFVTVEVSX1JFU0VSVkVEICYgMHhmZmZmICkgKQ0KLSAgew0KLSAgICBnbF92b2x1bWUubWVkaWF0eXBlID0gRl9GQVQxNl9NRURJQTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgZ2xfdm9sdW1lLm1lZGlhdHlwZSA9IEZfRkFUMzJfTUVESUE7DQotICB9DQotDQotICBpZiAoIGdsX3ZvbHVtZS5ib290cmVjb3JkLm1lZGlhX2Rlc2NyaXB0b3IgIT0gMHhmOCApICAgIC8qZml4ZHJpdmUqLw0KLSAgew0KLSAgICBpZiAoIGdsX3ZvbHVtZS5ib290cmVjb3JkLm1lZGlhX2Rlc2NyaXB0b3IgIT0gMHhmMCApICAvKnJlbW92YWJsZSovDQotICAgIHsNCi0gICAgICByZXR1cm4gRl9FUlJfTk9URk9STUFUVEVEOyAgICAgIC8qPz8qLw0KLSAgICB9DQotICB9DQotDQotICByZXR1cm4gRl9OT19FUlJPUjsNCi19IC8qIF9mX3JlYWRib290cmVjb3JkICovDQotDQotDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIF9mX2dldHZvbHVtZQ0KLSAqDQotICogZ2V0dGluZyBiYWNrIGEgdm9sdW1lIGluZm8gc3RydWN0dXJlIG9mIGEgZ2l2ZW4gZHJpdmUsIGl0IHRyeSB0byBtb3VudHMNCi0gKiBkcml2ZSBpZiBpdCB3YXMgbm90IG1vdW50ZWQgYmVmb3JlDQotICoNCi0gKiBSRVRVUk5TDQotICoNCi0gKiBlcnJvciBjb2RlIG9yIHplcm8gaWYgc3VjY2Vzc2Z1bA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIF9mX2dldHZvbHVtZSAoIHZvaWQgKQ0KLXsNCi0gIHN3aXRjaCAoIGdsX3ZvbHVtZS5zdGF0ZSApDQotICB7DQotICAgIGNhc2UgRl9TVEFURV9OT05FOg0KLSAgICAgIHJldHVybiBGX0VSUl9PTkRSSVZFOw0KLQ0KLSAgICBjYXNlIEZfU1RBVEVfV09SS0lORzoNCi0NCi0gICAgICBpZiAoICFfZl9jaGVja3N0YXR1cygpICkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4gRl9OT19FUlJPUjsNCi0gICAgICB9DQotDQotICAgIC8qIGhlcmUgd2UgZG9uJ3Qgc3RvcCBjYXNlIGZsb3csICAqLw0KLSAgICAvKiBiZWNhdXNlIHdlIGhhdmUgdG8gY2xlYW4gdXAgdGhpcyB2b2x1bWUhICovDQotDQotICAgIGNhc2UgRl9TVEFURV9ORUVETU9VTlQ6DQotICAgIHsNCi0gICAgICBnbF9maWxlLm1vZGlmaWVkID0gMDsNCi0gICAgICBnbF92b2x1bWUubW9kaWZpZWQgPSAwOw0KLSAgICAgIGdsX3ZvbHVtZS5sYXN0YWxsb2NjbHVzdGVyID0gMDsNCi0gICAgICBnbF92b2x1bWUuYWN0c2VjdG9yID0gKHVuc2lnbmVkIGxvbmcpKCAtMSApOw0KLSAgICAgIGdsX3ZvbHVtZS5mYXRzZWN0b3IgPSAodW5zaWduZWQgbG9uZykoIC0xICk7DQotDQotICAgICAgZ2xfZmlsZS5tb2RlID0gRl9GSUxFX0NMT1NFOw0KLQ0KLSAgICAgIGdsX3ZvbHVtZS5jd2RbMF0gPSAwOyAgICAgLypyZXNldCBjd2QqLw0KLSAgICAgIGdsX3ZvbHVtZS5tZWRpYXR5cGUgPSBGX1VOS05PV05fTUVESUE7DQotDQotICAgICAgaWYgKCBtZHJ2LT5nZXRzdGF0dXMgIT0gTlVMTCApDQotICAgICAgew0KLSAgICAgICAgaWYgKCBtZHJ2LT5nZXRzdGF0dXMoIG1kcnYgKSAmIEZfU1RfTUlTU0lORyApDQotICAgICAgICB7DQotICAgICAgICAgIGdsX3ZvbHVtZS5zdGF0ZSA9IEZfU1RBVEVfTkVFRE1PVU5UOyAgICAgICAgIC8qY2FyZCBtaXNzaW5nKi8NCi0gICAgICAgICAgcmV0dXJuIEZfRVJSX0NBUkRSRU1PVkVEOw0KLSAgICAgICAgfQ0KLSAgICAgIH0NCi0NCi0gICAgICBpZiAoICFfZl9yZWFkYm9vdHJlY29yZCgpICkNCi0gICAgICB7DQotICAgICAgICBnbF92b2x1bWUuc3RhdGUgPSBGX1NUQVRFX1dPUktJTkc7DQotICAgICAgICByZXR1cm4gRl9OT19FUlJPUjsNCi0gICAgICB9DQotDQotICAgICAgZ2xfdm9sdW1lLm1lZGlhdHlwZSA9IEZfVU5LTk9XTl9NRURJQTsNCi0gICAgICByZXR1cm4gRl9FUlJfTk9URk9STUFUVEVEOw0KLSAgICB9DQotICB9IC8qIHN3aXRjaCAqLw0KLQ0KLSAgcmV0dXJuIEZfRVJSX09ORFJJVkU7DQotfSAvKiBfZl9nZXR2b2x1bWUgKi8NCi0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fZ2V0ZnJlZXNwYWNlDQotICoNCi0gKiBnZXQgdG90YWwvZnJlZS91c2VkL2JhZCBkaXNrc3BhY2UNCi0gKg0KLSAqIElOUFVUUw0KLSAqIHBzcGFjZSAtIHBvaW50ZXIgd2hlcmUgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uDQotICoNCi0gKiBSRVRVUk5TDQotICogZXJyb3IgY29kZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi11bnNpZ25lZCBjaGFyIGZuX2dldGZyZWVzcGFjZSAoIEZfU1BBQ0UgKiBwc3BhY2UgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0gIHVuc2lnbmVkIGxvbmcgIGE7DQotICB1bnNpZ25lZCBsb25nICBjbHVzdGVyc2l6ZTsNCi0NCi0gIHJldCA9IF9mX2dldHZvbHVtZSgpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgcHNwX21lbXNldCggcHNwYWNlLCAwLCBzaXplb2YoIEZfU1BBQ0UgKSApOw0KLSAgcHNwYWNlLT50b3RhbCA9IGdsX3ZvbHVtZS5tYXhjbHVzdGVyOw0KLQ0KLSAgZ2xfdm9sdW1lLmZhdHNlY3RvciA9ICh1bnNpZ25lZCBsb25nKS0xOw0KLSAgZm9yICggYSA9IDIgOyBhIDwgZ2xfdm9sdW1lLm1heGNsdXN0ZXIgKyAyIDsgYSsrICkNCi0gIHsNCi0gICAgdW5zaWduZWQgbG9uZyAgdmFsdWU7DQotDQotICAgIHJldCA9IF9mX2dldGNsdXN0ZXJ2YWx1ZSggYSwgJnZhbHVlICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiByZXQ7DQotICAgIH0NCi0NCi0gICAgaWYgKCAhdmFsdWUgKQ0KLSAgICB7DQotICAgICAgKysoIHBzcGFjZS0+ZnJlZSApOw0KLSAgICB9DQotICAgIGVsc2UgaWYgKCB2YWx1ZSA9PSBGX0NMVVNURVJfQkFEICkNCi0gICAgew0KLSAgICAgICsrKCBwc3BhY2UtPmJhZCApOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICsrKCBwc3BhY2UtPnVzZWQgKTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgY2x1c3RlcnNpemUgPSAodW5zaWduZWQgbG9uZykoIGdsX3ZvbHVtZS5ib290cmVjb3JkLnNlY3Rvcl9wZXJfY2x1c3RlciAqIEZfU0VDVE9SX1NJWkUgKTsNCi0gIGZvciAoIGEgPSAwIDsgKCBjbHVzdGVyc2l6ZSAmIDEgKSA9PSAwIDsgYSsrICkNCi0gIHsNCi0gICAgY2x1c3RlcnNpemUgPj49IDE7DQotICB9DQotDQotICBwc3BhY2UtPnRvdGFsX2hpZ2ggPSAoIHBzcGFjZS0+dG90YWwgKSA+PiAoIDMyIC0gYSApOw0KLSAgcHNwYWNlLT50b3RhbCA8PD0gYTsNCi0gIHBzcGFjZS0+ZnJlZV9oaWdoID0gKCBwc3BhY2UtPmZyZWUgKSA+PiAoIDMyIC0gYSApOw0KLSAgcHNwYWNlLT5mcmVlIDw8PSBhOw0KLSAgcHNwYWNlLT51c2VkX2hpZ2ggPSAoIHBzcGFjZS0+dXNlZCApID4+ICggMzIgLSBhICk7DQotICBwc3BhY2UtPnVzZWQgPDw9IGE7DQotICBwc3BhY2UtPmJhZF9oaWdoID0gKCBwc3BhY2UtPmJhZCApID4+ICggMzIgLSBhICk7DQotICBwc3BhY2UtPmJhZCA8PD0gYTsNCi0NCi0gIHJldHVybiBGX05PX0VSUk9SOw0KLX0gLyogZm5fZ2V0ZnJlZXNwYWNlICovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIGZuX2dldHNlcmlhbA0KLSAqDQotICogZ2V0IHNlcmlhbCBudW1iZXINCi0gKg0KLSAqIElOUFVUUw0KLSAqIHNlcmlhbCAtIHBvaW50ZXIgd2hlcmUgdG8gc3RvcmUgdGhlIHNlcmlhbCBudW1iZXINCi0gKg0KLSAqIFJFVFVSTlMNCi0gKiBlcnJvciBjb2RlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgZm5fZ2V0c2VyaWFsICggdW5zaWduZWQgbG9uZyAqIHNlcmlhbCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgcmV0ID0gX2ZfZ2V0dm9sdW1lKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiByZXQ7DQotICB9DQotDQotICAqc2VyaWFsID0gZ2xfdm9sdW1lLmJvb3RyZWNvcmQuc2VyaWFsX251bWJlcjsNCi0gIHJldHVybiAwOw0KLX0NCi0NCi0NCi0vKg0KLSoqIGZzX2luaXQNCi0qKg0KLSoqIEluaXRpYWxpemUgU1RISU4gZmlsZSBzeXN0ZW0NCi0qKg0KLSoqIFJFVFVSTjogRl9OT19FUlJPUiBvbiBzdWNjZXNzLCBvdGhlciBpZiBlcnJvci4NCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnNfaW5pdCAoIHZvaWQgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJjID0gRl9OT19FUlJPUjsNCi0NCi0jaWYgUlRPU19TVVBQT1JUDQotICByYyA9IGZzcl9pbml0KCk7DQotICBpZiAoIHJjICkNCi0gIHsNCi0gICAgcmV0dXJuIHJjOw0KLSAgfQ0KLQ0KLSNlbmRpZg0KLSAgcmV0dXJuIHJjOw0KLX0gLyogZnNfaW5pdCAqLw0KLQ0KLQ0KLS8qDQotKiogZnNfZGVsZXRlDQotKioNCi0qKiBEZWxldGUgU1RISU4gZmlsZSBzeXN0ZW0NCi0qKg0KLSoqIFJFVFVSTjogRl9OT19FUlJPUiBvbiBzdWNjZXNzLCBvdGhlciBpZiBlcnJvci4NCi0qLw0KLXVuc2lnbmVkIGNoYXIgZnNfZGVsZXRlICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmMgPSBGX05PX0VSUk9SOw0KLQ0KLSNpZiBSVE9TX1NVUFBPUlQNCi0gIHJjID0gZnNyX2RlbGV0ZSgpOw0KLSAgaWYgKCByYyApDQotICB7DQotICAgIHJldHVybiByYzsNCi0gIH0NCi0NCi0jZW5kaWYNCi0gIHJldHVybiByYzsNCi19IC8qIGZzX2RlbGV0ZSAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBmbl9pbml0dm9sdW1lDQotICoNCi0gKiBpbml0aWF0ZSBhIHZvbHVtZSwgdGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkIDFzdCB0byBzZXQgcGh5c2ljYWwNCi0gKiBkcml2ZXIgZnVuY3Rpb24gdG8gYSBnaXZlbiB2b2x1bWUNCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgZm5faW5pdHZvbHVtZSAoIEZfRFJJVkVSSU5JVCBpbml0ZnVuYyApDQotew0KLSNpZiBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAxDQotCXsNCi0JCWV4dGVybiB4U2VtYXBob3JlSGFuZGxlIGZzX2xvY2tfc2VtYXBob3JlOw0KLQ0KLQkJaWYoIGZzX2xvY2tfc2VtYXBob3JlID09IE5VTEwgKQ0KLQkJew0KLQkJCWZzX2xvY2tfc2VtYXBob3JlID0geFNlbWFwaG9yZUNyZWF0ZU11dGV4KCk7DQotCQkJaWYoIGZzX2xvY2tfc2VtYXBob3JlID09IE5VTEwgKQ0KLQkJCXsNCi0JCQkJcmV0dXJuIEZfRVJSX09TOw0KLQkJCX0NCi0JCX0NCi0JfQ0KLSNlbmRpZiAvKiBGX0ZTX1RIUkVBRF9BV0FSRSAqLw0KLQ0KLSAgZ2xfdm9sdW1lLnN0YXRlID0gRl9TVEFURV9OT05FOw0KLQ0KLSAgbWRydiA9IGluaXRmdW5jKCAwICk7DQotICBpZiAoIG1kcnYgPT0gTlVMTCApDQotICB7DQotICAgIHJldHVybiBGX0VSUl9JTklURlVOQzsNCi0gIH0NCi0NCi0gIGdsX3ZvbHVtZS5zdGF0ZSA9IEZfU1RBVEVfTkVFRE1PVU5UOw0KLQ0KLSNpZiBGX0ZJTEVfQ0hBTkdFRF9FVkVOVA0KLSAgZl9maWxlY2hhbmdlZGV2ZW50ID0gMDsNCi0jZW5kaWYNCi0NCi0gIHJldHVybiBfZl9nZXR2b2x1bWUoKTsNCi19IC8qIGZuX2luaXR2b2x1bWUgKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogZm5fZGVsdm9sdW1lDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXVuc2lnbmVkIGNoYXIgZm5fZGVsdm9sdW1lICggdm9pZCApDQotew0KLSAgaWYgKCBtZHJ2LT5yZWxlYXNlICkNCi0gIHsNCi0gICAgKHZvaWQpbWRydi0+cmVsZWFzZSggbWRydiApOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIDA7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdm9sdW1lLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uL3ZvbHVtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzBkZTAzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC9jb21tb24vdm9sdW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9fVk9MVU1FX0gNCi0jZGVmaW5lIF9fVk9MVU1FX0gNCi0NCi0jaW5jbHVkZSAiY29uZmlnX2ZhdF9zbC5oIg0KLQ0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHNlY3Rvcl9wZXJfY2x1c3RlcjsNCi0gIHVuc2lnbmVkIGNoYXIgIG51bWJlcl9vZl9GQVRzOw0KLSAgdW5zaWduZWQgY2hhciAgbWVkaWFfZGVzY3JpcHRvcjsNCi0gIHVuc2lnbmVkIGxvbmcgIHJvb3RjbHVzdGVyOw0KLSAgdW5zaWduZWQgbG9uZyAgc2VjdG9yX3Blcl9GQVQ7DQotICB1bnNpZ25lZCBsb25nICBzZWN0b3JfcGVyX0ZBVDMyOw0KLSAgdW5zaWduZWQgbG9uZyAgc2VyaWFsX251bWJlcjsNCi19IEZfQk9PVFJFQ09SRDsNCi0NCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gIHVuc2lnbmVkIGxvbmcgIHNlY3RvcjsgLypzdGFydCBzZWN0b3IqLw0KLSAgdW5zaWduZWQgbG9uZyAgbnVtOyAgICAvKm51bWJlciBvZiBzZWN0b3JzKi8NCi19IEZfU0VDVE9SOw0KLQ0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgdW5zaWduZWQgY2hhciAgc3RhdGU7DQotICBGX0JPT1RSRUNPUkQgICBib290cmVjb3JkOw0KLSAgRl9TRUNUT1IgICAgICAgZmlyc3RmYXQ7DQotICBGX1NFQ1RPUiAgICAgICByb290Ow0KLSAgRl9TRUNUT1IgICAgICAgX3RkYXRhOw0KLQ0KLSAgdW5zaWduZWQgbG9uZyAgYWN0c2VjdG9yOw0KLSAgdW5zaWduZWQgbG9uZyAgZmF0c2VjdG9yOw0KLQ0KLSAgdW5zaWduZWQgbG9uZyAgbGFzdGFsbG9jY2x1c3RlcjsNCi0gIHVuc2lnbmVkIGNoYXIgIG1vZGlmaWVkOw0KLSAgY2hhciAgICAgICAgICAgY3dkW0ZfTUFYUEFUSF07IC8qY3VycmVudCB3b3JraW5nIGZvbGRlciBpbiB0aGlzIHZvbHVtZSovDQotICB1bnNpZ25lZCBjaGFyICBtZWRpYXR5cGU7DQotICB1bnNpZ25lZCBsb25nICBtYXhjbHVzdGVyOw0KLX0gRl9WT0xVTUU7DQotDQotDQotZW51bQ0KLXsNCi0vKiAgMCAqLw0KLSAgRl9TVEFURV9OT05FLA0KLQ0KLS8qICAxICovIEZfU1RBVEVfTkVFRE1PVU5ULA0KLQ0KLS8qICAyICovIEZfU1RBVEVfV09SS0lORw0KLX07DQotDQotDQotZXh0ZXJuIEZfVk9MVU1FICBnbF92b2x1bWU7DQotZXh0ZXJuIEZfRklMRSAgICBnbF9maWxlOw0KLWV4dGVybiBjaGFyICAgICAgZ2xfc2VjdG9yW0ZfU0VDVE9SX1NJWkVdOyAvKiBhY3R1YWwgc2VjdG9yICovDQotDQotdW5zaWduZWQgY2hhciBfZl9nZXR2b2x1bWUgKCB2b2lkICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX19WT0xVTUVfSCAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC90ZXN0L3Rlc3QuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC90ZXN0L3Rlc3QuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc0MDQ3YS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvdGVzdC90ZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMDY5ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlDQotICogdGVybXMuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbg0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20NCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaW5jbHVkZSAidGVzdC5oIg0KLSNpbmNsdWRlICIuLi8uLi9hcGkvZmF0X3NsLmgiDQotI2luY2x1ZGUgImNvbmZpZ19mYXRfc2xfdGVzdC5oIg0KLSNpbmNsdWRlICIuLi8uLi9wc3AvdGFyZ2V0L2ZhdF9zbC9wc3BfdGVzdC5oIg0KLQ0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi1zdGF0aWMgY2hhciAgY3dkW0ZfTUFYUEFUSF07DQotDQotc3RhdGljIEZfRklORCAgZmluZDsNCi0NCi1zdGF0aWMgdm9pZCBfZl9kZWxldGVhbGwgKCB2b2lkICkNCi17DQotICBGX0ZJTkQgICAgICAgICBmMjsNCi0gIHVuc2lnbmVkIGNoYXIgIHNkID0gMCwgcmMsIGZsID0gMDsNCi0NCi0gIGYyID0gZmluZDsNCi0gIGRvDQotICB7DQotICAgIHJjID0gZl9maW5kZmlyc3QoICIqLioiLCAmZmluZCApOw0KLSAgICB3aGlsZSAoIHJjID09IDAgJiYgZmluZC5maWxlbmFtZVswXSA9PSAnLicgKQ0KLSAgICB7DQotICAgICAgcmMgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgICB9DQotDQotICAgIGlmICggcmMgPT0gMCApDQotICAgIHsNCi0gICAgICBpZiAoIGZpbmQuYXR0ciAmIEZfQVRUUl9ESVIgKQ0KLSAgICAgIHsNCi0gICAgICAgICsrc2Q7DQotICAgICAgICBmbCA9IDE7DQotICAgICAgICBmMiA9IGZpbmQ7DQotICAgICAgICAodm9pZClmX2NoZGlyKCBmaW5kLmZpbGVuYW1lICk7DQotICAgICAgICBjb250aW51ZTsNCi0gICAgICB9DQotICAgICAgZWxzZQ0KLSAgICAgIHsNCi0gICAgICAgICh2b2lkKWZfZGVsZXRlKCBmaW5kLmZpbGVuYW1lICk7DQotICAgICAgICByYyA9IGZfZmluZG5leHQoICZmaW5kICk7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIGlmICggcmMgJiYgc2QgJiYgZmwgKQ0KLSAgICB7DQotICAgICAgKHZvaWQpZl9jaGRpciggIi4uIiApOw0KLSAgICAgIC0tc2Q7DQotICAgICAgZmwgPSAwOw0KLSAgICAgIGZpbmQgPSBmMjsNCi0gICAgICAodm9pZClmX3JtZGlyKCBmaW5kLmZpbGVuYW1lICk7DQotICAgICAgcmMgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgICB9DQotDQotICAgIGlmICggcmMgJiYgc2QgJiYgIWZsICkNCi0gICAgew0KLSAgICAgICh2b2lkKWZfY2hkaXIoICIvIiApOw0KLSAgICAgIHNkID0gMDsNCi0gICAgICByYyA9IDA7DQotICAgIH0NCi0gIH0NCi0gIHdoaWxlICggcmMgPT0gMCApOw0KLX0gLyogX2ZfZGVsZXRlYWxsICovDQotDQotY2hhciAgc3RtcFsyMF07DQotc3RhdGljIGNoYXIgKiBmX25hbWVjb252ICggY2hhciAqIHMgKQ0KLXsNCi0gIGNoYXIgKiBzcyA9IHN0bXA7DQotDQotICBmb3IgKCA7IDsgKQ0KLSAgew0KLSAgICBjaGFyICBjaCA9ICpzKys7DQotICAgIGlmICggKCBjaCA+PSAnYScgKSAmJiAoIGNoIDw9ICd6JyApICkNCi0gICAgew0KLSAgICAgIGNoICs9ICdBJyAtICdhJzsNCi0gICAgfQ0KLQ0KLSAgICAqc3MrKyA9IGNoOw0KLSAgICBpZiAoICFjaCApDQotICAgIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIHN0bXA7DQotfSAvKiBmX25hbWVjb252ICovDQotDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgZl9mb3JtYXR0aW5nICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgX2ZfZHVtcCggImZfZm9ybWF0dGluZyIgKTsNCi0NCi0vKmNoZWNraW5nIGZvcm1hdHRpbmcqLw0KLSAgcmV0ID0gZl9mb3JtYXQoIEZfRkFUX1RZUEUgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfcG93ZXJvbigpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIF9mX2R1bXAoICJwYXNzZWQuLi4iICk7DQotICByZXR1cm4gMDsNCi19IC8qIGZfZm9ybWF0dGluZyAqLw0KLQ0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIF9mX2NoZWNrY3dkICggY2hhciAqIG9yaWcgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0NCi0gIHJldCA9IGZfZ2V0Y3dkKCBjd2QsIEZfTUFYUEFUSCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gcmV0Ow0KLSAgfQ0KLQ0KLSAgaWYgKCBzdHJjbXAoIG9yaWcsIGN3ZCApICkNCi0gIHsNCi0gICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKS0xOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIDA7DQotfQ0KLQ0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGZfZGlydGVzdCAoIHZvaWQgKQ0KLXsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0NCi0gIF9mX2R1bXAoICJmX2RpcnRlc3QiICk7DQotDQotICBfZl9kZWxldGVhbGwoKTsNCi0NCi0vKmNyZWF0ZXMgYSBhYiBhYmMgYWJjZCovDQotICByZXQgPSBmX21rZGlyKCAiYSIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ta2RpciggImFiIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiYWJjIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiYWJjYSIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY3JlYXRlcyBkaXJlY3RvcmllcyBpbiAvYSAgLSAgYSBhYiBhYmMgYWJjZCovDQotICByZXQgPSBmX21rZGlyKCAiYS9hIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiYS9hYiIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ta2RpciggImEvYWJjIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiYS9hYmNkIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypjaGFuZ2UgaW50byBhL2FiY2QgYW5kIGNoZWNrIGN3ZCovDQotICByZXQgPSBmX2NoZGlyKCAiYS9hYmNkIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBfZl9jaGVja2N3ZCggZl9uYW1lY29udiggIi9hL2FiY2QiICkgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qbWFrZSBkaXJlY3RvcnkgdCBjaGFuZ2UgaW50byB0IGFuZCBjaGVjayBjd2Q9ImEvYWJjZC90IiovDQotICByZXQgPSBmX21rZGlyKCAidCIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jaGRpciggInQiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX2NoZWNrY3dkKCBmX25hbWVjb252KCAiL2EvYWJjZC90IiApICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIuIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBfZl9jaGVja2N3ZCggZl9uYW1lY29udiggIi9hL2FiY2QvdCIgKSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiLi4vLiIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfY2hlY2tjd2QoIGZfbmFtZWNvbnYoICIvYS9hYmNkIiApICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKnJlbW92aW5nIHQgZGlyKi8NCi0gIHJldCA9IGZfcm1kaXIoICJ0IiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAidCIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qcmVtb3ZpbmcgL2EgZGlyKi8NCi0gIHJldCA9IGZfcm1kaXIoICIvYWIiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIvYWIiICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKnJlbW92aW5nIC9hIGRpciovDQotICByZXQgPSBmX3JtZGlyKCAiLi4vLi4vYSIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEVNUFRZICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qcmVtb3ZpbmcgL2FiY2EgZGlyKi8NCi0gIHJldCA9IGZfcm1kaXIoICJhOi9hYmNhIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypjaGFuZ2luZyBpbnZhbGlkIGRpcnMqLw0KLSAgcmV0ID0gZl9jaGRpciggIiIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX0lOVkFMSUROQU1FICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jaGRpciggIiAiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX2NoZWNrY3dkKCBmX25hbWVjb252KCAiL2EvYWJjZCIgKSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiPyIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX0lOVkFMSUROQU1FICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jaGRpciggIiouKiIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX0lOVkFMSUROQU1FICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfY2hlY2tjd2QoIGZfbmFtZWNvbnYoICIvYS9hYmNkIiApICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKmNoYW5naW5nIGludG8gL2FiYyBhbmQgcmVtb3ZlcyBzdWJmb2xkZXIgZnJvbSAvYS8gKi8NCi0gIHJldCA9IGZfY2hkaXIoICIvYWJjIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX3JtZGlyKCAiL2EvYSIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ybWRpciggIkE6Li4vYS9hYiIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ybWRpciggIkE6L2EvYWJjIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX3JtZGlyKCAiLi4vLi9hYmMvLi4vLi9hLy4uL2EvYWJjZCIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qc29tZSBpbnZhbGlkIHJtZGlyKi8NCi0gIHJldCA9IGZfcm1kaXIoICIuIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX3JtZGlyKCAiLi4iICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKmNyZWF0ZSBhZ2FpbiBhYmMgcmVtb3ZlIGFiYyovDQotICByZXQgPSBmX21rZGlyKCAiLi4vLi9hYmMiICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9EVVBMSUNBVEVEICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ybWRpciggIi4uL2FiYyIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ta2RpciggIi4uLy4vYWJjIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfSU5WQUxJRERJUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgLypjd2QgaXMgbm90IGV4aXN0Ki8NCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIvIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLyp0cnkgLiBhbmQgLi4gaW4gdGhlIHJvb3QqLw0KLSAgcmV0ID0gZl9jaGRpciggIi4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIuLy4vLi8uIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiLi4iICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX2NoZWNrY3dkKCAiLyIgKTsgLypyb290ISovDQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKnRlc3QgLiBhbmQgLi4gaW4gYSBhbmQgcmVtb3ZlIGEqLw0KLSAgcmV0ID0gZl9jaGRpciggImEiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIuLiIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jaGRpciggImEiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2hkaXIoICIuIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiYSIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jaGRpciggIi4vLi4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfcm1kaXIoICJhIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypjaGVjayBpZiBhbGwgYXJlIHJlbW92ZWQqLw0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIqLioiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBfZl9kdW1wKCAicGFzc2VkLi4uIiApOw0KLSAgcmV0dXJuIDA7DQotfSAvKiBmX2RpcnRlc3QgKi8NCi0NCi0NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBmX2ZpbmRpbmd0ZXN0ICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgX2ZfZHVtcCggImZfZmluZGluZ3Rlc3QiICk7DQotDQotICBfZl9kZWxldGVhbGwoKTsNCi0NCi0vKmNoZWNrIGVtcHR5Ki8NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4qIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY3JlYXRlIEhlbGxvLmRpciovDQotICByZXQgPSBmX21rZGlyKCAiSGVsbG8uZGlyIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypjaGVjayBpZiBpdCBpcyBleGlzdCwgYW5kIG9ubHkgZXhpc3QqLw0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIqLioiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgZl9uYW1lY29udiggIkhlbGxvLmRpciIgKSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggZmluZC5hdHRyICE9IEZfQVRUUl9ESVIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kbmV4dCggJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY2hlY2sgc29tZSBub3QgZm91bmRzKi8NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAicSouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiSGVsbG8uIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICJhLyouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9JTlZBTElERElSICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIuIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIuLiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiP2UuKiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4iLCAmZmluZCApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouPyIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4/PyIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0NCi0vKmNoZWNrIHNvbWUgZm91bmRzKi8NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi5kaXIiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouZD9yIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIqLmQ/PyIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4/Pz8iLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIj9lbGxvLj8/PyIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiaGU/P28uZGlyIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICJoZT8qLmRpciIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiSEVMTE8uRElSIiwgJmZpbmQgKTsgLypubyBjYXBpdGFscyBzZW5zaXRpdml0eSBpbiBmaW5kISEqLw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypjaGFuZ2UgaW50byBoZWxsby5kaXIqLw0KLSAgcmV0ID0gZl9jaGRpciggImhlbGxvLmRpciIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIqLioiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIi4uIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICI/PyIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiLiIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiayouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4iLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgIi4iICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kbmV4dCggJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBzdHJjbXAoIGZpbmQuZmlsZW5hbWUsICIuLiIgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouYSIsICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKmNyZWF0aW5nIHRlc3RkaXIgYW5kIGZpbmQgaXQqLw0KLSAgcmV0ID0gZl9ta2RpciggInRlc3RkaXIiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4iLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgIi4iICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kbmV4dCggJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBzdHJjbXAoIGZpbmQuZmlsZW5hbWUsICIuLiIgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgZl9uYW1lY29udiggInRlc3RkaXIiICkgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGlmICggc3RyY21wKCBmaW5kLmZpbGVuYW1lLCAiLiIgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgIi4uIiApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZG5leHQoICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGlmICggc3RyY21wKCBmaW5kLmZpbGVuYW1lLCBmX25hbWVjb252KCAidGVzdGRpciIgKSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZG5leHQoICZmaW5kICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RGT1VORCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0vKnNlYXJjaCBleGFjdCBmaWxlKi8NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAidGVzdERpciIsICZmaW5kICk7IC8qbm8gY2FwaXRhbHMhKi8NCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBzdHJjbXAoIGZpbmQuZmlsZW5hbWUsIGZfbmFtZWNvbnYoICJ0ZXN0ZGlyIiApICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kbmV4dCggJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLQ0KLS8qZ28gYmFjayB0byByb290IGFuZCByZW1vdmUgZGlycyovDQotICByZXQgPSBmX2NoZGlyKCAiXFwiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfcm1kaXIoICJIZWxsby5kaXIvdGVzdGRpciIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ybWRpciggIkhlbGxvLmRpciIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY2hlY2sgaWYgYWxsIGFyZSByZW1vdmVkKi8NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4qIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgX2ZfZHVtcCggInBhc3NlZC4uLiIgKTsNCi0gIHJldHVybiAwOw0KLX0gLyogZl9maW5kaW5ndGVzdCAqLw0KLQ0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGZfcG93ZXJmYWlsICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgcmV0Ow0KLQ0KLSAgX2ZfZHVtcCggImZfcG93ZXJmYWlsIiApOw0KLQ0KLS8qY2hlY2tpbmcgaWYgaXRzIHBvd2VyIGZhaWwgc3lzdGVtIChSQU1EUklWRSBpcyBub3QgcG93ZXJmYWlsISkqLw0KLSAgcmV0ID0gZl9ta2RpciggInRlc3RkaXIiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX3Bvd2Vyb24oKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICJ0ZXN0ZGlyIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY2hlY2tpbmcgZm9ybWF0dGluZyovDQotICByZXQgPSBmX2Zvcm1hdCggRl9GQVRfVFlQRSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBfZl9wb3dlcm9uKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4qIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLS8qY2hlY2tpbmcgZm9ybWF0dGluZywgMXN0IGNyZWF0aW5nKi8NCi0gIHJldCA9IGZfZm9ybWF0KCBGX0ZBVF9UWVBFICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfbWtkaXIoICJ0ZXN0ZGlyIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggInRlc3RkaXIiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgZl9uYW1lY29udiggInRlc3RkaXIiICkgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBfZl9wb3dlcm9uKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAiKi4qIiwgJmZpbmQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBzdHJjbXAoIGZpbmQuZmlsZW5hbWUsIGZfbmFtZWNvbnYoICJ0ZXN0ZGlyIiApICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLS8qY2hlY2tpbmcgZm9ybWF0dGluZywgMm5kIGNyZWF0aW5nKi8NCi0gIHJldCA9IGZfZm9ybWF0KCBGX0ZBVF9UWVBFICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfbWtkaXIoICJ0ZXN0ZGlyIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggInRlc3RkaXIiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgZl9uYW1lY29udiggInRlc3RkaXIiICkgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAidGVzdGRpcjIiICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZGZpcnN0KCAidGVzdGRpcjIiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIHN0cmNtcCggZmluZC5maWxlbmFtZSwgZl9uYW1lY29udiggInRlc3RkaXIyIiApICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfcG93ZXJvbigpOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRmaXJzdCggIiouKiIsICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGlmICggc3RyY21wKCBmaW5kLmZpbGVuYW1lLCBmX25hbWVjb252KCAidGVzdGRpciIgKSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZmluZG5leHQoICZmaW5kICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGlmICggc3RyY21wKCBmaW5kLmZpbGVuYW1lLCBmX25hbWVjb252KCAidGVzdGRpcjIiICkgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2ZpbmRuZXh0KCAmZmluZCApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotDQotLypjaGVja2luZyBlbXB0eSovDQotICByZXQgPSBfZl9wb3dlcm9uKCk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZm9ybWF0KCBGX0ZBVF9UWVBFICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IF9mX3Bvd2Vyb24oKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9maW5kZmlyc3QoICIqLioiLCAmZmluZCApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotDQotICBfZl9kdW1wKCAicGFzc2VkLi4uIiApOw0KLSAgcmV0dXJuIDA7DQotfSAvKiBmX3Bvd2VyZmFpbCAqLw0KLQ0KLQ0KLWNoYXIgIHRlc3RidWZmZXJbRl9NQVhfU0VFS19URVNUICsgMTZdOyAvKiArMTYgZm9yIGZfYXBwZW5kaW5nIHRlc3QgKi8NCi0NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBjaGVja2ZpbGVjb250ZW50ICggbG9uZyBudW1zLCB1bnNpZ25lZCBjaGFyIHZhbHVlLCBGX0ZJTEUgKiBmaWxlICkNCi17DQotICB1bnNpZ25lZCBjaGFyICBjaDsNCi0NCi0gIHdoaWxlICggbnVtcy0tICkNCi0gIHsNCi0gICAgaWYgKCBmX2VvZiggZmlsZSApICkNCi0gICAgew0KLSAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAgICAgLyplb2YgPyovDQotICAgIH0NCi0NCi0gICAgaWYgKCAxICE9IGZfcmVhZCggJmNoLCAxLCAxLCBmaWxlICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIDE7DQotICAgIH0NCi0NCi0gICAgaWYgKCBjaCAhPSB2YWx1ZSApDQotICAgIHsNCi0gICAgICByZXR1cm4gMTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIDA7DQotfSAvKiBjaGVja2ZpbGVjb250ZW50ICovDQotDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgZl9zZWVraW5nICggaW50IHNlY3RvcnNpemUgKQ0KLXsNCi0gIEZfRklMRSAgICAgICAqIGZpbGU7DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotICB1bnNpZ25lZCBsb25nICBzaXplOw0KLSAgdW5zaWduZWQgbG9uZyAgcG9zOw0KLSAgdW5zaWduZWQgbG9uZyAgZm5hbWVfcG9zOw0KLSAgY2hhciAgICAgICAgICogdGVzdF9mbmFtZVs0XSA9DQotICB7DQotICAgICJ0ZXN0MS50eHQiLCAidGVzdDIudHh0IiwgInRlc3QzLnR4dCIsICJ0ZXN0NC50eHQiDQotICB9Ow0KLQ0KLSAgaWYgKCBzZWN0b3JzaXplID09IDEyOCApDQotICB7DQotICAgIF9mX2R1bXAoICJmX3NlZWtpbmcgd2l0aCAxMjgiICk7DQotICB9DQotDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gMTI4ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDI1NiApDQotICB7DQotICAgIF9mX2R1bXAoICJmX3NlZWtpbmcgd2l0aCAyNTYiICk7DQotICB9DQotI2VuZGlmDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gMjU2ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDUxMiApDQotICB7DQotICAgIF9mX2R1bXAoICJmX3NlZWtpbmcgd2l0aCA1MTIiICk7DQotICB9DQotI2VuZGlmDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gNTEyICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDEwMjQgKQ0KLSAgew0KLSAgICBfZl9kdW1wKCAiZl9zZWVraW5nIHdpdGggMTAyNCIgKTsNCi0gIH0NCi0jZW5kaWYNCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiAxMDI0ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDIwNDggKQ0KLSAgew0KLSAgICBfZl9kdW1wKCAiZl9zZWVraW5nIHdpdGggMjA0OCIgKTsNCi0gIH0NCi0jZW5kaWYNCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiAyMDQ4ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDQwOTYgKQ0KLSAgew0KLSAgICBfZl9kdW1wKCAiZl9zZWVraW5nIHdpdGggNDA5NiIgKTsNCi0gIH0NCi0jZW5kaWYNCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiA0MDk2ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDgxOTIgKQ0KLSAgew0KLSAgICBfZl9kdW1wKCAiZl9zZWVraW5nIHdpdGggODE5MiIgKTsNCi0gIH0NCi0jZW5kaWYNCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiA4MTkyICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDE2Mzg0ICkNCi0gIHsNCi0gICAgX2ZfZHVtcCggImZfc2Vla2luZyB3aXRoIDE2Mzg0IiApOw0KLSAgfQ0KLSNlbmRpZg0KLSNpZiAoIEZfTUFYX1NFRUtfVEVTVCA+IDE2Mzg0ICkNCi0gIGVsc2UgaWYgKCBzZWN0b3JzaXplID09IDMyNzY4ICkNCi0gIHsNCi0gICAgX2ZfZHVtcCggImZfc2Vla2luZyB3aXRoIDMyNzY4IiApOw0KLSAgfQ0KLSNlbmRpZg0KLSAgZWxzZQ0KLSAgew0KLSAgICBfZl9kdW1wKCAiZl9zZWVraW5nIHdpdGggcmFuZG9tIiApOw0KLSAgfQ0KLQ0KLS8qY2hlY2tpbmcgc2VjdG9yIGJvdW5kYXJ5IHNlZWtlbmcqLw0KLSAgZmlsZSA9IGZfb3BlbiggInRlc3QuYmluIiwgIncrIiApOw0KLSAgaWYgKCAhZmlsZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotLyp3cml0ZSBzZWN0b3JzaXplIHRpbWVzIDAqLw0KLSAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgMCwgc2VjdG9yc2l6ZSApOw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIChsb25nKXNlY3RvcnNpemUsIGZpbGUgKTsNCi0gIGlmICggc2l6ZSAhPSAodW5zaWduZWQgbG9uZylzZWN0b3JzaXplICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKnNlZWsgYmFjayBhbmQgcmVhZCBzb21lKi8NCi0gIHJldCA9IGZfc2VlayggZmlsZSwgMCwgRl9TRUVLX1NFVCApOyAvKnNlZWsgYmFjayovDQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCBzZWN0b3JzaXplLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gKHVuc2lnbmVkIGxvbmcpc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKXNlY3RvcnNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotLypmYWtlIHJlYWQgYXQgZW9mKi8NCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX3JlYWQoIHRlc3RidWZmZXIsIDEsIDIsIGZpbGUgKTsgLyplb2YhKi8NCi0gIGlmICggc2l6ZSAhPSAwICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKndyaXRpbmcgc2VjdG9yc2l6ZSB0aW1lcyAxIGF0IHRoZSBlbmQqLw0KLSAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgMSwgc2VjdG9yc2l6ZSApOw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIHNlY3RvcnNpemUsIGZpbGUgKTsNCi0gIGlmICggc2l6ZSAhPSAodW5zaWduZWQgbG9uZylzZWN0b3JzaXplICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCBzZWN0b3JzaXplICogMiApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qc2Vla2luZyBiYWNrIGFuZCByZWFkIDFieXRlIGxlc3MqLw0KLSAgcmV0ID0gZl9zZWVrKCBmaWxlLCAwLCBGX1NFRUtfU0VUICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCBzZWN0b3JzaXplIC0gMSwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9ICh1bnNpZ25lZCBsb25nKSggc2VjdG9yc2l6ZSAtIDEgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKSggc2VjdG9yc2l6ZSAtIDEgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0NCi0vKndyaXRlIDIgdGltZXMgMiovDQotICBwc3BfbWVtc2V0KCB0ZXN0YnVmZmVyLCAyLCBzZWN0b3JzaXplICk7DQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgMiwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9IDIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgcG9zID0gKHVuc2lnbmVkIGxvbmcpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSAodW5zaWduZWQgbG9uZykoIHNlY3RvcnNpemUgKyAxICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotLypyZWFkIDIgYnl0ZXMqLw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfcmVhZCggdGVzdGJ1ZmZlciwgMiwgMSwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9IDEgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgcG9zID0gKHVuc2lnbmVkIGxvbmcpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSAodW5zaWduZWQgbG9uZykoIHNlY3RvcnNpemUgKyAzICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotDQotLyp3cml0ZSA0IHRpbWVzIDMqLw0KLSAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgMywgc2VjdG9yc2l6ZSApOw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIDQsIGZpbGUgKTsNCi0gIGlmICggc2l6ZSAhPSA0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCBzZWN0b3JzaXplICsgMyArIDQgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKnNlZWsgYXQgMiovDQotICByZXQgPSBmX3NlZWsoIGZpbGUsIDIsIEZfU0VFS19TRVQgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcG9zID0gKHVuc2lnbmVkIGxvbmcpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSAyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qd3JpdGUgNiB0aW1lcyA0Ki8NCi0gIHBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDQsIHNlY3RvcnNpemUgKTsNCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCA2LCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gNiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9IDggKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotLypzZWVrIGVuZCAtNCovDQotICByZXQgPSBmX3NlZWsoIGZpbGUsIC00LCBGX1NFRUtfRU5EICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCAyICogc2VjdG9yc2l6ZSAtIDQgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKnJlYWQgMiBieXRlcyovDQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCAyLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gMiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKSggMiAqIHNlY3RvcnNpemUgLSAyICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotLyp3cml0ZSA4IHRpbWVzIDUqLw0KLSAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgNSwgc2VjdG9yc2l6ZSApOw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIDgsIGZpbGUgKTsNCi0gIGlmICggc2l6ZSAhPSA4ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCAyICogc2VjdG9yc2l6ZSArIDYgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKnNlZWsgdG8gdGhlIGJlZ2luaW5nKi8NCi0gIHJldCA9IGZfc2VlayggZmlsZSwgMCwgRl9TRUVLX1NFVCApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qc2VlayB0byB0aGUgZW5kKi8NCi0gIHJldCA9IGZfc2VlayggZmlsZSwgMiAqIHNlY3RvcnNpemUgKyA2LCBGX1NFRUtfU0VUICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCAyICogc2VjdG9yc2l6ZSArIDYgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKndyaXRlIDIgdGltZXMgNiovDQotICBwc3BfbWVtc2V0KCB0ZXN0YnVmZmVyLCA2LCBzZWN0b3JzaXplICk7DQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgMiwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9IDIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgcG9zID0gKHVuc2lnbmVkIGxvbmcpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSAodW5zaWduZWQgbG9uZykoIDIgKiBzZWN0b3JzaXplICsgOCApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qc2VlayB0byB0aGUgYmVnaW5pbmcqLw0KLSAgKHZvaWQpZl9zZWVrKCBmaWxlLCAtKCAyICogc2VjdG9yc2l6ZSArIDggKSwgRl9TRUVLX0NVUiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qcmVhZCAyIHRpbWVzIHNlY3RvciovDQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCBzZWN0b3JzaXplLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gKHVuc2lnbmVkIGxvbmcpc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKXNlY3RvcnNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIGxvbmcpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCBzZWN0b3JzaXplLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gKHVuc2lnbmVkIGxvbmcpc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKSggMiAqIHNlY3RvcnNpemUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKndyaXRlIDEgb25jZSA3Ki8NCi0gIHBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDcsIHNlY3RvcnNpemUgKTsNCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCAxLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gMSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgbG9uZylmX3RlbGwoIGZpbGUgKTsNCi0gIGlmICggcG9zICE9ICh1bnNpZ25lZCBsb25nKSggMiAqIHNlY3RvcnNpemUgKyAxICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7DQotICB9DQotDQotLypjbG9zZSBpdCovDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0NCi0vKmNoZWNrIHRoZSByZXN1bHQqLw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfZmlsZWxlbmd0aCggInRlc3QuYmluIiApOw0KLSAgaWYgKCBzaXplICE9ICh1bnNpZ25lZCBsb25nKSggMiAqIHNlY3RvcnNpemUgKyA4ICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLS8qb3BlbnMgaXQqLw0KLSAgZmlsZSA9IGZfb3BlbiggInRlc3QuYmluIiwgInIiICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggMiwgMCwgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggNiwgNCwgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggc2VjdG9yc2l6ZSAtIDggLSAxLCAwLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCAyLCAyLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCAyLCAxLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCA0LCAzLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBzZWN0b3JzaXplIC0gNyAtIDIsIDEsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDIsIDUsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDEsIDcsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDUsIDUsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDIsIDYsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotLypjaGVjayBwb3MgcmVzdWx0Ki8NCi0gIHBvcyA9ICh1bnNpZ25lZCBsb25nKWZfdGVsbCggZmlsZSApOw0KLSAgaWYgKCBwb3MgIT0gKHVuc2lnbmVkIGxvbmcpKCAyICogc2VjdG9yc2l6ZSArIDggKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0vKnRoaXMgaGFzIHRvIGJlIGVvZiovDQotICBwb3MgPSBmX2VvZiggZmlsZSApOw0KLSAgaWYgKCAhcG9zICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgfQ0KLQ0KLS8qY2xvc2UgaXQqLw0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotLypkZWxldGVzIGl0Ki8NCi0gIHJldCA9IGZfZGVsZXRlKCAidGVzdC5iaW4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0gIGZvciAoIHBvcyA9IDAgOyBwb3MgPCA0IDsgcG9zKysgKQ0KLSAgew0KLSAgICBmaWxlID0gZl9vcGVuKCB0ZXN0X2ZuYW1lW3Bvc10sICJ3IiApOw0KLSAgICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgICB9DQotDQotICAgIG1lbXNldCggdGVzdGJ1ZmZlciwgJzAnICsgcG9zLCBzZWN0b3JzaXplICk7DQotICAgIGlmICggZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgc2VjdG9yc2l6ZSAtIDEsIGZpbGUgKSAhPSAoIHNlY3RvcnNpemUgLSAxICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9kZWxldGUoIHRlc3RfZm5hbWVbMF0gKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2RlbGV0ZSggdGVzdF9mbmFtZVsyXSApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGZpbGUgPSBmX29wZW4oICJ0ZXN0LnR4dCIsICJ3IiApOw0KLSAgaWYgKCBmaWxlID09IE5VTEwgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgbWVtc2V0KCB0ZXN0YnVmZmVyLCAnYScsIHNlY3RvcnNpemUgKTsNCi0gIGlmICggZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgc2VjdG9yc2l6ZSwgZmlsZSApICE9IHNlY3RvcnNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBmaWxlID0gZl9vcGVuKCAidGVzdC50eHQiLCAicisiICk7DQotICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX3NlZWsoIGZpbGUsIDIgKiBzZWN0b3JzaXplLCBGX1NFRUtfU0VUICk7DQotICBpZiAoIHJldCAhPSBGX05PX0VSUk9SICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBmb3IgKCBwb3MgPSAwIDsgcG9zIDwgMiA7IHBvcysrICkNCi0gIHsNCi0gICAgZmlsZSA9IGZfb3BlbiggInRlc3QudHh0IiwgInIrIiApOw0KLSAgICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgICB9DQotDQotICAgIHJldCA9IGZfc2VlayggZmlsZSwgKCBwb3MgKyAyICkgKiBzZWN0b3JzaXplLCBGX1NFRUtfU0VUICk7DQotICAgIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgICB9DQotDQotICAgIG1lbXNldCggdGVzdGJ1ZmZlciwgJ2InICsgcG9zLCBzZWN0b3JzaXplICk7DQotICAgIGlmICggZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgc2VjdG9yc2l6ZSwgZmlsZSApICE9IHNlY3RvcnNpemUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgICB9DQotICB9DQotDQotICBmbmFtZV9wb3MgPSAxOw0KLSAgZm9yICggcG9zID0gMCA7IHBvcyA8IDIgOyBwb3MrKyApDQotICB7DQotICAgIGZpbGUgPSBmX29wZW4oIHRlc3RfZm5hbWVbZm5hbWVfcG9zXSwgInIiICk7DQotICAgIGlmICggZmlsZSA9PSBOVUxMICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICAgIH0NCi0NCi0gICAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBzZWN0b3JzaXplIC0gMSwgJzAnICsgKCB1bnNpZ25lZCBjaGFyICkgZm5hbWVfcG9zLCBmaWxlICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgICB9DQotDQotICAgIGZuYW1lX3BvcyA9IDM7DQotICB9DQotDQotICBmaWxlID0gZl9vcGVuKCAidGVzdC50eHQiLCAiciIgKTsNCi0gIGlmICggZmlsZSA9PSBOVUxMICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggc2VjdG9yc2l6ZSwgJ2EnLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBzZWN0b3JzaXplLCAwLCBmaWxlICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBzZWN0b3JzaXplLCAnYicsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIHNlY3RvcnNpemUsICdjJywgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2RlbGV0ZSggInRlc3QudHh0IiApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotICBmaWxlID0gZl9vcGVuKCAidGVzdC50eHQiLCAidyIgKTsNCi0gIGlmICggZmlsZSA9PSBOVUxMICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfc2VlayggZmlsZSwgc2VjdG9yc2l6ZSAtIDIsIEZfU0VFS19TRVQgKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBmaWxlID0gZl9vcGVuKCAidGVzdC50eHQiLCAicisiICk7DQotICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBtZW1zZXQoIHRlc3RidWZmZXIsICdmJywgMiApOw0KLSAgaWYgKCBmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCAyLCBmaWxlICkgIT0gMiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX3NlZWsoIGZpbGUsIHNlY3RvcnNpemUgLSAyLCBGX1NFRUtfU0VUICk7DQotICBpZiAoIHJldCAhPSBGX05PX0VSUk9SICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIG1lbXNldCggdGVzdGJ1ZmZlciwgJ2cnLCAzICk7DQotICBpZiAoIGZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIDMsIGZpbGUgKSAhPSAzICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgZmlsZSA9IGZfb3BlbiggInRlc3QudHh0IiwgInIrIiApOw0KLSAgaWYgKCBmaWxlID09IE5VTEwgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9zZWVrKCBmaWxlLCBzZWN0b3JzaXplICogMiwgRl9TRUVLX1NFVCApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBtZW1zZXQoIHRlc3RidWZmZXIsICdoJywgc2VjdG9yc2l6ZSApOw0KLSAgaWYgKCBmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCBzZWN0b3JzaXplLCBmaWxlICkgIT0gc2VjdG9yc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCAhPSBGX05PX0VSUk9SICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSBmX2ZpbGVsZW5ndGgoICJ0ZXN0LnR4dCIgKTsNCi0gIGlmICggc2l6ZSAhPSAoIHVuc2lnbmVkIGxvbmcgKSAoIDMgKiBzZWN0b3JzaXplICkgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgZm5hbWVfcG9zID0gMTsNCi0gIGZvciAoIHBvcyA9IDAgOyBwb3MgPCAyIDsgcG9zKysgKQ0KLSAgew0KLSAgICBmaWxlID0gZl9vcGVuKCB0ZXN0X2ZuYW1lW2ZuYW1lX3Bvc10sICJyIiApOw0KLSAgICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgICB9DQotDQotICAgIGlmICggY2hlY2tmaWxlY29udGVudCggc2VjdG9yc2l6ZSAtIDEsICcwJyArICggdW5zaWduZWQgY2hhciApIGZuYW1lX3BvcywgZmlsZSApICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICAgIH0NCi0NCi0gICAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgICBpZiAoIHJldCAhPSBGX05PX0VSUk9SICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gICAgfQ0KLQ0KLSAgICBmbmFtZV9wb3MgPSAzOw0KLSAgfQ0KLQ0KLSAgZmlsZSA9IGZfb3BlbiggInRlc3QudHh0IiwgInIiICk7DQotICBpZiAoIGZpbGUgPT0gTlVMTCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDIsICdmJywgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggc2VjdG9yc2l6ZSAtIDQsIDAsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIDMsICdnJywgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggY2hlY2tmaWxlY29udGVudCggc2VjdG9yc2l6ZSAtIDEsIDAsIGZpbGUgKSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIHNlY3RvcnNpemUsICdoJywgZmlsZSApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2RlbGV0ZSggInRlc3QudHh0IiApOw0KLSAgaWYgKCByZXQgIT0gRl9OT19FUlJPUiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZGVsZXRlKCB0ZXN0X2ZuYW1lWzFdICk7DQotICBpZiAoIHJldCAhPSBGX05PX0VSUk9SICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9kZWxldGUoIHRlc3RfZm5hbWVbM10gKTsNCi0gIGlmICggcmV0ICE9IEZfTk9fRVJST1IgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBfZl9kdW1wKCAicGFzc2VkLi4uIiApOw0KLSAgcmV0dXJuIDA7DQotfSAvKiBmX3NlZWtpbmcgKi8NCi0NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBmX29wZW5pbmcgKCB2b2lkICkNCi17DQotICBGX0ZJTEUgICAgICAgICogZmlsZTsNCi0gIEZfRklMRSAgICAgICAgKiBmaWxlMjsNCi0gIHVuc2lnbmVkIGNoYXIgICByZXQ7DQotICB1bnNpZ25lZCBzaG9ydCAgc2l6ZSwgcG9zOw0KLQ0KLSAgX2ZfZHVtcCggImZfb3BlbmluZyIgKTsNCi0NCi0vKnRlc3Qgbm9uIGV4aXN0aW5nIGZpbGUgb3BlbiByLCByKyovDQotICBmaWxlID0gZl9vcGVuKCAiZmlsZS5iaW4iLCAiciIgKTsNCi0gIGlmICggZmlsZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBmaWxlID0gZl9vcGVuKCAiZmlsZS5iaW4iLCAicisiICk7DQotICBpZiAoIGZpbGUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLS8qdGVzdCBub24gZXhpc3RpbmcgYXBwZW5kcwkiYSIgYSsqLw0KLSAgZmlsZSA9IGZfb3BlbiggImZpbGUuYmluIiwgImEiICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGZpbGUyID0gZl9vcGVuKCAiZmlsZS5iaW4iLCAiYSsiICk7IC8qb3BlbiBhZ2FpbiovDQotICBpZiAoIGZpbGUyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDEgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUyICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RPUEVOICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDIgKTsNCi0gIH0NCi0NCi0NCi0vKnRyeSB0byBjcmVhdGVzIGl0IHcqLw0KLSAgZmlsZSA9IGZfb3BlbiggImZpbGUuYmluIiwgInciICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0vKndyaXRlIDUxMiB0aW1lcyAxKi8NCi0gIHBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDEsIDUxMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc2V0IGFsbCAxKi8NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgNTEyLCBmaWxlICk7IC8qdGVzdCB3cml0ZSovDQotICBpZiAoIHNpemUgIT0gNTEyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0vKmdvIGJhY2ssIGFuZCByZWFkIGl0Ki8NCi0gIHJldCA9IGZfcmV3aW5kKCBmaWxlICk7IC8qYmFjayB0byB0aGUgYmVnaW5pbmcqLw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7ICAgICAgIC8qaXQgc2hvdWxkIGZhaWwqLw0KLSAgfQ0KLQ0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX3JlYWQoIHRlc3RidWZmZXIsIDEsIDUxMiwgZmlsZSApOyAvKnRlc3QgcmVhZCovDQotICBpZiAoIHNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOyAgICAgICAgLyppdCBzaG91bGQgZmFpbCovDQotICB9DQotDQotLypjbG9zZSBhbmQgY2hlY2sgc2l6ZSovDQotICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfZmlsZWxlbmd0aCggImZpbGUuYmluIiApOw0KLSAgaWYgKCBzaXplICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsgICAgICAgIC8qaGFzIHRvIGJlIHplcm8qLw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfZmlsZWxlbmd0aCggImZpbGUuYmluIiApOw0KLSAgaWYgKCBzaXplICE9IDUxMiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotLyp0cnkgdG8gb3dlcndyaXRlcyBpdCBpdCovDQotICBmaWxlID0gZl9vcGVuKCAiZmlsZS5iaW4iLCAidysiICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0vKmNsb3NlIGFuZCBjaGVjayBzaXplKi8NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOyAgICAgICAgLypoYXMgdG8gYmUgemVybyovDQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLQ0KLQ0KLS8qdGVzdCBub24gZXhpc3RpbmcgYXBwZW5kcwkiYSIgKi8NCi0gIGZpbGUgPSBmX29wZW4oICJmaWxlLmJpbiIsICJyKyIgKTsNCi0gIGlmICggIWZpbGUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLS8qd3JpdGUgNTEyIHRpbWVzIDEqLw0KLSAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgMSwgNTEyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzZXQgYWxsIDEqLw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCA1MTIsIGZpbGUgKTsgLyp0ZXN0IHdyaXRlKi8NCi0gIGlmICggc2l6ZSAhPSA1MTIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLS8qZ28gYmFjaywgYW5kIHJlYWQgaXQqLw0KLSAgcmV0ID0gZl9yZXdpbmQoIGZpbGUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmJhY2sgdG8gdGhlIGJlZ2luaW5nKi8NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9yZWFkKCB0ZXN0YnVmZmVyLCAxLCA1MTIsIGZpbGUgKTsgLyp0ZXN0IHJlYWQqLw0KLSAgaWYgKCBzaXplICE9IDUxMiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7ICAgICAgICAgICAgIC8qaXQgc2hvdWxkIGZhaWwqLw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9yZXdpbmQoIGZpbGUgKTsgLypiYWNrIHRvIHRoZSBiZWdpbmluZyovDQotDQotLyp3cml0ZSAyNTYgdGltZXMgMiovDQotICBwc3BfbWVtc2V0KCB0ZXN0YnVmZmVyLCAyLCA1MTIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNldCBhbGwgMiovDQotICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIDI1NiwgZmlsZSApOyAvKnRlc3Qgd3JpdGUqLw0KLSAgaWYgKCBzaXplICE9IDI1NiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgc2hvcnQpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSAyNTYgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7ICAgICAgICAgICAgLypwb3NpdGlvbiBoYXMgdG8gYmUgNTEyKi8NCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOyAgICAgICAgLypoYXMgdG8gYmUgemVybyovDQotICB9DQotDQotLypjbG9zZSBhbmQgY2hlY2sgc2l6ZSovDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgIT0gNTEyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0NCi0vKnRlc3Qgbm9uIGV4aXN0aW5nIGFwcGVuZHMgYSsqLw0KLSAgZmlsZSA9IGZfb3BlbiggImZpbGUuYmluIiwgImErIiApOw0KLSAgaWYgKCAhZmlsZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgc2hvcnQpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSA1MTIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7ICAgICAgICAgICAgLypwb3NpdGlvbiBoYXMgdG8gYmUgNTEyKi8NCi0gIH0NCi0NCi0vKndyaXRlIDUxMiB0aW1lcyAzKi8NCi0gIHBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDMsIDUxMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc2V0IGFsbCAzKi8NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl93cml0ZSggdGVzdGJ1ZmZlciwgMSwgNTEyLCBmaWxlICk7IC8qdGVzdCB3cml0ZSovDQotICBpZiAoIHNpemUgIT0gNTEyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0vKmdvIGJhY2ssIGFuZCByZWFkIGl0Ki8NCi0gIHJldCA9IGZfcmV3aW5kKCBmaWxlICk7IC8qYmFjayB0byB0aGUgYmVnaW5pbmcqLw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7ICAgICAgIC8qaXQgc2hvdWxkIGZhaWwqLw0KLSAgfQ0KLQ0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX3JlYWQoIHRlc3RidWZmZXIsIDEsIDUxMiwgZmlsZSApOyAvKnRlc3QgcmVhZCovDQotICBpZiAoIHNpemUgIT0gNTEyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsgICAgICAgICAgICAgLyppdCBzaG91bGQgZmFpbCovDQotICB9DQotDQotICBwb3MgPSAodW5zaWduZWQgc2hvcnQpZl90ZWxsKCBmaWxlICk7DQotICBpZiAoIHBvcyAhPSA1MTIgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcG9zICk7ICAgICAgICAgICAgLypwb3NpdGlvbiBoYXMgdG8gYmUgNTEyKi8NCi0gIH0NCi0NCi0vKmNsb3NlIGFuZCBjaGVjayBzaXplKi8NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgIT0gNTEyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsgICAgICAgICAgICAgLypoYXMgdG8gYmUgemVybyovDQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgc2hvcnQpZl9maWxlbGVuZ3RoKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHNpemUgIT0gMTAyNCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotLypjbG9zZSBhZ2FpbiEqLw0KLSAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9UT1BFTiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZGVsZXRlKCAiZmlsZS5iaW4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIF9mX2R1bXAoICJwYXNzZWQuLi4iICk7DQotICByZXR1cm4gMDsNCi19IC8qIGZfb3BlbmluZyAqLw0KLQ0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGZfYXBwZW5kaW5nICggdm9pZCApDQotew0KLSAgRl9GSUxFICAgICAgICAqIGZpbGU7DQotICB1bnNpZ25lZCBzaG9ydCAgc2l6ZSwgdHNpemUsIHBvczsNCi0gIHVuc2lnbmVkIGNoYXIgICBhLCBiLCByZXQ7DQotDQotICBfZl9kdW1wKCAiZl9hcHBlbmRpbmciICk7DQotDQotICBfZl9kZWxldGVhbGwoKTsNCi0NCi0gIGZvciAoIHRzaXplID0gMCwgYSA9IDAgOyBhIDwgMTYgOyBhKysgKQ0KLSAgew0KLSAgICBmaWxlID0gZl9vcGVuKCAiYXAuYmluIiwgImEiICk7DQotICAgIGlmICggIWZpbGUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICBwc3BfbWVtc2V0KCB0ZXN0YnVmZmVyLCBhLCBzaXplb2YoIHRlc3RidWZmZXIgKSApOw0KLSAgICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIGEgKyAxMjgsIGZpbGUgKTsNCi0gICAgaWYgKCBzaXplICE9IGEgKyAxMjggKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gICAgfQ0KLQ0KLSAgICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfZmlsZWxlbmd0aCggImFwLmJpbiIgKTsNCi0gICAgaWYgKCBzaXplICE9IHRzaXplICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICAgIH0NCi0NCi0gICAgdHNpemUgKz0gYSArIDEyODsNCi0NCi0gICAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICAgIH0NCi0NCi0gICAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX2ZpbGVsZW5ndGgoICJhcC5iaW4iICk7DQotICAgIGlmICggc2l6ZSAhPSB0c2l6ZSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgICB9DQotICB9DQotDQotICBmaWxlID0gZl9vcGVuKCAiYXAuYmluIiwgInIiICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGZvciAoIHRzaXplID0gMCwgYSA9IDAgOyBhIDwgMTYgOyBhKysgKQ0KLSAgew0KLSAgICBpZiAoIGNoZWNrZmlsZWNvbnRlbnQoIGEgKyAxMjgsIChjaGFyKWEsIGZpbGUgKSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgYSApOw0KLSAgICB9DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGZvciAoIHRzaXplID0gMCwgYSA9IDAgOyBhIDwgMTYgOyBhKysgKQ0KLSAgew0KLSAgICBmaWxlID0gZl9vcGVuKCAiYXAuYmluIiwgInIiICk7DQotICAgIGlmICggIWZpbGUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX3NlZWsoIGZpbGUsIHRzaXplLCBGX1NFRUtfU0VUICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gICAgfQ0KLQ0KLSAgICBwb3MgPSAodW5zaWduZWQgc2hvcnQpZl90ZWxsKCBmaWxlICk7DQotICAgIGlmICggcG9zICE9IHRzaXplICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBwb3MgKTsNCi0gICAgfQ0KLQ0KLSAgICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfcmVhZCggdGVzdGJ1ZmZlciwgMSwgYSArIDEyOCwgZmlsZSApOw0KLSAgICBpZiAoIHNpemUgIT0gYSArIDEyOCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgICB9DQotDQotICAgIGZvciAoIGIgPSAwIDsgYiA8IGEgKyAxMjggOyBiKysgKQ0KLSAgICB7DQotICAgICAgaWYgKCB0ZXN0YnVmZmVyW2JdICE9IChjaGFyKWEgKQ0KLSAgICAgIHsNCi0gICAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBhICk7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIHRzaXplICs9IGEgKyAxMjg7DQotDQotICAgIHBvcyA9ICh1bnNpZ25lZCBzaG9ydClmX3RlbGwoIGZpbGUgKTsNCi0gICAgaWYgKCBwb3MgIT0gdHNpemUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHBvcyApOw0KLSAgICB9DQotDQotICAgIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gICAgaWYgKCByZXQgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgICB9DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCAhPSBGX0VSUl9OT1RPUEVOICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9kZWxldGUoICJhcC5iaW4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIF9mX2R1bXAoICJwYXNzZWQuLi4iICk7DQotICByZXR1cm4gMDsNCi19IC8qIGZfYXBwZW5kaW5nICovDQotDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgZl93cml0aW5nICggdm9pZCApDQotew0KLSAgRl9GSUxFICAgICAgICAqIGZpbGU7DQotICB1bnNpZ25lZCBzaG9ydCAgc2l6ZTsNCi0gIHVuc2lnbmVkIGNoYXIgICBhLCByZXQ7DQotICBGX1NQQUNFICAgICAgICAgYmVmb3JlLCBhZnRlcjsNCi0NCi0gIF9mX2R1bXAoICJmX3dyaXRpbmciICk7DQotDQotICByZXQgPSBmX2dldGZyZWVzcGFjZSggJmJlZm9yZSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCA0IDsgYSsrICkNCi0gIHsNCi0gICAgZmlsZSA9IGZfb3BlbiggIndyLmJpbiIsICJ3IiApOw0KLSAgICBpZiAoICFmaWxlICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICAgIH0NCi0NCi0gICAgcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgYSwgc2l6ZW9mKCB0ZXN0YnVmZmVyICkgKTsNCi0gICAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCBhICogMTI4LCBmaWxlICk7DQotICAgIGlmICggc2l6ZSAhPSBhICogMTI4ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICAgIH0NCi0NCi0gICAgcmV0ID0gZl9jbG9zZSggZmlsZSApOw0KLSAgICBpZiAoIHJldCApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICAgIH0NCi0NCi0gICAgc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydClmX2ZpbGVsZW5ndGgoICJ3ci5iaW4iICk7DQotICAgIGlmICggc2l6ZSAhPSBhICogMTI4ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICAgIH0NCi0NCi0gICAgZmlsZSA9IGZfb3BlbiggIndyLmJpbiIsICJyIiApOw0KLSAgICBpZiAoICFmaWxlICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICAgIH0NCi0NCi0gICAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBhICogMTI4LCAoY2hhcilhLCBmaWxlICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIGEgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLQ0KLSAgZm9yICggYSA9IDAgOyBhIDwgNCA7IGErKyApDQotICB7DQotICAgIGZpbGUgPSBmX29wZW4oICJ3ci5iaW4iLCAidysiICk7DQotICAgIGlmICggIWZpbGUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gICAgfQ0KLQ0KLSAgICBwc3BfbWVtc2V0KCB0ZXN0YnVmZmVyLCBhLCBzaXplb2YoIHRlc3RidWZmZXIgKSApOw0KLSAgICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIGEgKiAxMjgsIGZpbGUgKTsNCi0gICAgaWYgKCBzaXplICE9IGEgKiAxMjggKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gICAgfQ0KLQ0KLSAgICBzaXplID0gKHVuc2lnbmVkIHNob3J0KWZfZmlsZWxlbmd0aCggIndyLmJpbiIgKTsNCi0gICAgaWYgKCBzaXplICE9IGEgKiAxMjggKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gICAgfQ0KLQ0KLSAgICBmaWxlID0gZl9vcGVuKCAid3IuYmluIiwgInIrIiApOw0KLSAgICBpZiAoICFmaWxlICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICAgIH0NCi0NCi0gICAgaWYgKCBjaGVja2ZpbGVjb250ZW50KCBhICogMTI4LCAoY2hhcilhLCBmaWxlICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIGEgKTsNCi0gICAgfQ0KLQ0KLSAgICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICAgIGlmICggcmV0ICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9nZXRmcmVlc3BhY2UoICZhZnRlciApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBpZiAoIGJlZm9yZS5iYWQgIT0gYWZ0ZXIuYmFkICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggYmVmb3JlLmZyZWUgPT0gYWZ0ZXIuZnJlZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGJlZm9yZS51c2VkID09IGFmdGVyLnVzZWQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBiZWZvcmUudG90YWwgIT0gYWZ0ZXIudG90YWwgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBiZWZvcmUudXNlZCArIGJlZm9yZS5mcmVlICE9IGFmdGVyLnVzZWQgKyBhZnRlci5mcmVlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfZGVsZXRlKCAid3IuYmluIiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2dldGZyZWVzcGFjZSggJmFmdGVyICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGlmICggYmVmb3JlLmJhZCAhPSBhZnRlci5iYWQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgaWYgKCBiZWZvcmUuZnJlZSAhPSBhZnRlci5mcmVlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIGlmICggYmVmb3JlLnVzZWQgIT0gYWZ0ZXIudXNlZCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBpZiAoIGJlZm9yZS50b3RhbCAhPSBhZnRlci50b3RhbCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICBfZl9kdW1wKCAicGFzc2VkLi4uIiApOw0KLSAgcmV0dXJuIDA7DQotfSAvKiBmX3dyaXRpbmcgKi8NCi0NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBmX2RvdHMgKCB2b2lkICkNCi17DQotICB1bnNpZ25lZCBjaGFyICByZXQ7DQotICB1bnNpZ25lZCBjaGFyICBhLCBzaXplOw0KLSAgRl9GSUxFICAgICAgICogZmlsZTsNCi0NCi0gIF9mX2R1bXAoICJmX2RvdHMiICk7DQotDQotICByZXQgPSBmX21rZGlyKCAiL3R0IiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiL3R0IiApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX3JtZGlyKCAiLiIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ybWRpciggIi4uIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiLiIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gX2ZfY2hlY2tjd2QoIGZfbmFtZWNvbnYoICIvdHQiICkgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9kZWxldGUoICIuIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2RlbGV0ZSggIi4uIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiLiIgKTsNCi0gIGlmICggcmV0ICE9IEZfRVJSX05PVEZPVU5EICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9ta2RpciggIi4uIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX21rZGlyKCAiLi4uIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICBmb3IgKCBhID0gMCA7IGEgPCA2IDsgYSsrICkNCi0gIHsNCi0gICAgY2hhciAqIG1vZGU7DQotICAgIHN3aXRjaCAoIGEgKQ0KLSAgICB7DQotICAgICAgY2FzZSAwOg0KLSAgICAgICAgbW9kZSA9ICJyIjsNCi0gICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgIGNhc2UgMToNCi0gICAgICAgIG1vZGUgPSAicisiOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSAyOg0KLSAgICAgICAgbW9kZSA9ICJ3IjsNCi0gICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgIGNhc2UgMzoNCi0gICAgICAgIG1vZGUgPSAidysiOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSA0Og0KLSAgICAgICAgbW9kZSA9ICJhIjsNCi0gICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgIGNhc2UgNToNCi0gICAgICAgIG1vZGUgPSAiYSsiOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgZGVmYXVsdDoNCi0gICAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBhICk7DQotICAgIH0gLyogc3dpdGNoICovDQotDQotICAgIGZpbGUgPSBmX29wZW4oICIuIiwgbW9kZSApOw0KLSAgICBpZiAoIGZpbGUgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIGEgKTsNCi0gICAgfQ0KLQ0KLSAgICBmaWxlID0gZl9vcGVuKCAiLi4iLCBtb2RlICk7DQotICAgIGlmICggZmlsZSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgYSApOw0KLSAgICB9DQotDQotICAgIGZpbGUgPSBmX29wZW4oICIuLi4iLCBtb2RlICk7DQotICAgIGlmICggZmlsZSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgYSApOw0KLSAgICB9DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIGNoYXIpZl9maWxlbGVuZ3RoKCAiLiIgKTsNCi0gIGlmICggc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICBzaXplID0gKHVuc2lnbmVkIGNoYXIpZl9maWxlbGVuZ3RoKCAiLi4iICk7DQotICBpZiAoIHNpemUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBjaGFyKWZfZmlsZWxlbmd0aCggIi4uLiIgKTsNCi0gIGlmICggc2l6ZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotDQotICByZXQgPSBmX2NoZGlyKCAiLi4uIiApOw0KLSAgaWYgKCByZXQgIT0gRl9FUlJfTk9URk9VTkQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotICByZXQgPSBmX2NoZGlyKCAiLi4iICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfcm1kaXIoICJ0dCIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLQ0KLSAgX2ZfZHVtcCggInBhc3NlZC4uLiIgKTsNCi0gIHJldHVybiAwOw0KLX0gLyogZl9kb3RzICovDQotDQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICB1bnNpZ25lZCBjaGFyICBNYWdpY051bTsNCi0gIHVuc2lnbmVkIGNoYXIgIExpbmU7DQotICB1bnNpZ25lZCBjaGFyICBCdWZbODddOw0KLX0gc3RydWN0X1Rlc3RGaWxlU3lzRW50cnk7DQotI2RlZmluZSBOVU1fT0ZfUkVDT1JEUyAxMA0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGZfcml0ICggdm9pZCApDQotew0KLSAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICBpOw0KLSAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICByZXQ7DQotICBGX0ZJTEUgICAgICAgICAgICAgICAgICAqIEZpbGU7DQotICBzdHJ1Y3RfVGVzdEZpbGVTeXNFbnRyeSAqIEVudHJ5ID0gKHN0cnVjdF9UZXN0RmlsZVN5c0VudHJ5ICopKCAoICggKGxvbmcpdGVzdGJ1ZmZlciArIDMgKSA+PiAyICkgPDwgMiApOw0KLSAgdW5zaWduZWQgc2hvcnQgICAgICAgICAgICBQb3M7DQotICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgIENoOw0KLSAgdW5zaWduZWQgY2hhciAgICAgICAgICAgICBGb3VuZGVkOw0KLQ0KLSAgX2ZfZHVtcCggImZfcml0IiApOw0KLQ0KLSAgKHZvaWQpZl9kZWxldGUoICJNeVRlc3QiICk7DQotICBGaWxlID0gZl9vcGVuKCAiTXlUZXN0IiwgImErIiApOw0KLSAgaWYgKCAhRmlsZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICAvKiBhZGQgcmVjb3JkcyAgKi8NCi0gIGZvciAoIGkgPSAwIDsgaSA8IE5VTV9PRl9SRUNPUkRTIDsgaSsrICkNCi0gIHsNCi0gICAgQ2ggPSAoY2hhcikoIGkgJSAxMCApOw0KLSAgICBFbnRyeS0+TWFnaWNOdW0gPSAweGJjOw0KLSAgICBFbnRyeS0+TGluZSA9IGk7DQotICAgIEVudHJ5LT5CdWZbMF0gPSBDaDsNCi0gICAgRW50cnktPkJ1ZlsxMF0gPSAodW5zaWduZWQgY2hhcikoIENoICsgMSApOw0KLQ0KLSAgICBpZiAoIEZfTk9fRVJST1IgIT0gZl9zZWVrKCBGaWxlLCAwLCBGX1NFRUtfRU5EICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsgLyogRmFpbCwgY291bGQgbm90IGdvIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgKi8NCi0gICAgfQ0KLQ0KLSAgICBpZiAoIHNpemVvZiggc3RydWN0X1Rlc3RGaWxlU3lzRW50cnkgKSAhPSBmX3dyaXRlKCAodm9pZCAqKUVudHJ5LCAxLCBzaXplb2YoIHN0cnVjdF9UZXN0RmlsZVN5c0VudHJ5ICksIEZpbGUgKSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOyAvKiBGYWlsLCBjb3VsZCBub3Qgd3JpdGUgbmV3IGVudHJ5ICovDQotICAgIH0NCi0NCi0gICAgUG9zID0gKHVuc2lnbmVkIHNob3J0KWZfdGVsbCggRmlsZSApOw0KLSAgICBpZiAoICggKCBQb3MgLyBzaXplb2YoIHN0cnVjdF9UZXN0RmlsZVN5c0VudHJ5ICkgKSAtIDEgKSAhPSBpICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7IC8qIEZhaWwsIHdyb25nIGZpbGUgcG9zaXRpb24gKi8NCi0gICAgfQ0KLQ0KLSAgICBpZiAoIEZfTk9fRVJST1IgIT0gZl9zZWVrKCBGaWxlLCAobG9uZykoIFBvcyAtIHNpemVvZiggc3RydWN0X1Rlc3RGaWxlU3lzRW50cnkgKSApLCBGX1NFRUtfU0VUICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsgLyogRmFpbCwgY291bGQgbm90IGdvIHRvIG5ldyBlbnRyeSBwb3NpdGlvbiAqLw0KLSAgICB9DQotDQotICAgIGlmICggc2l6ZW9mKCBzdHJ1Y3RfVGVzdEZpbGVTeXNFbnRyeSApICE9IGZfcmVhZCggKHZvaWQgKilFbnRyeSwgMSwgc2l6ZW9mKCBzdHJ1Y3RfVGVzdEZpbGVTeXNFbnRyeSApLCBGaWxlICkgKQ0KLSAgICB7DQotICAgICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsgLyogRmFpbCwgY291bGQgbm90IHJlYWQgdGhlIG5ldyBlbnRyeSAqLw0KLSAgICB9DQotDQotICAgIGlmICggKCBFbnRyeS0+TWFnaWNOdW0gIT0gMHhiYyApIHx8ICggRW50cnktPkxpbmUgIT0gKGludClpICkgfHwgKCBFbnRyeS0+QnVmWzBdICE9IENoICkgfHwgKCBFbnRyeS0+QnVmWzEwXSAhPSBDaCArIDEgKSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOyAvKkZhaWwsIHRoZSBuZXcgZW50cnkgaXMgY29ycnVwdGVkIiovDQotICAgIH0NCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIEZpbGUgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLQ0KLSAgLypPcGVuIGZpbGUgYWdhaW4qLw0KLSAgRmlsZSA9IGZfb3BlbiggIk15VGVzdCIsICJhKyIgKTsNCi0gIGlmICggIUZpbGUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgLyogcmVhZCByZWNvcmRzICAqLw0KLSAgZm9yICggaSA9IDAgOyBpIDwgTlVNX09GX1JFQ09SRFMgOyBpKysgKQ0KLSAgew0KLSAgICBDaCA9IChjaGFyKSggaSAlIDEwICk7DQotDQotICAgIGlmICggRl9OT19FUlJPUiAhPSBmX3NlZWsoIEZpbGUsIDAsIEZfU0VFS19TRVQgKSApDQotICAgIHsNCi0gICAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOyAvKiBGYWlsLCBjb3VsZCBub3QgZ28gdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlICovDQotICAgIH0NCi0NCi0gICAgRm91bmRlZCA9IDA7DQotICAgIHdoaWxlICggc2l6ZW9mKCBzdHJ1Y3RfVGVzdEZpbGVTeXNFbnRyeSApID09IGZfcmVhZCggKHZvaWQgKilFbnRyeSwgMSwgc2l6ZW9mKCBzdHJ1Y3RfVGVzdEZpbGVTeXNFbnRyeSApLCBGaWxlICkgKQ0KLSAgICB7DQotICAgICAgaWYgKCAoIEVudHJ5LT5NYWdpY051bSA9PSAweGJjICkNCi0gICAgICAgICAgJiYgKCBFbnRyeS0+TGluZSA9PSAoaW50KWkgKQ0KLSAgICAgICAgICAmJiAoIEVudHJ5LT5CdWZbMF0gPT0gQ2ggKQ0KLSAgICAgICAgICAmJiAoIEVudHJ5LT5CdWZbMTBdID09IENoICsgMSApICkNCi0gICAgICB7DQotICAgICAgICBGb3VuZGVkID0gMTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICBpZiAoICFGb3VuZGVkICkNCi0gICAgew0KLSAgICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBpICk7ICAgICAgLyogRW50cnkgbm90IGZvdW5kZWQgKi8NCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgcmV0ID0gZl9jbG9zZSggRmlsZSApOw0KLSAgaWYgKCByZXQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgcmV0ICk7DQotICB9DQotDQotDQotICByZXQgPSBmX2RlbGV0ZSggIk15VGVzdCIgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgX2ZfZHVtcCggInBhc3NlZC4uLiIgKTsNCi0NCi0gIHJldHVybiAwOw0KLX0gLyogZl9yaXQgKi8NCi0NCi0NCi0NCi0NCi1zdGF0aWMgdW5zaWduZWQgY2hhciBmX3RydW5jYXRpbmcgKCB2b2lkICkNCi17DQotICBGX0ZJTEUgICAgICAgKiBmaWxlOw0KLSAgdW5zaWduZWQgbG9uZyAgc2l6ZTsNCi0gIHVuc2lnbmVkIGNoYXIgIHJldDsNCi0NCi0gIF9mX2R1bXAoICJmX3RydW5jYXRpbmciICk7DQotDQotICBmaWxlID0gZl9vcGVuKCAidGVzdC5iaW4iLCAidysiICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gICh2b2lkKXBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDEsIEZfTUFYX1NFRUtfVEVTVCApOw0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfd3JpdGUoIHRlc3RidWZmZXIsIDEsIEZfTUFYX1NFRUtfVEVTVCwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9IEZfTUFYX1NFRUtfVEVTVCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIGZpbGUgPSBmX3RydW5jYXRlKCAidGVzdC5iaW4iLCBGX01BWF9TRUVLX1RFU1QgLSA0ICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfZmlsZWxlbmd0aCggInRlc3QuYmluIiApOw0KLSAgaWYgKCBzaXplICE9IEZfTUFYX1NFRUtfVEVTVCAtIDQgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLQ0KLSAgZmlsZSA9IGZfdHJ1bmNhdGUoICJ0ZXN0LmJpbiIsIEZfTUFYX1NFRUtfVEVTVCApOw0KLSAgaWYgKCAhZmlsZSApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCAwICk7DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX2ZpbGVsZW5ndGgoICJ0ZXN0LmJpbiIgKTsNCi0gIGlmICggc2l6ZSAhPSBGX01BWF9TRUVLX1RFU1QgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgc2l6ZSApOw0KLSAgfQ0KLQ0KLQ0KLSAgZmlsZSA9IGZfdHJ1bmNhdGUoICJ0ZXN0LmJpbiIsICggRl9NQVhfU0VFS19URVNUIC8gMiApIC0gOTIgKTsNCi0gIGlmICggIWZpbGUgKQ0KLSAgew0KLSAgICByZXR1cm4gX2ZfcmVzdWx0KCBfX0xJTkVfXywgMCApOw0KLSAgfQ0KLQ0KLSAgKHZvaWQpcHNwX21lbXNldCggdGVzdGJ1ZmZlciwgMiwgOTIgKTsNCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCA5MiwgZmlsZSApOw0KLSAgaWYgKCBzaXplICE9IDkyICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0gIHJldCA9IGZfY2xvc2UoIGZpbGUgKTsNCi0gIGlmICggcmV0ICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHJldCApOw0KLSAgfQ0KLQ0KLSAgc2l6ZSA9ICh1bnNpZ25lZCBsb25nKWZfZmlsZWxlbmd0aCggInRlc3QuYmluIiApOw0KLSAgaWYgKCBzaXplICE9ICggRl9NQVhfU0VFS19URVNUIC8gMiApICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0NCi0gIGZpbGUgPSBmX3RydW5jYXRlKCAidGVzdC5iaW4iLCAxICk7DQotICBpZiAoICFmaWxlICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIDAgKTsNCi0gIH0NCi0NCi0gICh2b2lkKXBzcF9tZW1zZXQoIHRlc3RidWZmZXIsIDMsIDIgKTsNCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX3dyaXRlKCB0ZXN0YnVmZmVyLCAxLCAyLCBmaWxlICk7DQotICBpZiAoIHNpemUgIT0gMiApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCBzaXplICk7DQotICB9DQotDQotICByZXQgPSBmX2Nsb3NlKCBmaWxlICk7DQotICBpZiAoIHJldCApDQotICB7DQotICAgIHJldHVybiBfZl9yZXN1bHQoIF9fTElORV9fLCByZXQgKTsNCi0gIH0NCi0NCi0gIHNpemUgPSAodW5zaWduZWQgbG9uZylmX2ZpbGVsZW5ndGgoICJ0ZXN0LmJpbiIgKTsNCi0gIGlmICggc2l6ZSAhPSAzICkNCi0gIHsNCi0gICAgcmV0dXJuIF9mX3Jlc3VsdCggX19MSU5FX18sIHNpemUgKTsNCi0gIH0NCi0NCi0NCi0NCi0gIF9mX2R1bXAoICJwYXNzZWQuLi4iICk7DQotICByZXR1cm4gMDsNCi19IC8qIGZfdHJ1bmNhdGluZyAqLw0KLQ0KLQ0KLXZvaWQgZl9kb3Rlc3QgKCB1bnNpZ25lZCBjaGFyIHQgKQ0KLXsNCi0gIF9mX2R1bXAoICJGaWxlIHN5c3RlbSB0ZXN0IHN0YXJ0ZWQuLi4iICk7DQotICBfZl9kdW1wKCAiV0FSTklORzogVGhlIGNvbnRlbnRzIG9mIHlvdXIgZHJpdmUgd2lsbCBiZSBkZXN0cm95ZWQhXG4iICk7DQotDQotICAodm9pZClfZl9wb3dlcm9uKCk7DQotDQotICBzd2l0Y2ggKCB0ICkNCi0gIHsNCi0gICAgY2FzZSAwOg0KLSAgICBjYXNlIDE6DQotICAgICAgKHZvaWQpZl9mb3JtYXR0aW5nKCk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDI6DQotICAgICAgKHZvaWQpZl9kaXJ0ZXN0KCk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDM6DQotICAgICAgKHZvaWQpZl9maW5kaW5ndGVzdCgpOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLQ0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8NCi0gICAgY2FzZSA0Og0KLSAgICAgICh2b2lkKWZfcG93ZXJmYWlsKCk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDU6DQotICAgICAgKHZvaWQpZl9zZWVraW5nKCAxMjggKTsNCi0gICAgICBpZiAoIHQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0NCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiAxMjggKQ0KLQ0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8NCi0gICAgY2FzZSA2Og0KLSAgICAgICh2b2lkKWZfc2Vla2luZyggMjU2ICk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotI2VuZGlmDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gMjU2ICkNCi0NCi0gICAgLyogZmFsbCB0aHJvdWdoICovDQotICAgIGNhc2UgNzoNCi0gICAgICAodm9pZClmX3NlZWtpbmcoIDUxMiApOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSNlbmRpZg0KLSNpZiAoIEZfTUFYX1NFRUtfVEVTVCA+IDUxMiApDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDg6DQotICAgICAgKHZvaWQpZl9zZWVraW5nKCAxMDI0ICk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotI2VuZGlmDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gMTAyNCApDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDk6DQotICAgICAgKHZvaWQpZl9zZWVraW5nKCAyMDQ4ICk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotI2VuZGlmDQotI2lmICggRl9NQVhfU0VFS19URVNUID4gMjA0OCApDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDEwOg0KLSAgICAgICh2b2lkKWZfc2Vla2luZyggNDA5NiApOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSNlbmRpZg0KLSNpZiAoIEZfTUFYX1NFRUtfVEVTVCA+IDQwOTYgKQ0KLQ0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8NCi0gICAgY2FzZSAxMToNCi0gICAgICAodm9pZClmX3NlZWtpbmcoIDgxOTIgKTsNCi0gICAgICBpZiAoIHQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0NCi0jZW5kaWYNCi0jaWYgKCBGX01BWF9TRUVLX1RFU1QgPiA4MTkyICkNCi0NCi0gICAgLyogZmFsbCB0aHJvdWdoICovDQotICAgIGNhc2UgMTI6DQotICAgICAgKHZvaWQpZl9zZWVraW5nKCAxNjM4NCApOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSNlbmRpZg0KLSNpZiAoIEZfTUFYX1NFRUtfVEVTVCA+IDE2Mzg0ICkNCi0NCi0gICAgLyogZmFsbCB0aHJvdWdoICovDQotICAgIGNhc2UgMTM6DQotICAgICAgKHZvaWQpZl9zZWVraW5nKCAzMjc2OCApOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSNlbmRpZg0KLQ0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8NCi0gICAgY2FzZSAxNDoNCi0gICAgICAodm9pZClmX29wZW5pbmcoKTsNCi0gICAgICBpZiAoIHQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0NCi0NCi0gICAgLyogZmFsbCB0aHJvdWdoICovDQotICAgIGNhc2UgMTU6DQotICAgICAgKHZvaWQpZl9hcHBlbmRpbmcoKTsNCi0gICAgICBpZiAoIHQgKQ0KLSAgICAgIHsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0NCi0NCi0gICAgLyogZmFsbCB0aHJvdWdoICovDQotICAgIGNhc2UgMTY6DQotICAgICAgKHZvaWQpZl93cml0aW5nKCk7DQotICAgICAgaWYgKCB0ICkNCi0gICAgICB7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotDQotDQotICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KLSAgICBjYXNlIDE3Og0KLSAgICAgICh2b2lkKWZfZG90cygpOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLQ0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8NCi0gICAgY2FzZSAxODoNCi0gICAgICAodm9pZClmX3JpdCgpOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICBjYXNlIDE5Og0KLSAgICAgICh2b2lkKWZfdHJ1bmNhdGluZygpOw0KLSAgICAgIGlmICggdCApDQotICAgICAgew0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLQ0KLSAgICAgIGJyZWFrOw0KLSAgfSAvKiBzd2l0Y2ggKi8NCi0NCi0gIF9mX2R1bXAoICJFbmQgb2YgdGVzdHMuLi4iICk7DQotfSAvKiBmX2RvdGVzdCAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBlbmQgb2YgdGVzdC5jDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC90ZXN0L3Rlc3QuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML2ZhdF9zbC90ZXN0L3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQyZGU4OS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvdGVzdC90ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZQ0KLSAqIHRlcm1zLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4NCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZQ0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfX1RFU1RfSA0KLSNkZWZpbmUgX19URVNUX0gNCi0NCi0jaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotDQotLyoNCi0qKiBNYXhpbXVtIHNpemUgZm9yIHNlZWsgdGVzdC4NCi0qKiBPcHRpb25zOiAxMjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwgMzI3NjgNCi0qLw0KLSNkZWZpbmUgRl9NQVhfU0VFS19URVNUIDE2Mzg0DQotDQotDQotLyoNCi0qKiBEZWZpbmVzIG1lZGlhIHR5cGUgZm9yIHRlc3RpbmcuDQotKiogT3B0aW9uczogRl9GQVQxMl9NRURJQSwgRl9GQVQxNl9NRURJQSwgRl9GQVQzMl9NRURJQQ0KLSovDQotI2RlZmluZSBGX0ZBVF9UWVBFICAgICAgRl9GQVQxNl9NRURJQQ0KLQ0KLQ0KLXZvaWQgZl9kb3Rlc3QgKCB1bnNpZ25lZCBjaGFyICk7DQotDQotI2VuZGlmIC8qIGlmbmRlZiBfQ09ORklHX1NUSElOX1RFU1RfSCAqLw0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML21lZGlhLWRydi9yYW0vcmFtZHJ2X2YuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML21lZGlhLWRydi9yYW0vcmFtZHJ2X2YuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxMjBlMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9tZWRpYS1kcnYvcmFtL3JhbWRydl9mLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UNCi0gKiB0ZXJtcy4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbQ0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUNCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpbmNsdWRlICIuLi8uLi9hcGkvYXBpX21kcml2ZXJfcmFtLmgiDQotI2luY2x1ZGUgImNvbmZpZ19tZHJpdmVyX3JhbS5oIg0KLSNpbmNsdWRlICIuLi8uLi9wc3AvaW5jbHVkZS9wc3Bfc3RyaW5nLmgiDQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX21kcml2ZXJfcmFtLmgiDQotI2lmIFZFUl9NRFJJVkVSX1JBTV9NQUpPUiAhPSAxIHx8IFZFUl9NRFJJVkVSX1JBTV9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgTURSSVZFUl9SQU0gdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotLyogVGhlIGFycmF5IHVzZWQgYXMgdGhlIFJBTSBkaXNrIHN0b3JhZ2UuICovDQotc3RhdGljIGNoYXIgIHJhbWRydlsgTURSSVZFUl9SQU1fVk9MVU1FMF9TSVpFIF07DQotDQotLyogVGhlIEZfRFJJVkVSIHN0cnVjdHVyZSB0aGF0IGlzIGZpbGxlZCB3aXRoIHRoZSBSQU0gZGlzayB2ZXJzaW9ucyBvZiB0aGUgcmVhZA0KLXNlY3Rvciwgd3JpdGUgc2VjdG9yLCBldGMuIGZ1bmN0aW9ucy4gKi8NCi1zdGF0aWMgRl9EUklWRVIgIHRfZHJpdmVyOw0KLQ0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIG1heHNlY3RvciA9IE1EUklWRVJfUkFNX1ZPTFVNRTBfU0laRSAvIE1EUklWRVJfUkFNX1NFQ1RPUl9TSVpFOw0KLQ0KLS8qIERpc2sgbm90IGluaXRpYWxpemVkIHlldC4gKi8NCi1zdGF0aWMgY2hhciBpbl91c2UgPSAwOw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogUmVhZCBvbmUgc2VjdG9yDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgaW50IHJhbV9yZWFkc2VjdG9yICggRl9EUklWRVIgKiBkcml2ZXIsIHZvaWQgKiBkYXRhLCB1bnNpZ25lZCBsb25nIHNlY3RvciApDQotew0KLSAgbG9uZyAgICAgICBsZW47DQotICBjaGFyICAgICAqIGQgPSAoY2hhciAqKWRhdGE7DQotICBjaGFyICAgICAqIHM7DQotDQotICAvKiBOb3QgdXNlZC4gKi8NCi0gICggdm9pZCApIGRyaXZlcjsNCi0NCi0gIC8qIENoZWNrIGZvciB2YWxpZCBzZWN0b3IuICovDQotICBpZiAoIHNlY3RvciA+PSBtYXhzZWN0b3IgKQ0KLSAgew0KLSAgICByZXR1cm4gTURSSVZFUl9SQU1fRVJSX1NFQ1RPUjsNCi0gIH0NCi0NCi0gIGlmKCBpbl91c2UgPT0gMCApDQotICB7DQotICAgIHJldHVybiBNRFJJVkVSX1JBTV9FUlJfTk9UQVZBSUxBQkxFOw0KLSAgfQ0KLQ0KLSAgLyogTG9jYXRlIG9mZnNldCBpbnRvIFJBTSBkaXNrIGZvciBzZWN0b3IuICovDQotICBzID0gcmFtZHJ2Ow0KLSAgcyArPSBzZWN0b3IgKiBNRFJJVkVSX1JBTV9TRUNUT1JfU0laRTsNCi0gIGxlbiA9IE1EUklWRVJfUkFNX1NFQ1RPUl9TSVpFOw0KLQ0KLSNpZiBNRFJJVkVSX01FTV9MT05HX0FDQ0VTUw0KLSAgaWYgKCAoICEoIGxlbiAmIDMgKSApICYmICggISggKCAobG9uZylkICkgJiAzICkgKSAmJiAoICEoICggKGxvbmcpcyApICYgMyApICkgKQ0KLSAgew0KLSAgICBsb25nICogZGQgPSAobG9uZyAqKWQ7DQotICAgIGxvbmcgKiBzcyA9IChsb25nICopczsNCi0gICAgbGVuID4+PSAyOw0KLQkvKiBSZWFkIHdvcmRzLiAqLw0KLSAgICB3aGlsZSAoIGxlbi0tICkNCi0gICAgew0KLSAgICAgICpkZCsrID0gKnNzKys7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIE1EUklWRVJfUkFNX05PX0VSUk9SOw0KLSAgfQ0KLQ0KLSNlbmRpZiAvKiBpZiBNRFJJVkVSX01FTV9MT05HX0FDQ0VTUyAqLw0KLQ0KLSAgLyogUmVhZCBieXRlcy4gKi8NCi0gIHdoaWxlICggbGVuLS0gKQ0KLSAgew0KLSAgICAqZCsrID0gKnMrKzsNCi0gIH0NCi0NCi0gIHJldHVybiBNRFJJVkVSX1JBTV9OT19FUlJPUjsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBXcml0ZSBvbmUgc2VjdG9yDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgaW50IHJhbV93cml0ZXNlY3RvciAoIEZfRFJJVkVSICogZHJpdmVyLCB2b2lkICogZGF0YSwgdW5zaWduZWQgbG9uZyBzZWN0b3IgKQ0KLXsNCi0gIGxvbmcgICAgICAgbGVuOw0KLSAgY2hhciAgICAgKiBzID0gKGNoYXIgKilkYXRhOw0KLSAgY2hhciAgICAgKiBkOw0KLQ0KLSAgLyogTm90IHVzZWQuICovDQotICAoIHZvaWQgKSBkcml2ZXI7DQotDQotICAvKiBDaGVjayBmb3IgdmFsaWQgc2VjdG9yLiAqLw0KLSAgaWYgKCBzZWN0b3IgPj0gbWF4c2VjdG9yICkNCi0gIHsNCi0gICAgcmV0dXJuIE1EUklWRVJfUkFNX0VSUl9TRUNUT1I7DQotICB9DQotDQotICBpZiggaW5fdXNlID09IDAgKQ0KLSAgew0KLQkgIHJldHVybiBNRFJJVkVSX1JBTV9FUlJfTk9UQVZBSUxBQkxFOw0KLSAgfQ0KLQ0KLSAgLyogTG9jYXRlIG9mZnNldCBpbnRvIFJBTSBkaXNrIGZvciBzZWN0b3IuICovDQotICBkID0gcmFtZHJ2Ow0KLSAgZCArPSBzZWN0b3IgKiBNRFJJVkVSX1JBTV9TRUNUT1JfU0laRTsNCi0gIGxlbiA9IE1EUklWRVJfUkFNX1NFQ1RPUl9TSVpFOw0KLQ0KLSNpZiBNRFJJVkVSX01FTV9MT05HX0FDQ0VTUw0KLSAgaWYgKCAoICEoIGxlbiAmIDMgKSApICYmICggISggKCAobG9uZylkICkgJiAzICkgKSAmJiAoICEoICggKGxvbmcpcyApICYgMyApICkgKQ0KLSAgew0KLSAgICBsb25nICogZGQgPSAobG9uZyAqKWQ7DQotICAgIGxvbmcgKiBzcyA9IChsb25nICopczsNCi0gICAgbGVuID4+PSAyOw0KLQ0KLQkvKiBXcml0ZSB3b3Jkcy4gKi8NCi0gICAgd2hpbGUgKCBsZW4tLSApDQotICAgIHsNCi0gICAgICAqZGQrKyA9ICpzcysrOw0KLSAgICB9DQotDQotICAgIHJldHVybiBNRFJJVkVSX1JBTV9OT19FUlJPUjsNCi0gIH0NCi0jZW5kaWYgLyogaWYgTURSSVZFUl9NRU1fTE9OR19BQ0NFU1MgKi8NCi0NCi0gIC8qIFdyaXRlIGJ5dGVzLiAqLw0KLSAgd2hpbGUgKCBsZW4tLSApDQotICB7DQotICAgICpkKysgPSAqcysrOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIE1EUklWRVJfUkFNX05PX0VSUk9SOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogcmFtX2dldHBoeQ0KLSAqDQotICogZGV0ZXJtaW5hdGUgcmFtZHJpdmUgcGh5c2ljYWxzDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGRyaXZlciAtIGRyaXZlciBzdHJ1Y3R1cmUNCi0gKiBwaHkgLSB0aGlzIHN0cnVjdHVyZSBoYXMgdG8gYmUgZmlsbGVkIHdpdGggcGh5c2ljYWwgaW5mb3JtYXRpb24NCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGVycm9yIGNvZGUgb3IgemVybyBpZiBzdWNjZXNzZnVsDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyBpbnQgcmFtX2dldHBoeSAoIEZfRFJJVkVSICogZHJpdmVyLCBGX1BIWSAqIHBoeSApDQotew0KLSAgLyogTm90IHVzZWQuICovDQotICAoIHZvaWQgKSBkcml2ZXI7DQotDQotICBwaHktPm51bWJlcl9vZl9zZWN0b3JzID0gbWF4c2VjdG9yOw0KLSAgcGh5LT5ieXRlc19wZXJfc2VjdG9yID0gTURSSVZFUl9SQU1fU0VDVE9SX1NJWkU7DQotDQotICByZXR1cm4gTURSSVZFUl9SQU1fTk9fRVJST1I7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiByYW1fcmVsZWFzZQ0KLSAqDQotICogUmVsZWFzZXMgYSBkcml2ZQ0KLSAqDQotICogSU5QVVRTDQotICoNCi0gKiBkcml2ZXJfcGFyYW0gLSBkcml2ZXIgcGFyYW1ldGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIHJhbV9yZWxlYXNlICggRl9EUklWRVIgKiBkcml2ZXIgKQ0KLXsNCi0gIC8qIE5vdCB1c2VkLiAqLw0KLSAgKCB2b2lkICkgZHJpdmVyOw0KLQ0KLSAgLyogRGlzayBubyBsb25nZXIgaW4gdXNlLiAqLw0KLSAgaW5fdXNlID0gMDsNCi19DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIHJhbV9pbml0ZnVuYw0KLSAqDQotICogdGhpcyBpbml0IGZ1bmN0aW9uIGhhcyB0byBiZSBwYXNzZWQgZm9yIGhpZ2hsZXZlbCB0byBpbml0aWF0ZSB0aGUNCi0gKiBkcml2ZXIgZnVuY3Rpb25zDQotICoNCi0gKiBJTlBVVFMNCi0gKg0KLSAqIGRyaXZlcl9wYXJhbSAtIGRyaXZlciBwYXJhbWV0ZXINCi0gKg0KLSAqIFJFVFVSTlMNCi0gKg0KLSAqIGRyaXZlciBzdHJ1Y3R1cmUgcG9pbnRlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1GX0RSSVZFUiAqIHJhbV9pbml0ZnVuYyAoIHVuc2lnbmVkIGxvbmcgZHJpdmVyX3BhcmFtICkNCi17DQotICAoIHZvaWQgKSBkcml2ZXJfcGFyYW07DQotDQotICBpZiggaW5fdXNlICkNCi0gICAgcmV0dXJuIE5VTEw7DQotDQotICAodm9pZClwc3BfbWVtc2V0KCAmdF9kcml2ZXIsIDAsIHNpemVvZiggRl9EUklWRVIgKSApOw0KLQ0KLSAgdF9kcml2ZXIucmVhZHNlY3RvciA9IHJhbV9yZWFkc2VjdG9yOw0KLSAgdF9kcml2ZXIud3JpdGVzZWN0b3IgPSByYW1fd3JpdGVzZWN0b3I7DQotICB0X2RyaXZlci5nZXRwaHkgPSByYW1fZ2V0cGh5Ow0KLSAgdF9kcml2ZXIucmVsZWFzZSA9IHJhbV9yZWxlYXNlOw0KLQ0KLSAgaW5fdXNlID0gMTsNCi0NCi0gIHJldHVybiAmdF9kcml2ZXI7DQotfSAvKiByYW1faW5pdGZ1bmMgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9wc3AvaW5jbHVkZS9wc3BfcnRjLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9wc3AvaW5jbHVkZS9wc3BfcnRjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NmM1MDAuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvcHNwL2luY2x1ZGUvcHNwX3J0Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9QU1BfUlRDX0gNCi0jZGVmaW5lIF9QU1BfUlRDX0gNCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotDQotI2luY2x1ZGUgIi4uLy4uL3ZlcnNpb24vdmVyX3BzcF9ydGMuaCINCi0jaWYgVkVSX1BTUF9SVENfTUFKT1IgIT0gMQ0KLSAjZXJyb3IgIlZFUl9QU1BfUlRDX01BSk9SIGludmFsaWQiDQotI2VuZGlmDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICB1aW50OF90ICAgc2VjOw0KLSAgdWludDhfdCAgIG1pbjsNCi0gIHVpbnQ4X3QgICBob3VyOw0KLSAgdWludDhfdCAgIGRheTsNCi0gIHVpbnQ4X3QgICBtb250aDsNCi0gIHVpbnQxNl90ICB5ZWFyOw0KLX0gdF9wc3BfdGltZWRhdGU7DQotDQotdm9pZCBwc3BfZ2V0Y3VycmVudHRpbWVkYXRlICggdF9wc3BfdGltZWRhdGUgKiBwX3RpbWVkYXRlICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLQ0KLSNlbmRpZiAvKiBfUFNQX1JUQ19IICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvcHNwL2luY2x1ZGUvcHNwX3N0cmluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTQ0MTBkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC9pbmNsdWRlL3BzcF9zdHJpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfUFNQX1NUUklOR19IXw0KLSNkZWZpbmUgX1BTUF9TVFJJTkdfSF8NCi0NCi0jaW5jbHVkZSA8c3RkZGVmLmg+DQotI2luY2x1ZGUgPHN0cmluZy5oPg0KLQ0KLSNpbmNsdWRlICIuLi8uLi92ZXJzaW9uL3Zlcl9wc3Bfc3RyaW5nLmgiDQotI2lmIFZFUl9QU1BfU1RSSU5HX01BSk9SICE9IDEgfHwgVkVSX1BTUF9TVFJJTkdfTUlOT1IgIT0gNA0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIFBTUF9TVFJJTkcgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2RlZmluZSBwc3BfbWVtY3B5KCBkLCBzLCBsICkgICAgbWVtY3B5KCAoIGQgKSwgKCBzICksIChzaXplX3QpKCBsICkgKQ0KLSNkZWZpbmUgcHNwX21lbW1vdmUoIGQsIHMsIGwgKSAgIG1lbW1vdmUoICggZCApLCAoIHMgKSwgKHNpemVfdCkoIGwgKSApDQotI2RlZmluZSBwc3BfbWVtc2V0KCBkLCBjLCBsICkgICAgbWVtc2V0KCAoIGQgKSwgKCBjICksIChzaXplX3QpKCBsICkgKQ0KLSNkZWZpbmUgcHNwX21lbWNtcCggczEsIHMyLCBsICkgIG1lbWNtcCggKCBzMSApLCAoIHMyICksIChzaXplX3QpKCBsICkgKQ0KLSNkZWZpbmUgcHNwX3N0cm5sZW4oIHMsIGwgKSAgICAgIHN0cm5sZW4oICggcyApLCAoIHNpemVfdCApKCBsICkgKQ0KLSNkZWZpbmUgcHNwX3N0cm5jYXQoIGQsIHMsIGwgKSAgIHN0cm5jYXQoICggZCApLCAoIHMgKSwgKHNpemVfdCkoIGwgKSApDQotI2RlZmluZSBwc3Bfc3RybmNweSggZCwgcywgbCApICAgc3RybmNweSggKCBkICksICggcyApLCAoc2l6ZV90KSggbCApICkNCi0jZGVmaW5lIHBzcF9zdHJuY21wKCBzMSwgczIsIGwgKSBzdHJuY21wKCAoIHMxICksICggczIgKSwgKHNpemVfdCkoIGwgKSApDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfUFNQX1NUUklOR19IXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvZmF0X3NsL3BzcF90ZXN0LmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9wc3AvdGFyZ2V0L2ZhdF9zbC9wc3BfdGVzdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjk1NDI0Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvZmF0X3NsL3BzcF90ZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZQ0KLSAqIHRlcm1zLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4NCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZQ0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgInBzcF90ZXN0LmgiDQotI2luY2x1ZGUgImNvbmZpZ19mYXRfc2wuaCINCi0jaW5jbHVkZSAiY29uZmlnX21kcml2ZXJfcmFtLmgiDQotI2luY2x1ZGUgIi4uLy4uLy4uL2FwaS9mYXRfc2wuaCINCi0jaW5jbHVkZSAiLi4vLi4vLi4vYXBpL2FwaV9tZHJpdmVyX3JhbS5oIg0KLQ0KLSNpbmNsdWRlICIuLi8uLi8uLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1DQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLSNpbmNsdWRlICIuLi8uLi8uLi92ZXJzaW9uL3Zlcl9wc3BfZmF0X3NsLmgiDQotI2lmIFZFUl9QU1BfRkFUX0ZBVF9TTF9NQUpPUiAhPSAxIHx8IFZFUl9QU1BfRkFUX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgUFNQX0ZBVF9GQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2RlZmluZSBQUklOVF9CVUZGRVJfU0laRSA2NA0KLQ0KLWV4dGVybiB2b2lkIF9fcHJpbnRidWYgKCBjaGFyICogYnVmLCBpbnQgbGVuICk7DQotDQotLyogVXNlIHRvIGRpc3BsYXkgdGV4dCAocHJpbnRmKS4gKi8NCi12b2lkIF9mX2R1bXAgKCBjaGFyICogcyApDQotew0KLSAgcHJpbnRmKCAiJXNcclxuIiwgcyApOw0KLX0NCi0NCi0vKiBVc2UgdG8gZGlzcGxheSB0ZXN0IHJlc3VsdCAocHJpbnRmKS4gKi8NCi11aW50OF90IF9mX3Jlc3VsdCAoIGludCBsaW5lbnVtLCB1aW50MzJfdCByZXN1bHQgKQ0KLXsNCi0gIHByaW50ZiggIkVycm9yOiVkLyVsZFxyXG4iLCBsaW5lbnVtLCByZXN1bHQgKTsNCi0gIHJldHVybiAwOw0KLX0NCi0NCi0vKiBVc2UgdG8gYnVpbGQgZmlsZSBzeXN0ZW0gKG1vdW50KS4gKi8NCi11aW50OF90IF9mX3Bvd2Vyb24gKCB2b2lkICkNCi17DQotICBmX2RlbHZvbHVtZSgpOw0KLSAgcmV0dXJuIGZfaW5pdHZvbHVtZSggcmFtX2luaXRmdW5jICk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvZmF0X3NsL3BzcF90ZXN0LmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9wc3AvdGFyZ2V0L2ZhdF9zbC9wc3BfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWU2MzJmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvZmF0X3NsL3BzcF90ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZQ0KLSAqIHRlcm1zLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4NCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZQ0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfUFNQX0ZBVF9GQVRfU0xfSA0KLSNkZWZpbmUgX1BTUF9GQVRfRkFUX1NMX0gNCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotI2luY2x1ZGUgIi4uLy4uLy4uL3BzcC9pbmNsdWRlL3BzcF9zdHJpbmcuaCINCi0NCi0jaW5jbHVkZSAiLi4vLi4vLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNQ0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0jaW5jbHVkZSAiLi4vLi4vLi4vdmVyc2lvbi92ZXJfcHNwX2ZhdF9zbC5oIg0KLSNpZiBWRVJfUFNQX0ZBVF9GQVRfU0xfTUFKT1IgIT0gMSB8fCBWRVJfUFNQX0ZBVF9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIFBTUF9GQVRfRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qIFVzZSB0byBkaXNwbGF5IHRleHQgKHByaW50ZikuICovDQotdm9pZCBfZl9kdW1wICggY2hhciAqIHMgKTsNCi0NCi0vKiBVc2UgdG8gZGlzcGxheSB0ZXN0IHJlc3VsdCAocHJpbnRmKS4gKi8NCi11aW50OF90IF9mX3Jlc3VsdCAoIGludCBsaW5lbnVtLCB1aW50MzJfdCByZXN1bHQgKTsNCi0NCi0vKiBVc2UgdG8gYnVpbGQgZmlsZSBzeXN0ZW0gKG1vdW50KS4gKi8NCi11aW50OF90IF9mX3Bvd2Vyb24gKCB2b2lkICk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLQ0KLSNlbmRpZiAvKiBfUFNQX0ZBVF9GQVRfU0xfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvcnRjL3BzcF9ydGMuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvcnRjL3BzcF9ydGMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhNmNhNC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9wc3AvdGFyZ2V0L3J0Yy9wc3BfcnRjLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSANCi0gKiB0ZXJtcy4NCi0gKiANCi0gKiBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCi0gKiANCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciANCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICogDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIA0KLSAqIGFueSBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gDQotICogaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL2ZhdF9zbCBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSANCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSA8c3RkZGVmLmg+DQotI2luY2x1ZGUgIi4uLy4uL2luY2x1ZGUvcHNwX3J0Yy5oIg0KLQ0KLSNpbmNsdWRlICIuLi8uLi8uLi92ZXJzaW9uL3Zlcl9wc3BfcnRjLmgiDQotI2lmIFZFUl9QU1BfUlRDX01BSk9SICE9IDENCi0gI2Vycm9yICJWRVJfUFNQX1JUQ19NQUpPUiBpbnZhbGlkIg0KLSNlbmRpZg0KLSNpZiBWRVJfUFNQX1JUQ19NSU5PUiAhPSAwDQotICNlcnJvciAiVkVSX1BTUF9SVENfTUlOT1IgaW52YWxpZCINCi0jZW5kaWYNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogcHNwX2dldGN1cnJlbnR0aW1lZGF0ZQ0KLSAqDQotICogTmVlZCB0byBiZSBwb3J0ZWQgZGVwZW5kaW5nIG9uIHN5c3RlbSwgaXQgcmV0cmVpdmVzIHRoZQ0KLSAqIGN1cnJlbnQgdGltZSBhbmQgZGF0ZS4NCi0gKiBQbGVhc2UgdGFrZSBjYXJlIG9mIGNvcnJlY3Qgcm9sbC1vdmVyIGhhbmRsaW5nLg0KLSAqIFJvbGwtb3ZlciBwcm9ibGVtIGlzIHRvIHJlYWQgYSBkYXRlIGF0IDIzLjU5LjU5IGFuZCB0aGVuIHJlYWRpbmcgdGltZSBhdA0KLSAqIDAwOjAwLjAwLg0KLSAqDQotICogSU5QVVQNCi0gKg0KLSAqIHBfdGltZWRhdGUgLSBwb2ludGVyIHdoZXJlIHRvIHN0b3JlIHRpbWUgYW5kIGRhdGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBwc3BfZ2V0Y3VycmVudHRpbWVkYXRlICggdF9wc3BfdGltZWRhdGUgKiBwX3RpbWVkYXRlICkNCi17DQotICBpZiAoIHBfdGltZWRhdGUgIT0gTlVMTCApDQotICB7DQotICAgIHBfdGltZWRhdGUtPnNlYyA9IDA7DQotICAgIHBfdGltZWRhdGUtPm1pbiA9IDA7DQotICAgIHBfdGltZWRhdGUtPmhvdXIgPSAxMnU7DQotDQotICAgIHBfdGltZWRhdGUtPmRheSA9IDF1Ow0KLSAgICBwX3RpbWVkYXRlLT5tb250aCA9IDF1Ow0KLSAgICBwX3RpbWVkYXRlLT55ZWFyID0gMTk4MHU7DQotICB9DQotfSAvKiBwc3BfZ2V0Y3VycmVudHRpbWVkYXRlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi9IaXN0b3J5LnR4dCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3ZlcnNpb24vSGlzdG9yeS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1M2I5MjEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi9IaXN0b3J5LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotQ2hhbmdlcyBiZXR3ZWVuIFYxLjAuMCBhbmQgVjEuMC4xDQotDQotCSsgRml4IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgZmlsZSB3aGVuIHRoZSBvZmZzZXQgd2FzIG5vdCBtdWx0aXBsZSBvZg0KLQkgIHRoZSBzZWN0b3Igc2l6ZSwgb3Igd2hlbiB0aGUgZmlsZSB3YXMgZW1wdHkuDQotDQotCSsgU2Vla2luZyB0ZXN0IGV4dGVuZGVkIHRvIHZhbGlkYXRlIHNlZWtpbmcvd3JpdGluZyBvbiBzZWN0b3IgYm91bmRhcmllcy4NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9mYXRfc2wuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3ZlcnNpb24vdmVyX2ZhdF9zbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjJkMzJkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3ZlcnNpb24vdmVyX2ZhdF9zbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9WRVJfRkFUX1NMX0gNCi0jZGVmaW5lIF9WRVJfRkFUX1NMX0gNCi0NCi0jZGVmaW5lIFZFUl9GQVRfU0xfTUFKT1IgNQ0KLSNkZWZpbmUgVkVSX0ZBVF9TTF9NSU5PUiAyDQotDQotI2VuZGlmDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfbWRyaXZlci5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfbWRyaXZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTU4MWY0Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3ZlcnNpb24vdmVyX21kcml2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfVkVSX01EUklWRVJfSA0KLSNkZWZpbmUgX1ZFUl9NRFJJVkVSX0gNCi0NCi0jZGVmaW5lIFZFUl9NRFJJVkVSX01BSk9SIDENCi0jZGVmaW5lIFZFUl9NRFJJVkVSX01JTk9SIDANCi0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9tZHJpdmVyX3JhbS5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfbWRyaXZlcl9yYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQyY2ZmYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9tZHJpdmVyX3JhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9WRVJfTURSSVZFUl9SQU1fSA0KLSNkZWZpbmUgX1ZFUl9NRFJJVkVSX1JBTV9IDQotDQotI2RlZmluZSBWRVJfTURSSVZFUl9SQU1fTUFKT1IgMQ0KLSNkZWZpbmUgVkVSX01EUklWRVJfUkFNX01JTk9SIDINCi0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9wc3BfZmF0X3NsLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9wc3BfZmF0X3NsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYzg2OTMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfcHNwX2ZhdF9zbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UNCi0gKiB0ZXJtcy4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytGQVQgU0wgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbQ0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUNCi0gKiBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX1ZFUl9QU1BfRkFUX0ZBVF9TTF9IDQotI2RlZmluZSBfVkVSX1BTUF9GQVRfRkFUX1NMX0gNCi0NCi0jZGVmaW5lIFZFUl9QU1BfRkFUX0ZBVF9TTF9NQUpPUiAxDQotI2RlZmluZSBWRVJfUFNQX0ZBVF9GQVRfU0xfTUlOT1IgMg0KLQ0KLSNlbmRpZiAgLyogX1ZFUl9QU1BfRkFUX0ZBVF9TTF9IICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfcHNwX3J0Yy5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfcHNwX3J0Yy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzI4ODhlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3ZlcnNpb24vdmVyX3BzcF9ydGMuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIA0KLSAqIHRlcm1zLg0KLSAqIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KLSAqIA0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSANCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIA0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKiANCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK0ZBVCBTTCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gDQotICogYW55IGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSANCi0gKiBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvZmF0X3NsIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIA0KLSAqIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfVkVSX1BTUF9SVENfSA0KLSNkZWZpbmUgX1ZFUl9QU1BfUlRDX0gNCi0NCi0jZGVmaW5lIFZFUl9QU1BfUlRDX01BSk9SIDENCi0jZGVmaW5lIFZFUl9QU1BfUlRDX01JTk9SIDANCi0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9wc3Bfc3RyaW5nLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC92ZXJzaW9uL3Zlcl9wc3Bfc3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGNkNDMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvdmVyc2lvbi92ZXJfcHNwX3N0cmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgDQotICogdGVybXMuDQotICogDQotICogRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQotICogDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIA0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqIA0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrRkFUIFNMIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiANCi0gKiBhbnkgZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIA0KLSAqIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy9mYXRfc2wgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgDQotICogY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9WRVJfUFNQX1NUUklOR19IDQotI2RlZmluZSBfVkVSX1BTUF9TVFJJTkdfSA0KLQ0KLSNkZWZpbmUgVkVSX1BTUF9TVFJJTkdfTUFKT1IgMQ0KLSNkZWZpbmUgVkVSX1BTUF9TVFJJTkdfTUlOT1IgNA0KLQ0KLSNlbmRpZg0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtTmFidG8vcmVhZG1lLnR4dCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtTmFidG8vcmVhZG1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkMWJjNS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLU5hYnRvL3JlYWRtZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUZyZWVSVE9TK05hYnRvIHByb2plY3RzIGFyZSBjdXJyZW50bHkgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSANCi1kb3dubG9hZC4gIEZvbGxvd2luZyBhcmUgbGlua3MgdG8gdGhlIGRvd25sb2FkIHBhZ2UgYW5kIHRoZQ0KLWRvY3VtZW50YXRpb24gZm9yIHRoZSBkZW1vIHRoYXQgaXMgaW5jbHVkZWQgaW4gdGhlIGRvd25sb2FkLg0KLQ0KLWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0ZyZWVSVE9TLVBsdXMvTmFidG8vZG93bmxvYWRfZnJlZXJ0b3NfcGx1c19uYWJ0by5zaHRtbA0KLWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0ZyZWVSVE9TLVBsdXMvTmFidG8vZ2V0dGluZ19zdGFydGVkX3dpdGhfRnJlZVJUT1NfUGx1c19OYWJ0by5zaHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0FSUC5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfQVJQLmMKaW5kZXggNWYyZmYyNS4uNDVhMjgyZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfQVJQLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfQVJQLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0RIQ1AuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0RIQ1AuYwppbmRleCAyZTMzNzdhLi42ZTM1MDY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19ESENQLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfREhDUC5jCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19ETlMuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0ROUy5jCmluZGV4IDM0ZmZmYWIuLjljNzFhYTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0ROUy5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0ROUy5jCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19JUC5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfSVAuYwppbmRleCBhMDcxYmFmLi5lOGI0MjA5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19JUC5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX0lQLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1NvY2tldHMuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1NvY2tldHMuYwppbmRleCA5ZjkxZjE2Li5kOTdlOThjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19Tb2NrZXRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfU29ja2V0cy5jCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19TdHJlYW1fQnVmZmVyLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19TdHJlYW1fQnVmZmVyLmMKaW5kZXggMGU4Nzg2Zi4uMTBhZmVjYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfU3RyZWFtX0J1ZmZlci5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1N0cmVhbV9CdWZmZXIuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfVENQX0lQLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19UQ1BfSVAuYwppbmRleCAxZjMwNmIwLi40ZWQyMTU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19UQ1BfSVAuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19UQ1BfSVAuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19UQ1BfV0lOLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19UQ1BfV0lOLmMKaW5kZXggODVlOTQ4MC4uYTczY2M1ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvRnJlZVJUT1NfVENQX1dJTi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1RDUF9XSU4uYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9GcmVlUlRPU19VRFBfSVAuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1VEUF9JUC5jCmluZGV4IDM1OTViYmQuLjA5ZmIwYzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1VEUF9JUC5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL0ZyZWVSVE9TX1VEUF9JUC5jCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TSVBDb25maWdEZWZhdWx0cy5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU0lQQ29uZmlnRGVmYXVsdHMuaAppbmRleCA3OWFmMDc0Li4wNDIyNDNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TSVBDb25maWdEZWZhdWx0cy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NJUENvbmZpZ0RlZmF1bHRzLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfREVGQVVMVF9JUF9DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfQVJQLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0FSUC5oCmluZGV4IDVjYWFkNjcuLjU0NzE4NzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfQVJQLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19BUlAuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19BUlBfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfREhDUC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19ESENQLmgKaW5kZXggYjQzMmUzYy4uZWEwMWVkOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19ESENQLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19ESENQLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfREhDUF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19ETlMuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfRE5TLmgKaW5kZXggNDUxNDQ5MS4uNDFmNTVkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19ETlMuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0ROUy5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0ROU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19JUC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19JUC5oCmluZGV4IDU5MzExYzQuLjQ4YTFlYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfSVAuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0lQLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfSVBfSA0KQEAgLTE1Myw2ICsxMjQsMTMgQEAKIAllSW52YWxpZERhdGEJCS8qIEEgcmVwbHkgd2FzIHJlY2VpdmVkIHRvIGFuIG91dGdvaW5nIHBpbmcgYnV0IHRoZSBwYXlsb2FkIG9mIHRoZSByZXBseSB3YXMgbm90IGNvcnJlY3QuICovDQogfSBlUGluZ1JlcGx5U3RhdHVzX3Q7DQogDQordHlwZWRlZiBlbnVtIGVORVRXT1JLX0FERFJFU1NfVFlQRSANCit7DQorCWVOZXRXb3JrQWRkcmVzc1R5cGVJUFY0LA0KKwllTmV0V29ya0FkZHJlc3NUeXBlSVBWNiwNCisJZU5ldFdvcmtBZGRyZXNzVHlwZUhvc3ROYW1lDQorfSBlTmV0V29ya0FkZHJlc3NUeXBlX3Q7DQorDQogLyogRW5kaWFuIHJlbGF0ZWQgZGVmaW5pdGlvbnMuICovDQogI2lmKCBpcGNvbmZpZ0JZVEVfT1JERVIgPT0gcGRGUkVFUlRPU19MSVRUTEVfRU5ESUFOICkNCiANCkBAIC0xOTYsNyArMTc0LDcgQEAKIAlzdGF0aWMgcG9ydElOTElORSBCYXNlVHlwZV90ICBGcmVlUlRPU19taW5fQmFzZVR5cGUgIChCYXNlVHlwZV90ICBhLCBCYXNlVHlwZV90ICBiKTsNCiAJc3RhdGljIHBvcnRJTkxJTkUgQmFzZVR5cGVfdCAgRnJlZVJUT1NfbWF4X0Jhc2VUeXBlICAoQmFzZVR5cGVfdCAgYSwgQmFzZVR5cGVfdCAgYik7DQogCXN0YXRpYyBwb3J0SU5MSU5FIFVCYXNlVHlwZV90IEZyZWVSVE9TX21heF9VQmFzZVR5cGUgKFVCYXNlVHlwZV90IGEsIFVCYXNlVHlwZV90IGIpOw0KLQlzdGF0aWMgcG9ydElOTElORSBVQmFzZVR5cGVfdCBGcmVlUlRPU19taW5fVUJhc2VUeXBlIChVQmFzZVR5cGVfdCBhLCBVQmFzZVR5cGVfdCAgYik7DQorCXN0YXRpYyBwb3J0SU5MSU5FIFVCYXNlVHlwZV90ICAJRnJlZVJUT1NfbWluX1VCYXNlVHlwZSAoVUJhc2VUeXBlX3QgIGEsIFVCYXNlVHlwZV90ICBiKTsNCiANCiANCiAJc3RhdGljIHBvcnRJTkxJTkUgaW50MzJfdCAgRnJlZVJUT1NfbWF4X2ludDMyICAoaW50MzJfdCAgYSwgaW50MzJfdCAgYikgeyByZXR1cm4gYSA+PSBiID8gYSA6IGI7IH0NCkBAIC0yMjMsNiArMjAxLDggQEAKIAkjZGVmaW5lIEZyZWVSVE9TX3JvdW5kX3VwKGEsZCkgICAoICggKCB1aW50MzJfdCApICggZCApICkgKiAoICggKCAoIHVpbnQzMl90ICkgKCBhICkgKSArICggKCB1aW50MzJfdCApICggZCApICkgLSAxVUwgKSAvICggKCB1aW50MzJfdCApICggZCApICkgKSApDQogCSNkZWZpbmUgRnJlZVJUT1Nfcm91bmRfZG93bihhLGQpICggKCAoIHVpbnQzMl90ICkgKCBkICkgKSAqICggKCAoIHVpbnQzMl90ICkgKCBhICkgKSAvICggKCB1aW50MzJfdCApICggZCApICkgKSApDQogDQorCSNkZWZpbmUgRnJlZVJUT1NfbXNfdG9fdGljayhtcykgICggKCBtcyAqIGNvbmZpZ1RJQ0tfUkFURV9IWiArIDUwMCApIC8gMTAwMCApDQorDQogCSNkZWZpbmUgRnJlZVJUT1NfbWF4X0Jhc2VUeXBlKGEsIGIpICAoICggKCBCYXNlVHlwZV90ICApICggYSApICkgPj0gKCAoIEJhc2VUeXBlX3QgICkgKCBiICkgKSA/ICggKCBCYXNlVHlwZV90ICApICggYSApICkgOiAoICggQmFzZVR5cGVfdCAgKSAoIGIgKSApICkNCiAJI2RlZmluZSBGcmVlUlRPU19tYXhfVUJhc2VUeXBlKGEsIGIpICggKCAoIFVCYXNlVHlwZV90ICkgKCBhICkgKSA+PSAoICggVUJhc2VUeXBlX3QgKSAoIGIgKSApID8gKCAoIFVCYXNlVHlwZV90ICkgKCBhICkgKSA6ICggKCBVQmFzZVR5cGVfdCApICggYiApICkgKQ0KIAkjZGVmaW5lIEZyZWVSVE9TX21pbl9CYXNlVHlwZShhLCBiKSAgKCAoICggQmFzZVR5cGVfdCAgKSAoIGEgKSApIDw9ICggKCBCYXNlVHlwZV90ICApICggYiApICkgPyAoICggQmFzZVR5cGVfdCAgKSAoIGEgKSApIDogKCAoIEJhc2VUeXBlX3QgICkgKCBiICkgKSApDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19JUF9Qcml2YXRlLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0lQX1ByaXZhdGUuaAppbmRleCA2YWY4NzVhLi4wYjQzYzU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0lQX1ByaXZhdGUuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX0lQX1ByaXZhdGUuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19JUF9QUklWQVRFX0gNCkBAIC00NzcsNiArNDQ4LDExIEBACiAgKi8NCiBCYXNlVHlwZV90IHhJUElzTmV0d29ya1Rhc2tSZWFkeSggdm9pZCApOw0KIA0KKyNpZiggaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfV0FLRV9DQUxMQkFDSyA9PSAxICkNCisJc3RydWN0IFhTT0NLRVQ7DQorCXR5cGVkZWYgdm9pZCAoKlNvY2tldFdha2V1cENhbGxiYWNrX3QpKCBzdHJ1Y3QgWFNPQ0tFVCAqIHB4U29ja2V0ICk7DQorI2VuZGlmDQorDQogI2lmKCBpcGNvbmZpZ1VTRV9UQ1AgPT0gMSApDQogDQogCS8qDQpAQCAtNjQ0LDYgKzYyMCwxMCBAQAogCSNpZiggaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfU0VNQVBIT1JFID09IDEgKQ0KIAkJU2VtYXBob3JlSGFuZGxlX3QgcHhVc2VyU2VtYXBob3JlOw0KIAkjZW5kaWYgLyogaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfU0VNQVBIT1JFICovDQorCSNpZiggaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfV0FLRV9DQUxMQkFDSyA9PSAxICkNCisJCVNvY2tldFdha2V1cENhbGxiYWNrX3QgcHhVc2VyV2FrZUNhbGxiYWNrOw0KKwkjZW5kaWYgLyogaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfV0FLRV9DQUxMQkFDSyAqLw0KKw0KIAkjaWYoIGlwY29uZmlnU1VQUE9SVF9TRUxFQ1RfRlVOQ1RJT04gPT0gMSApDQogCQlzdHJ1Y3QgeFNPQ0tFVF9TRVQgKnB4U29ja2V0U2V0Ow0KIAkJLyogVXNlciBtYXkgaW5kaWNhdGUgd2hpY2ggYml0cyBhcmUgaW50ZXJlc3RpbmcgZm9yIHRoaXMgc29ja2V0LiAqLw0KQEAgLTcxNyw3ICs2OTcsNyBAQAogICogcGFja2V0IGNvbWUgaW4gb3V0LW9mLW9yZGVyLCBhbiBvZmZzZXQgd2lsbCBiZSB1c2VkIHRvIHB1dCBpdCBpbiBmcm9udCBhbmQNCiAgKiB0aGUgaGVhZCB3aWxsIG5vdCBjaGFuZ2UgeWV0Lg0KICAqLw0KLWludDMyX3QgbFRDUEFkZFJ4ZGF0YSggRnJlZVJUT1NfU29ja2V0X3QgKnB4U29ja2V0LCBzaXplX3QgdXhPZmZzZXQsIGNvbnN0IHVpbnQ4X3QgKnBjRGF0YSwgdWludDMyX3QgdWxCeXRlQ291bnQgKTsNCitpbnQzMl90IGxUQ1BBZGRSeGRhdGEoRnJlZVJUT1NfU29ja2V0X3QgKnB4U29ja2V0LCBzaXplX3QgdXhPZmZzZXQsIGNvbnN0IHVpbnQ4X3QgKnBjRGF0YSwgdWludDMyX3QgdWxCeXRlQ291bnQpOw0KIA0KIC8qDQogICogQ3VycmVudGx5IGNhbGxlZCBmb3IgYW55IGltcG9ydGFudCBldmVudC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1NvY2tldHMuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfU29ja2V0cy5oCmluZGV4IDg3ZmI3YmIuLjBhZjE3ZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfU29ja2V0cy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfU29ja2V0cy5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX1NPQ0tFVFNfSA0KQEAgLTE1OCw2ICsxMjksMTEgQEAKIAkjZGVmaW5lIEZSRUVSVE9TX1NPX1VEUF9NQVhfUlhfUEFDS0VUUwkoIDE2ICkJCS8qIFRoaXMgb3B0aW9uIGhlbHBzIHRvIGxpbWl0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIGEgVURQIHNvY2tldCB3aWxsIGJ1ZmZlciAqLw0KICNlbmRpZg0KIA0KKyNpZiggaXBjb25maWdTT0NLRVRfSEFTX1VTRVJfV0FLRV9DQUxMQkFDSyA9PSAxICkNCisJI2RlZmluZSBGUkVFUlRPU19TT19XQUtFVVBfQ0FMTEJBQ0sJKCAxNyApDQorI2VuZGlmDQorDQorDQogI2RlZmluZSBGUkVFUlRPU19OT1RfTEFTVF9JTl9GUkFHTUVOVEVEX1BBQ0tFVCAJKCAweDgwICkgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSwgYnV0IGFsc28gcGFydCBvZiBhbiA4LWJpdCBiaXR3aXNlIHZhbHVlLiAqLw0KICNkZWZpbmUgRlJFRVJUT1NfRlJBR01FTlRFRF9QQUNLRVQJCQkJKCAweDQwICkgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSwgYnV0IGFsc28gcGFydCBvZiBhbiA4LWJpdCBiaXR3aXNlIHZhbHVlLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfU3RyZWFtX0J1ZmZlci5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19TdHJlYW1fQnVmZmVyLmgKaW5kZXggOWI4NGY5Ny4uNDM4ZmI2MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19TdHJlYW1fQnVmZmVyLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19TdHJlYW1fQnVmZmVyLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19UQ1BfSVAuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfVENQX0lQLmgKaW5kZXggM2Q1MTY0MC4uOGQ3NGIwOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19UQ1BfSVAuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1RDUF9JUC5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX1RDUF9JUF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19UQ1BfV0lOLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1RDUF9XSU4uaAppbmRleCBiNTVjNjk3Li4zYzUzM2JmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1RDUF9XSU4uaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1RDUF9XSU4uaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1VEUF9JUC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19VRFBfSVAuaAppbmRleCA1ZjcwNGFmLi44ZThjOWRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX1VEUF9JUC5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfVURQX0lQLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfVURQX0lQX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX2Vycm5vX1RDUC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9GcmVlUlRPU19lcnJub19UQ1AuaAppbmRleCBhOGIwYmMwLi4xNTAwOWVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0ZyZWVSVE9TX2Vycm5vX1RDUC5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvRnJlZVJUT1NfZXJybm9fVENQLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbCANCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWIgDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIA0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKiANCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UgDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19FUlJOT19UQ1ANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0lQVHJhY2VNYWNyb0RlZmF1bHRzLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL0lQVHJhY2VNYWNyb0RlZmF1bHRzLmgKaW5kZXggM2UzMDcyMi4uMDYxMDgxYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9JUFRyYWNlTWFjcm9EZWZhdWx0cy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvSVBUcmFjZU1hY3JvRGVmYXVsdHMuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogVGhpcyBmaWxlIHByb3ZpZGVzIGRlZmF1bHQgKGVtcHR5KSBpbXBsZW1lbnRhdGlvbnMgZm9yIGFueSBJUCB0cmFjZSBtYWNyb3MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL05ldHdvcmtCdWZmZXJNYW5hZ2VtZW50LmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL05ldHdvcmtCdWZmZXJNYW5hZ2VtZW50LmgKaW5kZXggNmVlZGRjOC4uOTQ3MGU5NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvaW5jbHVkZS9OZXR3b3JrQnVmZmVyTWFuYWdlbWVudC5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvTmV0d29ya0J1ZmZlck1hbmFnZW1lbnQuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBORVRXT1JLX0JVRkZFUl9NQU5BR0VNRU5UX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9pbmNsdWRlL05ldHdvcmtJbnRlcmZhY2UuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvTmV0d29ya0ludGVyZmFjZS5oCmluZGV4IDY1ZTIzNWQuLmIxMmFkZmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvTmV0d29ya0ludGVyZmFjZS5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL2luY2x1ZGUvTmV0d29ya0ludGVyZmFjZS5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIE5FVFdPUktfSU5URVJGQUNFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQnVmZmVyTWFuYWdlbWVudC9CdWZmZXJBbGxvY2F0aW9uXzEuYwppbmRleCBmYjg2MDg5Li40MGRmYzBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0J1ZmZlck1hbmFnZW1lbnQvQnVmZmVyQWxsb2NhdGlvbl8xLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMi5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQnVmZmVyTWFuYWdlbWVudC9CdWZmZXJBbGxvY2F0aW9uXzIuYwppbmRleCBkZDQzODE4Li45NDIxZDA2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMi5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0J1ZmZlck1hbmFnZW1lbnQvQnVmZmVyQWxsb2NhdGlvbl8yLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3RfZW5kLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3RfZW5kLmgKaW5kZXggOWNlMzNmNC4uN2FjODM5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X2VuZC5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL0dDQy9wYWNrX3N0cnVjdF9lbmQuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X3N0YXJ0LmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3Rfc3RhcnQuaAppbmRleCBmOTMzNWNiLi44YzZlZmUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3Rfc3RhcnQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3Rfc3RhcnQuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvSUFSL3BhY2tfc3RydWN0X2VuZC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvSUFSL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IDRhNGE0ZWYuLmQ1MWVhOGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL0lBUi9wYWNrX3N0cnVjdF9lbmQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9JQVIvcGFja19zdHJ1Y3RfZW5kLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL0lBUi9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvSUFSL3BhY2tfc3RydWN0X3N0YXJ0LmgKaW5kZXggYWY3OWY1Mi4uZWU4M2I3ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvSUFSL3BhY2tfc3RydWN0X3N0YXJ0LmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvSUFSL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3RfZW5kLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9NU1ZDL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IDVjMzA5MjAuLjA0MTMwMzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3RfZW5kLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9lbmQuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9zdGFydC5oCmluZGV4IGJjYTI2ZTcuLjU3MjRjNDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3Rfc3RhcnQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9NU1ZDL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3RfZW5kLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9SZW5lc2FzL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IGRhNjdiYTcuLjNhMmY2MDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3RfZW5kLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9lbmQuaApAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9zdGFydC5oCmluZGV4IDMxNjc1YTguLjU3NWJhYmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3Rfc3RhcnQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9Db21waWxlci9SZW5lc2FzL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvQVRTQU00RS9OZXR3b3JrSW50ZXJmYWNlLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0FUU0FNNEUvTmV0d29ya0ludGVyZmFjZS5jCmluZGV4IDdhMGRhNTcuLjg4ZDM2YTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvQVRTQU00RS9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9BVFNBTTRFL05ldHdvcmtJbnRlcmZhY2UuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxN3h4L05ldHdvcmtJbnRlcmZhY2UuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvTFBDMTd4eC9OZXR3b3JrSW50ZXJmYWNlLmMKaW5kZXggNjZkNDI4Mi4uNmFjZDVhYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxN3h4L05ldHdvcmtJbnRlcmZhY2UuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE3eHgvTmV0d29ya0ludGVyZmFjZS5jCkBAIC0xLDUyICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE1MDQwNiAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBUaGlzIHByb2R1Y3QgaXMgZnVuY3Rpb25hbCBhbmQgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGluIGNvbW1lcmNpYWwgICAgKioqDQotICoqKiAgIHByb2R1Y3RzLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgZGVzaWduLCAgICAqKioNCi0gKioqICAgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBmdWxseSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgY29kaW5nIGFuZCAgICoqKg0KLSAqKiogICBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgdGhlICAgICAgICAgKioqDQotICoqKiAgIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogV2hpbGUgRnJlZVJUT1MrVENQIGlzIGluIHRoZSBsYWIgaXQgaXMgcHJvdmlkZWQgb25seSB1bmRlciB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSAod2hpY2ggaXMgZGlmZmVyZW50IHRvIHRoZSBzdGFuZGFyZCBGcmVlUlRPUw0KLSAqIGxpY2Vuc2UpLiAgRnJlZVJUT1MrVENQIGlzIGZyZWUgdG8gZG93bmxvYWQsIHVzZSBhbmQgZGlzdHJpYnV0ZSB1bmRlciB0aGUNCi0gKiB0ZXJtcyBvZiB0aGF0IGxpY2Vuc2UgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgdGV4dCBhcmUgbm90DQotICogYWx0ZXJlZCBvciByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSBmaWxlcy4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24NCi0gKiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0LiAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYW5kDQotICogc29sZWx5IGF0IHRoZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucw0KLSAqIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGVuIHRoZSBHUEwuDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L05ldHdvcmtJbnRlcmZhY2UuYwppbmRleCAwZjEwMTlhLi44NjNjYTc4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvTmV0d29ya0ludGVyZmFjZS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvTFBDMTh4eC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU0gyQS9OZXR3b3JrSW50ZXJmYWNlLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1NIMkEvTmV0d29ya0ludGVyZmFjZS5jCmluZGV4IDdjNzE1YTQuLmU1M2RmM2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU0gyQS9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TSDJBL05ldHdvcmtJbnRlcmZhY2UuYwpAQCAtMSw1MiArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNTA0MDYgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgVGhpcyBwcm9kdWN0IGlzIGZ1bmN0aW9uYWwgYW5kIGlzIGFscmVhZHkgYmVpbmcgdXNlZCBpbiBjb21tZXJjaWFsICAgICoqKg0KLSAqKiogICBwcm9kdWN0cy4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzIGRlc2lnbiwgICAgKioqDQotICoqKiAgIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgZnVsbHkgY29uZm9ybSB0byB0aGUgc3RyaWN0IGNvZGluZyBhbmQgICAqKioNCi0gKioqICAgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kIHRoZSAgICAgICAgICoqKg0KLSAqKiogICBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIFdoaWxlIEZyZWVSVE9TK1RDUCBpcyBpbiB0aGUgbGFiIGl0IGlzIHByb3ZpZGVkIG9ubHkgdW5kZXIgdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgKHdoaWNoIGlzIGRpZmZlcmVudCB0byB0aGUgc3RhbmRhcmQgRnJlZVJUT1MNCi0gKiBsaWNlbnNlKS4gIEZyZWVSVE9TK1RDUCBpcyBmcmVlIHRvIGRvd25sb2FkLCB1c2UgYW5kIGRpc3RyaWJ1dGUgdW5kZXIgdGhlDQotICogdGVybXMgb2YgdGhhdCBsaWNlbnNlIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHRleHQgYXJlIG5vdA0KLSAqIGFsdGVyZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2UgZmlsZXMuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uDQotICogdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUgZm9sbG93aW5nDQotICogVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4gIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGFuZA0KLSAqIHNvbGVseSBhdCB0aGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMNCi0gKiB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhlbiB0aGUgR1BMLg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TVE0zMkY3eHgvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TVE0zMkY3eHgvTmV0d29ya0ludGVyZmFjZS5jCmluZGV4IDUzYTFlOTMuLjhiY2Y5YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU1RNMzJGN3h4L05ldHdvcmtJbnRlcmZhY2UuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1NUTTMyRjd4eC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTQsNjAgKzQsMzEgQEAKICAqLw0KIA0KIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU1RNMzJGeHgvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TVE0zMkZ4eC9OZXR3b3JrSW50ZXJmYWNlLmMKaW5kZXggOWQ3YTdlZS4uYTFhZTBiZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TVE0zMkZ4eC9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TVE0zMkZ4eC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTQsNjAgKzQsMzEgQEAKICAqLw0KIA0KIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvV2luUENhcC9OZXR3b3JrSW50ZXJmYWNlLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1dpblBDYXAvTmV0d29ya0ludGVyZmFjZS5jCmluZGV4IDFkOTJhZGUuLjBjNWM5ZGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvV2luUENhcC9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9XaW5QQ2FwL05ldHdvcmtJbnRlcmZhY2UuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogV2luUENhcCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1p5bnEvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9aeW5xL05ldHdvcmtJbnRlcmZhY2UuYwppbmRleCA2Y2JkYTI3Li44MTQ1OWI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1p5bnEvTmV0d29ya0ludGVyZmFjZS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvWnlucS9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMjAwNDE3IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvWnlucS94X2VtYWNwc2lmX2RtYS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9aeW5xL3hfZW1hY3BzaWZfZG1hLmMKaW5kZXggN2E4ZjIwNC4uMTc4YWU3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9aeW5xL3hfZW1hY3BzaWZfZG1hLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9aeW5xL3hfZW1hY3BzaWZfZG1hLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMjAwNDE3IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpbmNsdWRlICJaeW5xL3hfZW1hY3BzaWYuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL2tzejg4NTFzbmwvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9rc3o4ODUxc25sL05ldHdvcmtJbnRlcmZhY2UuYwppbmRleCA1ZWQ3YWU4Li42MTY1MTEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL2tzejg4NTFzbmwvTmV0d29ya0ludGVyZmFjZS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2Uva3N6ODg1MXNubC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9Db21tb24vRnJlZVJUT1NfVENQX3NlcnZlci5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0NvbW1vbi9GcmVlUlRPU19UQ1Bfc2VydmVyLmMKaW5kZXggYTcyOWU0Mi4uZjU2YjcyMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0NvbW1vbi9GcmVlUlRPU19UQ1Bfc2VydmVyLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0NvbW1vbi9GcmVlUlRPU19UQ1Bfc2VydmVyLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9GVFAvRnJlZVJUT1NfRlRQX2NvbW1hbmRzLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvRlRQL0ZyZWVSVE9TX0ZUUF9jb21tYW5kcy5jCmluZGV4IDdlNDllODMuLmEyYTMxZjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9GVFAvRnJlZVJUT1NfRlRQX2NvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0ZUUC9GcmVlUlRPU19GVFBfY29tbWFuZHMuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0ZUUC9GcmVlUlRPU19GVFBfc2VydmVyLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvRlRQL0ZyZWVSVE9TX0ZUUF9zZXJ2ZXIuYwppbmRleCAyZTc1YTYzLi4zYzRlZGU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvRlRQL0ZyZWVSVE9TX0ZUUF9zZXJ2ZXIuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvRlRQL0ZyZWVSVE9TX0ZUUF9zZXJ2ZXIuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0hUVFAvRnJlZVJUT1NfSFRUUF9jb21tYW5kcy5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0hUVFAvRnJlZVJUT1NfSFRUUF9jb21tYW5kcy5jCmluZGV4IGNiOTQ2MmMuLjI1YjU0ZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9IVFRQL0ZyZWVSVE9TX0hUVFBfY29tbWFuZHMuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvSFRUUC9GcmVlUlRPU19IVFRQX2NvbW1hbmRzLmMKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9IVFRQL0ZyZWVSVE9TX0hUVFBfc2VydmVyLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvSFRUUC9GcmVlUlRPU19IVFRQX3NlcnZlci5jCmluZGV4IDAxNzJhMjIuLjkwZDRkOTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9IVFRQL0ZyZWVSVE9TX0hUVFBfc2VydmVyLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL0hUVFAvRnJlZVJUT1NfSFRUUF9zZXJ2ZXIuYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL05UUC9OVFBEZW1vLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvTlRQL05UUERlbW8uYwppbmRleCBmYjM4NjFmLi43NTcyZjFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvTlRQL05UUERlbW8uYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvTlRQL05UUERlbW8uYwpAQCAtMSw1OCArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytUQ1AgTGFicyBCdWlsZCAxNjA5MTkgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQXV0aG9ycyBpbmNsdWRlIEhlaW4gVGlib3NjaCBhbmQgUmljaGFyZCBCYXJyeQ0KKyAqIEZyZWVSVE9TK1RDUCBWMi4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGUkVFUlRPUytUQ1AgSVMgU1RJTEwgSU4gVEhFIExBQiAobWFpbmx5IGJlY2F1c2UgdGhlIEZUUCBhbmQgSFRUUCAgICAgKioqDQotICoqKiAgIGRlbW9zIGhhdmUgYSBkZXBlbmRlbmN5IG9uIEZyZWVSVE9TK0ZBVCwgd2hpY2ggaXMgb25seSBpbiB0aGUgTGFicyAgICAqKioNCi0gKioqICAgZG93bmxvYWQpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZyZWVSVE9TK1RDUCBpcyBmdW5jdGlvbmFsIGFuZCBoYXMgYmVlbiB1c2VkIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMgICAqKioNCi0gKioqICAgZm9yIHNvbWUgdGltZS4gIEJlIGF3YXJlIGhvd2V2ZXIgdGhhdCB3ZSBhcmUgc3RpbGwgcmVmaW5pbmcgaXRzICAgICAgICoqKg0KLSAqKiogICBkZXNpZ24sIHRoZSBzb3VyY2UgY29kZSBkb2VzIG5vdCB5ZXQgcXVpdGUgY29uZm9ybSB0byB0aGUgc3RyaWN0ICAgICAgKioqDQotICoqKiAgIGNvZGluZyBhbmQgc3R5bGUgc3RhbmRhcmRzIG1hbmRhdGVkIGJ5IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiwgYW5kICAqKioNCi0gKioqICAgdGhlIGRvY3VtZW50YXRpb24gYW5kIHRlc3RpbmcgaXMgbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlLiAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIFBMRUFTRSBSRVBPUlQgRVhQRVJJRU5DRVMgVVNJTkcgVEhFIFNVUFBPUlQgUkVTT1VSQ0VTIEZPVU5EIE9OIFRIRSAgICAqKioNCi0gKioqICAgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jb250YWN0ICBBY3RpdmUgZWFybHkgYWRvcHRlcnMgbWF5LCBhdCAgICoqKg0KLSAqKiogICB0aGUgc29sZSBkaXNjcmV0aW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgYmUgb2ZmZXJlZCB2ZXJzaW9ucyAgKioqDQotICoqKiAgIHVuZGVyIGEgbGljZW5zZSBvdGhlciB0aGFuIHRoYXQgZGVzY3JpYmVkIGJlbG93LiAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1RDUCBjYW4gYmUgdXNlZCB1bmRlciB0d28gZGlmZmVyZW50IGZyZWUgb3BlbiBzb3VyY2UgbGljZW5zZXMuICBUaGUNCi0gKiBsaWNlbnNlIHRoYXQgYXBwbGllcyBpcyBkZXBlbmRlbnQgb24gdGhlIHByb2Nlc3NvciBvbiB3aGljaCBGcmVlUlRPUytUQ1AgaXMNCi0gKiBleGVjdXRlZCwgYXMgZm9sbG93czoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIElmIEZyZWVSVE9TK1RDUCBpcyBleGVjdXRlZCBvbiBvbmUgb2YgdGhlIHByb2Nlc3NvcnMgbGlzdGVkIHVuZGVyIHRoZSBTcGVjaWFsDQotICogTGljZW5zZSBBcnJhbmdlbWVudHMgaGVhZGluZyBvZiB0aGUgRnJlZVJUT1MrVENQIGxpY2Vuc2UgaW5mb3JtYXRpb24gd2ViDQotICogcGFnZSwgdGhlbiBpdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVSVE9TIE9wZW4gU291cmNlDQotICogTGljZW5zZS4gIElmIEZyZWVSVE9TK1RDUCBpcyB1c2VkIG9uIGFueSBvdGhlciBwcm9jZXNzb3IsIHRoZW4gaXQgY2FuIGJlIHVzZWQNCi0gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFYyLiAgTGlua3MgdG8gdGhlIHJlbGV2YW50DQotICogbGljZW5zZXMgZm9sbG93Og0KLSAqDQotICogVGhlIEZyZWVSVE9TK1RDUCBMaWNlbnNlIEluZm9ybWF0aW9uIFBhZ2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RjcF9saWNlbnNlDQotICogVGhlIEZyZWVSVE9TIE9wZW4gU291cmNlIExpY2Vuc2U6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xpY2Vuc2UNCi0gKiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogRnJlZVJUT1MrVENQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1RDUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytUQ1AgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvaW5jbHVkZS9GcmVlUlRPU19GVFBfY29tbWFuZHMuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX0ZUUF9jb21tYW5kcy5oCmluZGV4IGYxMTY3NWYuLmJhZjBjNzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX0ZUUF9jb21tYW5kcy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX0ZUUF9jb21tYW5kcy5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmCV9fRlRQQ01EX0hfXw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX0hUVFBfY29tbWFuZHMuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX0hUVFBfY29tbWFuZHMuaAppbmRleCBlOGY2NTY3Li5lMTgwNzRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvaW5jbHVkZS9GcmVlUlRPU19IVFRQX2NvbW1hbmRzLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL2luY2x1ZGUvRnJlZVJUT1NfSFRUUF9jb21tYW5kcy5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiAjaWZuZGVmIEZSRUVSVE9TX0hUVFBfQ09NTUFORFNfSA0KICNkZWZpbmUJRlJFRVJUT1NfSFRUUF9DT01NQU5EU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL2luY2x1ZGUvRnJlZVJUT1NfVENQX3NlcnZlci5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL2luY2x1ZGUvRnJlZVJUT1NfVENQX3NlcnZlci5oCmluZGV4IDEzYTdmNzUuLmQ2MDMwYjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX1RDUF9zZXJ2ZXIuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvaW5jbHVkZS9GcmVlUlRPU19UQ1Bfc2VydmVyLmgKQEAgLTEsNTggKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVENQIExhYnMgQnVpbGQgMTYwOTE5IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEF1dGhvcnMgaW5jbHVkZSBIZWluIFRpYm9zY2ggYW5kIFJpY2hhcmQgQmFycnkNCisgKiBGcmVlUlRPUytUQ1AgVjIuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRlJFRVJUT1MrVENQIElTIFNUSUxMIElOIFRIRSBMQUIgKG1haW5seSBiZWNhdXNlIHRoZSBGVFAgYW5kIEhUVFAgICAgICoqKg0KLSAqKiogICBkZW1vcyBoYXZlIGEgZGVwZW5kZW5jeSBvbiBGcmVlUlRPUytGQVQsIHdoaWNoIGlzIG9ubHkgaW4gdGhlIExhYnMgICAgKioqDQotICoqKiAgIGRvd25sb2FkKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBGcmVlUlRPUytUQ1AgaXMgZnVuY3Rpb25hbCBhbmQgaGFzIGJlZW4gdXNlZCBpbiBjb21tZXJjaWFsIHByb2R1Y3RzICAgKioqDQotICoqKiAgIGZvciBzb21lIHRpbWUuICBCZSBhd2FyZSBob3dldmVyIHRoYXQgd2UgYXJlIHN0aWxsIHJlZmluaW5nIGl0cyAgICAgICAqKioNCi0gKioqICAgZGVzaWduLCB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgeWV0IHF1aXRlIGNvbmZvcm0gdG8gdGhlIHN0cmljdCAgICAgICoqKg0KLSAqKiogICBjb2RpbmcgYW5kIHN0eWxlIHN0YW5kYXJkcyBtYW5kYXRlZCBieSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4sIGFuZCAgKioqDQotICoqKiAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0aW5nIGlzIG5vdCBuZWNlc3NhcmlseSBjb21wbGV0ZS4gICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICBQTEVBU0UgUkVQT1JUIEVYUEVSSUVOQ0VTIFVTSU5HIFRIRSBTVVBQT1JUIFJFU09VUkNFUyBGT1VORCBPTiBUSEUgICAgKioqDQotICoqKiAgIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY29udGFjdCAgQWN0aXZlIGVhcmx5IGFkb3B0ZXJzIG1heSwgYXQgICAqKioNCi0gKioqICAgdGhlIHNvbGUgZGlzY3JldGlvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGJlIG9mZmVyZWQgdmVyc2lvbnMgICoqKg0KLSAqKiogICB1bmRlciBhIGxpY2Vuc2Ugb3RoZXIgdGhhbiB0aGF0IGRlc2NyaWJlZCBiZWxvdy4gICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytUQ1AgY2FuIGJlIHVzZWQgdW5kZXIgdHdvIGRpZmZlcmVudCBmcmVlIG9wZW4gc291cmNlIGxpY2Vuc2VzLiAgVGhlDQotICogbGljZW5zZSB0aGF0IGFwcGxpZXMgaXMgZGVwZW5kZW50IG9uIHRoZSBwcm9jZXNzb3Igb24gd2hpY2ggRnJlZVJUT1MrVENQIGlzDQotICogZXhlY3V0ZWQsIGFzIGZvbGxvd3M6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiBJZiBGcmVlUlRPUytUQ1AgaXMgZXhlY3V0ZWQgb24gb25lIG9mIHRoZSBwcm9jZXNzb3JzIGxpc3RlZCB1bmRlciB0aGUgU3BlY2lhbA0KLSAqIExpY2Vuc2UgQXJyYW5nZW1lbnRzIGhlYWRpbmcgb2YgdGhlIEZyZWVSVE9TK1RDUCBsaWNlbnNlIGluZm9ybWF0aW9uIHdlYg0KLSAqIHBhZ2UsIHRoZW4gaXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZQ0KLSAqIExpY2Vuc2UuICBJZiBGcmVlUlRPUytUQ1AgaXMgdXNlZCBvbiBhbnkgb3RoZXIgcHJvY2Vzc29yLCB0aGVuIGl0IGNhbiBiZSB1c2VkDQotICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMi4gIExpbmtzIHRvIHRoZSByZWxldmFudA0KLSAqIGxpY2Vuc2VzIGZvbGxvdzoNCi0gKg0KLSAqIFRoZSBGcmVlUlRPUytUQ1AgTGljZW5zZSBJbmZvcm1hdGlvbiBQYWdlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90Y3BfbGljZW5zZQ0KLSAqIFRoZSBGcmVlUlRPUyBPcGVuIFNvdXJjZSBMaWNlbnNlOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9saWNlbnNlDQotICogVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMjogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytUQ1AgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVENQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL2luY2x1ZGUvRnJlZVJUT1Nfc2VydmVyX3ByaXZhdGUuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVENQL3Byb3RvY29scy9pbmNsdWRlL0ZyZWVSVE9TX3NlcnZlcl9wcml2YXRlLmgKaW5kZXggMzU1YWRlZC4uNTI4MzQ1MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1UQ1AvcHJvdG9jb2xzL2luY2x1ZGUvRnJlZVJUT1Nfc2VydmVyX3ByaXZhdGUuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVRDUC9wcm90b2NvbHMvaW5jbHVkZS9GcmVlUlRPU19zZXJ2ZXJfcHJpdmF0ZS5oCkBAIC0xLDU4ICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1RDUCBMYWJzIEJ1aWxkIDE2MDkxOSAoQykgMjAxNiBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBdXRob3JzIGluY2x1ZGUgSGVpbiBUaWJvc2NoIGFuZCBSaWNoYXJkIEJhcnJ5DQorICogRnJlZVJUT1MrVENQIFYyLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioNCi0gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgIEZSRUVSVE9TK1RDUCBJUyBTVElMTCBJTiBUSEUgTEFCIChtYWlubHkgYmVjYXVzZSB0aGUgRlRQIGFuZCBIVFRQICAgICAqKioNCi0gKioqICAgZGVtb3MgaGF2ZSBhIGRlcGVuZGVuY3kgb24gRnJlZVJUT1MrRkFULCB3aGljaCBpcyBvbmx5IGluIHRoZSBMYWJzICAgICoqKg0KLSAqKiogICBkb3dubG9hZCk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgRnJlZVJUT1MrVENQIGlzIGZ1bmN0aW9uYWwgYW5kIGhhcyBiZWVuIHVzZWQgaW4gY29tbWVyY2lhbCBwcm9kdWN0cyAgICoqKg0KLSAqKiogICBmb3Igc29tZSB0aW1lLiAgQmUgYXdhcmUgaG93ZXZlciB0aGF0IHdlIGFyZSBzdGlsbCByZWZpbmluZyBpdHMgICAgICAgKioqDQotICoqKiAgIGRlc2lnbiwgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IHlldCBxdWl0ZSBjb25mb3JtIHRvIHRoZSBzdHJpY3QgICAgICAqKioNCi0gKioqICAgY29kaW5nIGFuZCBzdHlsZSBzdGFuZGFyZHMgbWFuZGF0ZWQgYnkgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuLCBhbmQgICoqKg0KLSAqKiogICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdGluZyBpcyBub3QgbmVjZXNzYXJpbHkgY29tcGxldGUuICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqICAgUExFQVNFIFJFUE9SVCBFWFBFUklFTkNFUyBVU0lORyBUSEUgU1VQUE9SVCBSRVNPVVJDRVMgRk9VTkQgT04gVEhFICAgICoqKg0KLSAqKiogICBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NvbnRhY3QgIEFjdGl2ZSBlYXJseSBhZG9wdGVycyBtYXksIGF0ICAgKioqDQotICoqKiAgIHRoZSBzb2xlIGRpc2NyZXRpb24gb2YgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBiZSBvZmZlcmVkIHZlcnNpb25zICAqKioNCi0gKioqICAgdW5kZXIgYSBsaWNlbnNlIG90aGVyIHRoYW4gdGhhdCBkZXNjcmliZWQgYmVsb3cuICAgICAgICAgICAgICAgICAgICAgICoqKg0KLSAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqDQotICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioNCi0gKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKioqKiogTk9URSAqKioqKioqIE5PVEUgKioqKioqKiBOT1RFICoqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVENQIGNhbiBiZSB1c2VkIHVuZGVyIHR3byBkaWZmZXJlbnQgZnJlZSBvcGVuIHNvdXJjZSBsaWNlbnNlcy4gIFRoZQ0KLSAqIGxpY2Vuc2UgdGhhdCBhcHBsaWVzIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJvY2Vzc29yIG9uIHdoaWNoIEZyZWVSVE9TK1RDUCBpcw0KLSAqIGV4ZWN1dGVkLCBhcyBmb2xsb3dzOg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogSWYgRnJlZVJUT1MrVENQIGlzIGV4ZWN1dGVkIG9uIG9uZSBvZiB0aGUgcHJvY2Vzc29ycyBsaXN0ZWQgdW5kZXIgdGhlIFNwZWNpYWwNCi0gKiBMaWNlbnNlIEFycmFuZ2VtZW50cyBoZWFkaW5nIG9mIHRoZSBGcmVlUlRPUytUQ1AgbGljZW5zZSBpbmZvcm1hdGlvbiB3ZWINCi0gKiBwYWdlLCB0aGVuIGl0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UNCi0gKiBMaWNlbnNlLiAgSWYgRnJlZVJUT1MrVENQIGlzIHVzZWQgb24gYW55IG90aGVyIHByb2Nlc3NvciwgdGhlbiBpdCBjYW4gYmUgdXNlZA0KLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIuICBMaW5rcyB0byB0aGUgcmVsZXZhbnQNCi0gKiBsaWNlbnNlcyBmb2xsb3c6DQotICoNCi0gKiBUaGUgRnJlZVJUT1MrVENQIExpY2Vuc2UgSW5mb3JtYXRpb24gUGFnZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdGNwX2xpY2Vuc2UNCi0gKiBUaGUgRnJlZVJUT1MgT3BlbiBTb3VyY2UgTGljZW5zZTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGljZW5zZQ0KLSAqIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDI6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiBGcmVlUlRPUytUQ1AgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVENQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1RDUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAgLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19ESENQLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19ESENQLmMKaW5kZXggMDY4NDI1My4uZDMyNjQ2MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfREhDUC5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL0ZyZWVSVE9TX0RIQ1AuYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkNCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfRE5TLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19ETlMuYwppbmRleCAyMTU1YmMxLi4xZTBmMzNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19ETlMuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19ETlMuYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkNCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfU29ja2V0cy5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfU29ja2V0cy5jCmluZGV4IDFiOTQyZmQuLmJmMzQ4NzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL0ZyZWVSVE9TX1NvY2tldHMuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9GcmVlUlRPU19Tb2NrZXRzLmMKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL0ZyZWVSVE9TX1VEUF9JUC5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfVURQX0lQLmMKaW5kZXggYTRkMjA0Yi4uODA0Y2JiOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfVURQX0lQLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvRnJlZVJUT1NfVURQX0lQLmMKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NJUENvbmZpZ0RlZmF1bHRzLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TSVBDb25maWdEZWZhdWx0cy5oCmluZGV4IDAxMGMzMGQuLjIwZDE3MTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NJUENvbmZpZ0RlZmF1bHRzLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU0lQQ29uZmlnRGVmYXVsdHMuaApAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkNCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19ERUZBVUxUX0lQX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19ESENQLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0RIQ1AuaAppbmRleCA5MzBlZjQ5Li4yMzZjYWI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0RIQ1AuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0RIQ1AuaApAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19ESENQX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0ROUy5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19ETlMuaAppbmRleCA1ZTYxZDNmLi43MmFiYzQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0ROUy5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfRE5TLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfRE5TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX0lQX1ByaXZhdGUuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfSVBfUHJpdmF0ZS5oCmluZGV4IGQyYzU1M2IuLmZlOTIxMWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfSVBfUHJpdmF0ZS5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfSVBfUHJpdmF0ZS5oCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkgDQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHAgDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0lQX1BSSVZBVEVfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfU29ja2V0cy5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19Tb2NrZXRzLmgKaW5kZXggMmRkMTM4Yi4uNzIwZGZjZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19Tb2NrZXRzLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19Tb2NrZXRzLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfVURQX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX1VEUF9JUC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9GcmVlUlRPU19VRFBfSVAuaAppbmRleCAzMTFlNDVjLi45MDFlODY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0ZyZWVSVE9TX1VEUF9JUC5oCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvRnJlZVJUT1NfVURQX0lQLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfSVBfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvSVBUcmFjZU1hY3JvRGVmYXVsdHMuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvSVBUcmFjZU1hY3JvRGVmYXVsdHMuaAppbmRleCA0ZjBiNTQwLi4wNjA0Nzg1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL0lQVHJhY2VNYWNyb0RlZmF1bHRzLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9JUFRyYWNlTWFjcm9EZWZhdWx0cy5oCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkgDQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHAgDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBUaGlzIGZpbGUgcHJvdmlkZXMgZGVmYXVsdCAoZW1wdHkpIGltcGxlbWVudGF0aW9ucyBmb3IgYW55IElQIHRyYWNlIG1hY3Jvcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvTmV0d29ya0J1ZmZlck1hbmFnZW1lbnQuaCBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvTmV0d29ya0J1ZmZlck1hbmFnZW1lbnQuaAppbmRleCA1ZDhlZmMwLi42MGMwYmUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9pbmNsdWRlL05ldHdvcmtCdWZmZXJNYW5hZ2VtZW50LmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9OZXR3b3JrQnVmZmVyTWFuYWdlbWVudC5oCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkgDQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHAgDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAjaWZuZGVmIE5FVFdPUktfQlVGRkVSX01BTkFHRU1FTlRfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL2luY2x1ZGUvTmV0d29ya0ludGVyZmFjZS5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9OZXR3b3JrSW50ZXJmYWNlLmgKaW5kZXggN2FhMzg0OS4uOTA5YjZiZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9OZXR3b3JrSW50ZXJmYWNlLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvaW5jbHVkZS9OZXR3b3JrSW50ZXJmYWNlLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgTkVUV09SS19JTlRFUkZBQ0VfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0J1ZmZlck1hbmFnZW1lbnQvQnVmZmVyQWxsb2NhdGlvbl8xLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMS5jCmluZGV4IDJmMmE5YjUuLjhlZDVmZWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0J1ZmZlck1hbmFnZW1lbnQvQnVmZmVyQWxsb2NhdGlvbl8xLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQnVmZmVyTWFuYWdlbWVudC9CdWZmZXJBbGxvY2F0aW9uXzEuYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQnVmZmVyTWFuYWdlbWVudC9CdWZmZXJBbGxvY2F0aW9uXzIuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0J1ZmZlck1hbmFnZW1lbnQvQnVmZmVyQWxsb2NhdGlvbl8yLmMKaW5kZXggZGFkZmQ5Yy4uYTRiODI5YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQnVmZmVyTWFuYWdlbWVudC9CdWZmZXJBbGxvY2F0aW9uXzIuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9CdWZmZXJNYW5hZ2VtZW50L0J1ZmZlckFsbG9jYXRpb25fMi5jCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQgDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUgDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MgDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoIA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLiAgDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlIA0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkgDQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHAgDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X2VuZC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IDJjZTE2MmUuLjU3ODMyODAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL0dDQy9wYWNrX3N0cnVjdF9lbmQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9Db21waWxlci9HQ0MvcGFja19zdHJ1Y3RfZW5kLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL0dDQy9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X3N0YXJ0LmgKaW5kZXggYTgwOWJhMi4uYTRhNmI3ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X3N0YXJ0LmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvR0NDL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3RfZW5kLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9Db21waWxlci9NU1ZDL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IDVjZGQ5OWIuLmNlYmVhYjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3RfZW5kLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9lbmQuaApAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvTVNWQy9wYWNrX3N0cnVjdF9zdGFydC5oCmluZGV4IGMxMWU1MGMuLjVkZDM4OTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL01TVkMvcGFja19zdHJ1Y3Rfc3RhcnQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9Db21waWxlci9NU1ZDL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3RfZW5kLmggYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9Db21waWxlci9SZW5lc2FzL3BhY2tfc3RydWN0X2VuZC5oCmluZGV4IDEwNGYyMDYuLjQ1YmYyM2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3RfZW5kLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9lbmQuaApAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9zdGFydC5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvQ29tcGlsZXIvUmVuZXNhcy9wYWNrX3N0cnVjdF9zdGFydC5oCmluZGV4IDQzOTBjMDcuLmYyNDE5MWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL0NvbXBpbGVyL1JlbmVzYXMvcGFja19zdHJ1Y3Rfc3RhcnQuaAorKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9Db21waWxlci9SZW5lc2FzL3BhY2tfc3RydWN0X3N0YXJ0LmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZCANCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZSANCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUyANCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuICANCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUgDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueSANCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcCANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvTFBDMTd4eC9OZXR3b3JrSW50ZXJmYWNlLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE3eHgvTmV0d29ya0ludGVyZmFjZS5jCmluZGV4IGY2NjcwMTYuLjI5MGI5ZjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvTFBDMTd4eC9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxN3h4L05ldHdvcmtJbnRlcmZhY2UuYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L1VzaW5nX0xQQ09wZW5fTGlicmFyeS9OZXR3b3JrSW50ZXJmYWNlLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L05ldHdvcmtJbnRlcmZhY2UuYwppbmRleCAwODEyNTU3Li5iNTllZGEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L05ldHdvcmtJbnRlcmZhY2UuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L05ldHdvcmtJbnRlcmZhY2UuYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkDQotICogdW5kZXIgYSBzdGFuZGFyZCBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBUaGUNCi0gKiBzdGFuZGFyZCBHUEwgbGljZW5zZSAodW5saWtlIHRoZSBtb2RpZmllZCBHUEwgbGljZW5zZSB1bmRlciB3aGljaCBGcmVlUlRPUw0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aA0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhbHNvIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIEdQTCBWMiBsaWNlbnNlIHRlcm1zLg0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkNCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L1VzaW5nX0xQQ09wZW5fTGlicmFyeS9scGMxOHh4XzQzeHhfRU1BQ19MUENPcGVuLmMgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L2xwYzE4eHhfNDN4eF9FTUFDX0xQQ09wZW4uYwppbmRleCAzMzJmM2JkLi5lNzQyNDBlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L2xwYzE4eHhfNDN4eF9FTUFDX0xQQ09wZW4uYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL0xQQzE4eHgvVXNpbmdfTFBDT3Blbl9MaWJyYXJ5L2xwYzE4eHhfNDN4eF9FTUFDX0xQQ09wZW4uYwpAQCAtMSw0MyArMSwyOSBAQAogLyoNCi0gKiBGcmVlUlRPUytVRFAgVjEuMC40IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLg0KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQNCisgKiBGcmVlUlRPUytVRFAgVjEuMC40DQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICAqDQotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TK1VEUCBkaXN0cmlidXRpb24uICBUaGUgRnJlZVJUT1MrVURQIGxpY2Vuc2UNCi0gKiB0ZXJtcyBhcmUgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlIHRlcm1zLg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCiAgKg0KLSAqIEZyZWVSVE9TK1VEUCB1c2VzIGEgZHVhbCBsaWNlbnNlIG1vZGVsIHRoYXQgYWxsb3dzIHRoZSBzb2Z0d2FyZSB0byBiZSB1c2VkIA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlIA0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TIA0KLSAqIGl0c2VsZiBpcyBkaXN0cmlidXRlZCkgcmVxdWlyZXMgdGhhdCBhbGwgc29mdHdhcmUgc3RhdGljYWxseSBsaW5rZWQgd2l0aCANCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4gIA0KLSAqIERldGFpbHMgb2YgYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZSANCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55IA0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwIA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvTFBDMTh4eC9Vc2luZ19MUENPcGVuX0xpYnJhcnkvbHBjMTh4eF80M3h4X0VNQUNfTFBDT3Blbi5oIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L1VzaW5nX0xQQ09wZW5fTGlicmFyeS9scGMxOHh4XzQzeHhfRU1BQ19MUENPcGVuLmgKaW5kZXggM2FjZjMwZS4uYjNlOTVjMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L1VzaW5nX0xQQ09wZW5fTGlicmFyeS9scGMxOHh4XzQzeHhfRU1BQ19MUENPcGVuLmgKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9MUEMxOHh4L1VzaW5nX0xQQ09wZW5fTGlicmFyeS9scGMxOHh4XzQzeHhfRU1BQ19MUENPcGVuLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KICNpZm5kZWYgTFBDMTh4eF80M3h4X0VNQUNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU0FNNEUvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TQU00RS9OZXR3b3JrSW50ZXJmYWNlLmMKaW5kZXggYzI1YzBjMy4uYmRjNzQ4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TQU00RS9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TQU00RS9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTEsNDEgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgcHVyZSBHUEwgb3BlbiBzb3VyY2UgbGljZW5zZSAoYXMgb3Bwb3NlZCB0byB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UNCi0gKiB1bmRlciB3aGljaCBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCkgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuICBEZXRhaWxzIG9mDQotICogYm90aCBsaWNlbnNlIG9wdGlvbnMgZm9sbG93Og0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KICAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK1VEUCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCwgZXZhbHVhdGVkIGFuZA0KLSAqIGRpc3RyaWJ1dGVkIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlDQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvcg0KLSAqIHRoaXMgdGV4dC4gIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUNCi0gKiBmb2xsb3dpbmcgVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dC4NCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHRoYXQgZm9yIGNvbW1lcmNpYWwgb3Igb3RoZXIgcmVhc29ucyBjYW5ub3QgY29tcGx5DQotICogd2l0aCB0aGUgdGVybXMgb2YgdGhlIEdQTCBWMiBsaWNlbnNlIG11c3Qgb2J0YWluIGEgY29tbWVyY2lhbCBsaWNlbnNlIGJlZm9yZQ0KLSAqIGluY29ycG9yYXRpbmcgRnJlZVJUT1MrVURQIGludG8gcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhbnkNCi0gKiBmb3JtLiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4gYmUgcHVyY2hhc2VkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnL3VkcA0KLSAqIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytVRFAgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdSBjYW5ub3QNCi0gKiB1c2UgRnJlZVJUT1MrVURQIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMgaXMnLg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkDQotICogd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQotICogUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGRpc2NsYWltcyBhbGwgY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkNCi0gKiBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogICoNCiAgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3VkcA0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KICAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TSDJBL05ldHdvcmtJbnRlcmZhY2UuYyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvU0gyQS9OZXR3b3JrSW50ZXJmYWNlLmMKaW5kZXggZDRlYmVlMi4uNGZjYjRjMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9TSDJBL05ldHdvcmtJbnRlcmZhY2UuYworKysgYi9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1NIMkEvTmV0d29ya0ludGVyZmFjZS5jCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueQ0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1dpblBDYXAvTmV0d29ya0ludGVyZmFjZS5jIGIvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1VRFAvcG9ydGFibGUvTmV0d29ya0ludGVyZmFjZS9XaW5QQ2FwL05ldHdvcmtJbnRlcmZhY2UuYwppbmRleCAxZDgyMzM2Li40NGY0MzIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLVVEUC9wb3J0YWJsZS9OZXR3b3JrSW50ZXJmYWNlL1dpblBDYXAvTmV0d29ya0ludGVyZmFjZS5jCisrKyBiL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtVURQL3BvcnRhYmxlL05ldHdvcmtJbnRlcmZhY2UvV2luUENhcC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qIFdpblBDYXAgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDRlMzM1YzQuLjI5MjdmNTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9NYWtlZmlsZSBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvTWFrZWZpbGUKaW5kZXggZjExODRjYi4uNTY0NGZhZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9NYWtlZmlsZQorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL01ha2VmaWxlCkBAIC0xLDU1ICsxLDMwIEBACiAjLyoNCi0jICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0jCQ0KLSMNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotIyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSMgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSMgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0jICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotIyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSMgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0jICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMNCi0jDQotIyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLSMNCi0jICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0jICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSMgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSMgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotIyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSMgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0jICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSMgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0jICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0jICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotIyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotIyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotIyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSMgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotIw0KLSMgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotIw0KLSMgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotIyAgICBjb250YWN0IGRldGFpbHMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0jICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSMgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0jKi8NCisjICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisjICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMgKg0KKyMgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorIyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorIyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisjICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisjICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyMgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisjICoNCisjICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorIyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorIyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisjICoNCisjICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisjICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisjICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorIyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyMgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyMgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyMgKg0KKyMgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyMgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisjICoNCisjICogMSB0YWIgPT0gNCBzcGFjZXMhDQorIyAqLw0KIA0KIENDPWFybS1lbGYtZ2NjDQogT0JKQ09QWT1hcm0tZWxmLW9iamNvcHkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA1YzMxYjE1Li42YTE5MGE4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvbWFpbi5jCmluZGV4IDA4ZDlhMDMuLjIwYzg0MGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZGMyZGY0MC4uOWM1NmQ1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVVNBUlQwLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCmluZGV4IGJlYTY3ZDcuLjIwNTBjZjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNzc1MGNjMS4uNDUwZDYwNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAwZTM2MWI0Li5mNzRhZDhmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJwYXJ0ZXN0LmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9VU0IvVVNCU2FtcGxlLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1VTQi9VU0JTYW1wbGUuYwppbmRleCA5M2M1YjM3Li43ZDU0OTYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1VTQi9VU0JTYW1wbGUuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1VTQi9VU0JTYW1wbGUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJU2FtcGxlIGludGVycnVwdCBkcml2ZW4gVVNCIGRldmljZSBkcml2ZXIuICBUaGlzIGlzIGEgbWluaW1hbCBpbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9tYWluLmMKaW5kZXggMTUyYTBhNS4uNzRmMjE2OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggNjIwNmQxNi4uNDVlYTY2ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMWZiMDAzNC4uY2RkOGEyYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL01ha2VmaWxlIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL01ha2VmaWxlCmluZGV4IGE2MTVjYzMuLmUyMzM5NjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9NYWtlZmlsZQorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvTWFrZWZpbGUKQEAgLTEsNTUgKzEsMzAgQEAKICMvKg0KLSMgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSMJDQotIw0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0jICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotIyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotIyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSMgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0jICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotIyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSMgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIw0KLSMNCi0jICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotIw0KLSMgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSMgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotIyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotIyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0jICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotIyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSMgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotIyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSMgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSMgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0jICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0jICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0jICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotIyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0jDQotIyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0jDQotIyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0jICAgIGNvbnRhY3QgZGV0YWlscy4NCi0jDQotIyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSMgICAgY3JpdGljYWwgc3lzdGVtcy4NCi0jDQotIyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotIyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSMqLw0KKyMgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyMgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIyAqDQorIyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisjICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisjICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyMgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyMgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorIyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyMgKg0KKyMgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisjICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisjICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyMgKg0KKyMgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyMgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyMgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisjICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorIyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorIyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorIyAqDQorIyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorIyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyMgKg0KKyMgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisjICovDQogDQogQ0M9YXJtLWVsZi1nY2MNCiBPQkpDT1BZPWFybS1lbGYtb2JqY29weQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBkYzYxM2VkLi5mNDIwMTViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjIuNS4yDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9tYWluLmMKaW5kZXggMTdhMjAyMS4uNDUxNzUyZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDYyMWYyNjAuLmU4ZDk5MTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYyLjQuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCmluZGV4IDZlODI5N2EuLjZkY2UwN2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCAyMjRlNWNmLi5jYWQwNTg0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMGZmOTk2ZC4uOGYxZDhiYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzIGZvciB0aGUgTEVEJ3MuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9tYWluLmMKaW5kZXggNWMyNzVjOS4uNWFiYmU5NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDM5NGFiMmYuLmJmYzE5NjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDE5ZjE5NzkuLjQ5M2MzMjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA2MTYwNjNiLi5mYmVlN2JmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL21haW4uYwppbmRleCA4ODhkZDc0Li5iM2NjNTZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDYyN2ZiOGMuLjdjY2Y4OGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL3NlcmlhbC9zZXJpYWxJU1IucyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsSVNSLnMKaW5kZXggNDQ4M2ZhMi4uYzgyM2IyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL3NlcmlhbC9zZXJpYWxJU1IucworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvc2VyaWFsL3NlcmlhbElTUi5zCkBAIC0xLDY0ICsxLDM5IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCi0JCQ0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQorDQogCUlOQ0xVREUgcG9ydG1hY3JvLmluYw0KLQkNCisNCiAJO1RoZSBVQVJUIGludGVycnVwdCBlbnRyeSBwb2ludCBpcyBkZWZpbmVkIHdpdGhpbiBhbiBhc3NlbWJseSB3cmFwcGVyDQogCTt3aXRoaW4gdGhpcyBmaWxlLiAgVGhpcyB0YWtlcyBjYXJlIG9mIHRoZSB0YXNrIGNvbnRleHQgc2F2aW5nIGJlZm9yZSBpdA0KIAk7Y2FsbHMgdGhlIG1haW4gaGFuZGxlciAodlVBUlRfSVNSSGFuZGxlcigpKSB3aGljaCBpcyB3cml0dGVuIGluIEMgd2l0aGluDQogCTtzZXJpYWwuYy4gIFRoZSBleGVjdXRpb24gb2YgdGhlIGhhbmRsZXIgY2FuIHVuYmxvY2sgdGFza3MgdGhhdCB3ZXJlIGJsb2NrZWQNCi0JO3dhaXRpbmcgZm9yIFVBUlQgZXZlbnRzLiAgT25jZSB0aGUgaGFuZGxlciBjb21wbGV0ZXMgdGhlIGFzbSB3cmFwcGVyIA0KLQk7ZmluaXNoZXMgb2ZmIGJ5CXJlc3RvcmluZyB0aGUgY29udGV4dCBvZiB3aGljaGV2ZXIgdGFzayBpcyBub3cgc2VsZWN0ZWQgdG8gDQorCTt3YWl0aW5nIGZvciBVQVJUIGV2ZW50cy4gIE9uY2UgdGhlIGhhbmRsZXIgY29tcGxldGVzIHRoZSBhc20gd3JhcHBlcg0KKwk7ZmluaXNoZXMgb2ZmIGJ5CXJlc3RvcmluZyB0aGUgY29udGV4dCBvZiB3aGljaGV2ZXIgdGFzayBpcyBub3cgc2VsZWN0ZWQgdG8NCiAJO2VudGVyIHRoZSBSVU5OSU5HIHN0YXRlICh3aGljaCBtaWdodCBub3cgYmUgYSBkaWZmZXJlbnQgdGFzayB0byB0aGF0IHdoaWNoDQogCTt3YXMgb3JpZ2luYWxseSBpbnRlcnJ1cHRlZC4NCiAJSU1QT1JUIHZVQVJUX0lTUkhhbmRsZXINCkBAIC03NCwxNCArNDksMTQgQEAKIAlQUkVTRVJWRTgNCiANCiAJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBpbnRlcnJ1cHRlZCB0YXNrLg0KLQlwb3J0U0FWRV9DT05URVhUCQkJDQorCXBvcnRTQVZFX0NPTlRFWFQNCiANCiAJOyBDYWxsIHRoZSBDIGhhbmRsZXIgZnVuY3Rpb24gLSBkZWZpbmVkIHdpdGhpbiBzZXJpYWwuYy4NCiAJTERSIFIwLCA9dlVBUlRfSVNSSGFuZGxlcg0KLQlNT1YgTFIsIFBDCQkJCQ0KKwlNT1YgTFIsIFBDDQogCUJYIFIwDQogDQotCTsgRmluaXNoIG9mZiBieSByZXN0b3JpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjaG9zZW4gdG8gDQorCTsgRmluaXNoIG9mZiBieSByZXN0b3JpbmcgdGhlIGNvbnRleHQgb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjaG9zZW4gdG8NCiAJOyBydW4gbmV4dCAtIHdoaWNoIG1pZ2h0IGJlIGEgZGlmZmVyZW50IHRhc2sgdG8gdGhhdCB3aGljaCB3YXMgb3JpZ2luYWxseQ0KIAk7IGludGVycnVwdGVkLg0KIAlwb3J0UkVTVE9SRV9DT05URVhUDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAppbmRleCAyNWNhY2Y4Li4yN2VjNDgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW4uYwppbmRleCBhZjExM2Q5Li42YTA2NmFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgZGVtbyBjcmVhdGVkIHRvIGV4ZWN1dGUgb24gdGhlIFJvd2xleSBBc3NvY2lhdGVzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW5JU1IuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9tYWluSVNSLmMKaW5kZXggNmU2ZDE5Mi4uNjNjYzBkNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW5JU1IuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvbWFpbklTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAic2VtcGhyLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDMxMWU2MWEuLjU4NzlmMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9NYWtlZmlsZSBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vTWFrZWZpbGUKaW5kZXggYzA4MDAyYy4uZWNmNmU4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9NYWtlZmlsZQorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL01ha2VmaWxlCkBAIC0xLDU1ICsxLDMwIEBACiAjLyoNCi0jICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0jCQ0KLSMNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotIyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSMgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSMgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0jICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotIyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSMgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0jICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMNCi0jDQotIyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLSMNCi0jICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0jICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSMgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSMgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotIyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSMgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0jICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSMgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0jICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0jICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotIyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotIyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotIyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSMgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotIw0KLSMgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotIw0KLSMgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotIyAgICBjb250YWN0IGRldGFpbHMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0jICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSMgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0jKi8NCisjICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisjICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMgKg0KKyMgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorIyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorIyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisjICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisjICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyMgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisjICoNCisjICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorIyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorIyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisjICoNCisjICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisjICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisjICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorIyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyMgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyMgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyMgKg0KKyMgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyMgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisjICoNCisjICogMSB0YWIgPT0gNCBzcGFjZXMhDQorIyAqLw0KIA0KIA0KIFJUT1NfU09VUkNFX0RJUj0uLi8uLi8uLi9Tb3VyY2UNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiOGQ5ZTJmLi45ODkxMTlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TLm9yZyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jCmluZGV4IGEwNmE3OGIuLjJlY2I2OWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IGI0YzgzNWMuLjkwNTgxNzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZGY1YTYxMi4uNWEyZTE4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGI4ZDllMmYuLjk4OTExOWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TLm9yZyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L21haW4uYwppbmRleCA2ODAxNjU1Li5jNWU0NGE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEVudmlyb25tZW50IGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDx0YXJnZXRzL0xQQzIzNjguaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKaW5kZXggMWQ4MGJhMS4uNjRhY2VmOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGY0NTdjMDQuLmQyODYyY2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDUzYjljNjEuLmQ3NmU2YzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBMaWJyYXJ5IGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJHUElPLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvbWFpbi5jCmluZGV4IDE4ZDdiMWQuLmI0ZmI0ODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCU5PVEUgOiBUYXNrcyBydW4gaW4gc3lzdGVtIG1vZGUgYW5kIHRoZSBzY2hlZHVsZXIgcnVucyBpbiBTdXBlcnZpc29yIG1vZGUuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGYyMTdkNmQuLmQ0NjRkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCAzZjFjOGFkLi5kOTBlODY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAwNzlhYjQzLi40NjZhYTU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogTGlicmFyeSBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiNzV4X0dQSU8uaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9tYWluLmMKaW5kZXggNTA0M2RkZC4uODU1NzczOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggNGU4N2E2ZC4uOTdiYjc2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwppbmRleCBkMDdiMzA2Li5hNzBjOTZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogQ29tcG9uZW50cyB0aGF0IGNhbiBiZSBjb21waWxlZCB0byBlaXRoZXIgQVJNIG9yIFRIVU1CIG1vZGUgYXJlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMjU5ZDY4My4uOWEzNmZiMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMDc5YWI0My4uNDY2YWE1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIExpYnJhcnkgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIjc1eF9HUElPLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvbWFpbi5jCmluZGV4IDJjMjIzODAuLjg2OWM3NDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGQ1MzkzM2EuLjYyZDI3OTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGUyNTU2NWIuLjFkODBjNGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBhZDVlNjJlLi5kYTliNjY5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAicGFydGVzdC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvbWFpbi5jCmluZGV4IGRmYmVkOWEuLjU4ZDdmYWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCA4MzU1MTNiLi5jZTVhZGNiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCAwMWU4NWQ2Li42MDNlOGQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAwYzJjMTEwLi5kMWZhYzVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogTGlicmFyeSBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAgIjkxeF9saWIuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2luY2x1ZGUvbHdJUFdlYlNlcnZlci9CYXNpY1dFQi5oIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbHdpcC9pbmNsdWRlL2x3SVBXZWJTZXJ2ZXIvQmFzaWNXRUIuaAppbmRleCBjYTExY2JhLi41YWM1OTE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2luY2x1ZGUvbHdJUFdlYlNlcnZlci9CYXNpY1dFQi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL2x3aXAvaW5jbHVkZS9sd0lQV2ViU2VydmVyL0Jhc2ljV0VCLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQkFTSUNfV0VCX1NFUlZFUl9IDQogI2RlZmluZSBCQVNJQ19XRUJfU0VSVkVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2x3aXBXZWJTZXJ2ZXIvQmFzaWNXRUIuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL2x3aXAvbHdpcFdlYlNlcnZlci9CYXNpY1dFQi5jCmluZGV4IDZiZjczNTUuLjMwNWRlMTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL2x3aXAvbHdpcFdlYlNlcnZlci9CYXNpY1dFQi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL2x3aXAvbHdpcFdlYlNlcnZlci9CYXNpY1dFQi5jCkBAIC0xLDcyICsxLDMxIEBACiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlJbXBsZW1lbnRzIGEgc2ltcGxpc3RpYyBXRUIgc2VydmVyLiAgRXZlcnkgdGltZSBhIGNvbm5lY3Rpb24gaXMgbWFkZSBhbmQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9tYWluLmMKaW5kZXggZTc5OTZkZi4uNjJiM2JmNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggNWNkNzM3Ni4uM2FhN2VmMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKaW5kZXggMjYzMzRiMS4uZjc2ZTJlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUjMyX1VDMy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FWUjMyX1VDMy9tYWluLmMKaW5kZXggMDYxNDE0Yy4uOGIyNTVkOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlIzMl9VQzMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSMzJfVUMzL21haW4uYwpAQCAtMzAsNzMgKzMwLDMyIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogDQogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHN0ZGlvLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDNjMzgxZmQuLjk1Mzg1ZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggNjMzMzQzOC4uZDQ4NWU1MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjIuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL21haW4uYwppbmRleCBjNWVmZjBjLi5kZmExNzI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5jCmluZGV4IDZlNDNlMDQuLjFiZDAwNDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZSBmaWxlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5oCmluZGV4IDA5ZjIwMjMuLmY1ODhmMzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvcmVndGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFJFR19URVNUX0gNCiAjZGVmaW5lIFJFR19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGZiN2UwMTQuLjE3OTc2MGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgSUFSIEFWUiBQT1JULiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvRnJlZVJUT1NDb25maWcuaAppbmRleCA5NDg5YzU2Li43YmY2ZjhhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDRiMGM1OWIuLmMzODY2NzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYyLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9tYWluLmMKaW5kZXggOGRlNjQ0NC4uOGFmMTZhMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuYwppbmRleCAzNTQ2YWRhLi45YWEwMWJiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGUgZmlsZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuaAppbmRleCAwOWYyMDIzLi5mNTg4ZjM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3JlZ3Rlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBSRUdfVEVTVF9IDQogI2RlZmluZSBSRUdfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3NlcmlhbC9zZXJpYWwuYwppbmRleCAyZjdjOTkxLi43YzVmMDEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDg1N2ZkNDYuLjI4NmY5NWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvUGFyVGVzdC5jCmluZGV4IGVkMjI5YTkuLjdlODk1ODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWJsaW5reS5jCmluZGV4IDk2YmM4ZTkuLjYwODAwYzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1mdWxsLmMKaW5kZXggNmJkNTljYi4uODY4OTRkMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvdUlQX1Rhc2suYwppbmRleCA4ZjI2NzE0Li4zOTQxNTBiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvRnJlZVJUT1NDb25maWcuaAppbmRleCBkNGYxYjMxLi43NGZlMjAwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL1BhclRlc3QuYwppbmRleCBlZDIyOWE5Li43ZTg5NTg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9tYWluLWJsaW5reS5jCmluZGV4IDMxOGRhZDg1Li45NTczMzQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1mdWxsLmMKaW5kZXggMzVhYjE5Yy4uZGEzNTg2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS91SVBfVGFzay5jCmluZGV4IDQ0NzM5NjQuLmYzMDE1ZjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggYzM2M2NhNC4uMTBkN2NmOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGYwNjc3NmQuLjQwN2Q1NjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwppbmRleCBkYTBhNWQ5Li4yMzZmMmFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGYxNzQ4MzcuLmJjZGI2OWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBOT1RFOiAgQ3VycmVudGx5IG9ubHkgdGltZXIgMSBhbmQgdGltZXIgMiBhcmUgdXNlZCAtDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBiODg2MjMzLi5kN2IwZGZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKaW5kZXggZDc4YWVmNS4uNDQ2MTE0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkuZ2xvYmFsIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9tYWluLmMKaW5kZXggY2VkYmFmOS4uMzBmOWI5OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDQzMDVmNTIuLjAzM2I2MWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKaW5kZXggZjVmYTkwMi4uNDcyNjAyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMWYzYWFkZS4uYjMxMGVjOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggY2Q1NTM5Yi4uMTc0MjgxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUwppbmRleCA5NDYyNWJkLi5iZjc1NmU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCkBAIC0xLDc2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOyAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotOyAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLTsgICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi07ICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLTsgICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotOyAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotOyAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi07ICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCUVYUE9SVCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAlFWFBPUlQgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvTEVEcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0xFRHMuYwppbmRleCA5NDZkZDQ5Li45OThjNWVlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvTEVEcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9MRURzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL1JUT1NEZW1vLmV3ZAppbmRleCA4ZTBlYzZlLi5iNWJkMWZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdkCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9SVE9TRGVtby5ld2QKQEAgLTEsMTU4NSArMSwxNDE5IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5zcmFtPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI4PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgIDxmaWxlVmVyc2lvbj4zPC9maWxlVmVyc2lvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5zcmFtPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlx0b29sY2hhaW5caWFyXHNyYW0ubWFjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGRlYnVnZ2VyXEF0bWVsXEFUU0FNQTVEMzUuZGRmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41LjUwLjAuNTE5MDc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5DTVNJU0RBUF9JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MzQ2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QU5HRUxfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbmdlbEhlYXJ0YmVhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tdW5pY2F0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFOR0VMVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0FuZ2VsTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbmdlbExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUlJPTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JSkVUX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NUY3BJcEFsdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TUFDUkFJR09SX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWc8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11U3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjBAQVJNN1RETUk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZ288L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVudXNlZEFkZHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDAwODAwMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlJESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJRHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRJRkVUX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkF1dG9tYXRpYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+NTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUHJvYmVMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXEhDQ1dhcmVcSENDV2FyZS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcUGVyY2VwaW9UcmFjZUV4cG9ydGVyXFBlcmNlcGlvVHJhY2VFeHBvcnRQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXEFWSVhcQVZJWC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xNUVhcTVFYUnRvc1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFF1YWRyb3NcUXVhZHJvc19FV0I3X1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRocmVhZFhcVGhyZWFkWEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcT3J0aVxPcnRpLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcdUNQcm9iZVx1Q1Byb2JlUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgPC9kZWJ1Z2dlclBsdWdpbnM+DQotICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLm1hYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXENPTkZJR1xkZWJ1Z2dlclxBdG1lbFxBVFNBTUE1RDI3LmRkZjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NS41MC4wLjUxOTA3PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Q01TSVNEQVBfSUQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFzc0VyYXNlQmVmb3JlRmxhc2hpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNBRElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NhZGlNZW1vcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmFzdCBNb2RlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaEJvYXJkUGF0aFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua0RldmljZU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RBUE51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRGVidWdBY2Nlc3NQb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRJRkVUX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWY2NUeXBlRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZvbHRhZ2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRWQ0NEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0U2V0dGxpbmd0aW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9KdGFnU3BlZWRUeXBlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0Q29ubmVjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRVc2JDb21Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkF1dG9tYXRpYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRBbGxvd0FjY2Vzc1RvQlNMPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0VyYXNlRmxhc2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPGRlYnVnZ2VyUGx1Z2lucz4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTWJlZFxNYmVkQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xUYXJnZXRBY2Nlc3NTZXJ2ZXJcVGFyZ2V0QWNjZXNzU2VydmVyLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9SVE9TRGVtby5ld3AgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdwCmluZGV4IGMxY2Q5YjQuLjY4NjBiNTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9SVE9TRGVtby5ld3AKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL1JUT1NEZW1vLmV3cApAQCAtMSwxNTA1ICsxLDE1NTcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPnNyYW08L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICA8ZmlsZVZlcnNpb24+MzwvZmlsZVZlcnNpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+c3JhbTwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbVxiaW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbVxvYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW1cb2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZywgd2l0aG91dCBtdWx0aWJ5dGUgc3VwcG9ydC48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny42MC4xLjExMjA2PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5BVFNBTUE1RDI3CUF0bWVsIEFUU0FNQTVEMjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db3JlVmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVEZXZpY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkFUU0FNQTVEMjcJQXRtZWwgQVRTQU1BNUQyNzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZQVTI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkNPTkZJR19CT0FSRF9TQU1BNUQyX1hQTEFJTkVEPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPkNPTkZJR19TT0NfU0FNQTVEMjc8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+Q09ORklHX0hBVkVfVFdJX0FMVEVSTkFURV9DTUQ8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+TEVEU19PTl9KMTc8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD0wPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPkNPTkZJR19IQVZFX1BJTzQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UGExMzEsIFBhMDM5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMTExMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUM8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxDb21tb25caW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDI8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpbzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsczwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyczwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlNPRlRQQUNLPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c2FtYTVkM3g8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5fX0FTU0VNQkxZX188L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbS5iaW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQotICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQotICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQotICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE3PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbS5vdXQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlx0b29sY2hhaW5caWFyXHNyYW0uaWNmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+cmVzZXRIYW5kbGVyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+QXRtZWwgRmlsZXM8L25hbWU+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtXGJpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbVxvYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZywgd2l0aG91dCBtdWx0aWJ5dGUgc3VwcG9ydC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkFUU0FNQTVEMjcJQXRtZWwgQVRTQU1BNUQyNzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkFUU0FNQTVEMjcJQXRtZWwgQVRTQU1BNUQyNzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ01TSVNQYWNrU2VsZWN0RGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9nTGliSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xpYkFkZGl0aW9uYWxMb2NhbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50Zk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZVRhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVEaXNwbGF5T25seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRTUEV4dGVuc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zNDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkNPTkZJR19CT0FSRF9TQU1BNUQyX1hQTEFJTkVEPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5DT05GSUdfU09DX1NBTUE1RDI3PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5DT05GSUdfSEFWRV9UV0lfQUxURVJOQVRFX0NNRDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+TEVEU19PTl9KMTc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkNPTkZJR19IQVZFX1BJTzQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UGExMzEsIFBhMDM5PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTExMTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxDb21tb25caW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxGdWxsX0RlbW88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpbzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyczwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlNPRlRQQUNLPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDcHBJbmxpbmVTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRmxvYXRTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NOb0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3lTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0Qm9tPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjUlRUSTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU9ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRW5kaWFuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFDYXNlU2Vuc2l0aXZpdHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjcm9DaGFyczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNhbWE1ZDN4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fX0FTU0VNQkxZX188L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbS5iaW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DVVNUT008L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQorICAgICAgICAgICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCisgICAgICAgICAgICAgICAgPGhhc1ByaW8+MDwvaGFzUHJpbz4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCisgICAgICAgICAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW0ub3V0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLmljZjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnJlc2V0SGFuZGxlcjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MTEwMjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNCaXRPcmRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUaHJlYWRzU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dDYWxsR3JhcGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlX0FsdERlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jT3V0cHV0Qm9tPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSGVhcFNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvY2FsZVNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgIDwvY29uZmlndXJhdGlvbj4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPmRyaXZlcnM8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+Y29ydGV4LWE8L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY29ydGV4YTVfaW50ZXJydXB0cy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNvcnRleGE1X2ludGVycnVwdHMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3AxNS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfYXNtX2lhci5zPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfcG11LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3AxNV9wbXUuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcHNyLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3Bzcl9pYXIuczwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxNYWtlZmlsZS5pbmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcbW11LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcbW11Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5taXNjPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXG1pc2NcbGVkLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcbWlzY1xsZWQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPnBlcmlwaGVyYWxzPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGFpYy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGFpYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGZsZXhjb20uYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xmbGV4Y29tLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbDJjYy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGwyY2MuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xtYXRyaXguYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xtYXRyaXguaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaW8uaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaW80LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvNC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBpdC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBpdC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBtYy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBtYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHRjLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdGMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0d2kuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0d2lkLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcd2R0LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcd2R0Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNceGRtYWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x4ZG1hZC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+cG93ZXI8L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccG93ZXJcYWN0ODk0NWEuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KKyAgICAgICAgPG5hbWU+QXRtZWwgRmlsZXM8L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+ZHJpdmVyczwvbmFtZT4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPmNvcnRleC1hPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNvcnRleGE1X2ludGVycnVwdHMuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNvcnRleGE1X2ludGVycnVwdHMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTUuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTUuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfYXNtX2lhci5zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3AxNV9wbXUuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfcG11Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcHNyLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcHNyX2lhci5zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcTWFrZWZpbGUuaW5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcbW11LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxtbXUuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5taXNjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXG1pc2NcbGVkLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xtaXNjXGxlZC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPnBlcmlwaGVyYWxzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGFpYy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcYWljLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xmbGV4Y29tLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xmbGV4Y29tLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xsMmNjLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xsMmNjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xtYXRyaXguYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXG1hdHJpeC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaW80LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaW80Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaXQuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBpdC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccG1jLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwbWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHRjLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0Yy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdHdpLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0d2lkLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x3ZHQuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHdkdC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNceGRtYWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHhkbWFkLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgPG5hbWU+cG93ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccG93ZXJcYWN0ODk0NWEuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPnRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPmNvbXBvbmVudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9hY2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2FkYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWVzLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9hZXNiLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9haWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2F4aW14Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9jaGlwaWQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2NsYXNzZC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfZmxleGNvbS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfZ21hYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaTJzYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaWNtLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9pc2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2wyY2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2xjZGMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X21hdHJpeC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbWNhbi5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbXBkZHJjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9wZG1pYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGlvLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9waXQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3BtYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcHdtLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9xc3BpLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9yc3RjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9ydGMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3J4bHAuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3Nja2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NkbW1jLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZmMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3Nmci5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2ZyYnUuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NoYS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2hkd2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NtYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc3BpLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zc2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3RjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90ZGVzLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90cm5nLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90d2locy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdWFydC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdWRwaHMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3dkdC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfeGRtYWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5waW88L25hbWU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjEuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDIyLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyMy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDI2Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyNy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjguaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfbG93bGV2ZWwuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9tZW1vcmllcy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDItcHRjLWVuZ2kuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXZiLWJnYTE5Ni5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDItdmItYmdhMjg5Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi14cGxhaW5lZC1wcm90by5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDIteHBsYWluZWQuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjaGlwLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY2hpcC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNoaXBfcGlucy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHNhbWE1ZDIxLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjIuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyMy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHNhbWE1ZDI0Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjYuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyNy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHNhbWE1ZDI4Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT51dGlsczwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGFzeW5jLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcY29tcGlsZXIuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xjcmMuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xkYmdfdXRpbC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGZvbnQuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xoYW1taW5nLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcaW50bWF0aC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGlvLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2NvbG9yLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2RyYXcuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xsY2RfZm9udC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXG11dGV4Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNccmFuZC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHJpbmcuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1x0aW1lci5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHRyYWNlLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcd2F2Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCiAgICAgPC9ncm91cD4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPnRhcmdldDwvbmFtZT4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5jb21wb25lbnQ8L25hbWU+DQorICAgICAgICA8bmFtZT5CbGlua3kgRGVtbzwvbmFtZT4NCiAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9hY2MuaDwvbmFtZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGJsaW5reV9kZW1vXG1haW5fYmxpbmt5LmM8L25hbWU+DQogICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWRjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWVzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWVzYi5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2FpYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2F4aW14Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfY2hpcGlkLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfY2xhc3NkLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfZmxleGNvbS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2dtYWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9pMnNjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaWNtLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaXNjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbDJjYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2xjZGMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9tYXRyaXguaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9tY2FuLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbXBkZHJjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGRtaWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9waW8uaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9waXQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9wbWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9wd20uaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9xc3BpLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcnN0Yy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3J0Yy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3J4bHAuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zY2tjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2RtbWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZmMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZnIuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZnJidS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NoYS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NoZHdjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc21jLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc3BpLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc3NjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdGMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90ZGVzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdHJuZy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3R3aWhzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdWFydC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3VkcGhzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfd2R0Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfeGRtYWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPnBpbzwvbmFtZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyMS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDIyLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyNC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDI2Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjcuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyOC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmQuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfbG93bGV2ZWwuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfbG93bGV2ZWwuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfbWVtb3JpZXMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi1wdGMtZW5naS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXZiLWJnYTE5Ni5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXZiLWJnYTI4OS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXhwbGFpbmVkLXByb3RvLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDIteHBsYWluZWQuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY2hpcC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjaGlwLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNoaXBfcGlucy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyMS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyMi5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyMy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyNC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyNi5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyNy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyOC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPnV0aWxzPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGFzeW5jLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGNvbXBpbGVyLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGNyYy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xkYmdfdXRpbC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xmb250Lmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGhhbW1pbmcuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcaW50bWF0aC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xpby5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xsY2RfY29sb3IuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2RyYXcuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2ZvbnQuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbXV0ZXguaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNccmFuZC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xyaW5nLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHRpbWVyLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHRyYWNlLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHdhdi5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkJsaW5reSBEZW1vPC9uYW1lPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGJsaW5reV9kZW1vXG1haW5fYmxpbmt5LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZyZWVSVE9TIFNvdXJjZTwvbmFtZT4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPnBvcnRhYmxlPC9uYW1lPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPk1lbU1hbmc8L25hbWU+DQorICAgICAgICA8bmFtZT5GcmVlUlRPUyBTb3VyY2U8L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5NZW1NYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnRBU00uaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0QVNNLnM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydG1hY3JvLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCiAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9uYW1lPg0KICAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0QVNNLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnRBU00uczwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydG1hY3JvLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnVsbCBEZW1vPC9uYW1lPg0KICAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+Q29tbW9uIERlbW8gVGFza3M8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50UXVldWUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGltZXJEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KKyAgICAgICAgPG5hbWU+RnVsbCBEZW1vPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPkNvbW1vbiBEZW1vIFRhc2tzPC9uYW1lPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb3VudHNlbS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGltZXJEZW1vLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9ccmVnX3Rlc3QuUzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxjc3RhcnR1cF93aXRoX0ZyZWVSVE9TX3ZlY3RvcnMuczwvbmFtZT4NCiAgICAgPC9maWxlPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NfdGlja19jb25maWcuYzwvbmFtZT4NCiAgICAgPC9maWxlPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xyZWdfdGVzdC5TPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGcmVlUlRPU0NvbmZpZy5oPC9uYW1lPg0KICAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcY3N0YXJ0dXBfd2l0aF9GcmVlUlRPU192ZWN0b3JzLnM8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxGcmVlUlRPU190aWNrX2NvbmZpZy5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NDb25maWcuaDwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXExFRHMuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCi0gIDwvZmlsZT4NCisgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXExFRHMuYzwvbmFtZT4NCisgICAgPC9maWxlPg0KKyAgICA8ZmlsZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbWFpbi5jPC9uYW1lPg0KKyAgICA8L2ZpbGU+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9ibGlua3lfZGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKaW5kZXggYTQ3ODRjOC4uOGEwMDNhYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9tYWluLmMKaW5kZXggY2YwYmMzZC4uNDg5NTg1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KaW5kZXggNWJiNWFjYy4uNjJjMjFiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KQEAgLTEsMTYgKzEsMTMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxjcnVuPg0KLSAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gIDxmaWx0ZXJfZW50cmllcz4NCi0gICAgPGZpbHRlciBpbmRleD0iMCIgdHlwZT0iZGVmYXVsdCI+DQotICAgICAgPHR5cGU+KjwvdHlwZT4NCi0gICAgICA8c3RhcnRfZmlsZT4qPC9zdGFydF9maWxlPg0KLSAgICAgIDxlbmRfZmlsZT4qPC9lbmRfZmlsZT4NCi0gICAgICA8YWN0aW9uX2RlYnVnZ2VyPjA8L2FjdGlvbl9kZWJ1Z2dlcj4NCi0gICAgICA8YWN0aW9uX2xvZz4xPC9hY3Rpb25fbG9nPg0KLSAgICA8L2ZpbHRlcj4NCi0gIDwvZmlsdGVyX2VudHJpZXM+DQorICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgIDxmaWx0ZXJfZW50cmllcz4NCisgICAgICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KKyAgICAgICAgICAgIDx0eXBlPio8L3R5cGU+DQorICAgICAgICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCisgICAgICAgICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQorICAgICAgICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQorICAgICAgICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCisgICAgICAgIDwvZmlsdGVyPg0KKyAgICA8L2ZpbHRlcl9lbnRyaWVzPg0KIDwvY3J1bj4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKaW5kZXggM2M4OTU1Ny4uYTgzMTk4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdApAQCAtMSw3MSArMSw0MjIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCiA8UHJvamVjdD4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxEZWJ1Zy1Mb2c+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3M+PFdpbmRvdz48RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+PC9XaW5kb3c+PFdpbmRvdz48RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5PjwvV2luZG93PjwvV2luZG93cz48L1ByZWZlcmVkV2luZG93cz48L0J1aWxkPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjIyMTwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCi0gICAgICA8L1dvcmtzcGFjZT4NCi0gICAgICA8RGlzYXNzZW1ibHk+DQotICAgICAgICA8Y29sLW5hbWVzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8aXRlbT5EaXNhc3NlbWJseTwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+DQotICAgICAgICA8Y29sLXdpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPjxpdGVtPjIwPC9pdGVtPjwvY29sLXdpZHRocz4NCi0gICAgICAgIDxEaXNhc21IaXN0b3J5PjxpdGVtPjB4MzA1NDQ0PC9pdGVtPjxpdGVtPjB4MDAzMDIxMUM8L2l0ZW0+PGl0ZW0+MHgwMDMwMjc1MDwvaXRlbT48L0Rpc2FzbUhpc3Rvcnk+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PFNob3dDb2RlQ292ZXJhZ2U+MTwvU2hvd0NvZGVDb3ZlcmFnZT48U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz48L0Rpc2Fzc2VtYmx5Pg0KLSAgICA8UmVnaXN0ZXI+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48UmVnRmluZEhpc3RvcnkvPjwvUmVnaXN0ZXI+PFdBVENIXzE+PGV4cHJlc3Npb25zPjxpdGVtPnhUaWNrQ291bnQ8L2l0ZW0+PGl0ZW0vPjwvZXhwcmVzc2lvbnM+PGNvbC1uYW1lcz48aXRlbT5FeHByZXNzaW9uPC9pdGVtPjxpdGVtPkxvY2F0aW9uPC9pdGVtPjxpdGVtPlR5cGU8L2l0ZW0+PGl0ZW0+VmFsdWU8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+MjA3PC9pdGVtPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+Mjk0PC9pdGVtPjwvY29sLXdpZHRocz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjwvV0FUQ0hfMT48Q2FsbFN0YWNrPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjE8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5GcmFtZTwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+NDAwPC9pdGVtPjxpdGVtPjIwPC9pdGVtPjwvY29sLXdpZHRocz48L0NhbGxTdGFjaz48QnJlYWtwb2ludHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjUwMDwvaXRlbT48aXRlbT4zNTwvaXRlbT48L2NvbC13aWR0aHM+PC9CcmVha3BvaW50cz48RmluZC1pbi1GaWxlcz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3M+PFdpbmRvdz48RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+PC9XaW5kb3c+PC9XaW5kb3dzPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW5XaWR0aDA+NDk3PC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz48L0ZpbmQtaW4tRmlsZXM+PFF1aWNrV2F0Y2g+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkV4cHJlc3Npb248L2l0ZW0+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTUwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PC9jb2wtd2lkdGhzPjxRV2F0Y2hIaXN0b3J5PjxpdGVtPlRDMDwvaXRlbT48aXRlbT5UQzAtJmd0O1RDX0NIQU5ORUxbIHRtclRDMF9DSEFOTkVMXzAgXS5UQ19SQzwvaXRlbT48L1FXYXRjaEhpc3Rvcnk+PC9RdWlja1dhdGNoPjxNZW1vcnk+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48RmluZERpcmVjdGlvbj4xPC9GaW5kRGlyZWN0aW9uPjxGaW5kQXNIZXg+MDwvRmluZEFzSGV4PjwvTWVtb3J5PjxUQVNLVklFVz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW44PjE1MDwvQ29sdW1uOD48Q29sdW1uMD4yMDA8L0NvbHVtbjA+PENvbHVtbjE+MTAwPC9Db2x1bW4xPjxDb2x1bW4yPjEwMDwvQ29sdW1uMj48Q29sdW1uMz4xMDA8L0NvbHVtbjM+PENvbHVtbjQ+MTAwPC9Db2x1bW40PjxDb2x1bW41PjEwMDwvQ29sdW1uNT48Q29sdW1uNj4xMDA8L0NvbHVtbjY+PENvbHVtbjc+MTUwPC9Db2x1bW43PjwvVEFTS1ZJRVc+PFFVRVVFVklFVz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW4wPjMwMDwvQ29sdW1uMD48Q29sdW1uMT4xMDA8L0NvbHVtbjE+PENvbHVtbjI+MTAwPC9Db2x1bW4yPjxDb2x1bW4zPjEwMDwvQ29sdW1uMz48Q29sdW1uND4xMDA8L0NvbHVtbjQ+PENvbHVtbjU+MTAwPC9Db2x1bW41PjxDb2x1bW42PjEwMDwvQ29sdW1uNj48L1FVRVVFVklFVz48U1RBQ0tfMT48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4xPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxzdGFjaz5DU1RBQ0s8L3N0YWNrPjx3aWR0aD40PC93aWR0aD48dmFycz4xPC92YXJzPjxvZmZzZXQ+MDwvb2Zmc2V0Pjxjb2wtbmFtZXM+PGl0ZW0+RGF0YTwvaXRlbT48aXRlbT5GcmFtZTwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjxpdGVtPlZhcmlhYmxlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48L1NUQUNLXzE+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMD4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yNDY3My0yMzg3NzwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9CbGlua3kgRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MrQ0xJPC9FeHBhbmRlZE5vZGU+PC9Ob2RlRGljdD48L1Nlc3Npb24+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMD48V25kMj48VGFicz48VGFiPjxJZGVudGl0eT5UYWJJRC0xNzkzNi0yMTM5NTwvSWRlbnRpdHk+PFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPjxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPjxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDI+PFduZDQ+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtMjUwNC0yMzMyMjwvSWRlbnRpdHk+PFRhYk5hbWU+V2F0Y2ggMTwvVGFiTmFtZT48RmFjdG9yeT5XQVRDSF8xPC9GYWN0b3J5PjwvVGFiPjwvVGFicz48U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQ0PjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xMzY8L1lQb3MyPjxTZWxTdGFydDI+NzM5MjwvU2VsU3RhcnQyPjxTZWxFbmQyPjczOTI8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42NjwvWVBvczI+PFNlbFN0YXJ0Mj42OTYzPC9TZWxTdGFydDI+PFNlbEVuZDI+Njk2MzwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXGJsaW5reV9kZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42OTwvWVBvczI+PFNlbFN0YXJ0Mj42NzA4PC9TZWxTdGFydDI+PFNlbEVuZDI+NjcwODwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMTFFNTc0OD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDExRTU3NDg+PFRvb2xiYXItMDhDMEE4MjA+PGtleT5kZWJ1Z2dlcmd1aS5lbnUxPC9rZXk+PC9Ub29sYmFyLTA4QzBBODIwPjwvU2l6ZXM+PC9Sb3cwPjxSb3cxPjxTaXplcz48VG9vbGJhci0wRDI3QzdFOD48a2V5PmFybWpldC5lbnUxPC9rZXk+PC9Ub29sYmFyLTBEMjdDN0U4PjwvU2l6ZXM+PC9Sb3cxPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMD48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT44Njg8L0JvdHRvbT48UmlnaHQ+Mjk1PC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMjg8L3hzY3JlZW4+PHlzY3JlZW4+MjMwPC95c2NyZWVuPjxzaXplSG9yekNYPjExODc1MDwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDI4MjI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTU0Njg4PC9zaXplVmVydENYPjxzaXplVmVydENZPjc2NzE5Njwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQwPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzPjxXbmQ0PjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjg2ODwvQm90dG9tPjxSaWdodD42NDI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTA0MTY3PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjE3NjM2Nzwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4zMzU0MTc8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzY3MTk2PC9zaXplVmVydENZPjwvUmVjdD48L1duZDQ+PC9TaXplcz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMj48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4xOTg8L0JvdHRvbT48UmlnaHQ+MTkyMjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTkyNDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjA4Mzwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xNzYzNjc8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTA0MTY3PC9zaXplVmVydENYPjxzaXplVmVydENZPjE3NjM2Nzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQyPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxEZXNrdG9wPg0KKyAgICAgICAgPFN0YXRpYz4NCisgICAgICAgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICA8L0RlYnVnLUxvZz4NCisgICAgICAgICAgICA8QnVpbGQ+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFdpbmRvdz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV2luZG93Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXaW5kb3c+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkZpbmQtaW4tRmlsZXM8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XaW5kb3c+DQorICAgICAgICAgICAgICAgICAgICA8L1dpbmRvd3M+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgIDwvQnVpbGQ+DQorICAgICAgICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjIyMTwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjI3PC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4yNzwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPERpc2Fzc2VtYmx5Pg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjUwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxEaXNhc21IaXN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MHgzMDU0NDQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4weDAwMzAyMTFDPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MHgwMDMwMjc1MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9EaXNhc21IaXN0b3J5Pg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPFNob3dDb2RlQ292ZXJhZ2U+MTwvU2hvd0NvZGVDb3ZlcmFnZT4NCisgICAgICAgICAgICAgICAgPFNob3dJbnN0clByb2ZpbGluZz4xPC9TaG93SW5zdHJQcm9maWxpbmc+DQorICAgICAgICAgICAgPC9EaXNhc3NlbWJseT4NCisgICAgICAgICAgICA8UmVnaXN0ZXI+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8UmVnRmluZEhpc3RvcnkgLz4NCisgICAgICAgICAgICA8L1JlZ2lzdGVyPg0KKyAgICAgICAgICAgIDxXQVRDSF8xPg0KKyAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbnM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT54VGlja0NvdW50PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0gLz4NCisgICAgICAgICAgICAgICAgPC9leHByZXNzaW9ucz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkV4cHJlc3Npb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5Mb2NhdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlR5cGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYWx1ZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MjA3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTUwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+Mjk0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgIDwvV0FUQ0hfMT4NCisgICAgICAgICAgICA8Q2FsbFN0YWNrPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjE8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkZyYW1lPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT40MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQ2FsbFN0YWNrPg0KKyAgICAgICAgICAgIDxCcmVha3BvaW50cz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5CcmVha3BvaW50PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQnJlYWtwb2ludHM+DQorICAgICAgICAgICAgPEZpbmQtaW4tRmlsZXM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MzwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXaW5kb3c+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1dpbmRvdz4NCisgICAgICAgICAgICAgICAgICAgIDwvV2luZG93cz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+NDk3PC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICA8L0ZpbmQtaW4tRmlsZXM+DQorICAgICAgICAgICAgPFF1aWNrV2F0Y2g+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkxvY2F0aW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VHlwZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhbHVlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xNTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgPFFXYXRjaEhpc3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UQzA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UQzAtJmd0O1RDX0NIQU5ORUxbIHRtclRDMF9DSEFOTkVMXzAgXS5UQ19SQzwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9RV2F0Y2hIaXN0b3J5Pg0KKyAgICAgICAgICAgIDwvUXVpY2tXYXRjaD4NCisgICAgICAgICAgICA8TWVtb3J5Pg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPEZpbmREaXJlY3Rpb24+MTwvRmluZERpcmVjdGlvbj4NCisgICAgICAgICAgICAgICAgPEZpbmRBc0hleD4wPC9GaW5kQXNIZXg+DQorICAgICAgICAgICAgPC9NZW1vcnk+DQorICAgICAgICAgICAgPFRBU0tWSUVXPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPENvbHVtbjg+MTUwPC9Db2x1bW44Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMDA8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW4xPjEwMDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbjI+MTAwPC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMz4xMDA8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW40PjEwMDwvQ29sdW1uND4NCisgICAgICAgICAgICAgICAgPENvbHVtbjU+MTAwPC9Db2x1bW41Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uNj4xMDA8L0NvbHVtbjY+DQorICAgICAgICAgICAgICAgIDxDb2x1bW43PjE1MDwvQ29sdW1uNz4NCisgICAgICAgICAgICA8L1RBU0tWSUVXPg0KKyAgICAgICAgICAgIDxRVUVVRVZJRVc+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MzwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMD4zMDA8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW4xPjEwMDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbjI+MTAwPC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMz4xMDA8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW40PjEwMDwvQ29sdW1uND4NCisgICAgICAgICAgICAgICAgPENvbHVtbjU+MTAwPC9Db2x1bW41Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uNj4xMDA8L0NvbHVtbjY+DQorICAgICAgICAgICAgPC9RVUVVRVZJRVc+DQorICAgICAgICAgICAgPFNUQUNLXzE+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MTwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8c3RhY2s+Q1NUQUNLPC9zdGFjaz4NCisgICAgICAgICAgICAgICAgPHdpZHRoPjQ8L3dpZHRoPg0KKyAgICAgICAgICAgICAgICA8dmFycz4xPC92YXJzPg0KKyAgICAgICAgICAgICAgICA8b2Zmc2V0PjA8L29mZnNldD4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkRhdGE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5GcmFtZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkxvY2F0aW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VHlwZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhbHVlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFyaWFibGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvU1RBQ0tfMT4NCisgICAgICAgIDwvU3RhdGljPg0KKyAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgPFduZDA+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjQ2NzMtMjM4Nzc8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vQmxpbmt5IERlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MrQ0xJPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMD4NCisgICAgICAgICAgICA8V25kMj4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNzkzNi0yMTM5NTwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMj4NCisgICAgICAgICAgICA8V25kND4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yNTA0LTIzMzIyPC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5XYXRjaCAxPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PldBVENIXzE8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQ0Pg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+MTM2PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NzM5MjwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NzM5MjwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42NjwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjY5NjM8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjY5NjM8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxibGlua3lfZGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+Njk8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42NzA4PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42NzA4PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT4NCisgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICAgICAgPFg+MTAwMDAwMDwvWD4NCisgICAgICAgICAgICAgICAgICAgIDxZPjEwMDAwMDA8L1k+DQorICAgICAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgIDxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPg0KKyAgICAgICAgPC9FZGl0b3I+DQorICAgICAgICA8UG9zaXRpb25zPg0KKyAgICAgICAgICAgIDxUb3A+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTAxMUU1NzQ4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmlhcmlkZXBtLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDExRTU3NDg+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMDhDMEE4MjA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+ZGVidWdnZXJndWkuZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0wOEMwQTgyMD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICAgICAgPFJvdzE+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMEQyN0M3RTg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+YXJtamV0LmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMEQyN0M3RTg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzE+DQorICAgICAgICAgICAgPC9Ub3A+DQorICAgICAgICAgICAgPExlZnQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT44Njg8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4yOTU8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjIyODwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjIzMDwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjExODc1MDwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjIwMjgyMjwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjE1NDY4ODwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjc2NzE5Njwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0xlZnQ+DQorICAgICAgICAgICAgPFJpZ2h0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kND4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+ODY4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+NjQyPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMDA8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDQxNjc8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4xNzYzNjc8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4zMzU0MTc8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43NjcxOTY8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDQ+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9SaWdodD4NCisgICAgICAgICAgICA8Qm90dG9tPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+MTk4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MTkyMjwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MTkyNDwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjIwMDwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjEwMDIwODM8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4xNzYzNjc8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xMDQxNjc8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT4xNzYzNjc8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9Cb3R0b20+DQorICAgICAgICAgICAgPEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICA8L0Zsb2F0Pg0KKyAgICAgICAgPC9Qb3NpdGlvbnM+DQorICAgIDwvRGVza3RvcD4NCisgICAgPFdpbmRvd1N0b3JhZ2UgLz4NCiA8L1Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uY3NweS5iYXQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5jc3B5LmJhdAppbmRleCA3NTU4ZWIxLi5mN2U4NDFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5jc3B5LmJhdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5jc3B5LmJhdApAQCAtMjUsNyArMjUsNyBAQAogDQogQGVjaG8gb24gDQogDQotIkM6XERldlRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA3LjRcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wiIC0tYmFja2VuZCAtZiAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbCIgDQorIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA4LjBcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wiIC0tYmFja2VuZCAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbCIgDQogDQogQGVjaG8gb2ZmIA0KIGdvdG8gZW5kIA0KQEAgLTM0LDcgKzM0LDcgQEAKIA0KIEBlY2hvIG9uIA0KIA0KLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGNvbW1vblxiaW5cY3NweWJhdCIgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsIiAiLS1kZWJ1Z19maWxlPSV+MSIgLS1iYWNrZW5kIC1mICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcc2V0dGluZ3NcUlRPU0RlbW8uc3JhbS5kcml2ZXIueGNsIiANCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxjb21tb25cYmluXGNzcHliYXQiIC1mICJDOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcc2V0dGluZ3NcUlRPU0RlbW8uc3JhbS5nZW5lcmFsLnhjbCIgIi0tZGVidWdfZmlsZT0lfjEiIC0tYmFja2VuZCAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbCIgDQogDQogQGVjaG8gb2ZmIA0KIDplbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5kcml2ZXIueGNsIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbAppbmRleCBjZWY2OThiLi4wNDU0ODU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5kcml2ZXIueGNsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmRyaXZlci54Y2wKQEAgLTYsNyArNiw3IEBACiANCiAiLXAiIA0KIA0KLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGFybVxDT05GSUdcZGVidWdnZXJcQXRtZWxcQVRTQU1BNUQyNy5kZGYiIA0KKyJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGFybVxDT05GSUdcZGVidWdnZXJcQXRtZWxcQVRTQU1BNUQyNy5kZGYiIA0KIA0KICItLWRydl92ZXJpZnlfZG93bmxvYWQiIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wKaW5kZXggYmE4MmE5My4uNmRmZmNhOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wKQEAgLTEsMTQgKzEsMTQgQEAKLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGFybVxiaW5cYXJtcHJvYy5kbGwiIA0KKyJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGFybVxiaW5cYXJtcHJvYy5kbGwiIA0KIA0KLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGFybVxiaW5cYXJtSkVULmRsbCIgDQorIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA4LjBcYXJtXGJpblxhcm1KRVQuZGxsIiANCiANCi0iQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNyYW1cYmluXHNyYW0ub3V0IiANCisiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNyYW1cYmluXHNyYW0ub3V0IiANCiANCi0tLXBsdWdpbiAiQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxhcm1cYmluXGFybWJhdC5kbGwiIA0KKy0tcGx1Z2luICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGFybVxiaW5cYXJtYmF0LmRsbCIgDQogDQotLS1kZXZpY2VfbWFjcm8gIkM6XERldlRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA3LjRcYXJtXGNvbmZpZ1xkZWJ1Z2dlclxBdG1lbFxTQU1BNUQyLmRtYWMiIA0KKy0tZGV2aWNlX21hY3JvICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGFybVxjb25maWdcZGVidWdnZXJcQXRtZWxcU0FNQTVEMi5kbWFjIiANCiANCi0tLW1hY3JvICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlx0b29sY2hhaW5caWFyXHNyYW0ubWFjIiANCistLW1hY3JvICJDOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlx0b29sY2hhaW5caWFyXHNyYW0ubWFjIiANCiANCiANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CmluZGV4IDZjN2JkOTUuLmU4MjQ1OGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CkBAIC0xLDc4ICsxLDYwNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KIDxXb3Jrc3BhY2U+DQotICA8Q29uZmlnRGljdGlvbmFyeT4NCi0gICAgDQotICA8Q3VycmVudENvbmZpZ3M+PFByb2plY3Q+UlRPU0RlbW8vc3JhbTwvUHJvamVjdD48L0N1cnJlbnRDb25maWdzPjwvQ29uZmlnRGljdGlvbmFyeT4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjM2MjwvQ29sdW1uMD48Q29sdW1uMT4wPC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjA8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPENSdW5NZXNzYWdlUnVsZXM+DQotICAgICAgICA8Y29sLW5hbWVzPg0KLSAgICAgICAgICA8aXRlbT5BY3Rpb248L2l0ZW0+DQotICAgICAgICAgIDxpdGVtPkNoZWNrPC9pdGVtPg0KLSAgICAgICAgICA8aXRlbT5Tb3VyY2UgRmlsZTwvaXRlbT4NCi0gICAgICAgIDwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCi0gICAgICAgICAgPGl0ZW0+NDAwPC9pdGVtPg0KLSAgICAgICAgICA8aXRlbT4yMDA8L2l0ZW0+DQotICAgICAgICA8L2NvbC13aWR0aHM+DQotICAgICAgPC9DUnVuTWVzc2FnZVJ1bGVzPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48L0J1aWxkPg0KLSAgICA8RGVidWctTG9nPjxDb2x1bW5XaWR0aDA+MTg8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjQ8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz48VGVybWluYWxJTy8+PFNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PENvbHVtbldpZHRoMD41NTI8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjc4PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj45NDY8L0NvbHVtbldpZHRoMj48L1NlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PEZpbmQtaW4tRmlsZXM+PENvbHVtbldpZHRoMD44NDY8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjMzMTwvQ29sdW1uV2lkdGgzPjwvRmluZC1pbi1GaWxlcz48QnJlYWtwb2ludHM+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9CcmVha3BvaW50cz48L1N0YXRpYz4NCi0gICAgPFdpbmRvd3M+DQotICAgICAgDQotICAgICAgDQotICAgIDxXbmQwPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTIyMzUxLTE5MDA4PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uPg0KLSAgICAgICAgICAgICAgDQotICAgICAgICAgICAgPE5vZGVEaWN0PjxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TK0NMSTwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vT3V0cHV0PC9FeHBhbmRlZE5vZGU+PC9Ob2RlRGljdD48L1Nlc3Npb24+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMD48V25kMT4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMTA3Ni0xOTIzNzwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDxUYWI+PElkZW50aXR5PlRhYklELTIzNTAyLTIzMDgxPC9JZGVudGl0eT48VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+PEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48VGFiPjxJZGVudGl0eT5UYWJJRC0yNDQzMS0yMzg5NDwvSWRlbnRpdHk+PFRhYk5hbWU+QW1iaWd1b3VzIERlZmluaXRpb25zPC9UYWJOYW1lPjxGYWN0b3J5PlNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjxUYWI+PElkZW50aXR5PlRhYklELTkwMzMtNjExNjwvSWRlbnRpdHk+PFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT48RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MTwvU2VsZWN0ZWRUYWI+PC9XbmQxPjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42NDwvWVBvczI+PFNlbFN0YXJ0Mj42OTE5PC9TZWxTdGFydDI+PFNlbEVuZDI+NjkxOTwvU2VsRW5kMj48L1RhYj48QWN0aXZlVGFiPjA8L0FjdGl2ZVRhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY2PC9ZUG9zMj48U2VsU3RhcnQyPjY5NjM8L1NlbFN0YXJ0Mj48U2VsRW5kMj42OTYzPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcYmxpbmt5X2RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY5PC9ZUG9zMj48U2VsU3RhcnQyPjY3MDg8L1NlbFN0YXJ0Mj48U2VsRW5kMj42NzA4PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAyNkE1NzQ4PjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMjZBNTc0OD48L1NpemVzPjwvUm93MD48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDA+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+ODQ4PC9Cb3R0b20+PFJpZ2h0PjQwOTwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTQ4PC94c2NyZWVuPjx5c2NyZWVuPjE1MTwveXNjcmVlbj48c2l6ZUhvcnpDWD43NzA4Mzwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xMzMxNTc8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MjE0MDYzPC9zaXplVmVydENYPjxzaXplVmVydENZPjc0OTU1OTwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQwPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzLz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMT48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4yNDI8L0JvdHRvbT48UmlnaHQ+MTkyMjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTkyNDwveHNjcmVlbj48eXNjcmVlbj4yNDQ8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjA4Mzwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMTUxNjg8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+NzcwODM8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MTMzMTU3PC9zaXplVmVydENZPjwvUmVjdD48L1duZDE+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCi0gIDwvRGVza3RvcD4NCisgICAgPENvbmZpZ0RpY3Rpb25hcnk+DQorICAgICAgICA8Q3VycmVudENvbmZpZ3M+DQorICAgICAgICAgICAgPFByb2plY3Q+UlRPU0RlbW8vc3JhbTwvUHJvamVjdD4NCisgICAgICAgIDwvQ3VycmVudENvbmZpZ3M+DQorICAgIDwvQ29uZmlnRGljdGlvbmFyeT4NCisgICAgPERlc2t0b3A+DQorICAgICAgICA8U3RhdGljPg0KKyAgICAgICAgICAgIDxXb3Jrc3BhY2U+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4zNjI8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4wPC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4wPC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICA8L1dvcmtzcGFjZT4NCisgICAgICAgICAgICA8Q1J1bk1lc3NhZ2VSdWxlcz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkFjdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkNoZWNrPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+U291cmNlIEZpbGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjQwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQ1J1bk1lc3NhZ2VSdWxlcz4NCisgICAgICAgICAgICA8QnVpbGQ+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICA8L0J1aWxkPg0KKyAgICAgICAgICAgIDxEZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MTg8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xNjI0PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgPC9EZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgPFRlcm1pbmFsSU8gLz4NCisgICAgICAgICAgICA8U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD41NTI8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT43ODwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjk0NjwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgIDwvU2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz4NCisgICAgICAgICAgICA8RmluZC1pbi1GaWxlcz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD44NDY8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjc0NjwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjMzMTwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgIDwvRmluZC1pbi1GaWxlcz4NCisgICAgICAgICAgICA8QnJlYWtwb2ludHM+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5CcmVha3BvaW50PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICA8L0JyZWFrcG9pbnRzPg0KKyAgICAgICAgPC9TdGF0aWM+DQorICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICA8V25kMD4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMjM1MS0xOTAwODwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUytDTEk8L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vT3V0cHV0PC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMD4NCisgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMTA3Ni0xOTIzNzwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjM1MDItMjMwODE8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjQ0MzEtMjM4OTQ8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkFtYmlndW91cyBEZWZpbml0aW9uczwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTkwMzMtNjExNjwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MTwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjQ8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42OTE5PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42OTE5PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjY2PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+Njk2MzwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+Njk2MzwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXGJsaW5reV9kZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42OTwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjY3MDg8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjY3MDg8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPg0KKyAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgICAgICA8WD4xMDAwMDAwPC9YPg0KKyAgICAgICAgICAgICAgICAgICAgPFk+MTAwMDAwMDwvWT4NCisgICAgICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgPFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+DQorICAgICAgICA8L0VkaXRvcj4NCisgICAgICAgIDxQb3NpdGlvbnM+DQorICAgICAgICAgICAgPFRvcD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMDI2QTU3NDg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+aWFyaWRlcG0uZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0wMjZBNTc0OD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1RvcD4NCisgICAgICAgICAgICA8TGVmdD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjg0ODwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjQwOTwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MTQ4PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MTUxPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+NzcwODM8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4xMzMxNTc8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4yMTQwNjM8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43NDk1NTk8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9MZWZ0Pg0KKyAgICAgICAgICAgIDxSaWdodD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvUmlnaHQ+DQorICAgICAgICAgICAgPEJvdHRvbT4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjI0MjwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE5MjI8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yNDQ8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDAyMDgzPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MjE1MTY4PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+NzcwODM8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT4xMzMxNTc8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDE+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9Cb3R0b20+DQorICAgICAgICAgICAgPEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICA8L0Zsb2F0Pg0KKyAgICAgICAgPC9Qb3NpdGlvbnM+DQorICAgIDwvRGVza3RvcD4NCisgICAgPFdpbmRvd1N0b3JhZ2U+DQorICAgICAgICA8Q2hpbGRJZE1hcD4NCisgICAgICAgICAgICA8VEJfQ01TSVNQQUNLPjM0MDQ4PC9UQl9DTVNJU1BBQ0s+DQorICAgICAgICAgICAgPFRCX01BSU4+MzQwNDk8L1RCX01BSU4+DQorICAgICAgICAgICAgPFdJTl9CUkVBS1BPSU5UUz4zNDA1MDwvV0lOX0JSRUFLUE9JTlRTPg0KKyAgICAgICAgICAgIDxXSU5fQlVJTEQ+MzQwNTE8L1dJTl9CVUlMRD4NCisgICAgICAgICAgICA8V0lOX0NBTExfR1JBUEg+MzQwNTI8L1dJTl9DQUxMX0dSQVBIPg0KKyAgICAgICAgICAgIDxXSU5fQ01TSVNQQUNLX0FHRU5UX0xPRz4zNDA1MzwvV0lOX0NNU0lTUEFDS19BR0VOVF9MT0c+DQorICAgICAgICAgICAgPFdJTl9DVVNUT01fU0ZSPjM0MDU0PC9XSU5fQ1VTVE9NX1NGUj4NCisgICAgICAgICAgICA8V0lOX0NfU1RBVD4zNDA1NTwvV0lOX0NfU1RBVD4NCisgICAgICAgICAgICA8V0lOX0RFQlVHX0xPRz4zNDA1NjwvV0lOX0RFQlVHX0xPRz4NCisgICAgICAgICAgICA8V0lOX0ZJTkRfQUxMX0RFQ0xBUkFUSU9OUz4zNDA1NzwvV0lOX0ZJTkRfQUxMX0RFQ0xBUkFUSU9OUz4NCisgICAgICAgICAgICA8V0lOX0ZJTkRfQUxMX1JFRkVSRU5DRVM+MzQwNTg8L1dJTl9GSU5EX0FMTF9SRUZFUkVOQ0VTPg0KKyAgICAgICAgICAgIDxXSU5fRklORF9JTl9GSUxFUz4zNDA1OTwvV0lOX0ZJTkRfSU5fRklMRVM+DQorICAgICAgICAgICAgPFdJTl9TRUxFQ1RfQU1CSUdVT1VTX0RFRklOSVRJT05TPjM0MDYwPC9XSU5fU0VMRUNUX0FNQklHVU9VU19ERUZJTklUSU9OUz4NCisgICAgICAgICAgICA8V0lOX1NPVVJDRV9CUk9XU0VSPjM0MDYxPC9XSU5fU09VUkNFX0JST1dTRVI+DQorICAgICAgICAgICAgPFdJTl9UT09MX09VVFBVVD4zNDA2MjwvV0lOX1RPT0xfT1VUUFVUPg0KKyAgICAgICAgICAgIDxXSU5fV09SS1NQQUNFPjM0MDYzPC9XSU5fV09SS1NQQUNFPg0KKyAgICAgICAgPC9DaGlsZElkTWFwPg0KKyAgICAgICAgPERlc2t0b3A+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNDg+DQorICAgICAgICAgICAgICAgIDxUb29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzQwMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNDAwMTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvVG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNDg+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNDk+DQorICAgICAgICAgICAgICAgIDxUb29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMjQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwOTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA1NzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM2PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDI2PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDY0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA1NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM2PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzQzOTk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzg8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzOTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvVG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNDk+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTY+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjE8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xODYyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxGaWx0ZXJMZXZlbD4yPC9GaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICAgICAgPExpdmVGaWxlPjwvTGl2ZUZpbGU+DQorICAgICAgICAgICAgICAgIDxMaXZlTG9nRW5hYmxlZD4wPC9MaXZlTG9nRW5hYmxlZD4NCisgICAgICAgICAgICAgICAgPExpdmVGaWx0ZXJMZXZlbD4tMTwvTGl2ZUZpbHRlckxldmVsPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjIwODwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjMwPC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+MzA8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4zMDwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgPC9Ob2RlRGljdD4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNjM+DQorICAgICAgICAgICAgPENvbnRyb2xCYXJWZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8TWFqb3I+MTQ8L01ham9yPg0KKyAgICAgICAgICAgICAgICA8TWlub3I+MTA8L01pbm9yPg0KKyAgICAgICAgICAgIDwvQ29udHJvbEJhclZlcnNpb24+DQorICAgICAgICAgICAgPE1GQ1Rvb2xCYXJQYXJhbWV0ZXJzPg0KKyAgICAgICAgICAgICAgICA8VG9vbHRpcHM+MTwvVG9vbHRpcHM+DQorICAgICAgICAgICAgICAgIDxTaG9ydGN1dEtleXM+MTwvU2hvcnRjdXRLZXlzPg0KKyAgICAgICAgICAgICAgICA8TGFyZ2VJY29ucz4wPC9MYXJnZUljb25zPg0KKyAgICAgICAgICAgICAgICA8TWVudUFuaW1hdGlvbj4wPC9NZW51QW5pbWF0aW9uPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50bHlVc2VkTWVudXM+MTwvUmVjZW50bHlVc2VkTWVudXM+DQorICAgICAgICAgICAgICAgIDxNZW51U2hhZG93cz4xPC9NZW51U2hhZG93cz4NCisgICAgICAgICAgICAgICAgPFNob3dBbGxNZW51c0FmdGVyRGVsYXk+MTwvU2hvd0FsbE1lbnVzQWZ0ZXJEZWxheT4NCisgICAgICAgICAgICAgICAgPENvbW1hbmRzVXNhZ2U+MDAwMDAwMDAwMDAwPC9Db21tYW5kc1VzYWdlPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhclBhcmFtZXRlcnM+DQorICAgICAgICAgICAgPENvbW1hbmRNYW5hZ2VyPg0KKyAgICAgICAgICAgICAgICA8Q29tbWFuZHNXaXRob3V0SW1hZ2VzPjA2MDAyMEYxMDAwMDEwRjAwMDAwMDBGMDAwMDAyMEYwMDAwMDMwRjAwMDAwNjBGMDAwMDA8L0NvbW1hbmRzV2l0aG91dEltYWdlcz4NCisgICAgICAgICAgICAgICAgPE1lbnVVc2VySW1hZ2VzPjAwMDA8L01lbnVVc2VySW1hZ2VzPg0KKyAgICAgICAgICAgIDwvQ29tbWFuZE1hbmFnZXI+DQorICAgICAgICAgICAgPFBhbmUtNTkzOTM+DQorICAgICAgICAgICAgICAgIDxJRD4wPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMERDMDMwMDAwODAwNzAwMDBGNTAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtNTkzOTM+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTU5MzkzPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTU5MzkzPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUwPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDAzNjAxMDAwMERCMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTA+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUwPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUwPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUwIC8+DQorICAgICAgICAgICAgPFBhbmUtLTE+DQorICAgICAgICAgICAgICAgIDxJRD40Mjk0OTY3Mjk1PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMTgwMTAwMDBENDAxMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDM5MDAwMDAwMTgwMTAwMDA0NDAyMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtLTE+DQorICAgICAgICAgICAgPEJhc2VQYW5lLS0xPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLS0xPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTE8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTE+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIxPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTM5OTwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjM3MzwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjkzPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgICAgIDxGaWx0ZXJMZXZlbD4yPC9GaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICAgICAgPExpdmVGaWxlPkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxCdWlsZExvZy5sb2c8L0xpdmVGaWxlPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUxvZ0VuYWJsZWQ+MDwvTGl2ZUxvZ0VuYWJsZWQ+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsdGVyTGV2ZWw+LTE8L0xpdmVGaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNTE+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTM+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MzwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDA2NTAyMDAwMDgwMDcwMDAwMjMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUzPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1Mz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1Mz4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MyAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTY8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTY+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTY+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTc+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NzwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA2OTAyMDAwMDdDMDcwMDAwMDMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1Nz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1Nz4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NyAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTg8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMDAzMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1OD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTg+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTg+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTggLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1OT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU5PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDY5MDIwMDAwN0MwNzAwMDAwMzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTk+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU5IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjA+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA2OTAyMDAwMDdDMDcwMDAwMDMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYwPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2MD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2MD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjI8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMDAzMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2Mj4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjI+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjI+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjIgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Mj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUyPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwQUQwMjAwMDBEMDAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwQUQwMjAwMDBCMzAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUyPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1Mj4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1Mj4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MiAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTQ8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDAzNjAxMDAwMERCMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTQ+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU0IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTU+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMDM2MDEwMDAwREIwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1NT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTU+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTU+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTUgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2MT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYxPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMTgwMTAwMDBENDAxMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDVBMDAwMDAwMTQwMTAwMDBEMDAxMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjE+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYxPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYxPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYxIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MzwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDA1NjAwMDAwMDE4MDEwMDAwNDQwMjAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8RG9ja2luZ01hbmFnZXItMjU2Pg0KKyAgICAgICAgICAgICAgICA8RG9ja2luZ1BhbmVBbmRQYW5lRGl2aWRlcnM+MDAwMDAwMDAwQzAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYxODAxMDAwMDM5MDAwMDAwMUMwMTAwMDA0NDAyMDAwMDAxMDAwMDAwMDIwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGMDIwMDAwMDAwRDg1MDAwMDBGODUwMDAwRkZGRjAyMDAwQjAwNDM1NDYxNjI2MjY1NjQ1MDYxNkU2NTAwMTAwMDAwMDEwMDAwMDAwMDAwMDAwMDFEMDAwMDAwMTgwMTAwMDBENDAxMDAwMDAwMDAwMDAwMzkwMDAwMDAxODAxMDAwMDQ0MDIwMDAwMDAwMDAwMDA0MDEwMDA1NjAyMDAwMDAwRkZGRUZGMEU1MzAwNkYwMDc1MDA3MjAwNjMwMDY1MDAyMDAwNDIwMDcyMDA2RjAwNzcwMDczMDA2NTAwNzIwMDAwMDAwMDAwMEQ4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwOTU3MDA2RjAwNzIwMDZCMDA3MzAwNzAwMDYxMDA2MzAwNjUwMDAxMDAwMDAwMEY4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMEQ4NTAwMDAwMTAwMDAwMEZGRkZGRkZGMEQ4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwNzg1MDAwMDAxMDAwMDAwMDc4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwNjg1MDAwMDAxMDAwMDAwMDY4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwNDg1MDAwMDAxMDAwMDAwMDQ4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDA0NDAyMDAwMDgwMDcwMDAwNDgwMjAwMDAwMTAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDQxRkRGRkZGOEIwMDAwMDBGRkZGRkZGRjA4MDAwMDAwMDM4NTAwMDAwNTg1MDAwMDA4ODUwMDAwMDk4NTAwMDAwQTg1MDAwMDBCODUwMDAwMEM4NTAwMDAwRTg1MDAwMDAxODAwMDgwMDAwMDAxMDAwMDAwMDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDAwMDAwMDAwMDQ4MDIwMDAwODAwNzAwMDBEQzAzMDAwMDAwMDAwMDAwNDA4MDAwNTYwODAwMDAwMEZGRkVGRjA1NDIwMDc1MDA2OTAwNkMwMDY0MDAwMTAwMDAwMDAzODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEU0MzAwNEQwMDUzMDA0OTAwNTMwMDJEMDA1MDAwNjEwMDYzMDA2QjAwMjAwMDRDMDA2RjAwNjcwMDAwMDAwMDAwMDU4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwOTQ0MDA2NTAwNjIwMDc1MDA2NzAwMjAwMDRDMDA2RjAwNjcwMDAxMDAwMDAwMDg4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwQzQ0MDA2NTAwNjMwMDZDMDA2MTAwNzIwMDYxMDA3NDAwNjkwMDZGMDA2RTAwNzMwMDAwMDAwMDAwMDk4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwQTUyMDA2NTAwNjYwMDY1MDA3MjAwNjUwMDZFMDA2MzAwNjUwMDczMDAwMDAwMDAwMDBBODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEQ0NjAwNjkwMDZFMDA2NDAwMjAwMDY5MDA2RTAwMjAwMDQ2MDA2OTAwNkMwMDY1MDA3MzAwMDAwMDAwMDAwQjg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjE1NDEwMDZEMDA2MjAwNjkwMDY3MDA3NTAwNkYwMDc1MDA3MzAwMjAwMDQ0MDA2NTAwNjYwMDY5MDA2RTAwNjkwMDc0MDA2OTAwNkYwMDZFMDA3MzAwMDAwMDAwMDAwQzg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBCNTQwMDZGMDA2RjAwNkMwMDIwMDA0RjAwNzUwMDc0MDA3MDAwNzUwMDc0MDAwMDAwMDAwMDBFODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjAzODUwMDAwMDEwMDAwMDBGRkZGRkZGRjAzODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDI4NTAwMDAwMTAwMDAwMDAyODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPC9Eb2NraW5nUGFuZUFuZFBhbmVEaXZpZGVycz4NCisgICAgICAgICAgICA8L0RvY2tpbmdNYW5hZ2VyLTI1Nj4NCisgICAgICAgICAgICA8TUZDVG9vbEJhci0zNDA0OD4NCisgICAgICAgICAgICAgICAgPE5hbWU+Q01TSVMtUGFjazwvTmFtZT4NCisgICAgICAgICAgICAgICAgPEJ1dHRvbnM+MDAyMDAwMDAwMTAwMDAwMDAyMDBGRkZGMDEwMDExMDA0MzRENDY0MzU0NkY2RjZDNDI2MTcyNDI3NTc0NzQ2RjZFRDA4NDAwMDAwMDAwMDQwMDBDMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MEQxODQwMDAwMDAwMDAwMDAwRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAwMDAwMDAwRkZGRUZGMEE0MzAwNEQwMDUzMDA0OTAwNTMwMDJEMDA1MDAwNjEwMDYzMDA2QjAwRkY3RjAwMDA8L0J1dHRvbnM+DQorICAgICAgICAgICAgPC9NRkNUb29sQmFyLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNDg8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjBBMDAwMDAwMEEwMDAwMDA2RTAwMDAwMDZFMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDMwMDAwMUMwMDAwMDA0NzAzMDAwMDM4MDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+ODE5MjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4xPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA0OD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNDg+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNDg+DQorICAgICAgICAgICAgPE1GQ1Rvb2xCYXItMzQwNDk+DQorICAgICAgICAgICAgICAgIDxOYW1lPk1haW48L05hbWU+DQorICAgICAgICAgICAgICAgIDxCdXR0b25zPjAwMjAwMDAwMDEwMDAwMDAyMDAwRkZGRjAxMDAxMTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQyNzU3NDc0NkY2RTAwRTEwMDAwMDAwMDAwMDAzNjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMUUxMDAwMDAwMDAwMDAwMzcwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDNFMTAwMDAwMDAwMDQwMDM5MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwODEwMDAwMDAwMDAwMDAxQTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDdFMTAwMDAwMDAwMDQwMDNDMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyM0UxMDAwMDAwMDAwNDAwM0UwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjJFMTAwMDAwMDAwMDQwMDNEMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI1RTEwMDAwMDAwMDA0MDA0MDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMkJFMTAwMDAwMDAwMDQwMDQzMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDJDRTEwMDAwMDAwMDA0MDA0NDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDBGRkZGMDEwMDE5MDA0MzRENDY0MzU0NkY2RjZDNDI2MTcyNDM2RjZENjI2RjQyNkY3ODQyNzU3NDc0NkY2RTQyODEwMDAwMDAwMDA0MDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDc4MDAwMDAwMDIwMDIwNTBGRkZGRkZGRkZGRkVGRjAwOTYwMDAwMDAwMDAwMDAwMDAwMDAwMTgwMjE4MTAwMDAwMDAwMDQwMDJEMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI0RTEwMDAwMDAwMDA0MDAzRjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyOEUxMDAwMDAwMDAwNDAwNDEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjlFMTAwMDAwMDAwMDQwMDQyMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAyODEwMDAwMDAwMDA0MDAxQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyOTgxMDAwMDAwMDAwNDAwMzEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjc4MTAwMDAwMDAwMDQwMDJGMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI4ODEwMDAwMDAwMDA0MDAzMDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAxRDgxMDAwMDAwMDAwMDAwMjkwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMUU4MTAwMDAwMDAwMDQwMDJBMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwQjgxMDAwMDAwMDAwNDAwMjAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEM4MTAwMDAwMDAwMDAwMDIxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDVGODYwMDAwMDAwMDAwMDAzNTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEU4MTAwMDAwMDAwMDAwMDIzMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBGODEwMDAwMDAwMDAwMDAyNDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAwMDAwMDAwRkZGRUZGMDQ0RDAwNjEwMDY5MDA2RTAwRkY3RjAwMDA8L0J1dHRvbnM+DQorICAgICAgICAgICAgPC9NRkNUb29sQmFyLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNDk8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjBBMDAwMDAwMEEwMDAwMDA2RTAwMDAwMDZFMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMUMwMDAwMDAwMDAzMDAwMDM5MDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+ODE5MjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4xPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA0OT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNDk+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNDk+DQorICAgICAgICA8L0Rlc2t0b3A+DQorICAgICAgICA8TURJV2luZG93cz4NCisgICAgICAgICAgICA8TURJQ2xpZW50QXJlYS0wPg0KKyAgICAgICAgICAgICAgICA8TURJVGFic1N0YXRlPjAxMDAwMDAwMDMwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDI4MDAwMDAwMjgwMDAwMDAwMTAwMDAwMDAzMDAwMDAwMDIwMDAwMDAwMTAwMDAwMEZGRkVGRjI0MjQwMDU3MDA1MzAwNUYwMDQ0MDA0OTAwNTIwMDI0MDA1QzAwMkUwMDJFMDA1QzAwMkUwMDJFMDA1QzAwNTMwMDZGMDA3NTAwNzIwMDYzMDA2NTAwNUMwMDY1MDA3NjAwNjUwMDZFMDA3NDAwNUYwMDY3MDA3MjAwNkYwMDc1MDA3MDAwNzMwMDJFMDA2MzAwMDEwMDAwMDBGRkZGMDEwMDE0MDA0OTY2NDM2RjZFNzQ2NTZFNzQ1Mzc0NkY3MjYxNjc2NTQ5NkQ3MDZDRkZGRUZGMDBGRkZFRkZGRjI4MDEzQzAwM0YwMDc4MDA2RDAwNkMwMDIwMDA3NjAwNjUwMDcyMDA3MzAwNjkwMDZGMDA2RTAwM0QwMDIyMDAzMTAwMkUwMDMwMDAyMjAwMjAwMDY1MDA2RTAwNjMwMDZGMDA2NDAwNjkwMDZFMDA2NzAwM0QwMDIyMDA1NTAwNTQwMDQ2MDAyRDAwMzgwMDIyMDAzRjAwM0UwMDBBMDAzQzAwNTIwMDZGMDA2RjAwNzQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA0RTAwNzUwMDZEMDA1MjAwNkYwMDc3MDA3MzAwM0UwMDMxMDAzQzAwMkYwMDRFMDA3NTAwNkQwMDUyMDA2RjAwNzcwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNEUwMDc1MDA2RDAwNDMwMDZGMDA2QzAwNzMwMDNFMDAzMTAwM0MwMDJGMDA0RTAwNzUwMDZEMDA0MzAwNkYwMDZDMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU4MDA1MDAwNkYwMDczMDAzRTAwMzAwMDNDMDAyRjAwNTgwMDUwMDA2RjAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwM0UwMDMwMDAzQzAwMkYwMDU5MDA1MDAwNkYwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwM0UwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzMDAwM0MwMDJGMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzMjAwMzIwMDM4MDAzQzAwMkYwMDU5MDA1MDAwNkYwMDczMDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDUzMDA3NDAwNjEwMDcyMDA3NDAwMzIwMDNFMDAzOTAwMzAwMDMwMDAzNTAwM0MwMDJGMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDMyMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwMzIwMDNFMDAzOTAwMzAwMDMyMDAzNTAwM0MwMDJGMDA1MzAwNjUwMDZDMDA0NTAwNkUwMDY0MDAzMjAwM0UwMDBBMDAzQzAwMkYwMDUyMDA2RjAwNkYwMDc0MDAzRTAwMEEwMEZGRkVGRjBFNjUwMDc2MDA2NTAwNkUwMDc0MDA1RjAwNjcwMDcyMDA2RjAwNzUwMDcwMDA3MzAwMkUwMDYzMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYyODI0MDA1NzAwNTMwMDVGMDA0NDAwNDkwMDUyMDAyNDAwNUMwMDJFMDAyRTAwNUMwMDJFMDAyRTAwNUMwMDUzMDA2RjAwNzUwMDcyMDA2MzAwNjUwMDVDMDA2OTAwNkUwMDYzMDA2QzAwNzUwMDY0MDA2NTAwNUMwMDQ2MDA3MjAwNjUwMDY1MDA1MjAwNTQwMDRGMDA1MzAwMkUwMDY4MDAwMTAwMDAwMDAxODBGRkZFRkYwMEZGRkVGRkZGMkEwMTNDMDAzRjAwNzgwMDZEMDA2QzAwMjAwMDc2MDA2NTAwNzIwMDczMDA2OTAwNkYwMDZFMDAzRDAwMjIwMDMxMDAyRTAwMzAwMDIyMDAyMDAwNjUwMDZFMDA2MzAwNkYwMDY0MDA2OTAwNkUwMDY3MDAzRDAwMjIwMDU1MDA1NDAwNDYwMDJEMDAzODAwMjIwMDNGMDAzRTAwMEEwMDNDMDA1MjAwNkYwMDZGMDA3NDAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDRFMDA3NTAwNkQwMDUyMDA2RjAwNzcwMDczMDAzRTAwMzEwMDNDMDAyRjAwNEUwMDc1MDA2RDAwNTIwMDZGMDA3NzAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA0RTAwNzUwMDZEMDA0MzAwNkYwMDZDMDA3MzAwM0UwMDMxMDAzQzAwMkYwMDRFMDA3NTAwNkQwMDQzMDA2RjAwNkMwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTgwMDUwMDA2RjAwNzMwMDNFMDAzMDAwM0MwMDJGMDA1ODAwNTAwMDZGMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU5MDA1MDAwNkYwMDczMDAzRTAwMzAwMDNDMDAyRjAwNTkwMDUwMDA2RjAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDNFMDAzMDAwM0MwMDJGMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA0NTAwNkUwMDY0MDAzRTAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU4MDA1MDAwNkYwMDczMDAzMjAwM0UwMDMwMDAzQzAwMkYwMDU4MDA1MDAwNkYwMDczMDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU5MDA1MDAwNkYwMDczMDAzMjAwM0UwMDM3MDAzMTAwMzAwMDNDMDAyRjAwNTkwMDUwMDA2RjAwNzMwMDMyMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzMjAwM0UwMDMyMDAzMTAwMzQwMDMyMDAzNDAwM0MwMDJGMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDMyMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwMzIwMDNFMDAzMjAwMzEwMDM0MDAzMzAwMzMwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwMzIwMDNFMDAwQTAwM0MwMDJGMDA1MjAwNkYwMDZGMDA3NDAwM0UwMDBBMDBGRkZFRkYwQTQ2MDA3MjAwNjUwMDY1MDA1MjAwNTQwMDRGMDA1MzAwMkUwMDY4MDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYzRDI0MDA1NzAwNTMwMDVGMDA0NDAwNDkwMDUyMDAyNDAwNUMwMDJFMDAyRTAwNUMwMDJFMDAyRTAwNUMwMDUzMDA2RjAwNzUwMDcyMDA2MzAwNjUwMDVDMDA3MDAwNkYwMDcyMDA3NDAwNjEwMDYyMDA2QzAwNjUwMDVDMDA0OTAwNDEwMDUyMDA1QzAwNDEwMDUyMDA0RDAwNUYwMDQzMDA0MTAwMzUwMDVGMDA0RTAwNkYwMDVGMDA0NzAwNDkwMDQzMDA1QzAwNzAwMDZGMDA3MjAwNzQwMDZEMDA2MTAwNjMwMDcyMDA2RjAwMkUwMDY4MDAwMTAwMDAwMDAxODBGRkZFRkYwMEZGRkVGRkZGMjcwMTNDMDAzRjAwNzgwMDZEMDA2QzAwMjAwMDc2MDA2NTAwNzIwMDczMDA2OTAwNkYwMDZFMDAzRDAwMjIwMDMxMDAyRTAwMzAwMDIyMDAyMDAwNjUwMDZFMDA2MzAwNkYwMDY0MDA2OTAwNkUwMDY3MDAzRDAwMjIwMDU1MDA1NDAwNDYwMDJEMDAzODAwMjIwMDNGMDAzRTAwMEEwMDNDMDA1MjAwNkYwMDZGMDA3NDAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDRFMDA3NTAwNkQwMDUyMDA2RjAwNzcwMDczMDAzRTAwMzEwMDNDMDAyRjAwNEUwMDc1MDA2RDAwNTIwMDZGMDA3NzAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA0RTAwNzUwMDZEMDA0MzAwNkYwMDZDMDA3MzAwM0UwMDMxMDAzQzAwMkYwMDRFMDA3NTAwNkQwMDQzMDA2RjAwNkMwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTgwMDUwMDA2RjAwNzMwMDNFMDAzMDAwM0MwMDJGMDA1ODAwNTAwMDZGMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU5MDA1MDAwNkYwMDczMDAzRTAwMzAwMDNDMDAyRjAwNTkwMDUwMDA2RjAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDNFMDAzMDAwM0MwMDJGMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA0NTAwNkUwMDY0MDAzRTAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU4MDA1MDAwNkYwMDczMDAzMjAwM0UwMDMwMDAzQzAwMkYwMDU4MDA1MDAwNkYwMDczMDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU5MDA1MDAwNkYwMDczMDAzMjAwM0UwMDM4MDAzMTAwM0MwMDJGMDA1OTAwNTAwMDZGMDA3MzAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDMyMDAzRTAwMzMwMDMyMDAzMzAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDMyMDAzRTAwMzMwMDMyMDAzMzAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwMzIwMDNFMDAwQTAwM0MwMDJGMDA1MjAwNkYwMDZGMDA3NDAwM0UwMDBBMDBGRkZFRkYwQjcwMDA2RjAwNzIwMDc0MDA2RDAwNjEwMDYzMDA3MjAwNkYwMDJFMDA2ODAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAxMDAwMDAwMEM1RDRGMjAwRkZEQzc4MDBCRUNFQTEwMEYwQTBBMTAwQkNBOEUxMDA5Q0MxQjYwMEY3Qjg4NjAwRDlBREMyMDBBNUMyRDcwMEIzQTZCRTAwRUFENkEzMDBGNkZBN0QwMEI1RTk5RDAwNUZDM0NGMDBDMTgzODMwMENBQ0FENTAwMDEwMDAwMDAwMTAwMDAwMDAyMDAwMDAwMUMwMTAwMDA1NjAwMDAwMDgwMDcwMDAwNjEwMjAwMDA8L01ESVRhYnNTdGF0ZT4NCisgICAgICAgICAgICA8L01ESUNsaWVudEFyZWEtMD4NCisgICAgICAgIDwvTURJV2luZG93cz4NCisgICAgPC9XaW5kb3dTdG9yYWdlPg0KIDwvV29ya3NwYWNlPg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9DRENDb21tYW5kQ29uc29sZS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0NEQ0NvbW1hbmRDb25zb2xlLmMKaW5kZXggMTU4ODY5My4uMDlkZDk2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0NEQ0NvbW1hbmRDb25zb2xlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0NEQ0NvbW1hbmRDb25zb2xlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogTk9URTogIFRoaXMgZmlsZSB1c2VzIGEgdGhpcmQgcGFydHkgVVNCIENEQyBkcml2ZXIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA2YjYyNWJkLi5kZDMyZTgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmluZGV4IDI1MWNhYWQuLjE3NjQ5MjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDIwN2IzNzAuLmQwZmNlMjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDk4MWM2NWUuLjIzMTE2NDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKaW5kZXggOTQ2MjViZC4uYmY3NTZlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUwpAQCAtMSw3NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOw0KLTsgICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLTsgICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi07ICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotOyAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi07ICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLTsgICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLTsgICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotOyAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlFWFBPUlQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJRVhQT1JUIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0xFRHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9MRURzLmMKaW5kZXggOTA4ZTBiMi4uOTZiYzVhYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0xFRHMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvTEVEcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvYmxpbmt5X2RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBhODY5MWQ4Li42NDEzODdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvYmxpbmt5X2RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvYmxpbmt5X2RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL21haW4uYwppbmRleCBmZTczZjBmLi4xNDhjNjU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBhODY5MWQ4Li42NDEzODdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQ0RDQ29tbWFuZENvbnNvbGUuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCmluZGV4IDA0MWNkZjIuLjU5MzE2ZjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIE5PVEU6ICBUaGlzIGZpbGUgdXNlcyBhIHRoaXJkIHBhcnR5IFVTQiBDREMgZHJpdmVyLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggODMzNjdiOC4uNzRmNjQzMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYwppbmRleCBjYzEyZjQ3Li45ZTBhNjZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAwZTVkOTU1Li41YjVmNDBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBmMjI4YmMxLi40ZGYwZmQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCmluZGV4IDViMDBhMDMuLjBmNzFjMzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsNCi07ICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi07ICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotOyAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLTsgICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotOyAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi07ICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi07ICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLTsgICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvTEVEcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0xFRHMuYwppbmRleCA5MDhlMGIyLi45NmJjNWFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvTEVEcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9MRURzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL1JUT1NEZW1vLmV3ZAppbmRleCA1ODk3YzI0Li44YTdjMTQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdkCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9SVE9TRGVtby5ld2QKQEAgLTEsMjY5NyArMSwyODM0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5zcmFtPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgIDxmaWxlVmVyc2lvbj4zPC9maWxlVmVyc2lvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5zcmFtPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xyZXNvdXJjZXNcZXdhcm1cc2FtYTVkNHgtZWstc3JhbS5tYWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41LjUwLjAuNTE5MDc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuMjAuMi43NDE4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEF0dGFjaFRvUHJvZ3JhbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xyZXNvdXJjZXNcZXdhcm1cc2FtYTVkNHgtZWstc3JhbS5tYWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41LjUwLjAuNTE5MDc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHluRHJpdmVyTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcuMjAuMi43NDE4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hc3NFcmFzZUJlZm9yZUZsYXNoaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DQURJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDYWRpTWVtb3J5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZhc3QgTW9kZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaEJvYXJkUGF0aFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEQVBOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RlYnVnQWNjZXNzUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPGRlYnVnZ2VyUGx1Z2lucz4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTWJlZFxNYmVkQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xUYXJnZXRBY2Nlc3NTZXJ2ZXJcVGFyZ2V0QWNjZXNzU2VydmVyLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+ZGRyYW08L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFOR0VMX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQW5nZWxIZWFydGJlYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbXVuaWNhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTkdFTFRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9BbmdlbExvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QW5nZWxMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTU8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rSW5pdGlhbFNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RvSmxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQ29tbVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtTcGVlZFJhZGlvVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NVU0JEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TUFDUkFJR09SX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWc8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11U3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjBAQVJNN1RETUk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZ288L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVudXNlZEFkZHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDAwODAwMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQRU1pY3JvQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvSW50ZXJmYWNlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9SZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvSnRhZ1NwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+I1VOSU5JVElBTElaRUQjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1NlcmlhbFBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1RDUElQQXV0b1NjYW5OZXR3b3JrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1RDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAuMC4wLjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9Db21tQ21kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5SRElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DWERTMTAwQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8ZGVidWdnZXJQbHVnaW5zPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxIQ0NXYXJlXEhDQ1dhcmUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXEFWSVhcQVZJWC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xNUVhcTVFYUnRvc1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXFN5bUxpc3RcU3ltTGlzdC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPmRkcmFtPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4LWVrLWRkcmFtLm1hYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUuNDEuMi41MTc5ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHluRHJpdmVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkpMSU5LX0lEPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny4yMC4yLjc0MTg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkQXR0YWNoVG9Qcm9ncmFtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MzQ2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BUk1TSU1fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFOR0VMX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQW5nZWxIZWFydGJlYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbXVuaWNhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTkdFTFRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9BbmdlbExvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QW5nZWxMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTU8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NUY3BJcEFsdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUEVNaWNyb0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0ludGVyZmFjZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0p0YWdTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiNVTklOSVRJQUxJWkVEIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9TZXJpYWxQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9UQ1BJUEF1dG9TY2FuTmV0d29yazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwLjAuMC4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvQ29tbUNtZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1hEUzEwMEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPGRlYnVnZ2VyUGx1Z2lucz4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcSENDV2FyZVxIQ0NXYXJlLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xTYWZlUlRPU1xTYWZlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xTeW1MaXN0XFN5bUxpc3QuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xyZXNvdXJjZXNcZXdhcm1cc2FtYTVkNHgtZWstZGRyYW0ubWFjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NS40MS4yLjUxNzk4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFzc0VyYXNlQmVmb3JlRmxhc2hpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNBRElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NhZGlNZW1vcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmFzdCBNb2RlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JSkVUX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+ODwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJlZmVyRVRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNldHRpbmdzTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEQVBOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RlYnVnQWNjZXNzUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPGRlYnVnZ2VyUGx1Z2lucz4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTWJlZFxNYmVkQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xUYXJnZXRBY2Nlc3NTZXJ2ZXJcVGFyZ2V0QWNjZXNzU2VydmVyLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9SVE9TRGVtby5ld3AgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdwCmluZGV4IGYxMDMyNWQuLjQwYTc2MDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9SVE9TRGVtby5ld3AKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL1JUT1NEZW1vLmV3cApAQCAtMSwyMTYwICsxLDIzMDMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPnNyYW08L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yMjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICA8ZmlsZVZlcnNpb24+MzwvZmlsZVZlcnNpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+c3JhbTwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5WYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW1cYmluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW1cb2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcsIHdpdGhvdXQgbXVsdGlieXRlIHN1cHBvcnQuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBmbGFncy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZQVTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3RTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjIwLjIuNzQxODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+RGVmYXVsdAlOb25lPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HQkVDb3JlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW1cYmluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW1cb2JqPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLCB3aXRob3V0IG11bHRpYnl0ZSBzdXBwb3J0Ljwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gZmxhZ3MuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3RTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjguMjAuMS4xNDE4MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HQkVDb3JlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db3JlVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDTVNJU1BhY2tTZWxlY3REZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2dMaWJIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGliQWRkaXRpb25hbExvY2FsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50ZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlVGFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZURpc3BsYXlPbmx5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RFNQRXh0ZW5zaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM0PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UGExMzEsIFBhMDM5PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTExMTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliYm9hcmRfc2FtYTVkNHgtZWs8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliY2hpcF9zYW1hNWQ0eC9pbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxDb21tb25caW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxGdWxsX0RlbW88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5TT0ZUUEFDSzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnMyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1JUVEkyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zYW1hNWQ0eDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtLmJpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCisgICAgICAgICAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KKyAgICAgICAgICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTGliSU9Db25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+WExpbmtNaXNyYUhhbmRsZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJbnB1dEZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbS5vdXQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xyZXNvdXJjZXNcZXdhcm1cc2FtYTVkNHhcc3JhbS5pY2Y8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5yZXNldEhhbmRsZXI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZV9BbHREZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0hlYXBTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2NhbGVTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+ZGRyYW08L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zYW1hNWQ0eDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UGExMzEsIFBhMDM5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMTExMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliYm9hcmRfc2FtYTVkNHgtZWs8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHg8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHgvaW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlNPRlRQQUNLPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT44MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT44PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtLmJpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCi0gICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KLSAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW0ub3V0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4XHNyYW0uaWNmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+cmVzZXRIYW5kbGVyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5kZHJhbTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjIyPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5WYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtXGJpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5kZHJhbVxvYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtXG9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RlBVPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Njwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjQuMzBBPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny4yMC4yLjc0MTg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UGExMzEsIFBhMDM5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wMDAwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliYm9hcmRfc2FtYTVkNHgtZWs8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHg8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHgvaW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlNPRlRQQUNLPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+ZGRyYW08L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxsaWJyYXJpZXM8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ZGRyYW0uYmluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DVVNUT008L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KLSAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQotICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE2PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ZGRyYW0ub3V0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4XGRkcmFtLmljZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnJlc2V0SGFuZGxlcjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkF0bWVsIEZpbGVzPC9uYW1lPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ZGRyYW1cYmluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtXG9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ZGRyYW1cb2JqPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40LjMwQTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjguMjAuMS4xNDE4MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HQkVDb3JlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db3JlVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDTVNJU1BhY2tTZWxlY3REZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2dMaWJIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGliQWRkaXRpb25hbExvY2FsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50ZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlVGFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZURpc3BsYXlPbmx5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RFNQRXh0ZW5zaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM0PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD00PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjAwMDAwMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmJvYXJkX3NhbWE1ZDR4LWVrPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliY2hpcF9zYW1hNWQ0eDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHgvaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2U8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTEk8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcRnVsbF9EZW1vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+U09GVFBBQ0s8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NSVFRJMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cbGlicmFyaWVzPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkLy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZHJhbS5iaW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DVVNUT008L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQorICAgICAgICAgICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCisgICAgICAgICAgICAgICAgPGhhc1ByaW8+MDwvaGFzUHJpbz4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCisgICAgICAgICAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtLm91dDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHJlc291cmNlc1xld2FybVxzYW1hNWQ0eFxkZHJhbS5pY2Y8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5yZXNldEhhbmRsZXI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZV9BbHREZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0hlYXBTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2NhbGVTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5saWJib2FyZF9zYW1hNWQ0eC1lazwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcYm9hcmRfY3N0YXJ0dXBfaWFyLnM8L25hbWU+DQotICAgICAgICA8ZXhjbHVkZWQ+DQotICAgICAgICAgIDxjb25maWd1cmF0aW9uPnNyYW08L2NvbmZpZ3VyYXRpb24+DQotICAgICAgICAgIDxjb25maWd1cmF0aW9uPmRkcmFtPC9jb25maWd1cmF0aW9uPg0KLSAgICAgICAgPC9leGNsdWRlZD4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHNvdXJjZVxib2FyZF9tZW1vcmllcy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcZGJnX3V0aWwuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGRiZ3VfY29uc29sZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcbGVkLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KKyAgICAgICAgPG5hbWU+QXRtZWwgRmlsZXM8L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+bGliYm9hcmRfc2FtYTVkNHgtZWs8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcYm9hcmRfY3N0YXJ0dXBfaWFyLnM8L25hbWU+DQorICAgICAgICAgICAgICAgIDxleGNsdWRlZD4NCisgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPnNyYW08L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj5kZHJhbTwvY29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgPC9leGNsdWRlZD4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcYm9hcmRfbG93bGV2ZWwuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcZGJnX3V0aWwuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcZGJndV9jb25zb2xlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+bGliY2hpcF9zYW1hNWQ0eDwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXGFpYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcY3AxNVxjcDE1LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxjcDE1XGNwMTVfYXNtX2lhci5zPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXG1tdS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBpby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBpb19pdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBpdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBtYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHRjLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VcVVNCRF9IQUwuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPlVTQjwvbmFtZT4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPmNvbW1vbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Y2RjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY2RjXENEQ0xpbmVDb2RpbmcuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNkY1xDRENTZXRDb250cm9sTGluZVN0YXRlUmVxdWVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5jb3JlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY29yZVxVU0JEZXNjcmlwdG9ycy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY29yZVxVU0JSZXF1ZXN0cy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5kZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPmNkYy1zZXJpYWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjZGMtc2VyaWFsXENEQ0RTZXJpYWwuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbF9DYWxsYmFja3MuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbERyaXZlci5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY2RjLXNlcmlhbFxDRENEU2VyaWFsUG9ydC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5jb3JlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JELmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjb3JlXFVTQkRDYWxsYmFja3MuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRERyaXZlci5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JERHJpdmVyQ2FsbGJhY2tzLmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxVU0JERHJpdmVyRGVzY3JpcHRvcnMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KICAgICA8L2dyb3VwPg0KICAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+bGliY2hpcF9zYW1hNWQ0eDwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxhaWMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxjcDE1XGNwMTUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxjcDE1XGNwMTVfYXNtX2lhci5zPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxtbXUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VccGlvLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBpb19pdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwaXQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VccG1jLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHRjLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXFVTQkRfSEFMLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHdkdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPlVTQjwvbmFtZT4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5jb21tb248L25hbWU+DQotICAgICAgICA8Z3JvdXA+DQotICAgICAgICAgIDxuYW1lPmNkYzwvbmFtZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY2RjXENEQ0xpbmVDb2RpbmcuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGNvbW1vblxjZGNcQ0RDU2V0Q29udHJvbExpbmVTdGF0ZVJlcXVlc3QuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPC9ncm91cD4NCi0gICAgICAgIDxncm91cD4NCi0gICAgICAgICAgPG5hbWU+Y29yZTwvbmFtZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY29yZVxVU0JEZXNjcmlwdG9ycy5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNvcmVcVVNCUmVxdWVzdHMuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPC9ncm91cD4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPmRldmljZTwvbmFtZT4NCi0gICAgICAgIDxncm91cD4NCi0gICAgICAgICAgPG5hbWU+Y2RjLXNlcmlhbDwvbmFtZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY2RjLXNlcmlhbFxDRENEU2VyaWFsLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY2RjLXNlcmlhbFxDRENEU2VyaWFsX0NhbGxiYWNrcy5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbERyaXZlci5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbFBvcnQuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPC9ncm91cD4NCi0gICAgICAgIDxncm91cD4NCi0gICAgICAgICAgPG5hbWU+Y29yZTwvbmFtZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JELmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JEQ2FsbGJhY2tzLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JERHJpdmVyLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JERHJpdmVyQ2FsbGJhY2tzLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDwvZ3JvdXA+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcVVNCRERyaXZlckRlc2NyaXB0b3JzLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+Qmxpbmt5IERlbW88L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnJlZVJUT1MgU291cmNlPC9uYW1lPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+TWVtTWFuZzwvbmFtZT4NCisgICAgICAgIDxuYW1lPkJsaW5reSBEZW1vPC9uYW1lPg0KICAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L25hbWU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KICAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0QVNNLnM8L25hbWU+DQotICAgICAgPC9maWxlPg0KICAgICA8L2dyb3VwPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRpbWVycy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GcmVlUlRPUytDTEk8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTElcRnJlZVJUT1NfQ0xJLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZ1bGwgRGVtbzwvbmFtZT4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkNvbW1vbiBEZW1vIFRhc2tzPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb3VudHNlbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGR5bmFtaWMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCisgICAgICAgIDxuYW1lPkZyZWVSVE9TIFNvdXJjZTwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPk1lbU1hbmc8L25hbWU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydEFTTS5zPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZyZWVSVE9TK0NMSTwvbmFtZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTElcRnJlZVJUT1NfQ0xJLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZ1bGwgRGVtbzwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5Db21tb24gRGVtbyBUYXNrczwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXENEQ0NvbW1hbmRDb25zb2xlLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXHJlZ190ZXN0LlM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcRGVtb1xDb21tb25cRnJlZVJUT1NfUGx1c19DTElfRGVtb3NcU2FtcGxlLUNMSS1jb21tYW5kcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KICAgICA8L2dyb3VwPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXENEQ0NvbW1hbmRDb25zb2xlLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGNzdGFydHVwX3dpdGhfRnJlZVJUT1NfdmVjdG9ycy5zPC9uYW1lPg0KICAgICA8L2ZpbGU+DQogICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NfdGlja19jb25maWcuYzwvbmFtZT4NCiAgICAgPC9maWxlPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NDb25maWcuaDwvbmFtZT4NCiAgICAgPC9maWxlPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xyZWdfdGVzdC5TPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxMRURzLmM8L25hbWU+DQogICAgIDwvZmlsZT4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXERlbW9cQ29tbW9uXEZyZWVSVE9TX1BsdXNfQ0xJX0RlbW9zXFNhbXBsZS1DTEktY29tbWFuZHMuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbWFpbi5jPC9uYW1lPg0KICAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcY3N0YXJ0dXBfd2l0aF9GcmVlUlRPU192ZWN0b3JzLnM8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxGcmVlUlRPU190aWNrX2NvbmZpZy5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NDb25maWcuaDwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXExFRHMuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCi0gIDwvZmlsZT4NCiA8L3Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9tYWluLmMKaW5kZXggYzhmZDU2ZC4uYjJmMzRiNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KaW5kZXggNWJiNWFjYy4uNjJjMjFiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KQEAgLTEsMTYgKzEsMTMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxjcnVuPg0KLSAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gIDxmaWx0ZXJfZW50cmllcz4NCi0gICAgPGZpbHRlciBpbmRleD0iMCIgdHlwZT0iZGVmYXVsdCI+DQotICAgICAgPHR5cGU+KjwvdHlwZT4NCi0gICAgICA8c3RhcnRfZmlsZT4qPC9zdGFydF9maWxlPg0KLSAgICAgIDxlbmRfZmlsZT4qPC9lbmRfZmlsZT4NCi0gICAgICA8YWN0aW9uX2RlYnVnZ2VyPjA8L2FjdGlvbl9kZWJ1Z2dlcj4NCi0gICAgICA8YWN0aW9uX2xvZz4xPC9hY3Rpb25fbG9nPg0KLSAgICA8L2ZpbHRlcj4NCi0gIDwvZmlsdGVyX2VudHJpZXM+DQorICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgIDxmaWx0ZXJfZW50cmllcz4NCisgICAgICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KKyAgICAgICAgICAgIDx0eXBlPio8L3R5cGU+DQorICAgICAgICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCisgICAgICAgICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQorICAgICAgICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQorICAgICAgICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCisgICAgICAgIDwvZmlsdGVyPg0KKyAgICA8L2ZpbHRlcl9lbnRyaWVzPg0KIDwvY3J1bj4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKaW5kZXggODFhMTU5YS4uNTFmMzY0MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdApAQCAtMSw4NyArMSwzNDggQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCiA8UHJvamVjdD4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxEZWJ1Zy1Mb2c+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz4NCi0gICAgICA8QnVpbGQ+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+PC9CdWlsZD4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4yMTQ8L0NvbHVtbjA+PENvbHVtbjE+Mjc8L0NvbHVtbjE+PENvbHVtbjI+Mjc8L0NvbHVtbjI+PENvbHVtbjM+Mjc8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPERpc2Fzc2VtYmx5Pg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxpdGVtPjUwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+DQotICAgICAgICA8RGlzYXNtSGlzdG9yeS8+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PFNob3dDb2RlQ292ZXJhZ2U+MTwvU2hvd0NvZGVDb3ZlcmFnZT48U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz48L0Rpc2Fzc2VtYmx5Pg0KLSAgICA8QnJlYWtwb2ludHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjUwMDwvaXRlbT48aXRlbT4zNTwvaXRlbT48L2NvbC13aWR0aHM+PC9CcmVha3BvaW50cz48U1RBQ0tfMT48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4xPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxzdGFjaz5DU1RBQ0s8L3N0YWNrPjx3aWR0aD40PC93aWR0aD48dmFycz4xPC92YXJzPjxvZmZzZXQ+MDwvb2Zmc2V0Pjxjb2wtbmFtZXM+PGl0ZW0+RGF0YTwvaXRlbT48aXRlbT5GcmFtZTwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjxpdGVtPlZhcmlhYmxlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48L1NUQUNLXzE+PENhbGxTdGFjaz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4xPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxjb2wtbmFtZXM+PGl0ZW0+RnJhbWU8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjQwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+PC9DYWxsU3RhY2s+PFdBVENIXzE+PGV4cHJlc3Npb25zPjxpdGVtPnhUaWNrQ291bnQ8L2l0ZW0+PGl0ZW0vPjwvZXhwcmVzc2lvbnM+PGNvbC1uYW1lcz48aXRlbT5FeHByZXNzaW9uPC9pdGVtPjxpdGVtPkxvY2F0aW9uPC9pdGVtPjxpdGVtPlR5cGU8L2l0ZW0+PGl0ZW0+VmFsdWU8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjwvV0FUQ0hfMT48UmVnaXN0ZXI+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L1JlZ2lzdGVyPjxMb2NhbHM+PGNvbC1uYW1lcz48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjxpdGVtPlZhcmlhYmxlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjE4NTwvaXRlbT48L2NvbC13aWR0aHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L0xvY2Fscz48L1N0YXRpYz4NCi0gICAgPFdpbmRvd3M+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxXbmQxPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE5ODQxLTE4NzcxPC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE5MzE5LTE4NzgxPC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMT48V25kMj4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0zMDU5MC0xODc3NTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUyBTb3VyY2U8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TIFNvdXJjZS9wb3J0YWJsZTwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MgU291cmNlL3BvcnRhYmxlL01lbU1hbmc8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0Z1bGwgRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vT3V0cHV0PC9FeHBhbmRlZE5vZGU+PC9Ob2RlRGljdD48L1Nlc3Npb24+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMj48V25kNT48VGFicz48VGFiPjxJZGVudGl0eT5UYWJJRC00ODY5LTUxMTU8L0lkZW50aXR5PjxUYWJOYW1lPlJlZ2lzdGVyPC9UYWJOYW1lPjxGYWN0b3J5PlJlZ2lzdGVyPC9GYWN0b3J5PjxTZXNzaW9uPjxSRUcxPjA8L1JFRzE+PFJFRzI+MDwvUkVHMj48R3JvdXA+MDwvR3JvdXA+PFN0YXRlcz4wPC9TdGF0ZXM+PC9TZXNzaW9uPjwvVGFiPjwvVGFicz48U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQ1PjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xMTE8L1lQb3MyPjxTZWxTdGFydDI+NjEzMTwvU2VsU3RhcnQyPjxTZWxFbmQyPjYxMzE8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjM8L1lQb3MyPjxTZWxTdGFydDI+MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjA8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj43NTY8L1NlbFN0YXJ0Mj48U2VsRW5kMj43NTY8L1NlbEVuZDI+PC9UYWI+PC9QYW5lPjxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+PFNpemVzPjxQYW5lPjxYPjEwMDAwMDA8L1g+PFk+MTAwMDAwMDwvWT48L1BhbmU+PC9TaXplcz48U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT48L0VkaXRvcj4NCi0gICAgPFBvc2l0aW9ucz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFRvcD48Um93MD48U2l6ZXM+PFRvb2xiYXItMDA3MDUzRDg+PGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+PC9Ub29sYmFyLTAwNzA1M0Q4PjwvU2l6ZXM+PC9Sb3cwPjxSb3cxPjxTaXplcz48VG9vbGJhci0wRjQwQjA3MD48a2V5PmRlYnVnZ2VyZ3VpLmVudTE8L2tleT48L1Rvb2xiYXItMEY0MEIwNzA+PC9TaXplcz48L1JvdzE+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQyPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjcxODwvQm90dG9tPjxSaWdodD4yODg8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xNzI2MTk8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzMxNzA3PC9zaXplVmVydENZPjwvUmVjdD48L1duZDI+PC9TaXplcz48L1JvdzA+PC9MZWZ0PjxSaWdodD48Um93MD48U2l6ZXM+PFduZDU+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+NzE4PC9Cb3R0b20+PFJpZ2h0PjE5ODwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjAwPC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43MzE3MDc8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kNT48L1NpemVzPjwvUm93MD48L1JpZ2h0PjxCb3R0b20+PFJvdzA+PFNpemVzPjxXbmQxPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjE5ODwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4xNjg0PC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPjwvUmVjdD48L1duZDE+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCi0gIDwvRGVza3RvcD4NCisgICAgPERlc2t0b3A+DQorICAgICAgICA8U3RhdGljPg0KKyAgICAgICAgICAgIDxEZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgPC9EZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9CdWlsZD4NCisgICAgICAgICAgICA8V29ya3NwYWNlPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MjE0PC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+Mjc8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMj4yNzwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4zPjI3PC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICA8L1dvcmtzcGFjZT4NCisgICAgICAgICAgICA8RGlzYXNzZW1ibHk+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5EaXNhc3NlbWJseTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgPERpc2FzbUhpc3RvcnkgLz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+DQorICAgICAgICAgICAgICAgIDxTaG93SW5zdHJQcm9maWxpbmc+MTwvU2hvd0luc3RyUHJvZmlsaW5nPg0KKyAgICAgICAgICAgIDwvRGlzYXNzZW1ibHk+DQorICAgICAgICAgICAgPEJyZWFrcG9pbnRzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjUwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgPC9CcmVha3BvaW50cz4NCisgICAgICAgICAgICA8U1RBQ0tfMT4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4xPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxzdGFjaz5DU1RBQ0s8L3N0YWNrPg0KKyAgICAgICAgICAgICAgICA8d2lkdGg+NDwvd2lkdGg+DQorICAgICAgICAgICAgICAgIDx2YXJzPjE8L3ZhcnM+DQorICAgICAgICAgICAgICAgIDxvZmZzZXQ+MDwvb2Zmc2V0Pg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RGF0YTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkZyYW1lPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+TG9jYXRpb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UeXBlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFsdWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYXJpYWJsZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgPC9TVEFDS18xPg0KKyAgICAgICAgICAgIDxDYWxsU3RhY2s+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MTwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RnJhbWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjQwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgPC9DYWxsU3RhY2s+DQorICAgICAgICAgICAgPFdBVENIXzE+DQorICAgICAgICAgICAgICAgIDxleHByZXNzaW9ucz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPnhUaWNrQ291bnQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbSAvPg0KKyAgICAgICAgICAgICAgICA8L2V4cHJlc3Npb25zPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkxvY2F0aW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VHlwZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhbHVlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xNTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgPC9XQVRDSF8xPg0KKyAgICAgICAgICAgIDxSZWdpc3Rlcj4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgPC9SZWdpc3Rlcj4NCisgICAgICAgICAgICA8TG9jYWxzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+TG9jYXRpb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UeXBlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFsdWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYXJpYWJsZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTUwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTg1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgIDwvTG9jYWxzPg0KKyAgICAgICAgPC9TdGF0aWM+DQorICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTg0MS0xODc3MTwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTMxOS0xODc4MTwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDE+DQorICAgICAgICAgICAgPFduZDI+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMzA1OTAtMTg3NzU8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MgU291cmNlPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TIFNvdXJjZS9wb3J0YWJsZTwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUyBTb3VyY2UvcG9ydGFibGUvTWVtTWFuZzwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GdWxsIERlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vT3V0cHV0PC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMj4NCisgICAgICAgICAgICA8V25kNT4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC00ODY5LTUxMTU8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPlJlZ2lzdGVyPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlJlZ2lzdGVyPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UkVHMT4wPC9SRUcxPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UkVHMj4wPC9SRUcyPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JvdXA+MDwvR3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGF0ZXM+MDwvU3RhdGVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDU+DQorICAgICAgICA8L1dpbmRvd3M+DQorICAgICAgICA8RWRpdG9yPg0KKyAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj4xMTE8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42MTMxPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42MTMxPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjA8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjA8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjc1NjwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NzU2PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT4NCisgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICAgICAgPFg+MTAwMDAwMDwvWD4NCisgICAgICAgICAgICAgICAgICAgIDxZPjEwMDAwMDA8L1k+DQorICAgICAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgIDxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPg0KKyAgICAgICAgPC9FZGl0b3I+DQorICAgICAgICA8UG9zaXRpb25zPg0KKyAgICAgICAgICAgIDxUb3A+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTAwNzA1M0Q4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmlhcmlkZXBtLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDA3MDUzRDg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgICAgIDxSb3cxPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTBGNDBCMDcwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmRlYnVnZ2VyZ3VpLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMEY0MEIwNzA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzE+DQorICAgICAgICAgICAgPC9Ub3A+DQorICAgICAgICAgICAgPExlZnQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQyPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT43MTg8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4yODg8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjIwMDwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjIwMDwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjE3MjYxOTwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjczMTcwNzwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMj4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0xlZnQ+DQorICAgICAgICAgICAgPFJpZ2h0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kNT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+NzE4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MTk4PC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMDA8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43MzE3MDc8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDU+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9SaWdodD4NCisgICAgICAgICAgICA8Qm90dG9tPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+MTk4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MTY4MjwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MTY4NDwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjIwMDwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjEwMDIzODE8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT4yMDMyNTI8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDE+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9Cb3R0b20+DQorICAgICAgICAgICAgPEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICA8L0Zsb2F0Pg0KKyAgICAgICAgPC9Qb3NpdGlvbnM+DQorICAgIDwvRGVza3RvcD4NCisgICAgPFdpbmRvd1N0b3JhZ2UgLz4NCiA8L1Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAppbmRleCA5MzkxNGVmLi40ZDIwMTAwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdApAQCAtMSw2NiArMSw1OTYgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCiA8V29ya3NwYWNlPg0KLSAgPENvbmZpZ0RpY3Rpb25hcnk+DQotICAgIA0KLSAgPEN1cnJlbnRDb25maWdzPjxQcm9qZWN0PlJUT1NEZW1vL2RkcmFtPC9Qcm9qZWN0PjwvQ3VycmVudENvbmZpZ3M+PC9Db25maWdEaWN0aW9uYXJ5Pg0KLSAgPERlc2t0b3A+DQotICAgIDxTdGF0aWM+DQotICAgICAgPFdvcmtzcGFjZT4NCi0gICAgICAgIDxDb2x1bW5XaWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPENvbHVtbjA+MjQ3PC9Db2x1bW4wPjxDb2x1bW4xPjI3PC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjI3PC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KLSAgICAgIDwvV29ya3NwYWNlPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48L0J1aWxkPg0KLSAgICA8RmluZC1pbi1GaWxlcz48Q29sdW1uV2lkdGgwPjQ5NzwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjc0NjwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+MzMxPC9Db2x1bW5XaWR0aDM+PC9GaW5kLWluLUZpbGVzPjxUZXJtaW5hbElPLz48RGVidWctTG9nPjxDb2x1bW5XaWR0aDA+MTk8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjM8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz48U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz48Q29sdW1uV2lkdGgwPjg3NTwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjk5NDwvQ29sdW1uV2lkdGgyPjwvU2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz48QnJlYWtwb2ludHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjUwMDwvaXRlbT48aXRlbT4zNTwvaXRlbT48L2NvbC13aWR0aHM+PC9CcmVha3BvaW50cz48L1N0YXRpYz4NCi0gICAgPFdpbmRvd3M+DQotICAgICAgDQotICAgICAgDQotICAgIDxXbmQyPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTQyMy0yODUwNDwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9kb2N1bWVudGF0aW9uPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9saWJyYXJpZXM8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL3Jlc291cmNlczwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDI+PFduZDM+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtNjI4MS0xNTA3MTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDxUYWI+PElkZW50aXR5PlRhYklELTEzNTI2LTE1MjA1PC9JZGVudGl0eT48VGFiTmFtZT5GaW5kIGluIEZpbGVzPC9UYWJOYW1lPjxGYWN0b3J5PkZpbmQtaW4tRmlsZXM8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjxUYWI+PElkZW50aXR5PlRhYklELTMyNDA2LTE3NDwvSWRlbnRpdHk+PFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPjxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PFRhYj48SWRlbnRpdHk+VGFiSUQtMTg2LTU4NTM8L0lkZW50aXR5PjxUYWJOYW1lPkFtYmlndW91cyBEZWZpbml0aW9uczwvVGFiTmFtZT48RmFjdG9yeT5TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQzPjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj41ODA2PC9TZWxTdGFydDI+PFNlbEVuZDI+NTgwNjwvU2VsRW5kMj48L1RhYj48QWN0aXZlVGFiPjA8L0FjdGl2ZVRhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj4wPC9TZWxTdGFydDI+PFNlbEVuZDI+MDwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjYzPC9ZUG9zMj48U2VsU3RhcnQyPjc1NjwvU2VsU3RhcnQyPjxTZWxFbmQyPjc1NjwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMDcwNTNEOD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDA3MDUzRDg+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzLz48L1JvdzE+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQyPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjc2NzwvQm90dG9tPjxSaWdodD4zMjE8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xOTIyNjI8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzgxNTA0PC9zaXplVmVydENZPjwvUmVjdD48L1duZDI+PC9TaXplcz48L1JvdzA+PC9MZWZ0PjxSaWdodD48Um93MD48U2l6ZXMvPjwvUm93MD48L1JpZ2h0PjxCb3R0b20+PFJvdzA+PFNpemVzPjxXbmQzPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjE3MzwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4xNjg0PC94c2NyZWVuPjx5c2NyZWVuPjE3NTwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjE3Nzg0Njwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPjwvUmVjdD48L1duZDM+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCi0gIDwvRGVza3RvcD4NCisgICAgPENvbmZpZ0RpY3Rpb25hcnk+DQorICAgICAgICA8Q3VycmVudENvbmZpZ3M+DQorICAgICAgICAgICAgPFByb2plY3Q+UlRPU0RlbW8vZGRyYW08L1Byb2plY3Q+DQorICAgICAgICA8L0N1cnJlbnRDb25maWdzPg0KKyAgICA8L0NvbmZpZ0RpY3Rpb25hcnk+DQorICAgIDxEZXNrdG9wPg0KKyAgICAgICAgPFN0YXRpYz4NCisgICAgICAgICAgICA8V29ya3NwYWNlPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MjQ3PC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+Mjc8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMj4yNzwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4zPjI3PC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICA8L1dvcmtzcGFjZT4NCisgICAgICAgICAgICA8QnVpbGQ+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICA8L0J1aWxkPg0KKyAgICAgICAgICAgIDxGaW5kLWluLUZpbGVzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjQ5NzwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+MzMxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9GaW5kLWluLUZpbGVzPg0KKyAgICAgICAgICAgIDxUZXJtaW5hbElPIC8+DQorICAgICAgICAgICAgPERlYnVnLUxvZz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4xOTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjE2MjM8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICA8L0RlYnVnLUxvZz4NCisgICAgICAgICAgICA8U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD44NzU8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjk5NDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgIDwvU2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz4NCisgICAgICAgICAgICA8QnJlYWtwb2ludHM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MzwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+QnJlYWtwb2ludDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L0JyZWFrcG9pbnRzPg0KKyAgICAgICAgPC9TdGF0aWM+DQorICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICA8V25kMj4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC00MjMtMjg1MDQ8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vZG9jdW1lbnRhdGlvbjwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9saWJyYXJpZXM8L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vcmVzb3VyY2VzPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMj4NCisgICAgICAgICAgICA8V25kMz4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC02MjgxLTE1MDcxPC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xMzUyNi0xNTIwNTwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTMyNDA2LTE3NDwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xODYtNTg1MzwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+QW1iaWd1b3VzIERlZmluaXRpb25zPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDM+DQorICAgICAgICA8L1dpbmRvd3M+DQorICAgICAgICA8RWRpdG9yPg0KKyAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjU4MDY8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjU4MDY8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8QWN0aXZlVGFiPjA8L0FjdGl2ZVRhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjYzPC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+MDwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+MDwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjYzPC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NzU2PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj43NTY8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPg0KKyAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgICAgICA8WD4xMDAwMDAwPC9YPg0KKyAgICAgICAgICAgICAgICAgICAgPFk+MTAwMDAwMDwvWT4NCisgICAgICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgPFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+DQorICAgICAgICA8L0VkaXRvcj4NCisgICAgICAgIDxQb3NpdGlvbnM+DQorICAgICAgICAgICAgPFRvcD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMDA3MDUzRDg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+aWFyaWRlcG0uZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0wMDcwNTNEOD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICAgICAgPFJvdzE+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICAgICAgPC9Sb3cxPg0KKyAgICAgICAgICAgIDwvVG9wPg0KKyAgICAgICAgICAgIDxMZWZ0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+NzY3PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MzIxPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMDA8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xOTIyNjI8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43ODE1MDQ8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9MZWZ0Pg0KKyAgICAgICAgICAgIDxSaWdodD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvUmlnaHQ+DQorICAgICAgICAgICAgPEJvdHRvbT4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDM+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjE3MzwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE2ODI8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE2ODQ8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4xNzU8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTc3ODQ2PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQzPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvQm90dG9tPg0KKyAgICAgICAgICAgIDxGbG9hdD4NCisgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgPC9GbG9hdD4NCisgICAgICAgIDwvUG9zaXRpb25zPg0KKyAgICA8L0Rlc2t0b3A+DQorICAgIDxXaW5kb3dTdG9yYWdlPg0KKyAgICAgICAgPENoaWxkSWRNYXA+DQorICAgICAgICAgICAgPFRCX0NNU0lTUEFDSz4zNDA0ODwvVEJfQ01TSVNQQUNLPg0KKyAgICAgICAgICAgIDxUQl9NQUlOPjM0MDQ5PC9UQl9NQUlOPg0KKyAgICAgICAgICAgIDxXSU5fQlJFQUtQT0lOVFM+MzQwNTA8L1dJTl9CUkVBS1BPSU5UUz4NCisgICAgICAgICAgICA8V0lOX0JVSUxEPjM0MDUxPC9XSU5fQlVJTEQ+DQorICAgICAgICAgICAgPFdJTl9DQUxMX0dSQVBIPjM0MDUyPC9XSU5fQ0FMTF9HUkFQSD4NCisgICAgICAgICAgICA8V0lOX0NNU0lTUEFDS19BR0VOVF9MT0c+MzQwNTM8L1dJTl9DTVNJU1BBQ0tfQUdFTlRfTE9HPg0KKyAgICAgICAgICAgIDxXSU5fQ1VTVE9NX1NGUj4zNDA1NDwvV0lOX0NVU1RPTV9TRlI+DQorICAgICAgICAgICAgPFdJTl9DX1NUQVQ+MzQwNTU8L1dJTl9DX1NUQVQ+DQorICAgICAgICAgICAgPFdJTl9ERUJVR19MT0c+MzQwNTY8L1dJTl9ERUJVR19MT0c+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+MzQwNTc8L1dJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9SRUZFUkVOQ0VTPjM0MDU4PC9XSU5fRklORF9BTExfUkVGRVJFTkNFUz4NCisgICAgICAgICAgICA8V0lOX0ZJTkRfSU5fRklMRVM+MzQwNTk8L1dJTl9GSU5EX0lOX0ZJTEVTPg0KKyAgICAgICAgICAgIDxXSU5fU0VMRUNUX0FNQklHVU9VU19ERUZJTklUSU9OUz4zNDA2MDwvV0lOX1NFTEVDVF9BTUJJR1VPVVNfREVGSU5JVElPTlM+DQorICAgICAgICAgICAgPFdJTl9TT1VSQ0VfQlJPV1NFUj4zNDA2MTwvV0lOX1NPVVJDRV9CUk9XU0VSPg0KKyAgICAgICAgICAgIDxXSU5fVE9PTF9PVVRQVVQ+MzQwNjI8L1dJTl9UT09MX09VVFBVVD4NCisgICAgICAgICAgICA8V0lOX1dPUktTUEFDRT4zNDA2MzwvV0lOX1dPUktTUEFDRT4NCisgICAgICAgIDwvQ2hpbGRJZE1hcD4NCisgICAgICAgIDxEZXNrdG9wPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0MDAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzQwMDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDI0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjA3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQ0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDkwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAyNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDY1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDUzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0Mzk5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM4PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIxPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTg2MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT48L0xpdmVGaWxlPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUxvZ0VuYWJsZWQ+MDwvTGl2ZUxvZ0VuYWJsZWQ+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsdGVyTGV2ZWw+LTE8L0xpdmVGaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNTY+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMDg8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4zMDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjMwPC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+MzA8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDwvQ29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxDb250cm9sQmFyVmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPE1ham9yPjE0PC9NYWpvcj4NCisgICAgICAgICAgICAgICAgPE1pbm9yPjEwPC9NaW5vcj4NCisgICAgICAgICAgICA8L0NvbnRyb2xCYXJWZXJzaW9uPg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyUGFyYW1ldGVycz4NCisgICAgICAgICAgICAgICAgPFRvb2x0aXBzPjE8L1Rvb2x0aXBzPg0KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXRLZXlzPjE8L1Nob3J0Y3V0S2V5cz4NCisgICAgICAgICAgICAgICAgPExhcmdlSWNvbnM+MDwvTGFyZ2VJY29ucz4NCisgICAgICAgICAgICAgICAgPE1lbnVBbmltYXRpb24+MDwvTWVudUFuaW1hdGlvbj4NCisgICAgICAgICAgICAgICAgPFJlY2VudGx5VXNlZE1lbnVzPjE8L1JlY2VudGx5VXNlZE1lbnVzPg0KKyAgICAgICAgICAgICAgICA8TWVudVNoYWRvd3M+MTwvTWVudVNoYWRvd3M+DQorICAgICAgICAgICAgICAgIDxTaG93QWxsTWVudXNBZnRlckRlbGF5PjE8L1Nob3dBbGxNZW51c0FmdGVyRGVsYXk+DQorICAgICAgICAgICAgICAgIDxDb21tYW5kc1VzYWdlPjAwMDAwMDAwMDAwMDwvQ29tbWFuZHNVc2FnZT4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXJQYXJhbWV0ZXJzPg0KKyAgICAgICAgICAgIDxDb21tYW5kTWFuYWdlcj4NCisgICAgICAgICAgICAgICAgPENvbW1hbmRzV2l0aG91dEltYWdlcz4wNjAwMjBGMTAwMDAxMEYwMDAwMDAwRjAwMDAwMjBGMDAwMDAzMEYwMDAwMDYwRjAwMDAwPC9Db21tYW5kc1dpdGhvdXRJbWFnZXM+DQorICAgICAgICAgICAgICAgIDxNZW51VXNlckltYWdlcz4wMDAwPC9NZW51VXNlckltYWdlcz4NCisgICAgICAgICAgICA8L0NvbW1hbmRNYW5hZ2VyPg0KKyAgICAgICAgICAgIDxQYW5lLTU5MzkzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDBEQzAzMDAwMDgwMDcwMDAwRjUwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTU5MzkzPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUwPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUwPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MCAvPg0KKyAgICAgICAgICAgIDxQYW5lLS0xPg0KKyAgICAgICAgICAgICAgICA8SUQ+NDI5NDk2NzI5NTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAzOTAwMDAwMDE4MDEwMDAwRkQwMjAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLS0xPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0tMT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0tMT4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUxPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEzOTk8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zNzM8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz45MzwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT5DOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVJcQnVpbGRMb2cubG9nPC9MaXZlRmlsZT4NCisgICAgICAgICAgICAgICAgPExpdmVMb2dFbmFibGVkPjA8L0xpdmVMb2dFbmFibGVkPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbHRlckxldmVsPi0xPC9MaXZlRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMUUwMzAwMDA4MDA3MDAwMERDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTMgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU2PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTY+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTc8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Nz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTcgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU4IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTk+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1OTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1OSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2MD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjAgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2Mj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYyPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjI+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYyIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMEFEMDIwMDAwRDAwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMEFEMDIwMDAwQjMwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mj4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTIgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU0PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTU8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDAzNjAxMDAwMERCMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTU+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU1IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjE+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA1QTAwMDAwMDE0MDEwMDAwRDAwMTAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwNTYwMDAwMDAxODAxMDAwMEZEMDIwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgPERvY2tpbmdNYW5hZ2VyLTI1Nj4NCisgICAgICAgICAgICAgICAgPERvY2tpbmdQYW5lQW5kUGFuZURpdmlkZXJzPjAwMDAwMDAwMEMwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMTgwMTAwMDAzOTAwMDAwMDFDMDEwMDAwRkQwMjAwMDAwMTAwMDAwMDAyMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRjAyMDAwMDAwMEQ4NTAwMDAwRjg1MDAwMEZGRkYwMjAwMEIwMDQzNTQ2MTYyNjI2NTY0NTA2MTZFNjUwMDEwMDAwMDAxMDAwMDAwMDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDAwMDAwMDAwMDM5MDAwMDAwMTgwMTAwMDBGRDAyMDAwMDAwMDAwMDAwNDAxMDAwNTYwMjAwMDAwMEZGRkVGRjBFNTMwMDZGMDA3NTAwNzIwMDYzMDA2NTAwMjAwMDQyMDA3MjAwNkYwMDc3MDA3MzAwNjUwMDcyMDAwMDAwMDAwMDBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk1NzAwNkYwMDcyMDA2QjAwNzMwMDcwMDA2MTAwNjMwMDY1MDAwMTAwMDAwMDBGODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDc4NTAwMDAwMTAwMDAwMDA3ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDY4NTAwMDAwMTAwMDAwMDA2ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDQ4NTAwMDAwMTAwMDAwMDA0ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwRkQwMjAwMDA4MDA3MDAwMDAxMDMwMDAwMDEwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYwODAwMDAwMDAzODUwMDAwMDU4NTAwMDAwODg1MDAwMDA5ODUwMDAwMEE4NTAwMDAwQjg1MDAwMDBDODUwMDAwMEU4NTAwMDAwMTgwMDA4MDAwMDAwMTAwMDAwMDAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwMDAwMDAwMDAwMTAzMDAwMDgwMDcwMDAwREMwMzAwMDAwMDAwMDAwMDQwODAwMDU2MDgwMDAwMDBGRkZFRkYwNTQyMDA3NTAwNjkwMDZDMDA2NDAwMDEwMDAwMDAwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBFNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMDIwMDA0QzAwNkYwMDY3MDAwMDAwMDAwMDA1ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk0NDAwNjUwMDYyMDA3NTAwNjcwMDIwMDA0QzAwNkYwMDY3MDAwMTAwMDAwMDA4ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEM0NDAwNjUwMDYzMDA2QzAwNjEwMDcyMDA2MTAwNzQwMDY5MDA2RjAwNkUwMDczMDAwMDAwMDAwMDA5ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEE1MjAwNjUwMDY2MDA2NTAwNzIwMDY1MDA2RTAwNjMwMDY1MDA3MzAwMDAwMDAwMDAwQTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBENDYwMDY5MDA2RTAwNjQwMDIwMDA2OTAwNkUwMDIwMDA0NjAwNjkwMDZDMDA2NTAwNzMwMDAwMDAwMDAwMEI4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYxNTQxMDA2RDAwNjIwMDY5MDA2NzAwNzUwMDZGMDA3NTAwNzMwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNzMwMDAwMDAwMDAwMEM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwQjU0MDA2RjAwNkYwMDZDMDAyMDAwNEYwMDc1MDA3NDAwNzAwMDc1MDA3NDAwMDAwMDAwMDAwRTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAyODUwMDAwMDEwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwvRG9ja2luZ1BhbmVBbmRQYW5lRGl2aWRlcnM+DQorICAgICAgICAgICAgPC9Eb2NraW5nTWFuYWdlci0yNTY+DQorICAgICAgICAgICAgPE1GQ1Rvb2xCYXItMzQwNDg+DQorICAgICAgICAgICAgICAgIDxOYW1lPkNNU0lTLVBhY2s8L05hbWU+DQorICAgICAgICAgICAgICAgIDxCdXR0b25zPjAwMjAwMDAwMDEwMDAwMDAwMjAwRkZGRjAxMDAxMTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQyNzU3NDc0NkY2RUQwODQwMDAwMDAwMDA0MDAwQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODBEMTg0MDAwMDAwMDAwMDAwMEQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjBBNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OD4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAzMDAwMDFDMDAwMDAwNDcwMzAwMDAzODAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8TmFtZT5NYWluPC9OYW1lPg0KKyAgICAgICAgICAgICAgICA8QnV0dG9ucz4wMDIwMDAwMDAxMDAwMDAwMjAwMEZGRkYwMTAwMTEwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0Mjc1NzQ3NDZGNkUwMEUxMDAwMDAwMDAwMDAwMzYwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDFFMTAwMDAwMDAwMDAwMDM3MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAzRTEwMDAwMDAwMDA0MDAzOTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDgxMDAwMDAwMDAwMDAwMUEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDA3RTEwMDAwMDAwMDA0MDAzQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjNFMTAwMDAwMDAwMDQwMDNFMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDIyRTEwMDAwMDAwMDA0MDAzRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNUUxMDAwMDAwMDAwNDAwNDAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDJCRTEwMDAwMDAwMDA0MDA0MzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyQ0UxMDAwMDAwMDAwNDAwNDQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwRkZGRjAxMDAxOTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQzNkY2RDYyNkY0MjZGNzg0Mjc1NzQ3NDZGNkU0MjgxMDAwMDAwMDAwNDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDEwMDAwMDA3ODAwMDAwMDAyMDAyMDUwRkZGRkZGRkZGRkZFRkYwMDk2MDAwMDAwMDAwMDAwMDAwMDAwMDE4MDIxODEwMDAwMDAwMDA0MDAyRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNEUxMDAwMDAwMDAwNDAwM0YwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjhFMTAwMDAwMDAwMDQwMDQxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI5RTEwMDAwMDAwMDA0MDA0MjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMjgxMDAwMDAwMDAwNDAwMUMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjk4MTAwMDAwMDAwMDQwMDMxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI3ODEwMDAwMDAwMDA0MDAyRjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyODgxMDAwMDAwMDAwNDAwMzAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMUQ4MTAwMDAwMDAwMDQwMDI5MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDFFODEwMDAwMDAwMDA0MDAyQTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEI4MTAwMDAwMDAwMDQwMDIwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBDODEwMDAwMDAwMDAwMDAyMTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODA1Rjg2MDAwMDAwMDAwMDAwMzUwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBFODEwMDAwMDAwMDAwMDAyMzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwRjgxMDAwMDAwMDAwMDAwMjQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjA0NEQwMDYxMDA2OTAwNkUwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OT4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ5PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDFDMDAwMDAwMDAwMzAwMDAzOTAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDk+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgPC9EZXNrdG9wPg0KKyAgICAgICAgPE1ESVdpbmRvd3M+DQorICAgICAgICAgICAgPE1ESUNsaWVudEFyZWEtMD4NCisgICAgICAgICAgICAgICAgPE1ESVRhYnNTdGF0ZT4wMTAwMDAwMDAzMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAyODAwMDAwMDI4MDAwMDAwMDAwMDAwMDA8L01ESVRhYnNTdGF0ZT4NCisgICAgICAgICAgICA8L01ESUNsaWVudEFyZWEtMD4NCisgICAgICAgIDwvTURJV2luZG93cz4NCisgICAgPC9XaW5kb3dTdG9yYWdlPg0KIDwvV29ya3NwYWNlPg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvRnJlZVJUT1NDb25maWcuaAppbmRleCBlMThkYWE5Li43MjJiNTkxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvTEVEcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9MRURzLmMKaW5kZXggMjhhZDE1My4uMGZjMjY2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9MRURzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9MRURzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbi5jCmluZGV4IDM3Mjk0NDQuLmUxMjMwYjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9ibGlua3kuYwppbmRleCA0NDVlNDMxLi4xMmNlYjI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fZnVsbC5jCmluZGV4IDg2ZTI3ODAuLjQyMmU0ODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3JlZ190ZXN0LlMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3JlZ190ZXN0LlMKaW5kZXggN2YyZGNhYS4uNzA3YjZhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9yZWdfdGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvcmVnX3Rlc3QuUwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkuZ2xvYmFsIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9zZXJpYWwuYwppbmRleCA1MzEyZTU3Li5jZjA1NWMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS8uY3Byb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS8uY3Byb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YTZmY2QuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLmNwcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/Pg0KLTw/ZmlsZVZlcnNpb24gNC4wLjA/PjxjcHJvamVjdCBzdG9yYWdlX3R5cGVfaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLlhtbFByb2plY3REZXNjcmlwdGlvblN0b3JhZ2UiPg0KLQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiPg0KLQkJPGNjb25maWd1cmF0aW9uIGlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWcuMjA4NTczMzA4NSI+DQotCQkJPHN0b3JhZ2VNb2R1bGUgYnVpbGRTeXN0ZW1JZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuY29uZmlndXJhdGlvbkRhdGFQcm92aWRlciIgaWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1IiBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiIG5hbWU9IkRlYnVnIj4NCi0JCQkJPGV4dGVybmFsU2V0dGluZ3MvPg0KLQkJCQk8ZXh0ZW5zaW9ucz4NCi0JCQkJCTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkdtYWtlRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLQkJCQkJPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuQ1dETG9jYXRvciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotCQkJCQk8ZXh0ZW5zaW9uIGlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGRlci5hcm1jYy5lcnJvciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotCQkJCTwvZXh0ZW5zaW9ucz4NCi0JCQk8L3N0b3JhZ2VNb2R1bGU+DQotCQkJPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQotCQkJCTxjb25maWd1cmF0aW9uIGFydGlmYWN0RXh0ZW5zaW9uPSJheGYiIGFydGlmYWN0TmFtZT0iJHtQcm9qTmFtZX0iIGJ1aWxkQXJ0ZWZhY3RUeXBlPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuYXJ0ZWZhY3QuYmFyZW1ldGFsLmV4ZSIgYnVpbGRQcm9wZXJ0aWVzPSJvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlLmRlYnVnLG9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlPWNvbS5hcm0uZWNsaXBzZS5idWlsZC5hcnRlZmFjdC5iYXJlbWV0YWwuZXhlIiBjbGVhbkNvbW1hbmQ9ImNsZWFuIiBkZXNjcmlwdGlvbj0iIiBpZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkLmNvbmZpZy5iYXJlbWV0YWwuZXhlLmRlYnVnLjIwODU3MzMwODUiIG5hbWU9IkRlYnVnIiBwYXJlbnQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1ZyI+DQotCQkJCQk8Zm9sZGVySW5mbyBpZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkLmNvbmZpZy5iYXJlbWV0YWwuZXhlLmRlYnVnLjIwODU3MzMwODUuIiBuYW1lPSIvIiByZXNvdXJjZVBhdGg9IiI+DQotCQkJCQkJPHRvb2xDaGFpbiBpZD0iY29tLmFybS50b29sY2hhaW4uYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4xMjkwMTE4OTUxIiBuYW1lPSJBUk0gQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbGNoYWluLmJhcmVtZXRhbC5leGUuZGVidWciPg0KLQkJCQkJCQk8dGFyZ2V0UGxhdGZvcm0gaWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1Li4xNjYzMzY3NTc0IiBuYW1lPSIiLz4NCi0JCQkJCQkJPGJ1aWxkZXIgYnVpbGRQYXRoPSIke3dvcmtzcGFjZV9sb2M6L0ZyZWVSVE9TX0RlbW8vRGVidWd9IiBpZD0iY29tLmFybS50b29sY2hhaW4uYmFyZW1ldGFsLmJ1aWxkZXIuMTY2OTc0ODYxMiIga2VlcEVudmlyb25tZW50SW5CdWlsZGZpbGU9ImZhbHNlIiBtYW5hZ2VkQnVpbGRPbj0idHJ1ZSIgbmFtZT0iR251IE1ha2UgQnVpbGRlciIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sY2hhaW4uYmFyZW1ldGFsLmJ1aWxkZXIiLz4NCi0JCQkJCQkJPHRvb2wgY29tbWFuZD0iYXJtY2MiIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLjEzNDEyOTU1MyIgbmFtZT0iQVJNIEMgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLmJhcmVtZXRhbC5leGUuZGVidWciPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmRlZm1hYy4xODk1MDYzNTc5IiBuYW1lPSJEZWZpbmUgbWFjcm8gKC1EKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmRlZm1hYyIgdmFsdWVUeXBlPSJkZWZpbmVkU3ltYm9scyI+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IkFSTV9TSU0iLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iX19TVEFOREFMT05FX18iLz4NCi0JCQkJCQkJCTwvb3B0aW9uPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLnVuZGVmbWFjLjEzMzU3NzcwODAiIG5hbWU9IlVuZGVmaW5lIG1hY3JvICgtVSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi51bmRlZm1hYyIgdmFsdWVUeXBlPSJ1bmRlZkRlZmluZWRTeW1ib2xzIj4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iQVJNX1NJTSIvPg0KLQkJCQkJCQkJPC9vcHRpb24+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLm9wdGlvbi5vcHQuNzk5NDc3MjQxIiBuYW1lPSJPcHRpbWl6YXRpb24gbGV2ZWwiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLmJhcmVtZXRhbC5leGUuZGVidWcub3B0aW9uLm9wdCIgdmFsdWU9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5vcHRsZXZlbC5taW4iIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLm9wdGZvci4yMDMxNDIxMzU5IiBuYW1lPSJPcHRpbWl6ZSBmb3IiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5vcHRmb3IiIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24ub3B0Zm9yLnRpbWUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLnRhcmdldGNwdS4xNTQyNTcwODM1IiBuYW1lPSJUYXJnZXQgQ1BVICgtLWNwdSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi50YXJnZXRjcHUiIHZhbHVlPSJDb3J0ZXgtQTkiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uZW5kaWFuLjEwNzEzOTc1ODAiIG5hbWU9IkJ5dGUgb3JkZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5lbmRpYW4iIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uZW5kaWFuLmxpdHRsZSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uaW5zdC4xMzMxODA4NTQ0IiBuYW1lPSJJbnN0cnVjdGlvbiBzZXQiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5pbnN0IiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmluc3QuYXJtIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5mbGFncy4xMTgyMjg4MTMyIiBuYW1lPSJPdGhlciBmbGFncyIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmZsYWdzIiB2YWx1ZT0iLS1hc20iIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uaW5jcGF0aC4xOTQ4NzA4MjM2IiBuYW1lPSJJbmNsdWRlIHBhdGggKC1JKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmluY3BhdGgiIHZhbHVlVHlwZT0iaW5jbHVkZVBhdGgiPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZX0mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2V9JnF1b3Q7Ii8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlL0ZyZWVSVE9TLVNvdXJjZS9pbmNsdWRlfSZxdW90OyIvPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvUG9ydGFibGUvUlZEUy9BUk1fQ0E5fSZxdW90OyIvPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GdWxsLURlbW99JnF1b3Q7Ii8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUNMSX0mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNML2FwaX0mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzfSZxdW90OyIvPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGV9JnF1b3Q7Ii8+DQotCQkJCQkJCQk8L29wdGlvbj4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbnMuZGVidWcuZm9ybWF0LjE1OTI5Njk5MDMiIG5hbWU9IkRlYnVnIGZvcm1hdCIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9ucy5kZWJ1Zy5mb3JtYXQiIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb25zLmRlYnVnLmZvcm1hdC5kd2FyZjIiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmZwcGNzLjE2MTY1NTY2MDgiIG5hbWU9IkZsb2F0aW5nLXBvaW50IFBDUyAoLS1hcGNzKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmZwcGNzIiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmZwcGNzLmF1dG8iIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLnRhcmdldGZwdS4xNDUxODQwMjgwIiBuYW1lPSJUYXJnZXQgRlBVICgtLWZwdSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi50YXJnZXRmcHUiIHZhbHVlPSIiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uaW50ZXIuMTYyMDI2NjE4MyIgbmFtZT0iSW50ZXJ3b3JraW5nICgtLWFwY3M9L2ludGVyd29yaykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5pbnRlciIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLnN1cHByZXNzLjc2MDgxNzQ3MyIgbmFtZT0iU3VwcHJlc3MgKC0tZGlhZ19zdXBwcmVzcykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5zdXBwcmVzcyIgdmFsdWU9IjE5MSIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLmlucHV0LjEzODA5OTQ4NzciIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLmlucHV0Ii8+DQotCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20uYXJtLnRvb2wuY3BwLmNvbXBpbGVyLmlucHV0LjE0NzQ1NjgxNDkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jcHAuY29tcGlsZXIuaW5wdXQiLz4NCi0JCQkJCQkJPC90b29sPg0KLQkJCQkJCQk8dG9vbCBpZD0iY29tLmFybS50b29sLmNwcC5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLjE4MTQwMTQ2MzgiIG5hbWU9IkFSTSBDKysgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jcHAuY29tcGlsZXIuYmFyZW1ldGFsLmV4ZS5kZWJ1ZyIvPg0KLQkJCQkJCQk8dG9vbCBjb21tYW5kPSJhcm1hc20iIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLjE2MDc1NTQxMyIgbmFtZT0iQVJNIEFzc2VtYmxlciIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlciI+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi51bmFsaWduLjgwODM5NzYzNiIgbmFtZT0iRGlzYWJsZSB1bmFsaWduZWQgYWNjZXNzZXMgKC0tbm9fdW5hbGlnbmVkX2FjY2VzcykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLnVuYWxpZ24iIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmNwdS4xMTg3NDM2Mzk5IiBuYW1lPSJUYXJnZXQgQ1BVICgtLWNwdSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmNwdSIgdmFsdWU9IkNvcnRleC1BOSIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmRlYnVnLmZvcm1hdC4xMTY5MzAzOTMyIiBuYW1lPSJEZWJ1ZyBmb3JtYXQiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmRlYnVnLmZvcm1hdCIgdmFsdWU9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbnMuZGVidWcuZm9ybWF0LmR3YXJmMiIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5mbGFncy4xNTU4NTg2ODEzIiBuYW1lPSJPdGhlciBmbGFncyIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uZmxhZ3MiIHZhbHVlPSItLXByZWRlZmluZSAmcXVvdDtfX0lBU01BUk1fXyBTRVRBIDAmcXVvdDsgLUkmcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvUG9ydGFibGUvUlZEUy9BUk1fQ0E5fSZxdW90OyAtSSZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlfSZxdW90OyIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmZwcGNzLjE1Mzc5MDI2MjgiIG5hbWU9IkZsb2F0aW5nLXBvaW50IFBDUyAoLS1hcGNzKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uZnBwY3MiIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uZnBwY3MuYXV0byIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5mcHUuMjgxODUzNjQ0IiBuYW1lPSJUYXJnZXQgRlBVICgtLWZwdSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmZwdSIgdmFsdWU9IiIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmludGVyLjQwODYwODg3NCIgbmFtZT0iSW50ZXJ3b3JraW5nICgtLWFwY3M9L2ludGVyd29yaykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmludGVyIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5pbnN0LjYzODc0MTUxNiIgbmFtZT0iSW5zdHJ1Y3Rpb24gc2V0IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5pbnN0IiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmluc3QuYXJtIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLnByZXByb2NmbGFncy4xOTI1NzM0OTQiIG5hbWU9IlByZXByb2Nlc3NvciBvcHRpb25zICgtLWNwcmVwcm9jX29wdHMpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5wcmVwcm9jZmxhZ3MiIHZhbHVlPSIiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5wcmVwcm9jLjEyMzM3OTM5NzkiIG5hbWU9IlByZXByb2Nlc3MgaW5wdXQgYmVmb3JlIGFzc2VtYmxpbmcgKC0tY3ByZXByb2MpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5wcmVwcm9jIiB2YWx1ZT0iZmFsc2UiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQk8L3Rvb2w+DQotCQkJCQkJCTx0b29sIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIuMjE2NDI3OTM4IiBuYW1lPSJBUk0gTGlua2VyIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIiPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5jcHUuMTY0OTQ2NTgyMyIgbmFtZT0iVGFyZ2V0IENQVSAoLS1jcHUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmNwdSIgdmFsdWU9IkNvcnRleC1BOSIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZW50cnkuMTA1Nzc0OTUzNiIgbmFtZT0iSW1hZ2UgZW50cnkgcG9pbnQgKC0tZW50cnkpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmVudHJ5IiB2YWx1ZT0iU3RhcnQiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLnNjYXR0ZXIuNTAyNDA1MDA1IiBuYW1lPSJTY2F0dGVyIGZpbGUgKC0tc2NhdHRlcikiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uc2NhdHRlciIgdmFsdWU9Ii4uXHNjYXR0ZXIuc2NhdCIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZWxlbWluYXRlLjE0NzI1NDEwOTQiIG5hbWU9IkVsaW1pbmF0ZSB1bnVzZWQgc2VjdGlvbnMgKC0tcmVtb3ZlKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5lbGVtaW5hdGUiIHZhbHVlPSJmYWxzZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmNhbGxncmFwaC45OTg4MjMzMTAiIG5hbWU9IkdlbmVyYXRlIGNhbGwgZ3JhcGggKC0tY2FsbGdyYXBoKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5jYWxsZ3JhcGgiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uaW1hZ2VtYXAuNDE5MTE2NDM4IiBuYW1lPSJHZW5lcmF0ZSBpbWFnZSBtYXAgKC0tbWFwKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5pbWFnZW1hcCIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi52ZXJib3NlLjgxODQwNTYzMiIgbmFtZT0iVmVyYm9zZSBvdXRwdXQgKC0tdmVyYm9zZSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24udmVyYm9zZSIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi50b3RhbHMuMTg3ODEzODg4IiBuYW1lPSJMaXN0IHRvdGFsIGNvZGUgYW5kIGRhdGEgc2l6ZXMgb2Ygb3V0cHV0IGltYWdlICgtLWluZm89dG90YWxzKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi50b3RhbHMiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZWxpbS43ODc0NjQ5NTkiIG5hbWU9Ikxpc3QgdW51c2VkIHNlY3Rpb25zIHRoYXQgYXJlIGVsaW1pbmF0ZWQgKC0taW5mbz11bnVzZWQpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmVsaW0iIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uc3RhY2suMTA5MjEwODg0MSIgbmFtZT0iTGlzdCBzdGFjayB1c2FnZSBvZiBnbG9iYWwgc3ltYm9scyAoLS1pbmZvPXN0YWNrKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5zdGFjayIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5pbmxpbmVpbmZvLjE5MjM5ODQwNjMiIG5hbWU9Ikxpc3QgZnVuY3Rpb25zIGlubGluZWQgYnkgbGlua2VyICgtLWluZm89aW5saW5lKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5pbmxpbmVpbmZvIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rLm9wdGlvbi5zdXBwcmVzcy4xNzkyNjQ3NDg3IiBuYW1lPSJTdXBwcmVzcyAoLS1kaWFnX3N1cHByZXNzKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGluay5vcHRpb24uc3VwcHJlc3MiIHZhbHVlPSJMNjMxNCIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZmxhZ3MuMzUxNjQxMjk1IiBuYW1lPSJPdGhlciBmbGFncyIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5mbGFncyIgdmFsdWU9Ii0tc3ltYm9scyAtLWxvYWRfYWRkcl9tYXBfaW5mbyAtLWRhdGFjb21wcmVzc29yPW9mZiAtLWxpc3Q9RnJlZVJUT1NfRGVtby5tYXAiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIuaW5wdXQuNTI2MzAyMzg3IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIuaW5wdXQiPg0KLQkJCQkJCQkJCTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0ZGVwZW5kZW5jeSIgcGF0aHM9IiQoVVNFUl9PQkpTKSIvPg0KLQkJCQkJCQkJCTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0ZGVwZW5kZW5jeSIgcGF0aHM9IiQoTElCUykiLz4NCi0JCQkJCQkJCTwvaW5wdXRUeXBlPg0KLQkJCQkJCQk8L3Rvb2w+DQotCQkJCQkJCTx0b29sIGlkPSJjb20uYXJtLnRvb2wubGlicmFyaWFuLjQ2MDE1MDI0MyIgbmFtZT0iQVJNIExpYnJhcmlhbiIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmxpYnJhcmlhbiIvPg0KLQkJCQkJCTwvdG9vbENoYWluPg0KLQkJCQkJPC9mb2xkZXJJbmZvPg0KLQkJCQkJPHNvdXJjZUVudHJpZXM+DQotCQkJCQkJPGVudHJ5IGV4Y2x1ZGluZz0iSUFSfFNvdXJjZS9zYW1wbGVzIiBmbGFncz0iVkFMVUVfV09SS1NQQUNFX1BBVEh8UkVTT0xWRUQiIGtpbmQ9InNvdXJjZVBhdGgiIG5hbWU9IiIvPg0KLQkJCQkJPC9zb3VyY2VFbnRyaWVzPg0KLQkJCQk8L2NvbmZpZ3VyYXRpb24+DQotCQkJPC9zdG9yYWdlTW9kdWxlPg0KLQkJCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5leHRlcm5hbFNldHRpbmdzIi8+DQotCQk8L2Njb25maWd1cmF0aW9uPg0KLQk8L3N0b3JhZ2VNb2R1bGU+DQotCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJjZHRCdWlsZFN5c3RlbSIgdmVyc2lvbj0iNC4wLjAiPg0KLQkJPHByb2plY3QgaWQ9IkZyZWVSVE9TX0RlbW8uY29tLmFybS5lY2xpcHNlLmJ1aWxkLnByb2plY3QuYmFyZW1ldGFsLmV4ZS41MDgwOTEzNTgiIG5hbWU9IkJhcmUtbWV0YWwgRXhlY3V0YWJsZSIgcHJvamVjdFR5cGU9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5wcm9qZWN0LmJhcmVtZXRhbC5leGUiLz4NCi0JPC9zdG9yYWdlTW9kdWxlPg0KLQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0icmVmcmVzaFNjb3BlIiB2ZXJzaW9uTnVtYmVyPSIyIj4NCi0JCTxjb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25OYW1lPSJEZWJ1ZyI+DQotCQkJPHJlc291cmNlIHJlc291cmNlVHlwZT0iUFJPSkVDVCIgd29ya3NwYWNlUGF0aD0iL0ZyZWVSVE9TX0RlbW8iLz4NCi0JCTwvY29uZmlndXJhdGlvbj4NCi0JPC9zdG9yYWdlTW9kdWxlPg0KLQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ic2Nhbm5lckNvbmZpZ3VyYXRpb24iPg0KLQkJPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSIiLz4NCi0JCTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1O2NvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1Ljtjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLjEzNDEyOTU1Mztjb20uYXJtLnRvb2wuYy5jb21waWxlci5pbnB1dC4xMzgwOTk0ODc3Ij4NCi0JCQk8YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZGVyLmFybWNjLkFSTUNvbXBpbGVyRGlzY292ZXJ5UHJvZmlsZSIvPg0KLQkJPC9zY2FubmVyQ29uZmlnQnVpbGRJbmZvPg0KLQkJPHNjYW5uZXJDb25maWdCdWlsZEluZm8gaW5zdGFuY2VJZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkLmNvbmZpZy5iYXJlbWV0YWwuZXhlLmRlYnVnLjIwODU3MzMwODU7Y29tLmFybS5lY2xpcHNlLmJ1aWxkLmNvbmZpZy5iYXJlbWV0YWwuZXhlLmRlYnVnLjIwODU3MzMwODUuO2NvbS5hcm0udG9vbC5jLmNvbXBpbGVyLmJhcmVtZXRhbC5leGUuZGVidWcuMTM0MTI5NTUzO2NvbS5hcm0udG9vbC5jcHAuY29tcGlsZXIuaW5wdXQuMTQ3NDU2ODE0OSI+DQotCQkJPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGRlci5hcm1jYy5BUk1Db21waWxlckRpc2NvdmVyeVByb2ZpbGUiLz4NCi0JCTwvc2Nhbm5lckNvbmZpZ0J1aWxkSW5mbz4NCi0JPC9zdG9yYWdlTW9kdWxlPg0KLQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZHRhcmdldHMiLz4NCi0JPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkxhbmd1YWdlU2V0dGluZ3NQcm92aWRlcnMiLz4NCi08L2Nwcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5wcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmYTE5ZjEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08cHJvamVjdERlc2NyaXB0aW9uPg0KLQk8bmFtZT5GcmVlUlRPU19EZW1vPC9uYW1lPg0KLQk8Y29tbWVudD48L2NvbW1lbnQ+DQotCTxwcm9qZWN0cz4NCi0JPC9wcm9qZWN0cz4NCi0JPGJ1aWxkU3BlYz4NCi0JCTxidWlsZENvbW1hbmQ+DQotCQkJPG5hbWU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuZ2VubWFrZWJ1aWxkZXI8L25hbWU+DQotCQkJPHRyaWdnZXJzPmNsZWFuLGZ1bGwsaW5jcmVtZW50YWwsPC90cmlnZ2Vycz4NCi0JCQk8YXJndW1lbnRzPg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+P25hbWU/PC9rZXk+DQotCQkJCQk8dmFsdWU+PC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5hcHBlbmRfZW52aXJvbm1lbnQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5hdXRvQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5hbGw8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkQXJndW1lbnRzPC9rZXk+DQotCQkJCQk8dmFsdWU+PC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZENvbW1hbmQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5tYWtlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZExvY2F0aW9uPC9rZXk+DQotCQkJCQk8dmFsdWU+JHt3b3Jrc3BhY2VfbG9jOi9GcmVlUlRPU19EZW1vL0RlYnVnfTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuY2xlYW5CdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmNsZWFuPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5jb250ZW50czwva2V5Pg0KLQkJCQkJPHZhbHVlPm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYWN0aXZlQ29uZmlnU2V0dGluZ3M8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUF1dG9CdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPmZhbHNlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVDbGVhbkJ1aWxkPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZW5hYmxlRnVsbEJ1aWxkPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZnVsbEJ1aWxkVGFyZ2V0PC9rZXk+DQotCQkJCQk8dmFsdWU+YWxsPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5zdG9wT25FcnJvcjwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLnVzZURlZmF1bHRCdWlsZENtZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJPC9hcmd1bWVudHM+DQotCQk8L2J1aWxkQ29tbWFuZD4NCi0JCTxidWlsZENvbW1hbmQ+DQotCQkJPG5hbWU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuU2Nhbm5lckNvbmZpZ0J1aWxkZXI8L25hbWU+DQotCQkJPHRyaWdnZXJzPmZ1bGwsaW5jcmVtZW50YWwsPC90cmlnZ2Vycz4NCi0JCQk8YXJndW1lbnRzPg0KLQkJCTwvYXJndW1lbnRzPg0KLQkJPC9idWlsZENvbW1hbmQ+DQotCTwvYnVpbGRTcGVjPg0KLQk8bmF0dXJlcz4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0LmNvcmUuY25hdHVyZTwvbmF0dXJlPg0KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5tYW5hZ2VkQnVpbGROYXR1cmU8L25hdHVyZT4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuU2Nhbm5lckNvbmZpZ05hdHVyZTwvbmF0dXJlPg0KLQk8L25hdHVyZXM+DQotCTxsaW5rZWRSZXNvdXJjZXM+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9Qb3J0YWJsZTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST52aXJ0dWFsOi92aXJ0dWFsPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvaW5jbHVkZTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvbGlzdC5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL2xpc3QuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL3F1ZXVlLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9Tb3VyY2UvcXVldWUuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL3Rhc2tzLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9Tb3VyY2UvdGFza3MuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL3RpbWVycy5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL3RpbWVycy5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUNMSTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtQ0xJPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0w8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+dmlydHVhbDovdmlydHVhbDwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL1BvcnRhYmxlL01lbU1hbmc8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+dmlydHVhbDovdmlydHVhbDwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL1BvcnRhYmxlL1JWRFM8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+dmlydHVhbDovdmlydHVhbDwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9CbG9ja1EuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQmxvY2tRLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvR2VuUVRlc3QuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9RdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZU92ZXJ3cml0ZS5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL1RpbWVyRGVtby5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9UaW1lckRlbW8uYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9ibG9ja3RpbS5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdC5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL2NvdW50c2VtLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvZGVhdGguYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZGVhdGguYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9keW5hbWljLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9mbG9wLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Zsb3AuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZTwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9yZWNtdXRleC5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL3NlbXRlc3QuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc2VtdGVzdC5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wvTWVkaWEtRHJpdmVyPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGk8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGk8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC9jb21tb248L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9mYXRfc2wvY29tbW9uPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wvcnRjPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvcHNwL3RhcmdldC9ydGM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9Qb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9Qb3J0YWJsZS9SVkRTL0FSTV9DQTk8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5PC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wvTWVkaWEtRHJpdmVyL3JhbWRydl9mLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUZBVC1TTC9tZWRpYS1kcnYvcmFtL3JhbWRydl9mLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQk8L2xpbmtlZFJlc291cmNlcz4NCi0JPHZhcmlhYmxlTGlzdD4NCi0JCTx2YXJpYWJsZT4NCi0JCQk8bmFtZT5GcmVlUlRPU19ST09UPC9uYW1lPg0KLQkJCTx2YWx1ZT4kJTdCUEFSRU5ULTMtUFJPSkVDVF9MT0MlN0Q8L3ZhbHVlPg0KLQkJPC92YXJpYWJsZT4NCi0JPC92YXJpYWJsZUxpc3Q+DQotPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjI5OTAxLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotI1N1biBKdW4gMTYgMjA6MTY6MzcgQlNUIDIwMTMNCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KLWVuY29kaW5nLy9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2hhbmRsZXIvcmVzZXRfaGFuZGxlci5zPVVURi04DQotZW5jb2RpbmcvL1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZS5oPVVURi04DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL0xvd0xldmVsSW5pdGlhbGlzZS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL0xvd0xldmVsSW5pdGlhbGlzZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTJhOWZhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9Mb3dMZXZlbEluaXRpYWxpc2UuYworKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiAgIFVzZWQgd2l0aCBJQ0NBUk0gYW5kIEFBUk0uDQotICoNCi0gKiAgICAoYykgQ29weXJpZ2h0IElBUiBTeXN0ZW1zIDIwMTMNCi0gKg0KLSAqICAgIEZpbGUgbmFtZSAgIDogbWFpbi5jDQotICogICAgRGVzY3JpcHRpb24gOiBtYWluIG1vZHVsZQ0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKg0KLSAqIENhbGxlZCBmcm9tIENzdGFydC5zIHRvIGNvbmZpZ3VyZSB0aGUgY2hpcCBhbmQgYm9hcmQgc3BlY2lmaWMgSU8gYmVmb3JlDQotICogbWFpbigpIGlzIGNhbGxlZC4NCi0gKi8NCi0NCi0vKiogaW5jbHVkZSBmaWxlcyAqKi8NCi0jaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSAiYXJtdjdhX2NwMTVfZHJ2LmgiDQotI2luY2x1ZGUgImRldmRydl9jb21tb24uaCINCi0NCi0vKiBSZW5lc2FzIGluY2x1ZGUgZmlsZXMuICovDQotI2luY2x1ZGUgInN0Yl9pbml0LmgiDQotI2luY2x1ZGUgInBvcnRfaW5pdC5oIg0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIg0KLQ0KLQ0KLS8qKiBleHRlcm5hbCBkYXRhICoqLw0KLSNwcmFnbWEgc2VjdGlvbiA9ICIuaW50dmVjIg0KLQ0KLWV4dGVybiB2b2lkIFBlcmlwaGVyYWxfQmFzaWNJbml0KCB2b2lkICk7DQotdm9pZCBMb3dMZXZlbEluaXRpYWxpc2F0aW9uKHZvaWQpOw0KLXVuc2lnbmVkIGxvbmcgX193cml0ZShpbnQgZmlsZGVzLCBjb25zdCB2b2lkICpidWYsIHVuc2lnbmVkIGxvbmcgbmJ5dGVzKTsNCi0NCi0vKiBDYWxsZWQgZnJvbSBjc3RhcnR1cC5zIGJlZm9yZSB0aGUga2VybmVsIGlzIHN0YXJ0ZWQuICovDQotdm9pZCBMb3dMZXZlbEluaXRpYWxpc2F0aW9uKHZvaWQpDQotew0KLQkvKiBDaGlwIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIGZyb20gSUFSLiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0JLyogRGlzYWJsZSBNTVUsIGVuYWJsZSBJQ2FjaGUgKi8NCi0JQ1AxNV9NbXUoRkFMU0UpOw0KLQlDUDE1X0lDYWNoZShGQUxTRSk7DQotCUNQMTVfU2V0VmVjdG9yQmFzZSggKHVpbnQzMl90IClfX3NlY3Rpb25fYmVnaW4oICIuaW50dmVjIiApICk7DQotDQotCS8qIFNldCBMb3cgdmVjdG9ycyBtb2RlIGluIENQMTUgQ29udHJvbCBSZWdpc3RlciAqLw0KLQlDUDE1X1NldEhpZ2hWZWN0b3JzKEZBTFNFKTsNCi0NCi0NCi0JLyogQ2hpcCBhbmQgYm9hcmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgZnJvbSBSZW5lc2FzLiAqKioqKioqKiovDQotCVBlcmlwaGVyYWxfQmFzaWNJbml0KCk7DQotCVNUQl9Jbml0KCk7DQotCVBPUlRfSW5pdCgpOw0KLSAgICBSX0JTQ19Jbml0KCAoIHVpbnQ4X3QgKSAoIEJTQ19BUkVBX0NTMiB8IEJTQ19BUkVBX0NTMyApICk7DQotICAgIFJfSU5UQ19Jbml0KCk7DQotDQotDQotCUNQMTVfSUNhY2hlKFRSVUUpOw0KLQ0KLQkvKiBTdGFydCB3aXRoIGludGVycnVwdHMgZW5hYmxlZC4gKi8NCi0gICAgX19lbmFibGVfaXJxKCk7DQotICAgIF9fZW5hYmxlX2ZpcSgpOw0KLX0NCi0NCi0vKiBLZWVwIHRoZSBsaW5rZXIgaGFwcHkuICovDQotdW5zaWduZWQgbG9uZyBfX3dyaXRlKGludCBmaWxkZXMsIGNvbnN0IHZvaWQgKmJ1ZiwgdW5zaWduZWQgbG9uZyBuYnl0ZXMpDQotew0KLQlyZXR1cm4gMDsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3ZCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9SVE9TRGVtby5ld2QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyOWE0YTkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3ZAorKysgL2Rldi9udWxsCkBAIC0xLDEzNTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KLTxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPlJBTSBEZWJ1ZzwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY29uZmlnXFJUSzc3MjEwMEZDMDAwMDBCUl9OT1IubWFjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGRlYnVnZ2VyXFJlbmVzYXNcUjdTNzIxMDAxLmRkZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ni41MC42LjQ5NTI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuMjAuMi43NDE4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEF0dGFjaFRvUHJvZ3JhbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXGNvbmZpZ1xmbGFzaGxvYWRlclw8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MzQ2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BUk1TSU1fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFOR0VMX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQW5nZWxIZWFydGJlYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbXVuaWNhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTkdFTFRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9BbmdlbExvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QW5nZWxMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTU8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rSW5pdGlhbFNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RvSmxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQ29tbVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtTcGVlZFJhZGlvVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NVU0JEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TUFDUkFJR09SX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWc8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11U3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjBAQVJNN1RETUk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZ288L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVudXNlZEFkZHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDAwODAwMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQRU1pY3JvQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvSW50ZXJmYWNlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9SZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvSnRhZ1NwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+I1VOSU5JVElBTElaRUQjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1NlcmlhbFBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1RDUElQQXV0b1NjYW5OZXR3b3JrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1RDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAuMC4wLjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9Db21tQ21kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5SRElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DWERTMTAwQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8ZGVidWdnZXJQbHVnaW5zPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxIQ0NXYXJlXEhDQ1dhcmUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXEFWSVhcQVZJWC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xNUVhcTVFYUnRvc1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXFN5bUxpc3RcU3ltTGlzdC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLTwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvUlRPU0RlbW8uZXdwIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdhZDZlNy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvUlRPU0RlbW8uZXdwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQotPHByb2plY3Q+DQotICA8ZmlsZVZlcnNpb24+MjwvZmlsZVZlcnNpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+UkFNIERlYnVnPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SQU0gRGVidWdcRXhlPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJBTSBEZWJ1Z1xPYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJBTSBEZWJ1Z1xMaXN0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RlBVPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUuMTAuMC4xNTk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjIwLjIuNzQxODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UjdTNzIxMDAxCVJlbmVzYXMgUjdTNzIxMDAxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HQkVDb3JlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tk9SX0RFQlVHPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlBhMDgyLCBQZTE5MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDAwMDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ011bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxib2FyZFw8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxtb2R1bGVzXDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXFNvdXJjZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxGdWxsLURlbW88L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGluY2x1ZGVcaW9kZWZpbmVzPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTk8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxDb21tb25caW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGFwaTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+LnRleHQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JSW50ZXJ3b3JrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDcHBEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjUlRUSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDcHBJbmxpbmVTZW1hbnRpY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRmxvYXRTZW1hbnRpY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NOb0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3lTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFBUk08L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+OTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU9ialByZWZpeDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFDYXNlU2Vuc2l0aXZpdHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjcm9DaGFyczwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxTb3VyY2U8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SVE9TRGVtby5zcmVjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DVVNUT008L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KLSAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQotICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE2PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UlRPU0RlbW8ub3V0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXGNvbmZpZ1xsaW5rZXJcUmVuZXNhc1xyN3M3MjEwMDEuaWNmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X19pYXJfcHJvZ3JhbV9zdGFydDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkJsaW5reS1EZW1vPC9uYW1lPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxCbGlua3ktRGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5ib2FyZDwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxib2FyZFxib2FyZC5oPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GcmVlUlRPUy1Tb3VyY2U8L25hbWU+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5pbmNsdWRlPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVxGcmVlUlRPUy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcbGlzdC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcbXB1X3dyYXBwZXJzLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVxwb3J0YWJsZS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVccHJvamRlZnMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlXHF1ZXVlLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVxzZW1waHIuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlXFN0YWNrTWFjcm9zLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVx0YXNrLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVx0aW1lcnMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5JQVI8L25hbWU+DQotICAgICAgICA8Z3JvdXA+DQotICAgICAgICAgIDxuYW1lPkFSTV9DQTk8L25hbWU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E5XHBvcnQuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBOVxwb3J0QVNNLmg8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTlccG9ydEFTTS5zPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E5XHBvcnRtYWNyby5oPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8L2dyb3VwPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+TWVtTWFuZzwvbmFtZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgIDwvZ3JvdXA+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZ1bGwtRGVtbzwvbmFtZT4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkNvbW1vbi1EZW1vLVNvdXJjZTwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcY29tdGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5GcmVlUlRPUy1QbHVzLUNMSTwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTElcRnJlZVJUT1NfQ0xJLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+RnJlZVJUT1MtUGx1cy1GQVQtU0w8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+QVBJPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcYXBpXGFwaV9tZHJpdmVyLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxhcGlcYXBpX21kcml2ZXJfcmFtLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxhcGlcZmF0X3NsLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5Db21tb248L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGRpci5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxkcnYuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZl9sb2NrLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGZhdC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxmaWxlLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWwuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cdXRpbF9zZm4uYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cdm9sdW1lLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5NZWRpYS1Ecml2ZXI8L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxtZWRpYS1kcnZccmFtXHJhbWRydl9mLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5ydGM8L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxwc3BcdGFyZ2V0XHJ0Y1xwc3BfcnRjLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgPC9ncm91cD4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXEZpbGUtcmVsZWF0ZWQtQ0xJLWNvbW1hbmRzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXEZpbGUtc3lzdGVtLWRlbW8uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxGdWxsLURlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXHJlZ190ZXN0LnM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXFNhbXBsZS1DTEktY29tbWFuZHMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxGdWxsLURlbW9cc2VyaWFsLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXFVBUlRDb21tYW5kQ29uc29sZS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5JQVItRmlsZXM8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbW9kdWxlc1xhcm12N2FfY3AxNV9kcnYuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+UmVuZXNhcy1GaWxlczwvbmFtZT4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPmluY2x1ZGU8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcaW5jbHVkZVxpb2RlZmluZS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkluaXRpYWxpc2F0aW9uIGFuZCBEcml2ZXJzPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGRyaXZlcnNcY29tbW9uXGNvbW1vbl9kcml2ZXJcYnNjLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGRyaXZlcnNcY29tbW9uXHVzZXJkZWZcYnNjX3VzZXJkZWYuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xpbnRjXGludGNfZHJpdmVyXGludGMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xpbnRjXGludGNfZHJpdmVyXGludGNfaGFuZGxlci5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xkcml2ZXJzXGludGNcdXNlcmRlZlxpbnRjX3VzZXJkZWYuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xvc3RtXG9zdG1fZHJpdmVyXG9zdG0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcYm9hcmRfc2V0dGluZ3NccGVyaXBoZXJhbF9pbml0X2Jhc2ljLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHBvcnRfaW5pdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xkcml2ZXJzXHNjaWZfdWFydFxzY2lmX3VhcnRfZHJpdmVyXHNjaWZfdWFydC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xkcml2ZXJzXHNjaWZfdWFydFx1c2VyZGVmXHNjaWZfdWFydF91c2VyZGVmLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHNpb2NoYXIuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcYm9hcmRfc2V0dGluZ3Ncc3RiX2luaXQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcY3N0YXJ0dXAuczwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxGcmVlUlRPU190aWNrX2NvbmZpZy5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZyZWVSVE9TQ29uZmlnLmg8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcTEVEcy5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcTG93TGV2ZWxJbml0aWFsaXNlLmM8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcbWFpbi5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLTwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvUlRPU0RlbW8uZXd3IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3dwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ5YjlhZi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvUlRPU0RlbW8uZXd3CisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KLTx3b3Jrc3BhY2U+DQotICA8cHJvamVjdD4NCi0gICAgPHBhdGg+JFdTX0RJUiRcUlRPU0RlbW8uZXdwPC9wYXRoPg0KLSAgPC9wcm9qZWN0Pg0KLSAgPGJhdGNoQnVpbGQ+DQotICAgIDxiYXRjaERlZmluaXRpb24+DQotICAgICAgPG5hbWU+QWxsPC9uYW1lPg0KLSAgICAgIDxtZW1iZXI+DQotICAgICAgICA8cHJvamVjdD5SVE9TRGVtbzwvcHJvamVjdD4NCi0gICAgICAgIDxjb25maWd1cmF0aW9uPk5PUiBEZWJ1ZzwvY29uZmlndXJhdGlvbj4NCi0gICAgICA8L21lbWJlcj4NCi0gICAgICA8bWVtYmVyPg0KLSAgICAgICAgPHByb2plY3Q+UlRPU0RlbW88L3Byb2plY3Q+DQotICAgICAgICA8Y29uZmlndXJhdGlvbj5SQU0gRGVidWc8L2NvbmZpZ3VyYXRpb24+DQotICAgICAgPC9tZW1iZXI+DQotICAgICAgPG1lbWJlcj4NCi0gICAgICAgIDxwcm9qZWN0PlJUT1NEZW1vPC9wcm9qZWN0Pg0KLSAgICAgICAgPGNvbmZpZ3VyYXRpb24+U2VyaWFsRmxhc2ggRGVidWc8L2NvbmZpZ3VyYXRpb24+DQotICAgICAgPC9tZW1iZXI+DQotICAgICAgPG1lbWJlcj4NCi0gICAgICAgIDxwcm9qZWN0PlJUT1NEZW1vPC9wcm9qZWN0Pg0KLSAgICAgICAgPGNvbmZpZ3VyYXRpb24+U2VyaWFsRmxhc2ggZm9yIEJvb3Rsb2FkZXI8L2NvbmZpZ3VyYXRpb24+DQotICAgICAgPC9tZW1iZXI+DQotICAgICAgPG1lbWJlcj4NCi0gICAgICAgIDxwcm9qZWN0PkJvb3Rsb2FkZXI8L3Byb2plY3Q+DQotICAgICAgICA8Y29uZmlndXJhdGlvbj5TZXJpYWxGbGFzaCBCb290bG9hZGVyPC9jb25maWd1cmF0aW9uPg0KLSAgICAgIDwvbWVtYmVyPg0KLSAgICA8L2JhdGNoRGVmaW5pdGlvbj4NCi0gIDwvYmF0Y2hCdWlsZD4NCi08L3dvcmtzcGFjZT4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvYm9hcmQvYXJtX2NvbW0uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9ib2FyZC9hcm1fY29tbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmQzN2RlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9ib2FyZC9hcm1fY29tbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKioNCi0gKiogICAgQ29tbW9uIGRlZmluaXRpb24gZm9yIElBUiBFVyBBUk0NCi0gKioNCi0gKiogICAgVXNlZCB3aXRoIEFSTSBJQVIgQy9DKysgQ29tcGlsZXIgYW5kIEFzc2VtYmxlci4NCi0gKioNCi0gKiogICAgKGMpIENvcHlyaWdodCBJQVIgU3lzdGVtcyAyMDA2DQotICoqDQotICoqICAgICRSZXZpc2lvbjogNTI3MDUgJA0KLSAqKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgPGludHJpbnNpY3MuaD4NCi0NCi0jaWZuZGVmIF9fQVJNX0NPTU1fREVGX0gNCi0jZGVmaW5lIF9fQVJNX0NPTU1fREVGX0gNCi0NCi0jZGVmaW5lIE1IWiAgICAgICAgICAgKjEwMDAwMDBsDQotI2RlZmluZSBLSFogICAgICAgICAgICoxMDAwbA0KLSNkZWZpbmUgSFogICAgICAgICAgICAqMWwNCi0NCi0jaWZuZGVmIEZBTFNFDQotI2RlZmluZSBGQUxTRSAoMSA9PSAwKQ0KLSNlbmRpZg0KLQ0KLSNpZm5kZWYgVFJVRQ0KLSNkZWZpbmUgVFJVRSAgKDEgPT0gMSkNCi0jZW5kaWYNCi0NCi0jaWZuZGVmIE5VTEwNCi0jZGVmaW5lIE5VTEwgKCh2b2lkKikwKQ0KLSNlbmRpZg0KLQ0KLXR5cGVkZWYgZG91YmxlICAgICAgICAgICAgICAgIEZsbzY0OyAgICAvLyBEb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50DQotdHlwZWRlZiBkb3VibGUgICAgICAgICAgICAgICogcEZsbzY0Ow0KLXR5cGVkZWYgZmxvYXQgICAgICAgICAgICAgICAgIEZsbzMyOyAgICAvLyBTaW5nbGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50DQotdHlwZWRlZiBmbG9hdCAgICAgICAgICAgICAgICogcEZsbzMyOw0KLXR5cGVkZWYgc2lnbmVkICAgbG9uZyBsb25nICAgIEludDY0UzsgICAvLyBTaWduZWQgICA2NCBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHNpZ25lZCAgIGxvbmcgbG9uZyAgKiBwSW50NjRTOw0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgIEludDY0VTsgICAvLyBVbnNpZ25lZCA2NCBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgKiBwSW50NjRVOw0KLXR5cGVkZWYgc2lnbmVkICAgaW50ICAgICAgICAgIEludDMyUzsgICAvLyBTaWduZWQgICAzMiBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHNpZ25lZCAgIGludCAgICAgICAgKiBwSW50MzJTOw0KLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgICAgIEludDMyVTsgICAvLyBVbnNpZ25lZCAzMiBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgKiBwSW50MzJVOw0KLXR5cGVkZWYgc2lnbmVkICAgc2hvcnQgICAgICAgIEludDE2UzsgICAvLyBTaWduZWQgICAxNiBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHNpZ25lZCAgIHNob3J0ICAgICAgKiBwSW50MTZTOw0KLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgICAgIEludDE2VTsgICAvLyBVbnNpZ25lZCAxNiBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgICAgKiBwSW50MTZVOw0KLXR5cGVkZWYgc2lnbmVkICAgY2hhciAgICAgICAgIEludDhTOyAgICAvLyBTaWduZWQgICAgOCBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHNpZ25lZCAgIGNoYXIgICAgICAgKiBwSW50OFM7DQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgICAgSW50OFU7ICAgIC8vIFVuc2lnbmVkICA4IGJpdCBxdWFudGl0eQ0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICAgICAqIHBJbnQ4VTsNCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgICBCb29sZWFuOyAgLy8gQm9vbGVhbg0KLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgICAqIHBCb29sZWFuOw0KLQ0KLSNkZWZpbmUgTUFYKGEsIGIpICgoKGEpID4gKGIpKSA/IChhKSA6IChiKSkNCi0jZGVmaW5lIE1JTihhLCBiKSAoKChhKSA8IChiKSkgPyAoYSkgOiAoYikpDQotI2RlZmluZSBfMkJMKGEpICAgKEludDhVKShhKSwoSW50OFUpKGE+PjgpDQotI2RlZmluZSBfMkJCKGEpICAgKEludDhVKShhPj44KSwoSW50OFUpKGEpLA0KLSNkZWZpbmUgXzNCTChhKSAgIChJbnQ4VSkoYSksKEludDhVKShhPj44KSwoSW50OFUpKGE+PjE2KQ0KLSNkZWZpbmUgXzNCQihhKSAgIChJbnQ4VSkoYT4+MTYpLChJbnQ4VSkoYT4+OCksKEludDhVKShhKQ0KLSNkZWZpbmUgXzRCTChhKSAgIChJbnQ4VSkoYSksKEludDhVKShhPj44KSwoSW50OFUpKGE+PjE2KSwoSW50OFUpKGE+PjI0KQ0KLSNkZWZpbmUgXzRCQihhKSAgIChJbnQ4VSkoYT4+MjQpLChJbnQ4VSkoYT4+MTYpLChJbnQ4VSkoYT4+OCksKEludDhVKShhKQ0KLQ0KLXR5cGVkZWYgdm9pZCAqICgqQ29tbVVzZXJGcG50X3QpKHZvaWQgKik7DQotdHlwZWRlZiB2b2lkICAgKCpWb2lkRnBudF90KSh2b2lkKTsNCi0NCi0vLyBBdG9taWMgZXhjaGFuZ2Ugb2YgZGF0YSBiZXR3ZWVuIGEgbWVtb3J5IGNlbGwgYW5kIGEgcmVnaXN0ZXINCi0vLyByZXR1cm4gdmFsdWUgb2YgdGhlIG1lbW9yeSBjZWxsDQotI2lmIF9fQ09SRV9fIDwgNw0KLWlubGluZSBfX2FybSBJbnQzMlUgQXRvbWljRXhjaGFuZ2UgKEludDMyVSBTdGF0ZSwgcEludDMyVSBGbGFnKQ0KLXsNCi0gIGFzbSgic3dwICByMCwgcjAsIFtyMV0iKTsNCi0gIHJldHVybihTdGF0ZSk7DQotfQ0KLQ0KLSNkZWZpbmUgSVJRX0ZMQUcgICAgICAgIDB4ODANCi0jZGVmaW5lIEZJUV9GTEFHICAgICAgICAweDQwDQotDQotaW5saW5lIF9fYXJtIEludDMyVSBFbnRyQ3JpdFNlY3Rpb24odm9pZCkNCi17DQotdW5zaWduZWQgbG9uZyB0bXA7DQotICB0bXAgPSBfX2dldF9DUFNSKCk7DQotICBfX3NldF9DUFNSKHRtcCB8IElSUV9GTEFHKTsNCi0gIHJldHVybih0bXApOw0KLX0NCi0NCi1pbmxpbmUgX19hcm0gdm9pZCBFeHRDcml0U2VjdGlvbihJbnQzMlUgU2F2ZSkNCi17DQotdW5zaWduZWQgbG9uZyB0bXA7DQotICB0bXAgPSBfX2dldF9DUFNSKCk7DQotICBfX3NldF9DUFNSKHRtcCAmIChTYXZlIHwgfklSUV9GTEFHKSk7DQotfQ0KLQ0KLWlubGluZSBfX2FybSBJbnQzMlUgRW50ckNyaXRTZWN0aW9uRmlxKHZvaWQpDQotew0KLXVuc2lnbmVkIGxvbmcgdG1wOw0KLSAgdG1wID0gX19nZXRfQ1BTUigpOw0KLSAgX19zZXRfQ1BTUih0bXAgfCAoSVJRX0ZMQUcgfCBGSVFfRkxBRykpOw0KLSAgcmV0dXJuKHRtcCk7DQotfQ0KLQ0KLWlubGluZSBfX2FybSB2b2lkIEV4dENyaXRTZWN0aW9uRmlxKEludDMyVSBTYXZlKQ0KLXsNCi11bnNpZ25lZCBsb25nIHRtcDsNCi0gIHRtcCA9IF9fZ2V0X0NQU1IoKTsNCi0gIF9fc2V0X0NQU1IodG1wICYgKFNhdmUgfCB+KElSUV9GTEFHIHwgRklRX0ZMQUcpKSk7DQotfQ0KLQ0KLSNkZWZpbmUgRU5UUl9DUlRfU0VDVElPTihTYXZlKSBTYXZlID0gRW50ckNyaXRTZWN0aW9uKCkNCi0jZGVmaW5lIEVYVF9DUlRfU0VDVElPTihTYXZlKSAgRXh0Q3JpdFNlY3Rpb24oU2F2ZSkNCi0NCi0jZGVmaW5lIEVOVFJfQ1JUX1NFQ1RJT05fRihTYXZlKSBTYXZlID0gRW50ckNyaXRTZWN0aW9uRmlxKCkNCi0jZGVmaW5lIEVYVF9DUlRfU0VDVElPTl9GKFNhdmUpICBFeHRDcml0U2VjdGlvbkZpcShTYXZlKQ0KLQ0KLSNlbGlmICBfX0NPUkVfXyA9PSA3DQotDQotZXh0ZXJuIEludDMyVSBDcml0aWNhbFNlY0NudHI7DQotDQotaW5saW5lIHZvaWQgRW50ckNyaXRTZWN0aW9uKHZvaWQpDQotew0KLSAgaWYoQ3JpdGljYWxTZWNDbnRyID09IDApDQotICB7DQotICAgIGFzbSgiQ1BTSUQgaSIpOw0KLSAgfQ0KLSAgLy8gYXZvaWQgbG9zdCBvZiBvbmUgY291bnQgaW4gY2FzZSBvZiBzaW11bHRhbmVvdXNseSBjYWxsaW5nIGZyb20gYm90aCBwbGFjZXMNCi0gICsrQ3JpdGljYWxTZWNDbnRyOw0KLX0NCi0NCi1pbmxpbmUgdm9pZCBFeHRDcml0U2VjdGlvbih2b2lkKQ0KLXsNCi0gIGlmKC0tQ3JpdGljYWxTZWNDbnRyID09IDApDQotICB7DQotICAgIGFzbSgiQ1BTSUUgaSIpOw0KLSAgfQ0KLX0NCi0NCi1pbmxpbmUgSW50MzJVIEF0b21pY0V4Y2hhbmdlIChJbnQzMlUgU3RhdGUsIHBJbnQzMlUgRmxhZykNCi17DQotSW50MzJVIEhvbGQ7DQotICBFbnRyQ3JpdFNlY3Rpb24oKTsNCi0gIEhvbGQgPSAqRmxhZzsNCi0gICpGbGFnID0gU3RhdGU7DQotICBFeHRDcml0U2VjdGlvbigpOw0KLSAgcmV0dXJuKEhvbGQpOw0KLX0NCi0NCi0jZGVmaW5lIEVOVFJfQ1JUX1NFQ1RJT04oKSBFbnRyQ3JpdFNlY3Rpb24oKQ0KLSNkZWZpbmUgRVhUX0NSVF9TRUNUSU9OKCkgIEV4dENyaXRTZWN0aW9uKCkNCi0jZW5kaWYNCi0NCi0jZGVmaW5lIExvbmdUb0JpbihuKSAoKChuID4+IDIxKSAmIDB4ODApIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAoKG4gPj4gMTgpICYgMHg0MCkgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICgobiA+PiAxNSkgJiAweDIwKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgKChuID4+IDEyKSAmIDB4MTApIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAoKG4gPj4gIDkpICYgMHgwOCkgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICgobiA+PiAgNikgJiAweDA0KSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgKChuID4+ICAzKSAmIDB4MDIpIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAoKG4gICAgICApICYgMHgwMSkpDQotDQotI2RlZmluZSBfX0JJTihuKSBMb25nVG9CaW4oMHgjI24jI2wpDQotDQotI2RlZmluZSBCSU44KG4pICAgICAgICAgICAgICAgICAgICAgICBfX0JJTihuKQ0KLSNkZWZpbmUgQklOKG4pICAgICAgICAgICAgICAgICAgICAgICAgX19CSU4obikNCi0jZGVmaW5lIEJJTjE2KGIxLGIyKSAgICAgICAgKCggICAgICAgIF9fQklOKGIxKSAgPDwgIDhVTCkgKyBcDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0JJTihiMikpDQotI2RlZmluZSBCSU4zMihiMSxiMixiMyxiNCkgKCgoKEludDMyVSlfX0JJTihiMSkpIDw8IDI0VUwpICsgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChJbnQzMlUpX19CSU4oYjIpKSA8PCAxNlVMKSArIFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoSW50MzJVKV9fQklOKGIzKSkgPDwgIDhVTCkgKyBcDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEludDMyVSlfX0JJTihiNCkpDQotDQotI2VuZGlmIC8vIF9fQVJNX0NPTU1fREVGX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9OT1IuaWNmIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfTk9SLmljZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlZDQ0NS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9OT1IuaWNmCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyojIyNJQ0YjIyMgU2VjdGlvbiBoYW5kbGVkIGJ5IElDRiBlZGl0b3IsIGRvbid0IHRvdWNoISAqKioqLw0KLS8qLUVkaXRvciBhbm5vdGF0aW9uIGZpbGUtKi8NCi0vKiBJY2ZFZGl0b3JGaWxlPSIkVE9PTEtJVF9ESVIkXGNvbmZpZ1xpZGVcSWNmRWRpdG9yXGFfdjFfMC54bWwiICovDQotLyotU3BlY2lhbHMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyA9IDB4MDAwMDAwMDA7DQotLyotTWVtb3J5IFJlZ2lvbnMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUk9NX3N0YXJ0X18gICA9IDB4MDAwMDAwNDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfXyAgICAgPSAweDA3RkZGRkZGOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgID0gMHgyMDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX2VuZF9fICAgICA9IDB4MjA5RkZGRkY7DQotLyotU2l6ZXMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2NzdGFja19fICAgPSAweDgwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICA9IDB4ODAwMDsNCi0vKioqKiBFbmQgb2YgSUNGIGVkaXRvciBzZWN0aW9uLiAjIyNJQ0YjIyMqLw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fc3RhcnRfXyAgICAgICA9IDB4MjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9lbmRfXyAgICAgICAgID0gMHgyMDAxRkZGRjsNCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX3N0YXJ0X18gICAgPSAweDYwMDIwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fZW5kX18gICAgICA9IDB4NjA5RkZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9zdGFydF9fID0gMHg2MDAwMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX2VuZF9fICAgPSAweDYwMDFGRkZGOw0KLQ0KLWRlZmluZSBtZW1vcnkgbWVtIHdpdGggc2l6ZSA9IDRHOw0KLQ0KLWRlZmluZSByZWdpb24gUk9NX3JlZ2lvbiAgICAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUk9NX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIFJBTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSZXRSQU1fcmVnaW9uICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gTWlycm9yUkFNX3JlZ2lvbiAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgIHRvIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJldFJBTV9yZWdpb24gPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfX107DQotDQotZGVmaW5lIGJsb2NrIENTVEFDSyAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgIHsgfTsNCi1kZWZpbmUgYmxvY2sgU1ZDX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3N2Y3N0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBJUlFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaXJxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEZJUV9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9maXFzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgVU5EX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3VuZHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBBQlRfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfYWJ0c3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEhFQVAgICAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICAgIHsgfTsNCi0NCi1pbml0aWFsaXplIGJ5IGNvcHkgeyByZWFkd3JpdGUgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIC5ub2luaXQgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIE1NVV9UVCB9Ow0KLQ0KLXBsYWNlIGF0IGFkZHJlc3MgbWVtOl9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyB7IHJlYWRvbmx5IHNlY3Rpb24gLmludHZlYyB9Ow0KLQ0KLXBsYWNlIGluIFJPTV9yZWdpb24gICAgIHsgcmVhZG9ubHkgfTsNCi1wbGFjZSBpbiBSQU1fcmVnaW9uICAgICB7IHJlYWR3cml0ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIENTVEFDSywgYmxvY2sgU1ZDX1NUQUNLLCBibG9jayBJUlFfU1RBQ0ssIGJsb2NrIEZJUV9TVEFDSywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIFVORF9TVEFDSywgYmxvY2sgQUJUX1NUQUNLLCBibG9jayBIRUFQIH07DQotDQotcGxhY2UgaW4gUmV0UkFNX3JlZ2lvbiAgICAgICB7IHNlY3Rpb24gLnJldHJhbSB9Ow0KLXBsYWNlIGluIE1pcnJvclJBTV9yZWdpb24gICAgeyBzZWN0aW9uIC5taXJyb3JyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSZXRSQU1fcmVnaW9uIHsgc2VjdGlvbiAubWlycm9ycmV0cmFtIH07DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfTk9SLm1hYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX05PUi5tYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZjAwNmYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfTk9SLm1hYworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXNldHVwKCkNCi17DQotX192YXIgUmVnOw0KLQ0KLSAgLy8gRW5hYmxlIEkgQ2FjaGUNCi0gIC8vIERpc2FibGUgTU1VIGFuZCBlbmFibGUgSUNhY2hlDQotICBSZWcgPSBfX2p0YWdDUDE1UmVhZFJlZygxLCAwLCAwLCAwKTsNCi0gIFJlZyAmPSAweEZGRkZGRkZBOw0KLSAgUmVnIHw9IDE8PDEyOw0KLSAgX19qdGFnQ1AxNVdyaXRlUmVnKDEsIDAsIDAsIDAsIFJlZyk7DQotDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwRkY0MSwgMHhGQ0ZFNzIxQywgIk1lbW9yeSIpOyAvLyBzZXQgUElQQzcuNiBkaXJlY3Rpb24gY29udHJvbGxlZCBieSBhbHQuV0UwDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwRkY0MSwgMHhGQ0ZFMzQxQywgIk1lbW9yeSIpOyAvLyBzZXQgUE1DNy42IHRvIGJlIGFsdC5XRTANCi0NCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwMDBGRkZGLCAweEZDRkU3MjIwLCAiTWVtb3J5Iik7IC8vIHNldCBQSVBDOCBkaXJlY3Rpb24gY29udHJvbGxlZCBieSBhbHQuQTgtQTIzDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwRkZGRiwgMHhGQ0ZFMzQyMCwgIk1lbW9yeSIpOyAvLyBzZXQgUE1DOCB0byBiZSBhbHQuQTgtQTIzDQotDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwMDAwMywgMHhGQ0ZFNzIyNCwgIk1lbW9yeSIpOyAvLyBzZXQgUElQQzkgZGlyZWN0aW9uIGNvbnRyb2xsZWQgYnkgYWx0LkEyNC1BMjUNCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwMDAwMDAzLCAweEZDRkUzNDI0LCAiTWVtb3J5Iik7IC8vIHNldCBQTUM5IHRvIGJlIGFsdC5BMjQtQTI1DQotDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwMDA4MCwgMHhGQ0ZFNzIwQywgIk1lbW9yeSIpOyAvLyBzZXQgUElQQzMgZGlyZWN0aW9uIGNvbnRyb2xsZWQgYnkgYWx0LkNTMQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMDAwODAsIDB4RkNGRTM0MEMsICJNZW1vcnkiKTsgLy8gc2V0IFBNQzMgdG8gYmUgYWx0LkNTMQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMDAwODAsIDB4RkNGRTM2MEMsICJNZW1vcnkiKTsgLy8gc2V0IFBGQ0UzIHRvIGJlIGFsdC5DUzENCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwMDAwMDgwLCAweEZDRkUzQTBDLCAiTWVtb3J5Iik7IC8vIHNldCBQRkNBRTMgdG8gYmUgYWx0LkNTMQ0KLX0NCi0NCi1leGVjVXNlclByZWxvYWQoKQ0KLXsNCi0gIF9fbWVzc2FnZSAiLS0tLS0gUHJlcGFyZSBoYXJkd2FyZSBmb3IgZGVidWcgLS0tLS1cbiI7DQotICBfX2h3UmVzZXQoMCk7DQotICBzZXR1cCgpOw0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaC5pY2YgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaC5pY2YKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMmUxNzUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2guaWNmCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyojIyNJQ0YjIyMgU2VjdGlvbiBoYW5kbGVkIGJ5IElDRiBlZGl0b3IsIGRvbid0IHRvdWNoISAqKioqLw0KLS8qLUVkaXRvciBhbm5vdGF0aW9uIGZpbGUtKi8NCi0vKiBJY2ZFZGl0b3JGaWxlPSIkVE9PTEtJVF9ESVIkXGNvbmZpZ1xpZGVcSWNmRWRpdG9yXGFfdjFfMC54bWwiICovDQotLyotU3BlY2lhbHMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyA9IDB4MTgwMDAwMDA7DQotLyotTWVtb3J5IFJlZ2lvbnMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUk9NX3N0YXJ0X18gICA9IDB4MTgwMDAwNDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfXyAgICAgPSAweDE4MDdGRkZGOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgID0gMHgyMDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX2VuZF9fICAgICA9IDB4MjA5RkZGRkY7DQotLyotU2l6ZXMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2NzdGFja19fICAgPSAweDgwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICA9IDB4ODAwMDsNCi0vKioqKiBFbmQgb2YgSUNGIGVkaXRvciBzZWN0aW9uLiAjIyNJQ0YjIyMqLw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fc3RhcnRfXyAgICAgICA9IDB4MjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9lbmRfXyAgICAgICAgID0gMHgyMDAxRkZGRjsNCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX3N0YXJ0X18gICAgPSAweDYwMDIwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fZW5kX18gICAgICA9IDB4NjA5RkZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9zdGFydF9fID0gMHg2MDAwMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX2VuZF9fICAgPSAweDYwMDFGRkZGOw0KLQ0KLWRlZmluZSBtZW1vcnkgbWVtIHdpdGggc2l6ZSA9IDRHOw0KLQ0KLWRlZmluZSByZWdpb24gUk9NX3JlZ2lvbiAgICAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUk9NX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIFJBTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSZXRSQU1fcmVnaW9uICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gTWlycm9yUkFNX3JlZ2lvbiAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgIHRvIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJldFJBTV9yZWdpb24gPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfX107DQotDQotZGVmaW5lIGJsb2NrIENTVEFDSyAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgIHsgfTsNCi1kZWZpbmUgYmxvY2sgU1ZDX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3N2Y3N0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBJUlFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaXJxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEZJUV9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9maXFzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgVU5EX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3VuZHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBBQlRfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfYWJ0c3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEhFQVAgICAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICAgIHsgfTsNCi0NCi1pbml0aWFsaXplIGJ5IGNvcHkgeyByZWFkd3JpdGUgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIC5ub2luaXQgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIE1NVV9UVCB9Ow0KLQ0KLXBsYWNlIGF0IGFkZHJlc3MgbWVtOl9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyB7IHJlYWRvbmx5IHNlY3Rpb24gLmludHZlYyB9Ow0KLQ0KLXBsYWNlIGluIFJPTV9yZWdpb24gICAgIHsgcmVhZG9ubHkgfTsNCi1wbGFjZSBpbiBSQU1fcmVnaW9uICAgICB7IHJlYWR3cml0ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIENTVEFDSywgYmxvY2sgU1ZDX1NUQUNLLCBibG9jayBJUlFfU1RBQ0ssIGJsb2NrIEZJUV9TVEFDSywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIFVORF9TVEFDSywgYmxvY2sgQUJUX1NUQUNLLCBibG9jayBIRUFQIH07DQotDQotcGxhY2UgaW4gUmV0UkFNX3JlZ2lvbiAgICAgICB7IHNlY3Rpb24gLnJldHJhbSB9Ow0KLXBsYWNlIGluIE1pcnJvclJBTV9yZWdpb24gICAgeyBzZWN0aW9uIC5taXJyb3JyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSZXRSQU1fcmVnaW9uIHsgc2VjdGlvbiAubWlycm9ycmV0cmFtIH07DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2gubWFjIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2gubWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2JjNDhjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoLm1hYworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLXNldHVwKCkNCi17DQotX192YXIgUmVnOw0KLQ0KLSAgLy8gRW5hYmxlIEkgQ2FjaGUNCi0gIC8vIERpc2FibGUgTU1VIGFuZCBlbmFibGUgSUNhY2hlDQotICBSZWcgPSBfX2p0YWdDUDE1UmVhZFJlZygxLCAwLCAwLCAwKTsNCi0gIFJlZyAmPSAweEZGRkZGRkZBOw0KLSAgUmVnIHw9IDE8PDEyOw0KLSAgX19qdGFnQ1AxNVdyaXRlUmVnKDEsIDAsIDAsIDAsIFJlZyk7DQotDQotICAvL19fd3JpdGVNZW1vcnkxNigweDAwMzUsIDB4RkNGRTAwMTAsICJNZW1vcnkiKTsgICAgIC8vIEZSUUNSDQotICAvL19fd3JpdGVNZW1vcnkxNigweDAwMDEsIDB4RkNGRTAwMTQsICJNZW1vcnkiKTsgICAgIC8vIEZSUUNSMg0KLQ0KLSAgLy8gVHVybiBvbiBjbG9jayBmb3IgU1BJDQotICBfX3dyaXRlTWVtb3J5OCgweDAwLCAweEZDRkUwNDM4LCAiTWVtb3J5Iik7ICAgICAgICAvLyBQRE1fU1RCQ1I5DQotDQotICAvLyBDb25maWd1cmUgUE9SVFMgZm9yIFNQSSAoc2VyaWFsIGZsYXNoIDEpDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkU3MjI0LCAiTWVtb3J5Iik7ICAgICAvLyBQSVBDOSAyLTcgLT4gYWx0IElPIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwRkMsIDB4RkNGRTM0MjQsICJNZW1vcnkiKTsgICAgIC8vIFBNQzkgMi03IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkUzNTI0LCAiTWVtb3J5Iik7ICAgICAvLyBQRkM5IDItNyAtPiBhbHQgbW9kZQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFBPUlRTIGZvciBTUEkgKHNlcmlhbCBmbGFzaCAyKQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4RjAwMCwgMHhGQ0ZFNzIwOCwgIk1lbW9yeSIpOyAgICAgLy8gUElQQzIgMTItMTUgLT4gYWx0IElPIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM0MDgsICJNZW1vcnkiKTsgICAgIC8vIFBNQzIgMTItMTUgLT4gYWx0IG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM1MDgsICJNZW1vcnkiKTsgICAgIC8vIFBGQzIgMTItMTUgLT4gYWx0IG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM2MDgsICJNZW1vcnkiKTsgICAgIC8vIFBGQ0UyIDEyLTE1IC0+IGFsdCBtb2RlDQotDQotICAvLyBDb25maWd1cmUgU1BJIGZvciBFWFRSRUFEIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAxQUE0MDIwLCAweDNGRUZBMDAwLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19DTU5DUiAxLW1lbW9yeSwgQ1BIQT0wLCBDUE9MPTAsIFNGREU9MQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFNQSSByZWdpc3RlcnMNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMTMwMDAwLCAweDNGRUZBMDEwLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19EUkNNUiBDTUQgPSAweDEzDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDAwNEYwMCwgMHgzRkVGQTAxQywgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJFTlIgQURFID0gMHhGLCBDREU9MQ0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMTAxMDEsIDB4M0ZFRkEwMEMsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSQ1IgZW5hYmxlIGJ1cnN0DQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDAwMDAwMSwgMHgzRkVGQTAxNCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJFQVIgZW5hYmxlIGV4dGVuZGVkIGFkZHJlc3MgcmFuZ2UNCi0NCi0gIC8vIFNldCBCaXQgUmF0ZQ0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDAwMDMsIDB4M0ZFRkEwMDgsICJNZW1vcnkiKTsgLy8gU1BJQlNDX1NQQkNSIFNQQlI9MCwgQlJEVj0zDQotDQotICAvLyBGbHVzaCBSZWFkIENhY2hlDQotICBSZWcgPSBfX3JlYWRNZW1vcnkzMigweDNGRUZBMDBDLCAiTWVtb3J5Iik7ICAgICAgICAvLyBSZWFkIFNQSUJTQ19EUkNSXzANCi0gIFJlZyB8PSAweDAwMDAwMjAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBSQ0YgYml0DQotICBfX3dyaXRlTWVtb3J5MzIoUmVnLCAweDNGRUZBMDBDLCAiTWVtb3J5Iik7ICAgICAgICAvLyBTZXQgU1BJQlNDX0RSQ1JfMA0KLX0NCi0NCi1leGVjVXNlclByZWxvYWQoKQ0KLXsNCi0gIF9fbWVzc2FnZSAiLS0tLS0gUHJlcGFyZSBoYXJkd2FyZSBmb3IgZGVidWcgLS0tLS1cbiI7DQotICBfX2h3UmVzZXQoMCk7DQotICBzZXR1cCgpOw0KLX0NCi0NCi1leGVjVXNlclJlc2V0KCkNCi17DQotICBzZXR1cCgpOw0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaF9hcHAuaWNmIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2hfYXBwLmljZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkxN2M4My4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaF9hcHAuaWNmCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyojIyNJQ0YjIyMgU2VjdGlvbiBoYW5kbGVkIGJ5IElDRiBlZGl0b3IsIGRvbid0IHRvdWNoISAqKioqLw0KLS8qLUVkaXRvciBhbm5vdGF0aW9uIGZpbGUtKi8NCi0vKiBJY2ZFZGl0b3JGaWxlPSIkVE9PTEtJVF9ESVIkXGNvbmZpZ1xpZGVcSWNmRWRpdG9yXGFfdjFfMC54bWwiICovDQotLyotU3BlY2lhbHMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyA9IDB4MTgwODAwMDA7DQotLyotTWVtb3J5IFJlZ2lvbnMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUk9NX3N0YXJ0X18gICA9IDB4MTgwODAwNDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfXyAgICAgPSAweDFCRkZGRkZGOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgID0gMHgyMDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX2VuZF9fICAgICA9IDB4MjA5RkZGRkY7DQotLyotU2l6ZXMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2NzdGFja19fICAgPSAweDgwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICA9IDB4ODAwMDsNCi0vKioqKiBFbmQgb2YgSUNGIGVkaXRvciBzZWN0aW9uLiAjIyNJQ0YjIyMqLw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fc3RhcnRfXyAgICAgICA9IDB4MjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9lbmRfXyAgICAgICAgID0gMHgyMDAxRkZGRjsNCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX3N0YXJ0X18gICAgPSAweDYwMDIwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fZW5kX18gICAgICA9IDB4NjA5RkZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9zdGFydF9fID0gMHg2MDAwMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX2VuZF9fICAgPSAweDYwMDFGRkZGOw0KLQ0KLWRlZmluZSBtZW1vcnkgbWVtIHdpdGggc2l6ZSA9IDRHOw0KLQ0KLWRlZmluZSByZWdpb24gUk9NX3JlZ2lvbiAgICAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUk9NX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIFJBTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSZXRSQU1fcmVnaW9uICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gTWlycm9yUkFNX3JlZ2lvbiAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgIHRvIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJldFJBTV9yZWdpb24gPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfX107DQotDQotZGVmaW5lIGJsb2NrIENTVEFDSyAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgIHsgfTsNCi1kZWZpbmUgYmxvY2sgU1ZDX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3N2Y3N0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBJUlFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaXJxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEZJUV9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9maXFzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgVU5EX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3VuZHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBBQlRfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfYWJ0c3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEhFQVAgICAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICAgIHsgfTsNCi0NCi1pbml0aWFsaXplIGJ5IGNvcHkgeyByZWFkd3JpdGUgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIC5ub2luaXQgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIE1NVV9UVCB9Ow0KLQ0KLXBsYWNlIGF0IGFkZHJlc3MgbWVtOl9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyB7IHJlYWRvbmx5IHNlY3Rpb24gLmludHZlYyB9Ow0KLQ0KLXBsYWNlIGluIFJPTV9yZWdpb24gICAgIHsgcmVhZG9ubHkgfTsNCi1wbGFjZSBpbiBSQU1fcmVnaW9uICAgICB7IHJlYWR3cml0ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIENTVEFDSywgYmxvY2sgU1ZDX1NUQUNLLCBibG9jayBJUlFfU1RBQ0ssIGJsb2NrIEZJUV9TVEFDSywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIFVORF9TVEFDSywgYmxvY2sgQUJUX1NUQUNLLCBibG9jayBIRUFQIH07DQotDQotcGxhY2UgaW4gUmV0UkFNX3JlZ2lvbiAgICAgICB7IHNlY3Rpb24gLnJldHJhbSB9Ow0KLXBsYWNlIGluIE1pcnJvclJBTV9yZWdpb24gICAgeyBzZWN0aW9uIC5taXJyb3JyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSZXRSQU1fcmVnaW9uIHsgc2VjdGlvbiAubWlycm9ycmV0cmFtIH07DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2hfYXBwLm1hYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoX2FwcC5tYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0OWFhYjkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2hfYXBwLm1hYworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLXNldHVwKCkNCi17DQotX192YXIgUmVnOw0KLQ0KLSAgLy8gRW5hYmxlIEkgQ2FjaGUNCi0gIC8vIERpc2FibGUgTU1VIGFuZCBlbmFibGUgSUNhY2hlDQotICBSZWcgPSBfX2p0YWdDUDE1UmVhZFJlZygxLCAwLCAwLCAwKTsNCi0gIFJlZyAmPSAweEZGRkZGRkZBOw0KLSAgUmVnIHw9IDE8PDEyOw0KLSAgX19qdGFnQ1AxNVdyaXRlUmVnKDEsIDAsIDAsIDAsIFJlZyk7DQotDQotICAvL19fd3JpdGVNZW1vcnkxNigweDAwMzUsIDB4RkNGRTAwMTAsICJNZW1vcnkiKTsgICAgIC8vIEZSUUNSDQotICAvL19fd3JpdGVNZW1vcnkxNigweDAwMDEsIDB4RkNGRTAwMTQsICJNZW1vcnkiKTsgICAgIC8vIEZSUUNSMg0KLQ0KLSAgLy8gVHVybiBvbiBjbG9jayBmb3IgU1BJDQotICBfX3dyaXRlTWVtb3J5OCgweDAwLCAweEZDRkUwNDM4LCAiTWVtb3J5Iik7ICAgICAgICAvLyBQRE1fU1RCQ1I5DQotDQotICAvLyBDb25maWd1cmUgUE9SVFMgZm9yIFNQSSAoc2VyaWFsIGZsYXNoIDEpDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkU3MjI0LCAiTWVtb3J5Iik7ICAgICAvLyBQSVBDOSAyLTcgLT4gYWx0IElPIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwRkMsIDB4RkNGRTM0MjQsICJNZW1vcnkiKTsgICAgIC8vIFBNQzkgMi03IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkUzNTI0LCAiTWVtb3J5Iik7ICAgICAvLyBQRkM5IDItNyAtPiBhbHQgbW9kZQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFBPUlRTIGZvciBTUEkgKHNlcmlhbCBmbGFzaCAyKQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4RjAwMCwgMHhGQ0ZFNzIwOCwgIk1lbW9yeSIpOyAgICAgLy8gUElQQzIgMTItMTUgLT4gYWx0IElPIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM0MDgsICJNZW1vcnkiKTsgICAgIC8vIFBNQzIgMTItMTUgLT4gYWx0IG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM1MDgsICJNZW1vcnkiKTsgICAgIC8vIFBGQzIgMTItMTUgLT4gYWx0IG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTM2MDgsICJNZW1vcnkiKTsgICAgIC8vIFBGQ0UyIDEyLTE1IC0+IGFsdCBtb2RlDQotDQotICAvLyBDb25maWd1cmUgU1BJIGZvciBFWFRSRUFEIG1vZGUNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAxQUE0MDIxLCAweDNGRUZBMDAwLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19DTU5DUiAyLW1lbW9yeSwgQ1BIQVQ9MCwgQ1BIQVI9MSwgQ1BPTD0wLCBTRkRFPTENCi0NCi0gIC8vIENvbmZpZ3VyZSBTUElCU0MgMzItYml0IGFkZHJlc3NpbmcNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMTMwMDAwLCAweDNGRUZBMDEwLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19EUkNNUiBDTUQgPSAweDEzDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDAwNEYwMCwgMHgzRkVGQTAxQywgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJFTlIgQURFID0gMHhGLCBDREU9MQ0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMTAxMDEsIDB4M0ZFRkEwMEMsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSQ1IgZW5hYmxlIGJ1cnN0DQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDAwMDAwMSwgMHgzRkVGQTAxNCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJFQVIgZW5hYmxlIGV4dGVuZGVkIGFkZHJlc3MgcmFuZ2UNCi0NCi0gIC8vIFNldCBCaXQgUmF0ZQ0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDAwMDMsIDB4M0ZFRkEwMDgsICJNZW1vcnkiKTsgLy8gU1BJQlNDX1NQQkNSIFNQQlI9MCwgQlJEVj0zDQotDQotICAvLyBGbHVzaCBSZWFkIENhY2hlDQotICBSZWcgPSBfX3JlYWRNZW1vcnkzMigweDNGRUZBMDBDLCAiTWVtb3J5Iik7ICAgICAgICAvLyBSZWFkIFNQSUJTQ19EUkNSDQotICBSZWcgfD0gMHgwMDAwMDIwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgUkNGIGJpdA0KLSAgX193cml0ZU1lbW9yeTMyKFJlZywgMHgzRkVGQTAwQywgIk1lbW9yeSIpOyAgICAgICAgLy8gU2V0IFNQSUJTQ19EUkNSDQotfQ0KLQ0KLWV4ZWNVc2VyUHJlbG9hZCgpDQotew0KLSAgX19tZXNzYWdlICItLS0tLSBQcmVwYXJlIGhhcmR3YXJlIGZvciBkZWJ1ZyAtLS0tLVxuIjsNCi0gIF9faHdSZXNldCgwKTsNCi0gIHNldHVwKCk7DQotfQ0KLQ0KLWV4ZWNVc2VyUmVzZXQoKQ0KLXsNCi0gIHNldHVwKCk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jc3RhcnR1cC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NzdGFydHVwLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1N2Y2ZDcuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NzdGFydHVwLnMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLTs7DQotOzsgUGFydCBvbmUgb2YgdGhlIHN5c3RlbSBpbml0aWFsaXphdGlvbiBjb2RlLA0KLTs7IGNvbnRhaW5zIGxvdy1sZXZlbA0KLTs7IGluaXRpYWxpemF0aW9uLg0KLTs7DQotOzsgQ29weXJpZ2h0IDIwMDcgSUFSIFN5c3RlbXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOzsNCi07OyAkUmV2aXNpb246IDQ5OTE5ICQNCi07Ow0KLQ0KLSAgICAgICAgTU9EVUxFICA/Y3N0YXJ0dXANCi0NCi0gICAgICAgIDs7IEZvcndhcmQgZGVjbGFyYXRpb24gb2Ygc2VjdGlvbnMuDQotICAgICAgICBTRUNUSU9OIElSUV9TVEFDSzpEQVRBOk5PUk9PVCgzKQ0KLSAgICAgICAgU0VDVElPTiBGSVFfU1RBQ0s6REFUQTpOT1JPT1QoMykNCi0JCVNFQ1RJT04gU1ZDX1NUQUNLOkRBVEE6Tk9ST09UKDMpDQotICAgICAgICBTRUNUSU9OIENTVEFDSzpEQVRBOk5PUk9PVCgzKQ0KLQ0KLTsNCi07IFRoZSBtb2R1bGUgaW4gdGhpcyBmaWxlIGFyZSBpbmNsdWRlZCBpbiB0aGUgbGlicmFyaWVzLCBhbmQgbWF5IGJlDQotOyByZXBsYWNlZCBieSBhbnkgdXNlci1kZWZpbmVkIG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIFBVQkxJQyBzeW1ib2wNCi07IF9faWFyX3Byb2dyYW1fc3RhcnQgb3IgYSB1c2VyIGRlZmluZWQgc3RhcnQgc3ltYm9sLg0KLTsNCi07IFRvIG92ZXJyaWRlIHRoZSBjc3RhcnR1cCBkZWZpbmVkIGluIHRoZSBsaWJyYXJ5LCBzaW1wbHkgYWRkIHlvdXINCi07IG1vZGlmaWVkIHZlcnNpb24gdG8gdGhlIHdvcmtiZW5jaCBwcm9qZWN0Lg0KLQ0KLSAgICAgICAgU0VDVElPTiAuaW50dmVjOkNPREU6Tk9ST09UKDIpDQotDQotICAgICAgICBQVUJMSUMgIF9fdmVjdG9yDQotICAgICAgICBQVUJMSUMgIF9faWFyX3Byb2dyYW1fc3RhcnQNCi0gICAgICAgIEVYVEVSTiAgVW5kZWZpbmVkX0hhbmRsZXINCi0gICAgICAgIEVYVEVSTiAgU1dJX0hhbmRsZXINCi0gICAgICAgIEVYVEVSTiAgUHJlZmV0Y2hfSGFuZGxlcg0KLSAgICAgICAgRVhURVJOICBBYm9ydF9IYW5kbGVyDQotICAgICAgICBFWFRFUk4gIElSUV9IYW5kbGVyDQotICAgICAgICBFWFRFUk4gIEZJUV9IYW5kbGVyDQotCQlFWFRFUk4gIExvd0xldmVsSW5pdGlhbGlzYXRpb24NCi0NCi0gICAgICAgIERBVEENCi0NCi1fX2lhcl9pbml0JCRkb25lOiAgICAgICAgICAgICAgIDsgVGhlIHZlY3RvciB0YWJsZSBpcyBub3QgbmVlZGVkDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHVudGlsIGFmdGVyIGNvcHkgaW5pdGlhbGl6YXRpb24gaXMgZG9uZQ0KLQ0KLV9fdmVjdG9yOiAgICAgICAgICAgICAgICAgICAgICAgOyBNYWtlIHRoaXMgYSBEQVRBIGxhYmVsLCBzbyB0aGF0IHN0YWNrIHVzYWdlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGFuYWx5c2lzIGRvZXNuJ3QgY29uc2lkZXIgaXQgYW4gdW5jYWxsZWQgZnVuDQotDQotICAgICAgICBBUk0NCi0NCi0gICAgICAgIDsgQWxsIGRlZmF1bHQgZXhjZXB0aW9uIGhhbmRsZXJzIChleGNlcHQgcmVzZXQpIGFyZQ0KLSAgICAgICAgOyBkZWZpbmVkIGFzIHdlYWsgc3ltYm9sIGRlZmluaXRpb25zLg0KLSAgICAgICAgOyBJZiBhIGhhbmRsZXIgaXMgZGVmaW5lZCBieSB0aGUgYXBwbGljYXRpb24gaXQgd2lsbCB0YWtlIHByZWNlZGVuY2UuDQotICAgICAgICBMRFIgICAgIFBDLFJlc2V0X0FkZHIgICAgICAgICAgIDsgUmVzZXQNCi0gICAgICAgIExEUiAgICAgUEMsVW5kZWZpbmVkX0FkZHIgICAgICAgOyBVbmRlZmluZWQgaW5zdHJ1Y3Rpb25zDQotICAgICAgICBMRFIgICAgIFBDLFNXSV9BZGRyICAgICAgICAgICAgIDsgU29mdHdhcmUgaW50ZXJydXB0IChTV0kvU1ZDKQ0KLSAgICAgICAgTERSICAgICBQQyxQcmVmZXRjaF9BZGRyICAgICAgICA7IFByZWZldGNoIGFib3J0DQotICAgICAgICBMRFIgICAgIFBDLEFib3J0X0FkZHIgICAgICAgICAgIDsgRGF0YSBhYm9ydA0KLSAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICA7IFJFU0VSVkVEDQotICAgICAgICBMRFIgICAgIFBDLElSUV9BZGRyICAgICAgICAgICAgIDsgSVJRDQotICAgICAgICBMRFIgICAgIFBDLEZJUV9BZGRyICAgICAgICAgICAgIDsgRklRDQotDQotICAgICAgICBEQVRBDQotDQotUmVzZXRfQWRkcjogICAgIERDRCAgIF9faWFyX3Byb2dyYW1fc3RhcnQNCi1VbmRlZmluZWRfQWRkcjogRENEICAgVW5kZWZpbmVkX0hhbmRsZXINCi1TV0lfQWRkcjogICAgICAgRENEICAgU1dJX0hhbmRsZXINCi1QcmVmZXRjaF9BZGRyOiAgRENEICAgUHJlZmV0Y2hfSGFuZGxlcg0KLUFib3J0X0FkZHI6ICAgICBEQ0QgICBBYm9ydF9IYW5kbGVyDQotSVJRX0FkZHI6ICAgICAgIERDRCAgIElSUV9IYW5kbGVyDQotRklRX0FkZHI6ICAgICAgIERDRCAgIEZJUV9IYW5kbGVyDQotDQotDQotOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLTsgP2NzdGFydHVwIC0tIGxvdy1sZXZlbCBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gY29kZS4NCi07DQotOyBBZnRlciBhIHJlc2V0IGV4ZWN1dGlvbiBzdGFydHMgaGVyZSwgdGhlIG1vZGUgaXMgQVJNLCBzdXBlcnZpc29yDQotOyB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuDQotOw0KLQ0KLQ0KLQ0KLSAgICAgICAgU0VDVElPTiAudGV4dDpDT0RFOk5PUk9PVCgyKQ0KLQ0KLSAgICAgICAgRVhURVJOICBfX2NtYWluDQotICAgICAgICBSRVFVSVJFIF9fdmVjdG9yDQotICAgICAgICBFWFRXRUFLIF9faWFyX2luaXRfY29yZQ0KLSAgICAgICAgRVhUV0VBSyBfX2lhcl9pbml0X3ZmcA0KLQ0KLQ0KLSAgICAgICAgQVJNDQotDQotX19pYXJfcHJvZ3JhbV9zdGFydDoNCi0/Y3N0YXJ0dXA6DQotDQotOw0KLTsgQWRkIGluaXRpYWxpemF0aW9uIG5lZWRlZCBiZWZvcmUgc2V0dXAgb2Ygc3RhY2twb2ludGVycyBoZXJlLg0KLTsNCi0NCi07DQotOyBJbml0aWFsaXplIHRoZSBzdGFjayBwb2ludGVycy4NCi07IFRoZSBwYXR0ZXJuIGJlbG93IGNhbiBiZSB1c2VkIGZvciBhbnkgb2YgdGhlIGV4Y2VwdGlvbiBzdGFja3M6DQotOyBGSVEsIElSUSwgU1ZDLCBBQlQsIFVORCwgU1lTLg0KLTsgVGhlIFVTUiBtb2RlIHVzZXMgdGhlIHNhbWUgc3RhY2sgYXMgU1lTLg0KLTsgVGhlIHN0YWNrIHNlZ21lbnRzIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgbGlua2VyIGNvbW1hbmQgZmlsZSwNCi07IGFuZCBiZSBkZWNsYXJlZCBhYm92ZS4NCi07DQotDQotDQotOyAtLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLTsgTW9kZSwgY29ycmVzcG9yZHMgdG8gYml0cyAwLTUgaW4gQ1BTUg0KLQ0KLSNkZWZpbmUgTU9ERV9NU0sgMHgxRiAgICAgICAgICAgIDsgQml0IG1hc2sgZm9yIG1vZGUgYml0cyBpbiBDUFNSDQotDQotI2RlZmluZSBVU1JfTU9ERSAweDEwICAgICAgICAgICAgOyBVc2VyIG1vZGUNCi0jZGVmaW5lIEZJUV9NT0RFIDB4MTEgICAgICAgICAgICA7IEZhc3QgSW50ZXJydXB0IFJlcXVlc3QgbW9kZQ0KLSNkZWZpbmUgSVJRX01PREUgMHgxMiAgICAgICAgICAgIDsgSW50ZXJydXB0IFJlcXVlc3QgbW9kZQ0KLSNkZWZpbmUgU1ZDX01PREUgMHgxMyAgICAgICAgICAgIDsgU3VwZXJ2aXNvciBtb2RlDQotI2RlZmluZSBBQlRfTU9ERSAweDE3ICAgICAgICAgICAgOyBBYm9ydCBtb2RlDQotI2RlZmluZSBVTkRfTU9ERSAweDFCICAgICAgICAgICAgOyBVbmRlZmluZWQgSW5zdHJ1Y3Rpb24gbW9kZQ0KLSNkZWZpbmUgU1lTX01PREUgMHgxRiAgICAgICAgICAgIDsgU3lzdGVtIG1vZGUNCi0NCi0NCi0gICAgICAgIE1SUyAgICAgcjAsIGNwc3IgICAgICAgICAgICAgICAgOyBPcmlnaW5hbCBQU1IgdmFsdWUNCi0NCi0gICAgICAgIDs7IFNldCB1cCB0aGUgaW50ZXJydXB0IHN0YWNrIHBvaW50ZXIuDQotDQotICAgICAgICBCSUMgICAgIHIwLCByMCwgI01PREVfTVNLICAgICAgIDsgQ2xlYXIgdGhlIG1vZGUgYml0cw0KLSAgICAgICAgT1JSICAgICByMCwgcjAsICNJUlFfTU9ERSAgICAgICA7IFNldCBJUlEgbW9kZSBiaXRzDQotICAgICAgICBNU1IgICAgIGNwc3JfYywgcjAgICAgICAgICAgICAgIDsgQ2hhbmdlIHRoZSBtb2RlDQotICAgICAgICBMRFIgICAgIHNwLCA9U0ZFKElSUV9TVEFDSykgICAgIDsgRW5kIG9mIElSUV9TVEFDSw0KLSAgICAgICAgQklDICAgICBzcCxzcCwjMHg3ICAgICAgICAgICAgICA7IE1ha2Ugc3VyZSBTUCBpcyA4IGFsaWduZWQNCi0NCi0gICAgICAgIDs7IFNldCB1cCB0aGUgZmFzdCBpbnRlcnJ1cHQgc3RhY2sgcG9pbnRlci4NCi0NCi0gICAgICAgIEJJQyAgICAgcjAsIHIwLCAjTU9ERV9NU0sgICAgICAgOyBDbGVhciB0aGUgbW9kZSBiaXRzDQotICAgICAgICBPUlIgICAgIHIwLCByMCwgI0ZJUV9NT0RFICAgICAgIDsgU2V0IEZJUiBtb2RlIGJpdHMNCi0gICAgICAgIE1TUiAgICAgY3Bzcl9jLCByMCAgICAgICAgICAgICAgOyBDaGFuZ2UgdGhlIG1vZGUNCi0gICAgICAgIExEUiAgICAgc3AsID1TRkUoRklRX1NUQUNLKSAgICAgOyBFbmQgb2YgRklRX1NUQUNLDQotICAgICAgICBCSUMgICAgIHNwLHNwLCMweDcgICAgICAgICAgICAgIDsgTWFrZSBzdXJlIFNQIGlzIDggYWxpZ25lZA0KLQ0KLSAgICAgICAgOzsgU2V0IHVwIHRoZSBub3JtYWwgU1ZDIHBvaW50ZXIuDQotOzsgRnJlZVJUT1MgTm90ZToNCi07OyBGcmVlUlRPUyBkb2VzIG5vdCBuZWVkIGEgU3lzdGVtL1VzZXIgbW9kZSBzdGFjayBhcyBvbmx5IHRhc2tzIHJ1biBpbg0KLTs7IFN5c3RlbS9Vc2VyIG1vZGUsIGFuZCB0aGVpciBzdGFjayBpcyBhbGxvY2F0ZWQgd2hlbiB0aGUgdGFzayBpcyBjcmVhdGVkLg0KLTs7IFRoZXJlZm9yZSB0aGUgQ1NUQUNLIGFsbG9jYXRlZCBpbiB0aGUgbGlua2VyIHNjcmlwdCBpcyBpbnN0ZWFkIGdpdmVuIHRvDQotOzsgU3VwZXJ2aXNvciBtb2RlLCBhbmQgbWFpbigpIGlzIGNhbGxlZCBmcm9tIFN1cGVydmlzb3IgbW9kZS4NCi0gICAgICAgIEJJQyAgICAgcjAgLHIwLCAjTU9ERV9NU0sgICAgICAgOyBDbGVhciB0aGUgbW9kZSBiaXRzDQotICAgICAgICBPUlIgICAgIHIwICxyMCwgI1NWQ19NT0RFICAgICAgIDsgU2V0IFN5c3RlbSBtb2RlIGJpdHMNCi0gICAgICAgIE1TUiAgICAgY3Bzcl9jLCByMCAgICAgICAgICAgICAgOyBDaGFuZ2UgdGhlIG1vZGUNCi0gICAgICAgIExEUiAgICAgc3AsID1TRkUoQ1NUQUNLKSAgICAgICAgOyBFbmQgb2YgQ1NUQUNLDQotICAgICAgICBCSUMgICAgIHNwLHNwLCMweDcgICAgICAgICAgICAgIDsgTWFrZSBzdXJlIFNQIGlzIDggYWxpZ25lZA0KLQ0KLSAgICAgICAgOzsgVHVybiBvbiBjb3JlIGZlYXR1cmVzIGFzc3VtZWQgdG8gYmUgZW5hYmxlZC4NCi0gICAgICAgICAgRlVOQ0FMTCBfX2lhcl9wcm9ncmFtX3N0YXJ0LCBfX2lhcl9pbml0X2NvcmUNCi0gICAgICAgIEJMICAgICAgX19pYXJfaW5pdF9jb3JlDQotDQotICAgICAgICA7OyBJbml0aWFsaXplIFZGUCAoaWYgbmVlZGVkKS4NCi0gICAgICAgICAgRlVOQ0FMTCBfX2lhcl9wcm9ncmFtX3N0YXJ0LCBfX2lhcl9pbml0X3ZmcA0KLSAgICAgICAgQkwgICAgICBfX2lhcl9pbml0X3ZmcA0KLQ0KLQkJOzsgQ2hpcCBhbmQgYm9hcmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbg0KLQkJQkwgCQlMb3dMZXZlbEluaXRpYWxpc2F0aW9uDQotDQotOzs7DQotOzs7IEFkZCBtb3JlIGluaXRpYWxpemF0aW9uIGhlcmUNCi07OzsNCi0NCi07OzsgQ29udGludWUgdG8gX19jbWFpbiBmb3IgQy1sZXZlbCBpbml0aWFsaXphdGlvbi4NCi0NCi0gICAgICAgICAgRlVOQ0FMTCBfX2lhcl9wcm9ncmFtX3N0YXJ0LCBfX2NtYWluDQotICAgICAgICBCICAgICAgIF9fY21haW4NCi0NCi0gICAgICAgIEVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9tb2R1bGVzL2FybXY3YV9jcDE1X2Rydi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL21vZHVsZXMvYXJtdjdhX2NwMTVfZHJ2LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2ZmZmUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL21vZHVsZXMvYXJtdjdhX2NwMTVfZHJ2LmMKKysrIC9kZXYvbnVsbApAQCAtMSw3NjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqICAgIFVzZWQgd2l0aCBJQ0NBUk0gYW5kIEFBUk0uDQotICoNCi0gKiAgICAoYykgQ29weXJpZ2h0IElBUiBTeXN0ZW1zIDIwMTINCi0gKg0KLSAqICAgIEZpbGUgbmFtZSAgIDogYXJtdjdhX2NwMTVfZHJ2LmMNCi0gKiAgICBEZXNjcmlwdGlvbiA6IERyaXZlciBmb3IgdGhlIENQMTUgb2YgQVJNdjctQQ0KLSAqDQotICogICAgSGlzdG9yeSA6DQotICogICAgMS4gRGF0ZSAgICAgICAgOiBTZXB0ZW1iZXIsIDggMjAwNg0KLSAqICAgICAgIEF1dGhvciAgICAgIDogU3RhbmltaXIgQm9uZXYNCi0gKiAgICAgICBEZXNjcmlwdGlvbiA6IERyaXZlciBmb3IgdGhlIEFSTTkyNkVKJ3MgQ1AxNQ0KLSAqDQotICogICAgMi4gRGF0ZSAgICAgICAgOiBPY3RvYmVyLCAgMjAwOA0KLSAqICAgICAgIEF1dGhvciAgICAgIDogU3RveWFuIENob3luZXYNCi0gKiAgICAgICBEZXNjcmlwdGlvbiA6IFBvcnQgZm9yIEFSTTExMzZKRi4gVGhlIGRyaXZlciBpcyBiYWNrd2FyZHMgY29tcGF0aWJsZQ0KLSAqICAgICAgICAgICAgICAgICAgICAgd2l0aCBBUk12NSBvciBlYXJsaWVyIHByb2Nlc3NvcnMuDQotICoNCi0gKiAgICAzLiBEYXRlICAgICAgICA6IE1hcmNoLCAgMjAxMg0KLSAqICAgICAgIEF1dGhvciAgICAgIDogQXRhbmFzIFV6dW5vdg0KLSAqICAgICAgIERlc2NyaXB0aW9uIDogUG9ydCBmb3IgQVJNdjctQSBhcmNoaXRlY3R1cmUuDQotICogICAgICAgICAgICAgICAgICAgICBBZGRlZCBjYWNoZSBtYWludGVuYW5jZSBmdW5jdGlvbnMuDQotICoNCi0gKiAgICAkUmV2aXNpb246IDUyNzA1ICQNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotI2luY2x1ZGUgImFybXY3YV9jcDE1X2Rydi5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRJRA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgSUQgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldElEICh2b2lkKQ0KLXsNCi0gIHJldHVybihfX01SQygxNSwwLENQMTVfSUQsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRDYWNoZVR5cGUNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIENhY2hlIHR5cGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldENhY2hlVHlwZSAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0lELDAsMSkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0VENNX1N0YXR1cw0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgVENNIHN0YXR1cw0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0VENNX1N0YXR1cyAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0lELDAsMikpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0VHRiMA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgVFRCMCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0VHRiMCAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X1RUQl9BRERSLDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0VHRiMQ0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgVFRCMSByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0VHRiMSAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X1RUQl9BRERSLDAsMSkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0U3RhdHVzDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5zIHRoZSBNTVUgY29udHJvbCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0U3RhdHVzICh2b2lkKQ0KLXsNCi0gIHJldHVybihfX01SQygxNSwwLENQMTVfQ1RSTCwwLDApKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldERvbWFpbg0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIGRvbWFpbiBhY2Nlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldERvbWFpbiAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0RBX0NUUkwsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXREb21haW5zDQotICogUGFyYW1ldGVyczogSW50MzJVIERvbWFpbkFjY2Vzcw0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiBzZXQgdGhlIE1NVSBkb21haW4gYWNjZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0RG9tYWlucyAoSW50MzJVIERvbWFpbkFjY2VzcykNCi17DQotcmVnaXN0ZXIgSW50MzJVIFZhbCA9IERvbWFpbkFjY2VzczsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfREFfQ1RSTCwwLDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IGxvZzJfbl91cA0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBuDQotICoNCi0gKiBSZXR1cm46IEludDMyUw0KLSAqDQotICogRGVzY3JpcHRpb246IExvZ2FyaXRobSBhdCBiYXNlIDIgLCByb3VuZGVkIHVwDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1JbnQzMlMgbG9nMl91cChJbnQzMlUgbikNCi17DQotICBJbnQzMlMgbG9nID0gLTE7DQotICBJbnQzMlUgdCA9IG47DQotICB3aGlsZSh0KQ0KLSAgew0KLSAgICBsb2crKzsgdCA+Pj0xOw0KLSAgfQ0KLSAgLyogaWYgbiBub3QgcG93ZXIgb2YgMiAtPiByb3VuZCB1cCovDQotICBpZiAoIG4gJiAobiAtIDEpICkgbG9nKys7DQotICByZXR1cm4gbG9nOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfTWFpbnRhaW5EQ2FjaGVTZXRXYXkNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgbGV2ZWwgLSBsZXZlbCBvZiBjYWNoZSwgDQotICogICAgICAgICAgICAgSW50MzJVIG1haW50IC0gbWFpbnRlbmFuY2UgdHlwZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogTWFpbnRhaW4gZGF0YSBjYWNoZSBsaW5lIGJ5IFNldC9XYXkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9NYWludGFpbkRDYWNoZVNldFdheShJbnQzMlUgbGV2ZWwsIEludDMyVSBtYWludCkNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIER1bW15Ow0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBjY3NpZHI7DQotSW50MzJVIG51bV9zZXRzOw0KLUludDMyVSBudW1fd2F5czsNCi1JbnQzMlUgc2hpZnRfd2F5Ow0KLUludDMyVSBsb2cyX2xpbmVzaXplOw0KLUludDMyVSBsb2cyX251bV93YXlzOw0KLQ0KLSAgRHVtbXkgPSBsZXZlbCA8PCAxOw0KLSAgLyogc2V0IGNzc2Vsciwgc2VsZWN0IGNjc2lkciByZWdpc3RlciAqLw0KLSAgX19NQ1IoMTUsMixEdW1teSwwLDAsMCk7DQotICAvKiBnZXQgY3VycmVudCBjY3NpZHIgcmVnaXN0ZXIgKi8NCi0gIGNjc2lkciA9IF9fTVJDKDE1LDEsMCwwLDApOw0KLSAgbnVtX3NldHMgPSAoKGNjc2lkciAmIDB4MEZGRkUwMDApID4+IDEzKSArIDE7DQotICBudW1fd2F5cyA9ICgoY2NzaWRyICYgMHgwMDAwMUZGOCkgPj4gMykgKyAxOw0KLSAgbG9nMl9saW5lc2l6ZSA9IChjY3NpZHIgJiAweDAwMDAwMDA3KSArIDIgKyAyOw0KLSAgbG9nMl9udW1fd2F5cyA9IGxvZzJfdXAobnVtX3dheXMpOw0KLSAgc2hpZnRfd2F5ID0gMzIgLSBsb2cyX251bV93YXlzOw0KLSAgZm9yKGludCB3YXkgPSBudW1fd2F5cy0xOyB3YXkgPj0gMDsgd2F5LS0pDQotICAgIGZvcihpbnQgc2V0ID0gbnVtX3NldHMtMTsgc2V0ID49IDA7IHNldC0tKQ0KLSAgICB7DQotICAgICAgRHVtbXkgPSAobGV2ZWwgPDwgMSkgfCAoc2V0IDw8IGxvZzJfbGluZXNpemUpIHwgKHdheSA8PCBzaGlmdF93YXkpOw0KLSAgICAgIHN3aXRjaCAobWFpbnQpDQotICAgICAgew0KLSAgICAgICAgY2FzZSBEQ0FDSEVfQ0xFQU5fQU5EX0lOVkFMSURBVEU6DQotICAgICAgICAgICAgIF9fTUNSKDE1LDAsRHVtbXksNywxNCwyKTsNCi0gICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICANCi0gICAgICAgIGNhc2UgRENBQ0hFX0lOVkFMSURBVEU6DQotICAgICAgICAgICAgIF9fTUNSKDE1LDAsRHVtbXksNyw2LDIpOw0KLSAgICAgICAgICAgICBicmVhazsNCi0gICAgICB9DQotICAgIH0NCi0gICAgX19ETUIoKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X01haW50QWxsRENhY2hlDQotICogUGFyYW1ldGVyczogSW50MzJVIG9wZXIgLSB0eXBlIG9mIG1haW50ZW5hbmNlLCBvbmUgb2Y6DQotICogICAgICAgICAgICAgICAgICAgICAgICAgIERDQUNIRV9DTEVBTl9BTkRfSU5WQUxJREFURQ0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0FDSEVfSU5WQUxJREFURQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogTWFpbnRlbmFuY2Ugb2YgYWxsIGRhdGEgY2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9NYWludGFpbkFsbERDYWNoZShJbnQzMlUgb3BlcikNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIGNsaWRyOyAgDQotSW50MzJVIGNhY2hlX3R5cGU7DQotICBjbGlkciA9ICBfX01SQygxNSwxLDAsMCwxKTsNCi0gIGZvcihJbnQzMlUgaSA9IDA7IGk8NzsgaSsrKQ0KLSAgew0KLSAgICBjYWNoZV90eXBlID0gKGNsaWRyID4+IGkqMykgJiAweDdVTDsNCi0gICAgaWYgKChjYWNoZV90eXBlID49IDIpICYmIChjYWNoZV90eXBlIDw9IDQpKQ0KLSAgICB7DQotICAgICAgQ1AxNV9NYWludGFpbkRDYWNoZVNldFdheShpLG9wZXIpOw0KLSAgICB9DQotICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JbnZhbEluc3RyQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIGluc3RydWN0aW9uIGNhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfSW52YWxJbnN0ckNhY2hlKHZvaWQpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBEdW1teTsNCi0gIF9fTUNSKDE1LDAsRHVtbXksQ1AxNV9DQUNIRV9PUFIsNSwwKTsNCi0gIENQMTVfSW52YWxQcmVkaWN0QXJyYXkoKTsNCi0gIF9fRFNCKCk7DQotICBfX0lTQigpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxQcmVkaWN0QXJyYXkNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIHByZWRpY3Rpb24gYXJyYXkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9JbnZhbFByZWRpY3RBcnJheSh2b2lkKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgRHVtbXk7DQotICBfX01DUigxNSwwLER1bW15LENQMTVfQ0FDSEVfT1BSLDUsNik7ICBfX0lTQigpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxBbGxUYmwNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIFRMQg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X0ludmFsQWxsVGJsICh2b2lkKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgRHVtbXk7DQotICAvKiBJbnZhbGlkYXRlIGVudGlyZSB1bmlmaWVkIFRMQiovDQotICBfX01DUigxNSwwLER1bW15LENQMTVfVEJMX09QUiw3LDApOw0KLSAgLyogSW52YWxpZGF0ZSBlbnRpcmUgZGF0YSBUTEIqLw0KLSAgX19NQ1IoMTUsMCxEdW1teSxDUDE1X1RCTF9PUFIsNiwwKTsNCi0gIC8qIEludmFsaWRhdGUgZW50aXJlIGluc3RydWN0aW9uIFRMQiovDQotICBfX01DUigxNSwwLER1bW15LENQMTVfVEJMX09QUiw1LDApOw0KLSAgX19EU0IoKTsNCi0gIF9fSVNCKCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRTdGF0dXMNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgQ3RybA0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgQ1RSIChjb250cm9sKSByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFN0YXR1cyAoSW50MzJVIEN0cmwpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBWYWwgPSBDdHJsOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9DVFJMLDAsMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRUdGIwDQotICogUGFyYW1ldGVyczogcEludDMyVSBwVHRiDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBUVEIwIGJhc2UgYWRkcmVzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFR0YjAgKHBJbnQzMlUgcFR0YikNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIFZhbCA9IChJbnQzMlUpcFR0YjsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfVFRCX0FERFIsMCwwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldFR0YjENCi0gKiBQYXJhbWV0ZXJzOiBwSW50MzJVIHBUdGINCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBDUDE1IFRUQjEgYmFzZSBhZGRyZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0VHRiMSAocEludDMyVSBwVHRiKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgVmFsID0gKEludDMyVSlwVHRiOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9UVEJfQUREUiwwLDEpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0RGFjDQotICogUGFyYW1ldGVyczogSW50MzJVIGRhDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBkb21haW4gYWNjZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0RGFjIChJbnQzMlUgZGEpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBWYWwgPSBkYTsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfREFfQ1RSTCwwLDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfV3JpdGVCdWZmRmx1c2gNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiAgRmx1c2ggdGhlIHdyaXRlIGJ1ZmZlciBhbmQgd2FpdCBmb3IgY29tcGxldGlvbg0KLSAqICAgICAgICAgICAgICBvZiB0aGUgZmx1c2guDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfV3JpdGVCdWZmRmx1c2ggKHZvaWQpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBWYWw7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X0NBQ0hFX09QUiwxMCw0KTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldEZhdWx0U3RhdA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIGZhdWx0IHN0YXR1cyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0RmF1bHRTdGF0ICh2b2lkKQ0KLXsNCi0gIHJldHVybihfX01SQygxNSwwLENQMTVfRkFVTFRfU1RBVCwwLDApKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldEZhdWx0QWRkcg0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIGZhdWx0IGFkZHJlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldEZhdWx0QWRkciAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0ZBVUxUX0FERFIsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGY3NlUGlkDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5zIHRoZSBNTVUgUHJvY2VzcyBpZGVudGlmaWVyDQotICogICAgICAgICAgICAgRkNTRSBQSUQgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldEZjc2VQaWQgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9QUk9DRVNTX0lETkYsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRQcmFjZVByb2NJZA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIFRyYWNlIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRQcmFjZVByb2NJZCAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X1BST0NFU1NfSURORiwwLDEpKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldEZjc2VQaWQNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgRmNzZVBpZA0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gc2V0IHRoZSBNTVUgUHJvY2VzcyBpZGVudGlmaWVyDQotICogICAgICAgICAgICAgRkNTRSBQSUQgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRGY3NlUGlkIChJbnQzMlUgRmNzZVBpZCkNCi17DQotcmVnaXN0ZXIgSW50MzJVIFZhbCA9IEZjc2VQaWQ7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X1BST0NFU1NfSURORiwwLDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0UHJhY2VQcm9jSWQNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHNldCB0aGUgTU1VIFRyYWNlIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0UHJhY2VQcm9jSWQoSW50MzJVIFRyYWNlKQ0KLXsNCi1yZWdpc3RlciBJbnQzMlUgVmFsID0gVHJhY2U7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X1BST0NFU1NfSURORiwwLDEpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW5pdE1tdVR0Yg0KLSAqIFBhcmFtZXRlcnM6IHBUdFNlY3Rpb25CbG9ja190IHBUdFNCLCBwVHRUYWJsZUJsb2NrX3QgcFR0VEINCi0gKg0KLSAqIFJldHVybjogQm9vbGVhbg0KLSAqDQotICogIFJldHVybnMgZXJyb3IgaWYgTU1VIGlzIGVuYWJsZWQgb3IgaWYgdGFyZ2V0DQotICogVHJhbnNsYXRpb24gVGFibGUgYWRkcmVzcyBpcyBub3QgMTZLIGFsaWduZWQuIENsZWFyIHRoZQ0KLSAqIFRyYW5zbGF0aW9uIFRhYmxlIGFyZWEuIEJ1aWxkIHRoZSBUcmFuc2xhdGlvbiBUYWJsZSBmcm9tIHRoZQ0KLSAqIGluaXRpYWxpemF0aW9uIGRhdGEgaW4gdGhlIFNlY3Rpb24gQmxvY2sgYXJyYXkuIFJldHVybiBubyBlcnJvci4NCi0gKg0KLSAqIERlc2NyaXB0aW9uOiAgSW5pdGlhbGl6ZXMgdGhlIE1NVSB0YWJsZXMuDQotICoNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLUJvb2xlYW4gQ1AxNV9Jbml0TW11VHRiKGNvbnN0IFR0U2VjdGlvbkJsb2NrX3QgKiBwVHRTQiwNCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUdFRhYmxlQmxvY2tfdCAqIHBUdFRCKQ0KLXsNCi1JbnQzMlUgaSwgcGEsIHBhX2luYywgdmFfaW5kOw0KLXBJbnQzMlUgcFR0YjsNCi1UYWJsZVR5cGVfdCBUYWJsZVR5cGU7DQotICB3aGlsZSgxKQ0KLSAgew0KLSAgICBUYWJsZVR5cGUgPSBwVHRUQi0+VGFibGVUeXBlOw0KLSAgICBzd2l0Y2goVGFibGVUeXBlKQ0KLSAgICB7DQotICAgIGNhc2UgVGFibGVMMToNCi0gICAgICBwVHRiID0gcFR0VEItPlRhYmxlQWRkcjsNCi0gICAgICBpZigoSW50MzJVKXBUdGIgJiBMMV9FTlRSSUVTX05VTUItMSkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4oRkFMU0UpOw0KLSAgICAgIH0NCi0gICAgICBwYV9pbmMgPSAweDEwMDAwMDsNCi0gICAgICBwYSA9IEwxX0VOVFJJRVNfTlVNQjsNCi0gICAgICBicmVhazsNCi0gICAgY2FzZSBUYWJsZUwyX1BhZ2VUYWJsZToNCi0gICAgICBwVHRiID0gcFR0VEItPlRhYmxlQWRkcjsNCi0gICAgICBpZigoSW50MzJVKXBUdGIgJiBMMl9DUF9FTlRSSUVTX05VTUItMSkNCi0gICAgICB7DQotICAgICAgICByZXR1cm4oRkFMU0UpOw0KLSAgICAgIH0NCi0gICAgICBwYV9pbmMgPSAweDEwMDA7DQotICAgICAgcGEgPSBMMl9DUF9FTlRSSUVTX05VTUI7DQotICAgICAgYnJlYWs7DQotICAgIGRlZmF1bHQ6DQotICAgICAgcmV0dXJuKFRSVUUpOw0KLSAgICB9DQotDQotICAgIC8vIENsZWFyIHRoZSBlbnRpcmUgVHJhbnNsYXRpb24gVGFibGUgVGhpcyByZXN1bHRzIGluIEx4RF9UWVBFX0ZBVUxUDQotICAgIC8vIGJlaW5nIHRoZSBkZWZhdWx0IGZvciBhbnkgdW5pbml0aWFsaXplZCBlbnRyaWVzLg0KLSAgICBmb3IoaSA9IDA7IGkgPCBwYTsgKytpKQ0KLSAgICB7DQotICAgICAgKihwVHRiK2kpID0gVFRfRU5UUllfSU5WQUxJRDsNCi0gICAgfQ0KLQ0KLSAgICAvLyBCdWlsZCB0aGUgdHJhbnNsYXRpb24gdGFibGUgZnJvbSB1c2VyIHByb3ZpZGVkIHBUdFNlY3Rpb25CbG9ja190IGFycmF5DQotICAgIHdoaWxlKHBUdFNCLT5OdWJyT2ZTZWN0aW9ucyAhPSAwKQ0KLSAgICB7DQotSW50MzJVIEVudHJ5cyA9IHBUdFNCLT5OdWJyT2ZTZWN0aW9uczsNCi1JbnQzMlUgRGF0YSA9ICBwVHRTQi0+RW50cnkuRGF0YTsgICANCi0gICAgICBwYSA9IHBUdFNCLT5QaHlzQWRkcjsNCi0gICAgICANCi0gICAgICBzd2l0Y2goVGFibGVUeXBlKQ0KLSAgICAgIHsNCi0gICAgICBjYXNlIFRhYmxlTDE6DQotICAgICAgICB2YV9pbmQgPSAocFR0U0ItPlZpcnRBZGRyID4+IDIwKSAmIChMMV9FTlRSSUVTX05VTUItMSk7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgaWYoKHZhX2luZCArIEVudHJ5cykgPiBMMV9FTlRSSUVTX05VTUIpDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybihGQUxTRSk7DQotICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIFRhYmxlTDJfUGFnZVRhYmxlOg0KLSAgICAgICAgdmFfaW5kID0gKHBUdFNCLT5WaXJ0QWRkciA+PiAxMikgJiAoTDJfQ1BfRU5UUklFU19OVU1CLTEpOw0KLSAgICAgICAgaWYoKHZhX2luZCArIEVudHJ5cykgPiBMMl9DUF9FTlRSSUVTX05VTUIpDQotICAgICAgICB7DQotICAgICAgICAgIHJldHVybihGQUxTRSk7DQotICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQotICAgICAgZm9yKGkgPSAwOyBpIDwgRW50cnlzOyArK2ksICsrdmFfaW5kKQ0KLSAgICAgIHsNCi0gICAgICAgIHN3aXRjaChUYWJsZVR5cGUpDQotICAgICAgICB7DQotICAgICAgICBjYXNlIFRhYmxlTDE6DQotICAgICAgICAgIHN3aXRjaChwVHRTQi0+RW50cnkuVHlwZSkNCi0gICAgICAgICAgew0KLSAgICAgICAgICBjYXNlIFR0TDFQYWdlVGFibGU6DQotICAgICAgICAgICAgKihwVHRiK3ZhX2luZCkgfD0gRGF0YSB8IChwYSAmIFRUTDFfUFRfUEFERFJfTUFTSyk7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgIGNhc2UgVHRMMVNlY3Rpb246DQotICAgICAgICAgICAgKihwVHRiK3ZhX2luZCkgfD0gRGF0YSB8IChwYSAmIFRUTDFfU0VDVElPTl9QQUREUl9NQVNLKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgY2FzZSBUdEwxU3VwZXJTZWN0aW9uOg0KLSAgICAgICAgICAgICAgKihwVHRiK3ZhX2luZCkgfD0gRGF0YSB8IChwYSAmIFRUTDFfU19TRUNUSU9OX1BBRERSX01BU0spOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIHJldHVybihGQUxTRSk7DQotICAgICAgICAgIH0NCi0gICAgICAgICAgYnJlYWs7DQotICAgICAgICBjYXNlIFRhYmxlTDJfUGFnZVRhYmxlOg0KLSAgICAgICAgICBzd2l0Y2gocFR0U0ItPkVudHJ5LlR5cGUpDQotICAgICAgICAgIHsNCi0gICAgICAgICAgY2FzZSBUdEwyTGFyZ2VQYWdlOg0KLSAgICAgICAgICAgICoocFR0Yit2YV9pbmQpIHw9IERhdGEgfCAocGEgJiBUVEwyX0xQX1BBRERSX01BU0spOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICBjYXNlIFR0TDJTbWFsbFBhZ2U6DQotICAgICAgICAgICAgKihwVHRiK3ZhX2luZCkgfD0gRGF0YSB8IChwYSAmIFRUTDJfU1BfUEFERFJfTUFTSyk7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgcmV0dXJuKEZBTFNFKTsNCi0gICAgICAgICAgfQ0KLSAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCi0gICAgICAgIHBhICs9IHBhX2luYzsNCi0gICAgICB9DQotICAgICAgKytwVHRTQjsNCi0gICAgfQ0KLSAgICArK3BUdFNCOw0KLSAgICArK3BUdFRCOw0KLSAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfTW11DQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIE1NVQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X01tdShCb29sZWFuIEVuYWJsZSkNCi17DQotSW50MzJVIFZhbCA9IENQMTVfR2V0U3RhdHVzKCk7DQotICBpZihFbmFibGUpDQotICB7DQotICAgIENQMTVfSW52YWxBbGxUYmwoKTsNCi0gICAgVmFsIHw9IENQMTVfQ1RSTF9NOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBWYWwgJj0gfihDUDE1X0NUUkxfTSB8IENQMTVfQ1RSTF9DKTsNCi0gIH0gIA0KLSAgQ1AxNV9TZXRTdGF0dXMoVmFsKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0NhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIEJvdGggQ2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9DYWNoZShCb29sZWFuIEVuYWJsZSkNCi17DQotSW50MzJVIFZhbCA9IENQMTVfR2V0U3RhdHVzKCk7DQotICBpZihFbmFibGUpDQotICB7IA0KLSAgICBWYWwgfD0gQ1AxNV9DVFJMX00gfCBDUDE1X0NUUkxfQyB8IENQMTVfQ1RSTF9JOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBWYWwgJj0gfkNQMTVfQ1RSTF9DOw0KLSAgfQ0KLSAgQ1AxNV9TZXRTdGF0dXMoVmFsKTsgIA0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxpZGF0ZUNhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEludmFsaWRhdGUgQ2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9JbnZhbGlkYXRlQ2FjaGUoKQ0KLXsNCi0gIENQMTVfTWFpbnRhaW5BbGxEQ2FjaGUoRENBQ0hFX0lOVkFMSURBVEUpOw0KLSAgX19EU0IoKTsNCi0gIENQMTVfSW52YWxJbnN0ckNhY2hlKCk7IC8qIGluY2x1ZGVzIGludmFsaWRhdGlvbiBvZiBicmFuY2ggcHJlZGljdG9yICovDQotICBfX0RTQigpOw0KLSAgX19JU0IoKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0lDYWNoZQ0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBFbmFibGUvRGlzYWJsZSBJIGNhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfSUNhY2hlIChCb29sZWFuIEVuYWJsZSkNCi17DQotSW50MzJVIFZhbCA9IENQMTVfR2V0U3RhdHVzKCk7DQotICBpZihFbmFibGUpDQotICB7DQotICAgIFZhbCB8PSBDUDE1X0NUUkxfSTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgVmFsICY9IH5DUDE1X0NUUkxfSTsNCi0gIH0NCi0gIENQMTVfU2V0U3RhdHVzKFZhbCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9EQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgRCBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X0RDYWNoZSAoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgew0KLSAgICBWYWwgfD0gQ1AxNV9DVFJMX00gfCBDUDE1X0NUUkxfQzsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgVmFsICY9IH5DUDE1X0NUUkxfQzsNCi0gIH0NCi0gIENQMTVfU2V0U3RhdHVzKFZhbCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9Qcm9nRmxvd1ByZWRpY3Rpb24NCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgcHJvZ3JhbSBmbG93IHByZWRpY3Rpb24uDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfUHJvZ0Zsb3dQcmVkaWN0aW9uIChCb29sZWFuIEVuYWJsZSkNCi17DQotSW50MzJVIFZhbCA9IENQMTVfR2V0U3RhdHVzKCk7DQotICBpZihFbmFibGUpDQotICB7DQotICAgIENQMTVfSW52YWxQcmVkaWN0QXJyYXkoKTsNCi0gICAgVmFsIHw9IENQMTVfQ1RSTF9aOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBWYWwgJj0gfkNQMTVfQ1RSTF9aOw0KLSAgfQ0KLSAgQ1AxNV9TZXRTdGF0dXMoVmFsKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFZlY3RvckJhc2UNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEdldCBWZWN0b3IgQmFzZSBSZWdpc3RlciAoVkJBUikNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFZlY3RvckJhc2Uodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X1ZCQVIsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRWZWN0b3JCYXNlDQotICogUGFyYW1ldGVyczogSW50MzJVDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgVmVjdG9yIEJhc2UgUmVnaXN0ZXIgKFZCQVIpDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0VmVjdG9yQmFzZShJbnQzMlUgdmVjdG9yKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgVmFsID0gdmVjdG9yOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9WQkFSLDAsMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRIaWdoVmVjdG9ycw0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4NCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNlbGVjdCBIaWdoIG9yIExvdyB2ZWN0b3JzIGJhc2UgaW4gQ1AxNSBjb250cm9sIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0SGlnaFZlY3RvcnMoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgew0KLSAgICBWYWwgfD0gQ1AxNV9DVFJMX1Y7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIFZhbCAmPSB+Q1AxNV9DVFJMX1Y7DQotICB9DQotICBDUDE1X1NldFN0YXR1cyhWYWwpOw0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvbW9kdWxlcy9hcm12N2FfY3AxNV9kcnYuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9tb2R1bGVzL2FybXY3YV9jcDE1X2Rydi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTZjNzRkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9tb2R1bGVzL2FybXY3YV9jcDE1X2Rydi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiAgICBVc2VkIHdpdGggSUNDQVJNIGFuZCBBQVJNLg0KLSAqDQotICogICAgKGMpIENvcHlyaWdodCBJQVIgU3lzdGVtcyAyMDEyDQotICoNCi0gKiAgICBGaWxlIG5hbWUgICA6IGFybXY3YV9jcDE1X2Rydi5oDQotICogICAgRGVzY3JpcHRpb24gOiBEZWZpbml0aW9ucyBvZiBhIGRyaXZlciBmb3IgdGhlIENQMTUgb2YgQVJNdjctQQ0KLSAqDQotICogICAgSGlzdG9yeSA6DQotICogICAgMS4gRGF0ZSAgICAgICAgOiBTZXB0ZW1iZXIsIDggMjAwNg0KLSAqICAgICAgIEF1dGhvciAgICAgIDogU3RhbmltaXIgQm9uZXYNCi0gKiAgICAgICBEZXNjcmlwdGlvbiA6IENyZWF0ZQ0KLSAqDQotICogICAgMi4gRGF0ZSAgICAgICAgOiBPY3RvYmVyLCAgMjAwOA0KLSAqICAgICAgIEF1dGhvciAgICAgIDogU3RveWFuIENob3luZXYNCi0gKiAgICAgICBEZXNjcmlwdGlvbiA6IFBvcnQgZm9yIEFSTTExMzZKRi4gVGhlIGRyaXZlciBpcyBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIEFSTXY1IG9yIGVhcmxpZXINCi0gKiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMNCi0gKg0KLSAqICAgIDMuIERhdGUgICAgICAgIDogTWFyY2gsICAyMDEyDQotICogICAgICAgQXV0aG9yICAgICAgOiBBdGFuYXMgVXp1bm92DQotICogICAgICAgRGVzY3JpcHRpb24gOiBQb3J0IGZvciBBUk12Ny1BIGFyY2hpdGVjdHVyZS4NCi0gKiAgICAgICAgICAgICAgICAgICAgIEFkZGVkIGNhY2hlIG1haW50ZW5hbmNlIGZ1bmN0aW9ucy4NCi0gKg0KLSAqICAgICRSZXZpc2lvbjogNTI3MDUgJA0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KLSNpbmNsdWRlICJhcm1fY29tbS5oIg0KLQ0KLSNpZm5kZWYgX19BUk1WN0FfQ1AxNV9EUlZfSA0KLSNkZWZpbmUgX19BUk1WN0FfQ1AxNV9EUlZfSA0KLQ0KLSNkZWZpbmUgTk9OX0NBQ0hBQkxFX0FERFIgICAgIDB4RkZGRkZGRkMNCi0NCi0jZGVmaW5lIEwxX0VOVFJJRVNfTlVNQiAgICAgICA0MDk2DQotI2RlZmluZSBMMl9DUF9FTlRSSUVTX05VTUIgICAgMjU2DQotDQotI2RlZmluZSBEQ0FDSEVfQ0xFQU5fQU5EX0lOVkFMSURBVEUgIDENCi0jZGVmaW5lIERDQUNIRV9JTlZBTElEQVRFICAgICAgICAgICAgMg0KLQ0KLSNkZWZpbmUgVFNCX0lOVkFMSUQgeyAwLCAwLCAwLCAwIH0NCi0jZGVmaW5lIFRUQl9JTlZBTElEIHsgMCwgVGFibGVJbnZhbGlkIH0NCi0NCi0jZGVmaW5lIEwxX1BBR0VfVEFCTEVfRU5UUlkoTnVtYiwgVmlydEFkZHIgLFBoQWRkciwgRG9tYWluLCBOUykgXA0KLSAgeyBOdW1iLCBWaXJ0QWRkciwgUGhBZGRyLCBcDQotICAoKERvbWFpbiA8PCA1KSB8IChOUyA8PCAzKSB8IFwNCi0gICAgVHRMMVBhZ2VUYWJsZSl9DQotDQotI2RlZmluZSBMMV9TRUNUSU9OX0VOVFJZKE51bWIsIFZpcnRBZGRyICxQaEFkZHIsIE5TLCBuRywgUywgQVAyLCBURVgsIEFQMDEsIERvbWFpbiwgWE4sIEMsIEIpIFwNCi0gIHsgTnVtYiwgVmlydEFkZHIsIFBoQWRkciwgXA0KLSAgKChOUyA8PCAxOSkgfCAobkcgPDwgMTcpIHwgKFMgPDwgMTYpIHwgKEFQMiA8PCAxNSkgfCAoVEVYIDw8IDEyKSB8IChBUDAxIDw8IDEwKSB8IChEb21haW4gPDwgNSkgfCAoWE4gPDwgNCkgfCAoQyA8PCAzKSB8IChCIDw8IDIpIHwgXA0KLSAgICBUdEwxU2VjdGlvbil9DQotDQotI2RlZmluZSBMMV9TVVBFUlNFQ1RJT05fRU5UUlkoTnVtYiwgVmlydEFkZHIsIFBoQWRkciwgRXh0QmFzZUFkZHIsIE5TLCBuRywgUywgQVAyLCBURVgsIEFQMDEsIERvbWFpbiwgWE4sIEMsIEIpIFwNCi0gIHsgTnVtYioxNiwgVmlydEFkZHIsIFBoQWRkciwgXA0KLSAgKCgoRXh0QmFzZUFkZHImMHgwRlVMKSA8PCAyMCkgfCAoKChFeHRCYXNlQWRkciYweEYwVUwpPj40KSA8PCA1KSB8IChOUyA8PCAxOSkgfCAobkcgPDwgMTcpIHwgKFMgPDwgMTYpIHwgKEFQMiA8PCAxNSkgfCAoVEVYIDw8IDEyKSB8IChBUDAxIDw8IDEwKSB8IChEb21haW4gPDwgNSkgfCAoWE4gPDwgNCkgfCAoQyA8PCAzKSB8IChCIDw8IDIpIHwgXA0KLSAgICBUdEwxU3VwZXJTZWN0aW9uKX0NCi0NCi0jZGVmaW5lIEwyX0xBUkdFX1BBR0VfRU5UUlkoTnVtYiwgVmlydEFkZHIgLFBoQWRkciwgWE4sIFRFWCwgbkcsIFMsIEFQMiwgQVAwMSwgQywgQikgXA0KLSAgeyBOdW1iKjE2LCBWaXJ0QWRkciwgUGhBZGRyLCBcDQotICAoKFhOIDw8IDE1KSB8IChURVggPDwgMTIpIHwgKG5HIDw8IDExKSB8IChTIDw8IDEwKSB8IChBUDIgPDwgOSkgfCAoQVAwMSA8PCA0KSB8IChDIDw8IDMpIHwgKEIgPDwgMikgfCBcDQotICAgIFR0TDJMYXJnZVBhZ2UpfQ0KLQ0KLSNkZWZpbmUgTDJfU01BTExfUEFHRV9FTlRSWShOdW1iLCBWaXJ0QWRkciAsUGhBZGRyLCBYTiwgVEVYLCBuRywgUywgQVAyLCBBUDAxLCBDLCBCKSBcDQotICB7IE51bWIsIFZpcnRBZGRyLCBQaEFkZHIsIFwNCi0gICgobkcgPDwgMTEpIHwgKFMgPDwgMTApIHwgKEFQMiA8PCA5KSB8IChURVg8PDYpIHwgKEFQMDEgPDwgNCkgfCAoQyA8PCAzKSB8IChCIDw8IDIpIHwgIChYTiA8PCAwKSB8IFwNCi0gICAgVHRMMlNtYWxsUGFnZSl9DQotDQotLy8gQ1AxNSBSZWdpc3RlcnMNCi0vLyBJRCByZWdpc3Rlcg0KLSNkZWZpbmUgQ1AxNV9JRCAgICAgICAgICAgMA0KLQ0KLS8vIENvbnRyb2wgcmVnaXN0ZXINCi0jZGVmaW5lIENQMTVfQ1RSTCAgICAgICAgIDENCi0vLyBDUDE1IENvbnRyb2wgcmVnaXN0ZXIgYml0cw0KLSNkZWZpbmUgQ1AxNV9DVFJMX00gICAgICAoMVVMIDw8ICAwKSAgICAvLyBNTVUgZW5hYmxlL2Rpc2FibGUNCi0jZGVmaW5lIENQMTVfQ1RSTF9BICAgICAgKDFVTCA8PCAgMSkgICAgLy8gQWxpZ25tZW50IGZhdWx0IGVuYWJsZS9kaXNhYmxlDQotI2RlZmluZSBDUDE1X0NUUkxfQyAgICAgICgxVUwgPDwgIDIpICAgIC8vIERDYWNoZSBlbmFibGUvZGlzYWJsZQ0KLSNkZWZpbmUgQ1AxNV9DVFJMX1ogICAgICAoMVVMIDw8IDExKSAgICAvLyBQcm9ncmFtIGZsb3cgcHJlZGljdGlvbg0KLSNkZWZpbmUgQ1AxNV9DVFJMX0kgICAgICAoMVVMIDw8IDEyKSAgICAvLyBJQ2FjaGUgZW5hYmxlL2Rpc2FibGUNCi0jZGVmaW5lIENQMTVfQ1RSTF9WICAgICAgKDFVTCA8PCAxMykgICAgLy8gTG9jYXRpb24gb2YgZXhjZXB0aW9uIHZlY3RvcnMNCi0jZGVmaW5lIENQMTVfQ1RSTF9FRSAgICAgKDFVTCA8PCAyNSkgICAgLy8gQ1BTUiBFIGJpdCBvbiBleGNlcHRpb24NCi0jZGVmaW5lIENQMTVfQ1RSTF9OTUZJICAgKDFVTCA8PCAyNykgICAgLy8gRklRIGVuYWJsZSBiaXQgKDEgLSBGSVEgY2Fubm90IGJlIG1hc2tlZCkgUkVBRC1PTkxZDQotI2RlZmluZSBDUDE1X0NUUkxfVFJFICAgICgxVUwgPDwgMjgpICAgIC8vIFRFWCByZW1hcCBmdW5jdGlvbmFsaXR5IGJpdC4gKFRFWCBlbmFibGVkL2Rpc2FibGVkKQ0KLSNkZWZpbmUgQ1AxNV9DVFJMX0FGRSAgICAoMVVMIDw8IDI5KSAgICAvLyBBY2Nlc3MgRmxhZyBFbmFibGUgYml0Lg0KLSNkZWZpbmUgQ1AxNV9DVFJMX1RFICAgICAoMVVMIDw8IDMwKSAgICAvLyBUaHVtYiBFeGNlcHRpb24gZW5hYmxlIGJpdC4NCi0NCi0vLyBUcmFuc2xhdGlvbiB0YWJsZSBiYXNlIGFkZHJlc3MgKGFsaWdubWVudCA0S0IpDQotI2RlZmluZSBDUDE1X1RUQl9BRERSICAgICAyDQotDQotLy8gRG9tYWluIGFjY2VzcyBjb250cm9sIHJlZ2lzdGVyDQotI2RlZmluZSBDUDE1X0RBX0NUUkwgICAgICAzDQotDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDAoVmFsKSAgKChWYWwgJiAweDMpIDw8ICAwKQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QxKFZhbCkgICgoVmFsICYgMHgzKSA8PCAgMikNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMihWYWwpICAoKFZhbCAmIDB4MykgPDwgIDQpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDMoVmFsKSAgKChWYWwgJiAweDMpIDw8ICA2KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0Q0KFZhbCkgICgoVmFsICYgMHgzKSA8PCAgOCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9ENShWYWwpICAoKFZhbCAmIDB4MykgPDwgMTApDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDYoVmFsKSAgKChWYWwgJiAweDMpIDw8IDEyKQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0Q3KFZhbCkgICgoVmFsICYgMHgzKSA8PCAxNCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EOChWYWwpICAoKFZhbCAmIDB4MykgPDwgMTYpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDkoVmFsKSAgKChWYWwgJiAweDMpIDw8IDE4KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QxMChWYWwpICgoVmFsICYgMHgzKSA8PCAyMCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMTEoVmFsKSAoKFZhbCAmIDB4MykgPDwgMjIpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDEyKFZhbCkgKChWYWwgJiAweDMpIDw8IDI0KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QxMyhWYWwpICgoVmFsICYgMHgzKSA8PCAyNSkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMTQoVmFsKSAoKFZhbCAmIDB4MykgPDwgMjgpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDE1KFZhbCkgKChWYWwgJiAweDMpIDw8IDMwKQ0KLQ0KLS8vIENQMTUgZmF1bHQgc3RhdHVzIHJlZ2lzdGVyDQotI2RlZmluZSBDUDE1X0ZBVUxUX1NUQVQgICA1DQotDQotLy8gQ1AxNSBmYXVsdCBhZGRyZXNzIHJlZ2lzdGVyDQotI2RlZmluZSBDUDE1X0ZBVUxUX0FERFIgICA2DQotDQotLy8gQ1AxNSBDYWNoZSBvcGVyYXRpb25zDQotI2RlZmluZSBDUDE1X0NBQ0hFX09QUiAgICA3DQotDQotLy8gQ1AxNSBUTEIgb3BlcmF0aW9uDQotI2RlZmluZSBDUDE1X1RCTF9PUFIgICAgICA4DQotDQotLy8gQ1AxNSBDYWNoZSBsb2NrZG93bg0KLSNkZWZpbmUgQ1AxNV9DX0xEICAgICAgICAgOQ0KLQ0KLS8vIENQMTUgVEJMIGxvY2tkb3duDQotI2RlZmluZSBDUDE1X1RCTF9MRCAgICAgICAxMA0KLQ0KLS8vIENQMTUgVkJBUg0KLSNkZWZpbmUgQ1AxNV9WQkFSICAgICAgICAgMTINCi0NCi0vLyBDUDE1IFByb2Nlc3MgaWRlbnRpZmllciByZWdpc3Rlcg0KLSNkZWZpbmUgQ1AxNV9QUk9DRVNTX0lETkYgMTMNCi0NCi0vLyBDUDE1IFRlc3QNCi0jZGVmaW5lIENQMTVfVEVTVCAgICAgICAgIDE1DQotDQotdHlwZWRlZiBlbnVtIHsNCi0gIERvbWFpbk5vQWNjZXNzID0gMCwgRG9tYWluQ2xpZW50LCBEb21haW5NYW5hZ2VyID0gMywNCi19IE1tdURvbWFpblR5cGVfdDsNCi0NCi10eXBlZGVmIGVudW0NCi17DQotICBUdEwxSW52YWxpZCA9IDAsIFR0TDFQYWdlVGFibGUsIFR0TDFTZWN0aW9uLCBUdEwxU3VwZXJTZWN0aW9uID0gMHg0MDAwMiwNCi19IFR0TDFFbnRyeVR5cGVfdDsNCi0NCi10eXBlZGVmIGVudW0NCi17DQotICBUdEwySW52YWxpZCA9IDAsIFR0TDJMYXJnZVBhZ2UsIFR0TDJTbWFsbFBhZ2UsDQotfSBUdEwyRW50cnlUeXBlX3Q7DQotDQotdHlwZWRlZiBlbnVtDQotew0KLSAgVGFibGVJbnZhbGlkID0gMCwgVGFibGVMMSwgVGFibGVMMl9QYWdlVGFibGUsDQotfSBUYWJsZVR5cGVfdDsNCi0NCi10eXBlZGVmIGVudW0NCi17DQotICBQQzE1X0ZBU1RCVVNfTU9ERSA9IDAsIFBDMTVfU1lOQ19NT0RFLCBQQzE1X0FTWU5DX01PREUgPSAzDQotfSBDbGtNb2RlX3Q7DQotDQotDQotdHlwZWRlZiB1bmlvbiBfVHRFbnRyeV90DQotew0KLSAgSW50MzJVIERhdGE7DQotICBzdHJ1Y3QNCi0gIHsNCi0gICAgSW50MzJVIFR5cGUgICAgIDogMjsNCi0gICAgSW50MzJVICAgICAgICAgIDogMzsNCi0gICAgSW50MzJVIERvbWFpbiAgIDogNDsNCi0gICAgSW50MzJVICAgICAgICAgIDoyMzsNCi0gIH07DQotfSBUdEVudHJ5X3QsICpwVHRFbnRyeV90Ow0KLQ0KLXR5cGVkZWYgc3RydWN0IF9UdFNlY3Rpb25CbG9ja190DQotew0KLSAgSW50MzJVIE51YnJPZlNlY3Rpb25zOw0KLSAgSW50MzJVIFZpcnRBZGRyOw0KLSAgSW50MzJVIFBoeXNBZGRyOw0KLSAgVHRFbnRyeV90IEVudHJ5Ow0KLX0gVHRTZWN0aW9uQmxvY2tfdCwgKiBwVHRTZWN0aW9uQmxvY2tfdDsNCi0NCi10eXBlZGVmIHN0cnVjdCBfVHRUYWJsZUJsb2NrX3QNCi17DQotICBwSW50MzJVICAgICBUYWJsZUFkZHI7DQotICBUYWJsZVR5cGVfdCBUYWJsZVR5cGU7DQotfSBUdFRhYmxlQmxvY2tfdCwgKiBwVHRUYWJsZUJsb2NrX3Q7DQotDQotI2RlZmluZSBUVF9FTlRSWV9JTlZBTElEICAgICAgICAgIDANCi0NCi0jZGVmaW5lIFRUTDFfU0VDVElPTl9QQUREUl9NQVNLICAgMHhGRkYwMDAwMA0KLSNkZWZpbmUgVFRMMV9TX1NFQ1RJT05fUEFERFJfTUFTSyAweEZGMDAwMDAwDQotI2RlZmluZSBUVEwxX1NfU0VDVElPTl9FWFQzNV8zMl9QQUREUl9NQVNLIDB4MDBGMDAwMDANCi0jZGVmaW5lIFRUTDFfU19TRUNUSU9OX0VYVDM5XzM2X1BBRERSX01BU0sgMHgwMDAwMDFFMA0KLSNkZWZpbmUgVFRMMV9QVF9QQUREUl9NQVNLICAgICAgICAweEZGRkZGQzAwDQotDQotI2RlZmluZSBUVEwyX0xQX1BBRERSX01BU0sgICAgICAgIDB4RkZGRjAwMDANCi0jZGVmaW5lIFRUTDJfU1BfUEFERFJfTUFTSyAgICAgICAgMHhGRkZGRjAwMA0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRUdGIwDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIFRUQjAgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFR0YjAgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRUdGIxDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIFRUQjEgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFR0YjEgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRTdGF0dXMNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIGNvbnRyb2wgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFN0YXR1cyAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldERvbWFpbg0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBNTVUgZG9tYWluIGFjY2VzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0RG9tYWluICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0RG9tYWlucw0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBEb21haW5BY2Nlc3MNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gc2V0IHRoZSBNTVUgZG9tYWluIGFjY2VzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldERvbWFpbnMgKEludDMyVSBEb21haW5BY2Nlc3MpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9NYWludGFpbkRDYWNoZVNldFdheQ0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBsZXZlbCAtIGxldmVsIG9mIGNhY2hlLA0KLSAqICAgICAgICAgICAgIEludDMyVSBtYWludCAtIG1haW50ZW5hbmNlIHR5cGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IE1haW50YWluIGRhdGEgY2FjaGUgbGluZSBieSBTZXQvV2F5DQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfTWFpbnRhaW5EQ2FjaGVTZXRXYXkoSW50MzJVIGxldmVsLCBJbnQzMlUgbWFpbnQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9NYWludEFsbERDYWNoZQ0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBvcGVyIC0gdHlwZSBvZiBtYWludGVuYW5jZSwgb25lIG9mOg0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0FDSEVfQ0xFQU5fQU5EX0lOVkFMSURBVEUNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgRENBQ0hFX0lOVkFMSURBVEUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IE1haW50ZW5hbmNlIG9mIGFsbCBkYXRhIGNhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfTWFpbnRhaW5BbGxEQ2FjaGUoSW50MzJVIG9wZXIpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JbnZhbEluc3RyQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIGluc3RydWN0aW9uIGNhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfSW52YWxJbnN0ckNhY2hlKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JbnZhbFByZWRpY3RBcnJheQ0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEludmFsaWRhdGUgcHJlZGljdGlvbiBhcnJheQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X0ludmFsUHJlZGljdEFycmF5KHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JbnZhbEFsbFRibA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEludmFsaWRhdGUgVExCDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfSW52YWxBbGxUYmwgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRTdGF0dXMNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgQ3RybA0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgQ1RSIChjb250cm9sKSByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFN0YXR1cyAoSW50MzJVIEN0cmwpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRNbXUNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgQ3RybA0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgY29udHJvbCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldE1tdSAoSW50MzJVIEN0cmwpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRUdGIwDQotICogUGFyYW1ldGVyczogcEludDMyVSBwVHRiDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBUVEIwIGJhc2UgYWRkcmVzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFR0YjAgKHBJbnQzMlUgcFR0Yik7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldFR0YjENCi0gKiBQYXJhbWV0ZXJzOiBwSW50MzJVIHBUdGINCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBDUDE1IFRUQjEgYmFzZSBhZGRyZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0VHRiMSAocEludDMyVSBwVHRiKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0RGFjDQotICogUGFyYW1ldGVyczogSW50MzJVIGRhDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBkb21haW4gYWNjZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0RGFjIChJbnQzMlUgZGEpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9Xcml0ZUJ1ZmZGbHVzaA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246ICBGbHVzaCB0aGUgd3JpdGUgYnVmZmVyIGFuZCB3YWl0IGZvciBjb21wbGV0aW9uDQotICogICAgICAgICAgICAgIG9mIHRoZSBmbHVzaC4NCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9Xcml0ZUJ1ZmZGbHVzaCAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldEZhdWx0U3RhdA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBNTVUgZmF1bHQgc3RhdHVzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRGYXVsdFN0YXQgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGYXVsdEFkZHINCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIGZhdWx0IGFkZHJlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldEZhdWx0QWRkciAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldEZjc2VQaWQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIEZDU0UgUElEIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRGY3NlUGlkICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0UHJhY2VQcm9jSWQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIFRyYWNlIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRQcmFjZVByb2NJZCAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldEZjc2VQaWQNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgRmNzZVBpZA0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gc2V0IHRoZSBNTVUgUHJvY2VzcyBpZGVudGlmaWVyDQotICogICAgICAgICAgICAgRkNTRSBQSUQgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRGY3NlUGlkIChJbnQzMlUgRmNzZVBpZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldFByYWNlUHJvY0lkDQotICogUGFyYW1ldGVyczogSW50MzJVDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiBzZXQgdGhlIE1NVSBUcmFjZSBQcm9jZXNzIGlkZW50aWZpZXINCi0gKiAgICAgICAgICAgICByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFByYWNlUHJvY0lkIChJbnQzMlUgVHJhY2UpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9Xcml0ZUJ1ZmZGbHVzaA0KLSAqIFBhcmFtZXRlcnM6IHBUdFNlY3Rpb25CbG9ja190IHBUdFNCLCBwVHRUYWJsZUJsb2NrX3QgcFR0VEINCi0gKg0KLSAqIFJldHVybjogQm9vbGVhbg0KLSAqDQotICogIFJldHVybiBlcnJvciBpZiBNTVUgaXMgZW5hYmxlZC4gUmV0dXJuIGVycm9yIGlmIHRhcmdldA0KLSAqIFRyYW5zbGF0aW9uIFRhYmxlIGFkZHJlc3MgaXMgbm90IDE2SyBhbGlnbmVkLiBDbGVhciB0aGUNCi0gKiBUcmFuc2xhdGlvbiBUYWJsZSBhcmVhLiBCdWlsZCB0aGUgVHJhbnNsYXRpb24gVGFibGUgZnJvbSB0aGUNCi0gKiBpbml0aWFsaXphdGlvbiBkYXRhIGluIHRoZSBTZWN0aW9uIEJsb2NrIGFycmF5LiBSZXR1cm4gbm8gZXJyb3IuDQotICoNCi0gKiBEZXNjcmlwdGlvbjogIEluaXRpYWxpemVzIHRoZSBNTVUgdGFibGVzLg0KLSAqDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1Cb29sZWFuIENQMTVfSW5pdE1tdVR0Yihjb25zdCBUdFNlY3Rpb25CbG9ja190ICogcFR0U0IsDQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHRUYWJsZUJsb2NrX3QgKiBwVHRUQik7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X01tdQ0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBFbmFibGUvRGlzYWJsZSBNTVUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9NbXUgKEJvb2xlYW4gRW5hYmxlKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgQ2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9DYWNoZSAoQm9vbGVhbiBFbmFibGUpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JbnZhbGlkYXRlQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogSW52YWxpZGF0ZSBDYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X0ludmFsaWRhdGVDYWNoZSgpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgSSBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X0lDYWNoZSAoQm9vbGVhbiBFbmFibGUpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9EQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgRCBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X0RDYWNoZSAoQm9vbGVhbiBFbmFibGUpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9Qcm9nRmxvd1ByZWRpY3Rpb2luDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIHByb2dyYW0gZmxvdyBwcmVkaWN0aW9uDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfUHJvZ0Zsb3dQcmVkaWN0aW9uIChCb29sZWFuIEVuYWJsZSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFZlY3RvckJhc2UNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEdldCBWZWN0b3IgQmFzZSBSZWdpc3RlciAoVkJBUikNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFZlY3RvckJhc2Uodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldFZlY3RvckJhc2UNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBWZWN0b3IgQmFzZSBSZWdpc3RlciAoVkJBUikNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRWZWN0b3JCYXNlKEludDMyVSB2ZWN0b3IpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRIaWdoVmVjdG9ycw0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4NCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNlbGVjdCBIaWdoIG9yIExvdyBWZWN0b3JzIGJhc2UgaW4gQ1AxNSBjb250cm9sIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0SGlnaFZlY3RvcnMoQm9vbGVhbiBFbmFibGUpOw0KLQ0KLSNlbmRpZiAvLyBfX0FSTVY3QV9DUDE1X0RSVl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3I3czcyMTAwMC5pY2YgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvcjdzNzIxMDAwLmljZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1ZmQwNS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvcjdzNzIxMDAwLmljZgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qIyMjSUNGIyMjIFNlY3Rpb24gaGFuZGxlZCBieSBJQ0YgZWRpdG9yLCBkb24ndCB0b3VjaCEgKioqKi8NCi0vKi1FZGl0b3IgYW5ub3RhdGlvbiBmaWxlLSovDQotLyogSWNmRWRpdG9yRmlsZT0iJFRPT0xLSVRfRElSJFxjb25maWdcaWRlXEljZkVkaXRvclxhX3YxXzAueG1sIiAqLw0KLS8qLVNwZWNpYWxzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18gPSAweDIwMDIwMDAwOw0KLS8qLU1lbW9yeSBSZWdpb25zLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fID0gMHgwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9ST01fZW5kX18gICA9IDB4MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gPSAweDIwMDIwMDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX18gICA9IDB4MjA5RkZGRkY7DQotLyotU2l6ZXMtKi8NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2NzdGFja19fICAgPSAweDgwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX3N2Y3N0YWNrX18gPSAweDgwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18gPSAweDgwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2ZpcXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfdW5kc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9hYnRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2hlYXBfXyAgICAgPSAweDg7DQotLyoqKiogRW5kIG9mIElDRiBlZGl0b3Igc2VjdGlvbi4gIyMjSUNGIyMjKi8NCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgPSAweDIwMDAwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX18gICAgICAgICA9IDB4MjAwMUZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgID0gMHg2MDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fICAgICAgPSAweDYwOUZGRkZGOw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyA9IDB4NjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfXyAgID0gMHg2MDAxRkZGRjsNCi0NCi1kZWZpbmUgbWVtb3J5IG1lbSB3aXRoIHNpemUgPSA0RzsNCi0NCi1kZWZpbmUgcmVnaW9uIFJBTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSZXRSQU1fcmVnaW9uICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gTWlycm9yUkFNX3JlZ2lvbiAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgIHRvIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJldFJBTV9yZWdpb24gPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfX107DQotDQotZGVmaW5lIGJsb2NrIENTVEFDSyAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgIHsgfTsNCi1kZWZpbmUgYmxvY2sgU1ZDX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3N2Y3N0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBJUlFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaXJxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEZJUV9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9maXFzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgVU5EX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX3VuZHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBBQlRfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfYWJ0c3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIEhFQVAgICAgICB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICAgIHsgfTsNCi0NCi1pbml0aWFsaXplIGJ5IGNvcHkgeyByZWFkd3JpdGUgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIC5ub2luaXQgfTsNCi1kbyBub3QgaW5pdGlhbGl6ZSAgeyBzZWN0aW9uIE1NVV9UVCB9Ow0KLQ0KLXBsYWNlIGF0IGFkZHJlc3MgbWVtOl9fSUNGRURJVF9pbnR2ZWNfc3RhcnRfXyB7IHJlYWRvbmx5IHNlY3Rpb24gLmludHZlYyB9Ow0KLQ0KLXBsYWNlIGluIFJBTV9yZWdpb24gICAgIHsgcmVhZG9ubHkgfTsNCi1wbGFjZSBpbiBSQU1fcmVnaW9uICAgICB7IHJlYWR3cml0ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIENTVEFDSywgYmxvY2sgU1ZDX1NUQUNLLCBibG9jayBJUlFfU1RBQ0ssIGJsb2NrIEZJUV9TVEFDSywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrIFVORF9TVEFDSywgYmxvY2sgQUJUX1NUQUNLLCBibG9jayBIRUFQIH07DQotDQotcGxhY2UgaW4gUmV0UkFNX3JlZ2lvbiAgICAgICB7IHNlY3Rpb24gLnJldHJhbSB9Ow0KLXBsYWNlIGluIE1pcnJvclJBTV9yZWdpb24gICAgeyBzZWN0aW9uIC5taXJyb3JyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSZXRSQU1fcmVnaW9uIHsgc2VjdGlvbiAubWlycm9ycmV0cmFtIH07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNzcHkuYmF0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmNzcHkuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWMzNGJhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jc3B5LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUBSRU0gVGhpcyBiYXRjaCBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgSUFSIEVtYmVkZGVkIFdvcmtiZW5jaA0KLUBSRU0gQy1TUFkgRGVidWdnZXIsIGFzIGFuIGFpZCB0byBwcmVwYXJpbmcgYSBjb21tYW5kIGxpbmUgZm9yIHJ1bm5pbmcNCi1AUkVNIHRoZSBjc3B5YmF0IGNvbW1hbmQgbGluZSB1dGlsaXR5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5ncy4NCi1AUkVNDQotQFJFTSBOb3RlIHRoYXQgdGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBldmVyeSB0aW1lIGEgbmV3IGRlYnVnIHNlc3Npb24NCi1AUkVNIGlzIGluaXRpYWxpemVkLCBzbyB5b3UgbWF5IHdhbnQgdG8gbW92ZSBvciByZW5hbWUgdGhlIGZpbGUgYmVmb3JlDQotQFJFTSBtYWtpbmcgY2hhbmdlcy4NCi1AUkVNDQotQFJFTSBZb3UgY2FuIGxhdW5jaCBjc3B5YmF0IGJ5IHR5cGluZyB0aGUgbmFtZSBvZiB0aGlzIGJhdGNoIGZpbGUgZm9sbG93ZWQNCi1AUkVNIGJ5IHRoZSBuYW1lIG9mIHRoZSBkZWJ1ZyBmaWxlICh1c3VhbGx5IGFuIEVMRi9EV0FSRiBvciBVQlJPRiBmaWxlKS4NCi1AUkVNDQotQFJFTSBSZWFkIGFib3V0IGF2YWlsYWJsZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBpbiB0aGUgQy1TUFkgRGVidWdnaW5nDQotQFJFTSBHdWlkZS4gSGludHMgYWJvdXQgYWRkaXRpb25hbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyB0aGF0IG1heSBiZQ0KLUBSRU0gdXNlZnVsIGluIHNwZWNpZmljIGNhc2VzOg0KLUBSRU0gICAtLWRvd25sb2FkX29ubHkgICBEb3dubG9hZHMgYSBjb2RlIGltYWdlIHdpdGhvdXQgc3RhcnRpbmcgYSBkZWJ1Zw0KLUBSRU0gICAgICAgICAgICAgICAgICAgICBzZXNzaW9uIGFmdGVyd2FyZHMuDQotQFJFTSAgIC0tc2lsZW50ICAgICAgICAgIE9taXRzIHRoZSBzaWduLW9uIG1lc3NhZ2UuDQotQFJFTSAgIC0tdGltZW91dCAgICAgICAgIExpbWl0cyB0aGUgbWF4aW11bSBhbGxvd2VkIGV4ZWN1dGlvbiB0aW1lLg0KLUBSRU0gDQotDQotDQotIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjVcY29tbW9uXGJpblxjc3B5YmF0IiAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuNVxhcm1cYmluXGFybXByb2MuZGxsIiAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuNVxhcm1cYmluXGFybWpsaW5rLmRsbCIgICUxIC0tcGx1Z2luICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNi41XGFybVxiaW5cYXJtYmF0LmRsbCIgLS1tYWNybyAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTVcSUFSXGNvbmZpZ1xSVEs3NzIxMDBGQzAwMDAwQlJfTk9SLm1hYyIgLS1iYWNrZW5kIC1CICItLWVuZGlhbj1saXR0bGUiICItLWNwdT1Db3J0ZXgtQTkiICItLWZwdT1WRlB2M05lb24iICItcCIgIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjVcYXJtXENPTkZJR1xkZWJ1Z2dlclxSZW5lc2FzXFI3UzcyMTAwMC5kZGYiICItLWRydl92ZXJpZnlfZG93bmxvYWQiICItLXNlbWlob3N0aW5nPW5vbmUiICItLWRldmljZT1SN1M3MjEwMDAiICItLWRydl9jb21tdW5pY2F0aW9uPVVTQjAiICItLWpsaW5rX3NwZWVkPWF1dG8iICItLWpsaW5rX2luaXRpYWxfc3BlZWQ9MzIiICItLWRydl9jYXRjaF9leGNlcHRpb25zPTB4MDAwIiANCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NWI1OGIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KLTxQcm9qZWN0Pg0KLSAgPERlc2t0b3A+DQotICAgIDxTdGF0aWM+DQotICAgICAgPERlYnVnLUxvZz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48L0J1aWxkPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjIyODwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCi0gICAgICA8L1dvcmtzcGFjZT4NCi0gICAgICA8RGlzYXNzZW1ibHk+DQotICAgICAgICA8Y29sLW5hbWVzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8aXRlbT5EaXNhc3NlbWJseTwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+DQotICAgICAgICA8Y29sLXdpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPjxpdGVtPjIwPC9pdGVtPjwvY29sLXdpZHRocz4NCi0gICAgICAgIDxEaXNhc21IaXN0b3J5Lz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48U2hvd0NvZGVDb3ZlcmFnZT4xPC9TaG93Q29kZUNvdmVyYWdlPjxTaG93SW5zdHJQcm9maWxpbmc+MTwvU2hvd0luc3RyUHJvZmlsaW5nPjwvRGlzYXNzZW1ibHk+DQotICAgIDxSZWdpc3Rlcj48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3M+PFdpbmRvdz48RmFjdG9yeT5XQVRDSF8xPC9GYWN0b3J5PjwvV2luZG93PjwvV2luZG93cz48L1ByZWZlcmVkV2luZG93cz48L1JlZ2lzdGVyPjxXQVRDSF8xPjxleHByZXNzaW9ucz48aXRlbS8+PC9leHByZXNzaW9ucz48Y29sLW5hbWVzPjxpdGVtPkV4cHJlc3Npb248L2l0ZW0+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4yMzY8L2l0ZW0+PGl0ZW0+MTUwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PC9jb2wtd2lkdGhzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9XQVRDSF8xPjxBdXRvPjxjb2wtbmFtZXM+PGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xNTA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48L2NvbC13aWR0aHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L0F1dG8+PEZpbmQtaW4tRmlsZXM+PENvbHVtbldpZHRoMD41ODA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj45OTQ8L0NvbHVtbldpZHRoMj48L0ZpbmQtaW4tRmlsZXM+PEJyZWFrcG9pbnRzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQnJlYWtwb2ludHM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMD4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC02ODI0LTI3NTQ2PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE3MDUwLTI3NTU5PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPFRhYj48SWRlbnRpdHk+VGFiSUQtMTE3OTQtMjM2OTA8L0lkZW50aXR5PjxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+PEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMD48V25kMT4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNzU3My0yNzU0OTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9CbGlua3ktRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MtU291cmNlPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUy1Tb3VyY2UvcG9ydGFibGU8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TLVNvdXJjZS9wb3J0YWJsZS9JQVI8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TLVNvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOTwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDE+PFduZDI+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtODcyMS03NjgwPC9JZGVudGl0eT48VGFiTmFtZT5EaXNhc3NlbWJseTwvVGFiTmFtZT48RmFjdG9yeT5EaXNhc3NlbWJseTwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPjxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDI+PC9XaW5kb3dzPg0KLSAgICA8RWRpdG9yPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8UGFuZT48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXFNvdXJjZVxCbGlua3ktRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjQ8L1lQb3MyPjxTZWxTdGFydDI+MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjA8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTIyPC9ZUG9zMj48U2VsU3RhcnQyPjYzNDg8L1NlbFN0YXJ0Mj48U2VsRW5kMj42MzQ4PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcY3N0YXJ0dXAuczwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjEyMDwvWVBvczI+PFNlbFN0YXJ0Mj4zNjcyPC9TZWxTdGFydDI+PFNlbEVuZDI+MzY3MjwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXExvd0xldmVsSW5pdGlhbGlzZS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTQ8L1lQb3MyPjxTZWxTdGFydDI+MTA4MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjEwODA8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4zPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtb2R1bGVzXGFybXY3YV9jcDE1X2Rydi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NTczPC9ZUG9zMj48U2VsU3RhcnQyPjE2NzgwPC9TZWxTdGFydDI+PFNlbEVuZDI+MTY3ODA8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcTEVEcy5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjQ8L1lQb3MyPjxTZWxTdGFydDI+NDI0NzwvU2VsU3RhcnQyPjxTZWxFbmQyPjQyNDc8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHNpb2NoYXIuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjYzPC9ZUG9zMj48U2VsU3RhcnQyPjQ2Njk8L1NlbFN0YXJ0Mj48U2VsRW5kMj40NjY5PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjM0MDwvWVBvczI+PFNlbFN0YXJ0Mj4xNzU1NDwvU2VsU3RhcnQyPjxTZWxFbmQyPjE3NTU0PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAwRDY3MkE4PjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMEQ2NzJBOD48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXM+PFRvb2xiYXItMDc0NzJBMTA+PGtleT5kZWJ1Z2dlcmd1aS5lbnUxPC9rZXk+PC9Ub29sYmFyLTA3NDcyQTEwPjwvU2l6ZXM+PC9Sb3cxPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMT48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT43MTg8L0JvdHRvbT48UmlnaHQ+MzAyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTgwOTUyPC9zaXplVmVydENYPjxzaXplVmVydENZPjczMTcwNzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQxPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzPjxXbmQyPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjcxODwvQm90dG9tPjxSaWdodD42OTk8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD40MTcyNjI8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzMxNzA3PC9zaXplVmVydENZPjwvUmVjdD48L1duZDI+PC9TaXplcz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMD48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4xOTg8L0JvdHRvbT48UmlnaHQ+MTY4MjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTY4NDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPjxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQwPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQotPC9Qcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kbmkgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZG5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjcwOThlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kbmkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotW1N0YWNrXQ0KLUZpbGxFbmFibGVkPTANCi1PdmVyZmxvd1dhcm5pbmdzRW5hYmxlZD0xDQotV2FybmluZ1RocmVzaG9sZD05MA0KLVNwV2FybmluZ3NFbmFibGVkPTANCi1XYXJuTG9nT25seT0xDQotVXNlVHJpZ2dlcj0xDQotVHJpZ2dlck5hbWU9bWFpbg0KLUxpbWl0U2l6ZT0wDQotQnl0ZUxpbWl0PTUwDQotW0pMaW5rRHJpdmVyXQ0KLVdhdGNoQ29uZD1fIDANCi1XYXRjaDA9XyAwICIiIDAgIiIgMCAiIiAwICIiIDAgMCAwIDANCi1XYXRjaDE9XyAwICIiIDAgIiIgMCAiIiAwICIiIDAgMCAwIDANCi1DU3RlcEludERpcz1fIDANCi1bRGVidWdDaGVja3N1bV0NCi1DaGVja3N1bT03MjM2ODk0MQ0KLVtKZXRdDQotSmV0Q29ublNlcmlhbE5vPTczODY2DQotSmV0Q29ubkZvdW5kUHJvYmVzPQ0KLURpc2FibGVJbnRlcnJ1cHRzPTANCi1bUGxEcml2ZXJdDQotTWVtQ29uZmlnVmFsdWU9QzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuNVxhcm1cQ09ORklHXGRlYnVnZ2VyXFJlbmVzYXNcUjdTNzIxMDAwLmRkZg0KLUZpcnN0UnVuPTANCi1bQXJtRHJpdmVyXQ0KLUVuYWJsZUNhY2hlPTENCi1bRXhjZXB0aW9uc10NCi1TdG9wT25VbmNhdWdodD1fIDANCi1TdG9wT25UaHJvdz1fIDANCi1bQ2FsbFN0YWNrXQ0KLVNob3dBcmdzPTANCi1bRGlzYXNzZW1ibHldDQotTWl4ZWRNb2RlPTENCi1bU1dPTWFuYWdlcl0NCi1TYW1wbGluZ0RpdmlkZXI9ODE5Mg0KLU92ZXJyaWRlQ2xvY2s9MA0KLUNwdUNsb2NrPTANCi1Td29DbG9jaz0tMQ0KLURhdGFMb2dNb2RlPTANCi1JdG1Qb3J0c0VuYWJsZWQ9NjMNCi1JdG1UZXJtSU9Qb3J0cz0xDQotSXRtTG9nUG9ydHM9MA0KLUl0bUxvZ0ZpbGU9JFBST0pfRElSJFxJVE0ubG9nDQotUG93ZXJGb3JjZVBDPTENCi1Qb3dlckNvbm5lY3RQQz0xDQotW1Bvd2VyTG9nXQ0KLUxvZ0VuYWJsZWQ9MA0KLUdyYXBoRW5hYmxlZD0wDQotU2hvd1RpbWVMb2c9MQ0KLVNob3dUaW1lU3VtPTANCi1UaXRsZTA9SVRyZ1B3cg0KLVN5bWJvbDA9MCA0IDENCi1MaXZlRW5hYmxlZD0wDQotTGl2ZUZpbGU9UG93ZXJMb2dMaXZlLmxvZw0KLVtTV09UcmFjZVdpbmRvd10NCi1Gb3JjZWRQY1NhbXBsaW5nPTANCi1Gb3JjZWRJbnRlcnJ1cHRMb2dzPTANCi1Gb3JjZWRJdG1Mb2dzPTANCi1FdmVudENQST0wDQotRXZlbnRFWEM9MA0KLUV2ZW50Rk9MRD0wDQotRXZlbnRMU1U9MA0KLUV2ZW50U0xFRVA9MA0KLVtQb3dlclByb2JlXQ0KLUZyZXF1ZW5jeT0xMDAwMA0KLVByb2JlMD1JVHJnUHdyDQotUHJvYmVTZXR1cDA9MiAxIDEgMiAwIDANCi1bd2F0Y2hfZm9ybWF0c10NCi1GbXQwPXtXfTA6Kih1bnNpZ25lZCBsb25nICopMHhFODIwMjAwNAk0CTANCi1GbXQxPXtXfTA6Kih1bnNpZ25lZCBsb25nKikweGU4MjAyMDA0CTQJMA0KLUZtdDI9e1d9MDpJTlRDX0lDRElQUjMzCTQJMA0KLVtJbnRlcnJ1cHRMb2ddDQotTG9nRW5hYmxlZD0wDQotU3VtRW5hYmxlZD0wDQotR3JhcGhFbmFibGVkPTANCi1TaG93VGltZUxvZz0xDQotU2hvd1RpbWVTdW09MQ0KLVN1bVNvcnRPcmRlcj0wDQotW0RhdGFMb2ddDQotTG9nRW5hYmxlZD0wDQotU3VtRW5hYmxlZD0wDQotR3JhcGhFbmFibGVkPTANCi1TaG93VGltZUxvZz0xDQotU2hvd1RpbWVTdW09MQ0KLVtJbnRlcnJ1cHRzXQ0KLUVuYWJsZWQ9MQ0KLVtNZW1vcnlNYXBdDQotRW5hYmxlZD0wDQotQmFzZT0wDQotVXNlQXV0bz0wDQotVHlwZVZpb2xhdGlvbj0xDQotVW5zcGVjUmFuZ2U9MQ0KLUFjdGlvblN0YXRlPTENCi1bTG9nIGZpbGVdDQotTG9nZ2luZ0VuYWJsZWQ9XyAwDQotTG9nRmlsZT1fICIiDQotQ2F0ZWdvcnk9XyAwDQotW1Rlcm1JT0xvZ10NCi1Mb2dnaW5nRW5hYmxlZD1fIDANCi1Mb2dGaWxlPV8gIiINCi1bQ2FsbFN0YWNrTG9nXQ0KLUVuYWJsZWQ9MA0KLVtEcml2ZXJQcm9maWxpbmddDQotRW5hYmxlZD0wDQotTW9kZT0wDQotR3JhcGg9MA0KLVN5bWJpb250PTANCi1FeGNsdXNpb25zPQ0KLVtEaXNhc3NlbWJsZSBtb2RlXQ0KLW1vZGU9MA0KLVtCcmVha3BvaW50czJdDQotQnAwPV8gMSAiRU1VTF9DT0RFIiAieyRQUk9KX0RJUiRcLi5cU291cmNlXG1haW4uY30uMTM2LjIiIDAgMCAxICIiIDAgIiIgMA0KLUNvdW50PTENCi1bQWxpYXNlc10NCi1Db3VudD0wDQotU3VwcHJlc3NEaWFsb2c9MA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NTc1NzkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQotPFdvcmtzcGFjZT4NCi0gIDxDb25maWdEaWN0aW9uYXJ5Pg0KLSAgICANCi0gICAgDQotICAgIA0KLSAgPEN1cnJlbnRDb25maWdzPjxQcm9qZWN0PlJUT1NEZW1vL1JBTSBEZWJ1ZzwvUHJvamVjdD48L0N1cnJlbnRDb25maWdzPjwvQ29uZmlnRGljdGlvbmFyeT4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjMwNjwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCi0gICAgICA8L1dvcmtzcGFjZT4NCi0gICAgICA8RGVidWctTG9nPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+PC9EZWJ1Zy1Mb2c+DQotICAgICAgPEJ1aWxkPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPjwvQnVpbGQ+DQotICAgIDxUZXJtaW5hbElPLz48U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz48Q29sdW1uV2lkdGgwPjU4MDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjk5NDwvQ29sdW1uV2lkdGgyPjwvU2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9ucz48QnJlYWtwb2ludHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjUwMDwvaXRlbT48aXRlbT4zNTwvaXRlbT48L2NvbC13aWR0aHM+PC9CcmVha3BvaW50cz48RmluZC1BbGwtRGVjbGFyYXRpb25zPjxDb2x1bW5XaWR0aDA+NTgwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+OTk0PC9Db2x1bW5XaWR0aDI+PC9GaW5kLUFsbC1EZWNsYXJhdGlvbnM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMj4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNjg3Ny03Nzg2PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uPg0KLSAgICAgICAgICAgICAgDQotICAgICAgICAgICAgPE5vZGVEaWN0PjxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT48L05vZGVEaWN0PjwvU2Vzc2lvbj4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQyPjxXbmQzPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTI3OTE5LTc5ODg8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTMzNDMtODY3MTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDxUYWI+PElkZW50aXR5PlRhYklELTk1OS00Mzg8L0lkZW50aXR5PjxUYWJOYW1lPkFtYmlndW91cyBEZWZpbml0aW9uczwvVGFiTmFtZT48RmFjdG9yeT5TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48VGFiPjxJZGVudGl0eT5UYWJJRC0yMTU3OS0xMDYxMTwvSWRlbnRpdHk+PFRhYk5hbWU+RmluZCBBbGwgRGVjbGFyYXRpb25zPC9UYWJOYW1lPjxGYWN0b3J5PkZpbmQtQWxsLURlY2xhcmF0aW9uczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjM8L1NlbGVjdGVkVGFiPjwvV25kMz48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXEJsaW5reS1EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42NDwvWVBvczI+PFNlbFN0YXJ0Mj4wPC9TZWxTdGFydDI+PFNlbEVuZDI+MDwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXFNvdXJjZVxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xMjI8L1lQb3MyPjxTZWxTdGFydDI+NjM0ODwvU2VsU3RhcnQyPjxTZWxFbmQyPjYzNDg8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxjc3RhcnR1cC5zPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTIwPC9ZUG9zMj48U2VsU3RhcnQyPjM2NzI8L1NlbFN0YXJ0Mj48U2VsRW5kMj4zNjcyPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcTG93TGV2ZWxJbml0aWFsaXNlLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4yMzwvWVBvczI+PFNlbFN0YXJ0Mj4xMDY3PC9TZWxTdGFydDI+PFNlbEVuZDI+MTA4MjwvU2VsRW5kMj48L1RhYj48QWN0aXZlVGFiPjM8L0FjdGl2ZVRhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXG1vZHVsZXNcYXJtdjdhX2NwMTVfZHJ2LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4yODM8L1lQb3MyPjxTZWxTdGFydDI+ODUyMzwvU2VsU3RhcnQyPjxTZWxFbmQyPjg1MjM8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcTEVEcy5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjQ8L1lQb3MyPjxTZWxTdGFydDI+NDI0NzwvU2VsU3RhcnQyPjxTZWxFbmQyPjQyNDc8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHNpb2NoYXIuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjYzPC9ZUG9zMj48U2VsU3RhcnQyPjQ2Njk8L1NlbFN0YXJ0Mj48U2VsRW5kMj40NjY5PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjM0MDwvWVBvczI+PFNlbFN0YXJ0Mj4xNzU1NDwvU2VsU3RhcnQyPjxTZWxFbmQyPjE3NTU0PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAwRDY3MkE4PjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMEQ2NzJBOD48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXMvPjwvUm93MT48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDI+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+NjkzPC9Cb3R0b20+PFJpZ2h0PjM4MDwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjAwPC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPjxzaXplVmVydENYPjIyNzM4MTwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43MDYzMDE8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMj48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcy8+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDM+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MjQ3PC9Cb3R0b20+PFJpZ2h0PjE2ODI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE2ODQ8L3hzY3JlZW4+PHlzY3JlZW4+MjQ5PC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIzODE8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjUzMDQ5PC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4yMDMyNTI8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMz48L1NpemVzPjwvUm93MD48L0JvdHRvbT48RmxvYXQ+PFNpemVzLz48L0Zsb2F0PjwvUG9zaXRpb25zPg0KLSAgPC9EZXNrdG9wPg0KLTwvV29ya3NwYWNlPg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtb19SQU0gRGVidWcuamxpbmsgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW9fUkFNIERlYnVnLmpsaW5rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzIyY2ExLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtb19SQU0gRGVidWcuamxpbmsKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1bQlJFQUtQT0lOVFNdDQotU2hvd0luZm9XaW4gPSAxDQotRW5hYmxlRmxhc2hCUCA9IDINCi1CUER1cmluZ0V4ZWN1dGlvbiA9IDANCi1bQ0ZJXQ0KLUNGSVNpemUgPSAweDAwDQotQ0ZJQWRkciA9IDB4MDANCi1bQ1BVXQ0KLU92ZXJyaWRlTWVtTWFwID0gMA0KLUFsbG93U2ltdWxhdGlvbiA9IDENCi1TY3JpcHRGaWxlPSIiDQotW0ZMQVNIXQ0KLUNhY2hlRXhjbHVkZVNpemUgPSAweDAwDQotQ2FjaGVFeGNsdWRlQWRkciA9IDB4MDANCi1NaW5OdW1CeXRlc0ZsYXNoREwgPSAwDQotU2tpcFByb2dPbkNSQ01hdGNoID0gMQ0KLVZlcmlmeURvd25sb2FkID0gMQ0KLUFsbG93Q2FjaGluZyA9IDENCi1FbmFibGVGbGFzaERMID0gMg0KLU92ZXJyaWRlID0gMQ0KLURldmljZT0iVW5zcGVjaWZpZWQiDQotW0dFTkVSQUxdDQotV29ya1JBTVNpemUgPSAweDAwDQotV29ya1JBTUFkZHIgPSAweDAwDQotUkFNVXNhZ2VMaW1pdCA9IDB4MDANCi1bU1dPXQ0KLVNXT0xvZ0ZpbGU9IiINCi1bTUVNXQ0KLVJkT3ZlcnJpZGVPck1hc2sgPSAweDAwDQotUmRPdmVycmlkZUFuZE1hc2sgPSAweEZGRkZGRkZGDQotUmRPdmVycmlkZUFkZHIgPSAweEZGRkZGRkZGDQotV3JPdmVycmlkZU9yTWFzayA9IDB4MDANCi1Xck92ZXJyaWRlQW5kTWFzayA9IDB4RkZGRkZGRkYNCi1Xck92ZXJyaWRlQWRkciA9IDB4RkZGRkZGRkYNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9SZWFkTWUudHh0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvUmVhZE1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTYxMDAxCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvUmVhZE1lLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoaXMgZGVtbyB3YXMgcmVtb3ZlZCBpbiBGcmVlUlRPUyBWMTAuMC4wIGFzIEZyZWVSVE9TK0ZBVCBTTCB3YXMgbm90IGRpc3RyaWJ1dGVkDQoraW4gdGhhdCByZWxlYXNlLiAgVGhlIGZ1bGwgRnJlZVJUT1MrRkFUIHByb2R1Y3QgKGFzIG9wcG9zZWQgdG8gdGhlICdTTCcgU3VwZXINCitMZWFuIHByb2R1Y3QpIGlzIHN0aWxsIGF2YWlsYWJsZS4gIFByZXZpb3VzIHZlcnNpb25zIG9mIEZyZWVSVE9TIGNhbiBiZQ0KK2Rvd25sb2FkZWQgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWVydG9zL2ZpbGVzL0ZyZWVSVE9TLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9CbGlua3ktRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0JsaW5reS1EZW1vL21haW5fYmxpbmt5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZDg5MzUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0JsaW5reS1EZW1vL21haW5fYmxpbmt5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCi0gKiBwcm9qZWN0LCBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KLSAqIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgc2V0dGluZyBpbiBtYWluLmMgaXMgdXNlZCB0byBzZWxlY3QNCi0gKiBiZXR3ZWVuIHRoZSB0d28uICBTZWUgdGhlIG5vdGVzIG9uIHVzaW5nIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkNCi0gKiBpbiBtYWluLmMuICBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgc2ltcGx5IGJsaW5reSBzdHlsZSB2ZXJzaW9uLg0KLSAqDQotICogTk9URSAyOiAgVGhpcyBmaWxlIG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBjb2RlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlDQotICogYmFzaWMgZGVtby4gIEdlbmVyaWMgZnVuY3Rpb25zLCBzdWNoIEZyZWVSVE9TIGhvb2sgZnVuY3Rpb25zLCBhbmQgZnVuY3Rpb25zDQotICogcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSBhcmUgZGVmaW5lZCBpbiBtYWluLmMuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogbWFpbl9ibGlua3koKSBjcmVhdGVzIG9uZSBxdWV1ZSwgYW5kIHR3byB0YXNrcy4gIEl0IHRoZW4gc3RhcnRzIHRoZQ0KLSAqIHNjaGVkdWxlci4NCi0gKg0KLSAqIFRoZSBRdWV1ZSBTZW5kIFRhc2s6DQotICogVGhlIHF1ZXVlIHNlbmQgdGFzayBpcyBpbXBsZW1lbnRlZCBieSB0aGUgcHJ2UXVldWVTZW5kVGFzaygpIGZ1bmN0aW9uIGluDQotICogdGhpcyBmaWxlLiAgcHJ2UXVldWVTZW5kVGFzaygpIHNpdHMgaW4gYSBsb29wIHRoYXQgY2F1c2VzIGl0IHRvIHJlcGVhdGVkbHkNCi0gKiBibG9jayBmb3IgMjAwIG1pbGxpc2Vjb25kcywgYmVmb3JlIHNlbmRpbmcgdGhlIHZhbHVlIDEwMCB0byB0aGUgcXVldWUgdGhhdA0KLSAqIHdhcyBjcmVhdGVkIHdpdGhpbiBtYWluX2JsaW5reSgpLiAgT25jZSB0aGUgdmFsdWUgaXMgc2VudCwgdGhlIHRhc2sgbG9vcHMNCi0gKiBiYWNrIGFyb3VuZCB0byBibG9jayBmb3IgYW5vdGhlciAyMDAgbWlsbGlzZWNvbmRzLi4uYW5kIHNvIG9uLg0KLSAqDQotICogVGhlIFF1ZXVlIFJlY2VpdmUgVGFzazoNCi0gKiBUaGUgcXVldWUgcmVjZWl2ZSB0YXNrIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBwcnZRdWV1ZVJlY2VpdmVUYXNrKCkgZnVuY3Rpb24NCi0gKiBpbiB0aGlzIGZpbGUuICBwcnZRdWV1ZVJlY2VpdmVUYXNrKCkgc2l0cyBpbiBhIGxvb3Agd2hlcmUgaXQgcmVwZWF0ZWRseQ0KLSAqIGJsb2NrcyBvbiBhdHRlbXB0cyB0byByZWFkIGRhdGEgZnJvbSB0aGUgcXVldWUgdGhhdCB3YXMgY3JlYXRlZCB3aXRoaW4NCi0gKiBtYWluX2JsaW5reSgpLiAgV2hlbiBkYXRhIGlzIHJlY2VpdmVkLCB0aGUgdGFzayBjaGVja3MgdGhlIHZhbHVlIG9mIHRoZQ0KLSAqIGRhdGEsIGFuZCBpZiB0aGUgdmFsdWUgZXF1YWxzIHRoZSBleHBlY3RlZCAxMDAsIHRvZ2dsZXMgYW4gTEVELiAgVGhlICdibG9jaw0KLSAqIHRpbWUnIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIHF1ZXVlIHJlY2VpdmUgZnVuY3Rpb24gc3BlY2lmaWVzIHRoYXQgdGhlDQotICogdGFzayBzaG91bGQgYmUgaGVsZCBpbiB0aGUgQmxvY2tlZCBzdGF0ZSBpbmRlZmluaXRlbHkgdG8gd2FpdCBmb3IgZGF0YSB0bw0KLSAqIGJlIGF2YWlsYWJsZSBvbiB0aGUgcXVldWUuICBUaGUgcXVldWUgcmVjZWl2ZSB0YXNrIHdpbGwgb25seSBsZWF2ZSB0aGUNCi0gKiBCbG9ja2VkIHN0YXRlIHdoZW4gdGhlIHF1ZXVlIHNlbmQgdGFzayB3cml0ZXMgdG8gdGhlIHF1ZXVlLiAgQXMgdGhlIHF1ZXVlDQotICogc2VuZCB0YXNrIHdyaXRlcyB0byB0aGUgcXVldWUgZXZlcnkgMjAwIG1pbGxpc2Vjb25kcywgdGhlIHF1ZXVlIHJlY2VpdmUNCi0gKiB0YXNrIGxlYXZlcyB0aGUgQmxvY2tlZCBzdGF0ZSBldmVyeSAyMDAgbWlsbGlzZWNvbmRzLCBhbmQgdGhlcmVmb3JlIHRvZ2dsZXMNCi0gKiB0aGUgTEVEIGV2ZXJ5IDIwMCBtaWxsaXNlY29uZHMuDQotICovDQotDQotLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotI2luY2x1ZGUgInNlbXBoci5oIg0KLQ0KLS8qIFN0YW5kYXJkIGRlbW8gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInBhcnRlc3QuaCINCi0NCi0vKiBQcmlvcml0aWVzIGF0IHdoaWNoIHRoZSB0YXNrcyBhcmUgY3JlYXRlZC4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9SRUNFSVZFX1RBU0tfUFJJT1JJVFkJCSggdHNrSURMRV9QUklPUklUWSArIDIgKQ0KLSNkZWZpbmUJbWFpblFVRVVFX1NFTkRfVEFTS19QUklPUklUWQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMSApDQotDQotLyogVGhlIHJhdGUgYXQgd2hpY2ggZGF0YSBpcyBzZW50IHRvIHRoZSBxdWV1ZS4gIFRoZSAyMDBtcyB2YWx1ZSBpcyBjb252ZXJ0ZWQNCi10byB0aWNrcyB1c2luZyB0aGUgcG9ydFRJQ0tfUEVSSU9EX01TIGNvbnN0YW50LiAqLw0KLSNkZWZpbmUgbWFpblFVRVVFX1NFTkRfRlJFUVVFTkNZX01TCQkJKCAyMDAgLyBwb3J0VElDS19QRVJJT0RfTVMgKQ0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgaXRlbXMgdGhlIHF1ZXVlIGNhbiBob2xkLiAgVGhpcyBpcyAxIGFzIHRoZSByZWNlaXZlIHRhc2sNCi13aWxsIHJlbW92ZSBpdGVtcyBhcyB0aGV5IGFyZSBhZGRlZCwgbWVhbmluZyB0aGUgc2VuZCB0YXNrIHNob3VsZCBhbHdheXMgZmluZA0KLXRoZSBxdWV1ZSBlbXB0eS4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9MRU5HVEgJCQkJCSggMSApDQotDQotLyogVGhlIExFRCB0b2dnbGVkIGJ5IHRoZSBSeCB0YXNrLiAqLw0KLSNkZWZpbmUgbWFpblRBU0tfTEVECQkJCQkJKCAwICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRoZSB0YXNrcyBhcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlUmVjZWl2ZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlU2VuZFRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLQ0KLS8qDQotICogQ2FsbGVkIGJ5IG1haW4oKSB0byBjcmVhdGUgdGhlIHNpbXBseSBibGlua3kgc3R5bGUgYXBwbGljYXRpb24gaWYNCi0gKiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAxLg0KLSAqLw0KLXZvaWQgbWFpbl9ibGlua3koIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBUaGUgcXVldWUgdXNlZCBieSBib3RoIHRhc2tzLiAqLw0KLXN0YXRpYyBRdWV1ZUhhbmRsZV90IHhRdWV1ZSA9IE5VTEw7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCBtYWluX2JsaW5reSggdm9pZCApDQotew0KLQkvKiBDcmVhdGUgdGhlIHF1ZXVlLiAqLw0KLQl4UXVldWUgPSB4UXVldWVDcmVhdGUoIG1haW5RVUVVRV9MRU5HVEgsIHNpemVvZiggdW5zaWduZWQgbG9uZyApICk7DQotDQotCWlmKCB4UXVldWUgIT0gTlVMTCApDQotCXsNCi0JCS8qIFN0YXJ0IHRoZSB0d28gdGFza3MgYXMgZGVzY3JpYmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIHRoaXMNCi0JCWZpbGUuICovDQotCQl4VGFza0NyZWF0ZSggcHJ2UXVldWVSZWNlaXZlVGFzaywJCQkJLyogVGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUgdGFzay4gKi8NCi0JCQkJCSJSeCIsIAkJCQkJCQkJLyogVGhlIHRleHQgbmFtZSBhc3NpZ25lZCB0byB0aGUgdGFzayAtIGZvciBkZWJ1ZyBvbmx5IGFzIGl0IGlzIG5vdCB1c2VkIGJ5IHRoZSBrZXJuZWwuICovDQotCQkJCQljb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIAkJCS8qIFRoZSBzaXplIG9mIHRoZSBzdGFjayB0byBhbGxvY2F0ZSB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwsIAkJCQkJCQkJLyogVGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIHRhc2sgLSBub3QgdXNlZCBpbiB0aGlzIGNhc2UuICovDQotCQkJCQltYWluUVVFVUVfUkVDRUlWRV9UQVNLX1BSSU9SSVRZLCAJLyogVGhlIHByaW9yaXR5IGFzc2lnbmVkIHRvIHRoZSB0YXNrLiAqLw0KLQkJCQkJTlVMTCApOwkJCQkJCQkJLyogVGhlIHRhc2sgaGFuZGxlIGlzIG5vdCByZXF1aXJlZCwgc28gTlVMTCBpcyBwYXNzZWQuICovDQotDQotCQl4VGFza0NyZWF0ZSggcHJ2UXVldWVTZW5kVGFzaywgIlRYIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCBtYWluUVVFVUVfU0VORF9UQVNLX1BSSU9SSVRZLCBOVUxMICk7DQotDQotCQkvKiBTdGFydCB0aGUgdGFza3MgYW5kIHRpbWVyIHJ1bm5pbmcuICovDQotCQl2VGFza1N0YXJ0U2NoZWR1bGVyKCk7DQotCX0NCi0NCi0JLyogSWYgYWxsIGlzIHdlbGwsIHRoZSBzY2hlZHVsZXIgd2lsbCBub3cgYmUgcnVubmluZywgYW5kIHRoZSBmb2xsb3dpbmcNCi0JbGluZSB3aWxsIG5ldmVyIGJlIHJlYWNoZWQuICBJZiB0aGUgZm9sbG93aW5nIGxpbmUgZG9lcyBleGVjdXRlLCB0aGVuDQotCXRoZXJlIHdhcyBlaXRoZXIgaW5zdWZmaWNpZW50IEZyZWVSVE9TIGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgdGhlIGlkbGUNCi0JYW5kL29yIHRpbWVyIHRhc2tzIHRvIGJlIGNyZWF0ZWQsIG9yIHZUYXNrU3RhcnRTY2hlZHVsZXIoKSB3YXMgY2FsbGVkIGZyb20NCi0JVXNlciBtb2RlLiAgU2VlIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzZWN0aW9uIG9uIHRoZSBGcmVlUlRPUyB3ZWIgc2l0ZSBmb3INCi0JbW9yZSBkZXRhaWxzIG9uIHRoZSBGcmVlUlRPUyBoZWFwIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sLiAgVGhlDQotCW1vZGUgZnJvbSB3aGljaCBtYWluKCkgaXMgY2FsbGVkIGlzIHNldCBpbiB0aGUgQyBzdGFydCB1cCBjb2RlIGFuZCBtdXN0IGJlDQotCWEgcHJpdmlsZWdlZCBtb2RlIChub3QgdXNlciBtb2RlKS4gKi8NCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZRdWV1ZVNlbmRUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi1UaWNrVHlwZV90IHhOZXh0V2FrZVRpbWU7DQotY29uc3QgdW5zaWduZWQgbG9uZyB1bFZhbHVlVG9TZW5kID0gMTAwVUw7DQotDQotCS8qIFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIuICovDQotCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCi0NCi0JLyogSW5pdGlhbGlzZSB4TmV4dFdha2VUaW1lIC0gdGhpcyBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZS4gKi8NCi0JeE5leHRXYWtlVGltZSA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBQbGFjZSB0aGlzIHRhc2sgaW4gdGhlIGJsb2NrZWQgc3RhdGUgdW50aWwgaXQgaXMgdGltZSB0byBydW4gYWdhaW4uICovDQotCQl2VGFza0RlbGF5VW50aWwoICZ4TmV4dFdha2VUaW1lLCBtYWluUVVFVUVfU0VORF9GUkVRVUVOQ1lfTVMgKTsNCi0NCi0JCS8qIFNlbmQgdG8gdGhlIHF1ZXVlIC0gY2F1c2luZyB0aGUgcXVldWUgcmVjZWl2ZSB0YXNrIHRvIHVuYmxvY2sgYW5kDQotCQl0b2dnbGUgdGhlIExFRC4gIDAgaXMgdXNlZCBhcyB0aGUgYmxvY2sgdGltZSBzbyB0aGUgc2VuZGluZyBvcGVyYXRpb24NCi0JCXdpbGwgbm90IGJsb2NrIC0gaXQgc2hvdWxkbid0IG5lZWQgdG8gYmxvY2sgYXMgdGhlIHF1ZXVlIHNob3VsZCBhbHdheXMNCi0JCWJlIGVtcHR5IGF0IHRoaXMgcG9pbnQgaW4gdGhlIGNvZGUuICovDQotCQl4UXVldWVTZW5kKCB4UXVldWUsICZ1bFZhbHVlVG9TZW5kLCAwVSApOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlUmVjZWl2ZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLXVuc2lnbmVkIGxvbmcgdWxSZWNlaXZlZFZhbHVlOw0KLWNvbnN0IHVuc2lnbmVkIGxvbmcgdWxFeHBlY3RlZFZhbHVlID0gMTAwVUw7DQotDQotCS8qIFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIuICovDQotCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCi0NCi0JZm9yKCA7OyApDQotCXsNCi0JCS8qIFdhaXQgdW50aWwgc29tZXRoaW5nIGFycml2ZXMgaW4gdGhlIHF1ZXVlIC0gdGhpcyB0YXNrIHdpbGwgYmxvY2sNCi0JCWluZGVmaW5pdGVseSBwcm92aWRlZCBJTkNMVURFX3ZUYXNrU3VzcGVuZCBpcyBzZXQgdG8gMSBpbg0KLQkJRnJlZVJUT1NDb25maWcuaC4gKi8NCi0JCXhRdWV1ZVJlY2VpdmUoIHhRdWV1ZSwgJnVsUmVjZWl2ZWRWYWx1ZSwgcG9ydE1BWF9ERUxBWSApOw0KLQ0KLQkJLyogIFRvIGdldCBoZXJlIHNvbWV0aGluZyBtdXN0IGhhdmUgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBxdWV1ZSwgYnV0DQotCQlpcyBpdCB0aGUgZXhwZWN0ZWQgdmFsdWU/ICBJZiBpdCBpcywgdG9nZ2xlIHRoZSBMRUQuICovDQotCQlpZiggdWxSZWNlaXZlZFZhbHVlID09IHVsRXhwZWN0ZWRWYWx1ZSApDQotCQl7DQotCQkJdlBhclRlc3RUb2dnbGVMRUQoIG1haW5UQVNLX0xFRCApOw0KLQkJCXVsUmVjZWl2ZWRWYWx1ZSA9IDBVOw0KLQkJfQ0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1M2ZjMzkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KLSNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogQXBwbGljYXRpb24gc3BlY2lmaWMgZGVmaW5pdGlvbnMuDQotICoNCi0gKiBUaGVzZSBkZWZpbml0aW9ucyBzaG91bGQgYmUgYWRqdXN0ZWQgZm9yIHlvdXIgcGFydGljdWxhciBoYXJkd2FyZSBhbmQNCi0gKiBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuDQotICoNCi0gKiBUSEVTRSBQQVJBTUVURVJTIEFSRSBERVNDUklCRUQgV0lUSElOIFRIRSAnQ09ORklHVVJBVElPTicgU0VDVElPTiBPRiBUSEUNCi0gKiBGcmVlUlRPUyBBUEkgRE9DVU1FTlRBVElPTiBBVkFJTEFCTEUgT04gVEhFIEZyZWVSVE9TLm9yZyBXRUIgU0lURS4NCi0gKg0KLSAqIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTAuaHRtbC4NCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogVGhlIEZyZWVSVE9TIENvcnRleC1BIHBvcnQgaW1wbGVtZW50cyBhIGZ1bGwgaW50ZXJydXB0IG5lc3RpbmcgbW9kZWwuDQotICoNCi0gKiBJbnRlcnJ1cHRzIHRoYXQgYXJlIGFzc2lnbmVkIGEgcHJpb3JpdHkgYXQgb3IgYmVsb3cNCi0gKiBjb25maWdNQVhfQVBJX0NBTExfSU5URVJSVVBUX1BSSU9SSVRZICh3aGljaCBjb3VudGVyLWludHVpdGl2ZWx5IGluIHRoZSBBUk0NCi0gKiBnZW5lcmljIGludGVycnVwdCBjb250cm9sbGVyIFtHSUNdIG1lYW5zIGEgcHJpb3JpdHkgdGhhdCBoYXMgYSBudW1lcmljYWwNCi0gKiB2YWx1ZSBhYm92ZSBjb25maWdNQVhfQVBJX0NBTExfSU5URVJSVVBUX1BSSU9SSVRZKSBjYW4gY2FsbCBGcmVlUlRPUyBzYWZlIEFQSQ0KLSAqIGZ1bmN0aW9ucyBhbmQgd2lsbCBuZXN0Lg0KLSAqDQotICogSW50ZXJydXB0cyB0aGF0IGFyZSBhc3NpZ25lZCBhIHByaW9yaXR5IGFib3ZlDQotICogY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSAod2hpY2ggaW4gdGhlIEdJQyBtZWFucyBhIG51bWVyaWNhbA0KLSAqIHZhbHVlIGJlbG93IGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkpIGNhbm5vdCBjYWxsIGFueSBGcmVlUlRPUw0KLSAqIEFQSSBmdW5jdGlvbnMsIHdpbGwgbmVzdCwgYW5kIHdpbGwgbm90IGJlIG1hc2tlZCBieSBGcmVlUlRPUyBjcml0aWNhbA0KLSAqIHNlY3Rpb25zIChhbHRob3VnaCBpdCBpcyBuZWNlc3NhcnkgZm9yIGludGVycnVwdHMgdG8gYmUgZ2xvYmFsbHkgZGlzYWJsZWQNCi0gKiBleHRyZW1lbHkgYnJpZWZseSBhcyB0aGUgaW50ZXJydXB0IG1hc2sgaXMgdXBkYXRlZCBpbiB0aGUgR0lDKS4NCi0gKg0KLSAqIEZyZWVSVE9TIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgYXJlIHRob3NlIHRoYXQgZW5kIGluDQotICogIkZyb21JU1IiLiAgRnJlZVJUT1MgbWFpbnRhaW5zIGEgc2VwYXJhdGUgaW50ZXJydXB0IHNhZmUgQVBJIHRvIGVuYWJsZQ0KLSAqIGludGVycnVwdCBlbnRyeSB0byBiZSBzaG9ydGVyLCBmYXN0ZXIsIHNpbXBsZXIgYW5kIHNtYWxsZXIuDQotICoNCi0gKiBUaGUgUmVuZXNhcyBSWiBpbXBsZW1lbnRzIDMyIHVuaXF1ZSBpbnRlcnJ1cHQgcHJpb3JpdGllcy4gIEZvciB0aGUgcHVycG9zZSBvZg0KLSAqIHNldHRpbmcgY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSAzMSByZXByZXNlbnRzIHRoZSBsb3dlc3QNCi0gKiBwcmlvcml0eS4NCi0gKi8NCi0jZGVmaW5lIGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkJMjUNCi0NCi0NCi0jZGVmaW5lIGNvbmZpZ0NQVV9DTE9DS19IWgkJCQkJCTEwMDAwMDAwMFVMDQotI2RlZmluZSBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04JMQ0KLSNkZWZpbmUgY29uZmlnVVNFX1RJQ0tMRVNTX0lETEUJCQkJCTANCi0jZGVmaW5lIGNvbmZpZ1RJQ0tfUkFURV9IWgkJCQkJCSggKCBUaWNrVHlwZV90ICkgMTAwMCApDQotI2RlZmluZSBjb25maWdQRVJJUEhFUkFMX0NMT0NLX0haICAJCQkJKCAzMzMzMzAwMFVMICkNCi0jZGVmaW5lIGNvbmZpZ1VTRV9QUkVFTVBUSU9OCQkJCQkxDQotI2RlZmluZSBjb25maWdVU0VfSURMRV9IT09LCQkJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX1RJQ0tfSE9PSwkJCQkJCTENCi0jZGVmaW5lIGNvbmZpZ01BWF9QUklPUklUSUVTCQkJCQkoIDUgKQ0KLSNkZWZpbmUgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFCQkJCSggKCB1bnNpZ25lZCBzaG9ydCApIDE2MCApDQotI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkJCSggKCBzaXplX3QgKSAoIDM4OTEyICkgKQ0KLSNkZWZpbmUgY29uZmlnTUFYX1RBU0tfTkFNRV9MRU4JCQkJCSggMTAgKQ0KLSNkZWZpbmUgY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV8xNl9CSVRfVElDS1MJCQkJCTANCi0jZGVmaW5lIGNvbmZpZ0lETEVfU0hPVUxEX1lJRUxECQkJCQkxDQotI2RlZmluZSBjb25maWdVU0VfTVVURVhFUwkJCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1FVRVVFX1JFR0lTVFJZX1NJWkUJCQkJOA0KLSNkZWZpbmUgY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XCQkJMg0KLSNkZWZpbmUgY29uZmlnVVNFX1JFQ1VSU0lWRV9NVVRFWEVTCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9NQUxMT0NfRkFJTEVEX0hPT0sJCQkwDQotI2RlZmluZSBjb25maWdVU0VfQVBQTElDQVRJT05fVEFTS19UQUcJCQkwDQotI2RlZmluZSBjb25maWdVU0VfQ09VTlRJTkdfU0VNQVBIT1JFUwkJCTENCi0NCi0vKiBDby1yb3V0aW5lIGRlZmluaXRpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnVVNFX0NPX1JPVVRJTkVTIAkJCTANCi0jZGVmaW5lIGNvbmZpZ01BWF9DT19ST1VUSU5FX1BSSU9SSVRJRVMgKCAyICkNCi0NCi0vKiBTb2Z0d2FyZSB0aW1lciBkZWZpbml0aW9ucy4gKi8NCi0jZGVmaW5lIGNvbmZpZ1VTRV9USU1FUlMJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVElNRVJfVEFTS19QUklPUklUWQkJKCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDEgKQ0KLSNkZWZpbmUgY29uZmlnVElNRVJfUVVFVUVfTEVOR1RICQk1DQotI2RlZmluZSBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRICSggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFICogMiApDQotDQotLyogU2V0IHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgdG8gMSB0byBpbmNsdWRlIHRoZSBBUEkgZnVuY3Rpb24sIG9yIHplcm8NCi10byBleGNsdWRlIHRoZSBBUEkgZnVuY3Rpb24uICovDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrUHJpb3JpdHlTZXQJCTENCi0jZGVmaW5lIElOQ0xVREVfdXhUYXNrUHJpb3JpdHlHZXQJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tEZWxldGUJCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0NsZWFuVXBSZXNvdXJjZXMJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza1N1c3BlbmQJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsYXlVbnRpbAkJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tEZWxheQkJCQkxDQotDQotLyogVGhpcyBkZW1vIG1ha2VzIHVzZSBvZiBvbmUgb3IgbW9yZSBleGFtcGxlIHN0YXRzIGZvcm1hdHRpbmcgZnVuY3Rpb25zLiAgVGhlc2UNCi1mb3JtYXQgdGhlIHJhdyBkYXRhIHByb3ZpZGVkIGJ5IHRoZSB1eFRhc2tHZXRTeXN0ZW1TdGF0ZSgpIGZ1bmN0aW9uIGluIHRvIGh1bWFuDQotcmVhZGFibGUgQVNDSUkgZm9ybS4gIFNlZSB0aGUgbm90ZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHZUYXNrTGlzdCgpIHdpdGhpbg0KLUZyZWVSVE9TL1NvdXJjZS90YXNrcy5jIGZvciBsaW1pdGF0aW9ucy4gKi8NCi0jZGVmaW5lIGNvbmZpZ1VTRV9TVEFUU19GT1JNQVRUSU5HX0ZVTkNUSU9OUwkxDQotDQotLyogUHJldmVudCBDIGNvZGUgYmVpbmcgaW5jbHVkZWQgaW4gYXNzZW1ibHkgZmlsZXMgd2hlbiB0aGUgSUFSIGNvbXBpbGVyIGlzDQotdXNlZC4gKi8NCi0jaWZuZGVmIF9fSUFTTUFSTV9fDQotCS8qIFJ1biB0aW1lIHN0YXRzIGdhdGhlcmluZyBkZWZpbml0aW9ucy4gKi8NCi0JdW5zaWduZWQgbG9uZyB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoIHZvaWQgKTsNCi0Jdm9pZCB2SW5pdGlhbGlzZVJ1blRpbWVTdGF0cyggdm9pZCApOw0KLQ0KLQkjZGVmaW5lIGNvbmZpZ0dFTkVSQVRFX1JVTl9USU1FX1NUQVRTCTENCi0JI2RlZmluZSBwb3J0Q09ORklHVVJFX1RJTUVSX0ZPUl9SVU5fVElNRV9TVEFUUygpIHZJbml0aWFsaXNlUnVuVGltZVN0YXRzKCkNCi0JI2RlZmluZSBwb3J0R0VUX1JVTl9USU1FX0NPVU5URVJfVkFMVUUoKSB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoKQ0KLQ0KLQkvKiBUaGUgc2l6ZSBvZiB0aGUgZ2xvYmFsIG91dHB1dCBidWZmZXIgdGhhdCBpcyBhdmFpbGFibGUgZm9yIHVzZSB3aGVuIHRoZXJlDQotCWFyZSBtdWx0aXBsZSBjb21tYW5kIGludGVycHJldGVycyBydW5uaW5nIGF0IG9uY2UgKGZvciBleGFtcGxlLCBvbmUgb24gYSBVQVJUDQotCWFuZCBvbmUgb24gVENQL0lQKS4gIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IGFuIG91dHB1dCBidWZmZXIgYmVpbmcgZGVmaW5lZCBieQ0KLQllYWNoIGltcGxlbWVudGF0aW9uIC0gd2hpY2ggd291bGQgd2FzdGUgUkFNLiAgSW4gdGhpcyBjYXNlLCB0aGVyZSBpcyBvbmx5IG9uZQ0KLQljb21tYW5kIGludGVycHJldGVyIHJ1bm5pbmcuICovDQotCSNkZWZpbmUgY29uZmlnQ09NTUFORF9JTlRfTUFYX09VVFBVVF9TSVpFIDIwOTYNCi0NCi0JLyogTm9ybWFsIGFzc2VydCgpIHNlbWFudGljcyB3aXRob3V0IHJlbHlpbmcgb24gdGhlIHByb3Zpc2lvbiBvZiBhbiBhc3NlcnQuaA0KLQloZWFkZXIgZmlsZS4gKi8NCi0Jdm9pZCB2QXNzZXJ0Q2FsbGVkKCBjb25zdCBjaGFyICogcGNGaWxlLCB1bnNpZ25lZCBsb25nIHVsTGluZSApOw0KLQkjZGVmaW5lIGNvbmZpZ0FTU0VSVCggeCApIGlmKCAoIHggKSA9PSAwICkgdkFzc2VydENhbGxlZCggX19GSUxFX18sIF9fTElORV9fICk7DQotDQotDQotDQotCS8qKioqKiogSGFyZHdhcmUgc3BlY2lmaWMgc2V0dGluZ3MuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotCS8qDQotCSAqIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IGNvbmZpZ3VyZXMgYSBwZXJpcGhlcmFsIHRvDQotCSAqIGNyZWF0ZSB0aGUgRnJlZVJUT1MgdGljayBpbnRlcnJ1cHQsIHRoZW4gZGVmaW5lIGNvbmZpZ1NFVFVQX1RJQ0tfSU5URVJSVVBUKCkNCi0JICogaW4gRnJlZVJUT1NDb25maWcuaCB0byBjYWxsIHRoZSBmdW5jdGlvbi4gIFRoaXMgZmlsZSBjb250YWlucyBhIGZ1bmN0aW9uDQotCSAqIHRoYXQgaXMgc3VpdGFibGUgZm9yIHVzZSBvbiB0aGUgUmVuZXNhcyBSWiBNUFUuICBGcmVlUlRPU19UaWNrX0hhbmRsZXIoKSBtdXN0DQotCSAqIGJlIGluc3RhbGxlZCBhcyB0aGUgcGVyaXBoZXJhbCdzIGludGVycnVwdCBoYW5kbGVyLg0KLQkgKi8NCi0Jdm9pZCB2Q29uZmlndXJlVGlja0ludGVycnVwdCggdm9pZCApOw0KLQkjZGVmaW5lIGNvbmZpZ1NFVFVQX1RJQ0tfSU5URVJSVVBUKCkgdkNvbmZpZ3VyZVRpY2tJbnRlcnJ1cHQoKQ0KLSNlbmRpZiAvKiBfX0lBU01BUk1fXyAqLw0KLQ0KLS8qIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGRlc2NyaWJlIHRoZSBoYXJkd2FyZSwgYW5kIGFyZSBjb3JyZWN0IGZvciB0aGUNCi1SZW5lc2FzIFJaIE1QVS4gKi8NCi0jZGVmaW5lIGNvbmZpZ0lOVEVSUlVQVF9DT05UUk9MTEVSX0JBU0VfQUREUkVTUwkweEU4MjAxMDAwDQotI2RlZmluZSBjb25maWdJTlRFUlJVUFRfQ09OVFJPTExFUl9DUFVfSU5URVJGQUNFX09GRlNFVCAweDEwMDANCi0jZGVmaW5lIGNvbmZpZ1VOSVFVRV9JTlRFUlJVUFRfUFJJT1JJVElFUwkJMzINCi0NCi0vKiBNYXAgdGhlIEZyZWVSVE9TIElSUSBhbmQgU1ZDL1NXSSBoYW5kbGVycyB0byB0aGUgbmFtZXMgdXNlZCBpbiB0aGUgQyBzdGFydHVwDQotY29kZSAod2hpY2ggaXMgd2hlcmUgdGhlIHZlY3RvciB0YWJsZSBpcyBkZWZpbmVkKS4gKi8NCi0jZGVmaW5lIEZyZWVSVE9TX0lSUV9IYW5kbGVyIElSUV9IYW5kbGVyDQotI2RlZmluZSBGcmVlUlRPU19TV0lfSGFuZGxlciBTV0lfSGFuZGxlcg0KLQ0KLSNlbmRpZiAvKiBGUkVFUlRPU19DT05GSUdfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YTU2NGIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBSZW5lc2FzIGRyaXZlciBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAic3RkaW50LmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X29zdG0uaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCINCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0jZGVmaW5lIHJ1bnRpbWVDTE9DS19TQ0FMRV9TSElGVAkoIDlVTCApDQotI2RlZmluZSBydW50aW1lT1ZFUkZMT1dfQklUCQkJKCAxVUwgPDwgKCAzMlVMIC0gcnVudGltZUNMT0NLX1NDQUxFX1NISUZUICkgKQ0KLQ0KLS8qIFRvIG1ha2UgY2FzdGluZyB0byB0aGUgSVNSIHByb3RvdHlwZSBleHBlY3RlZCBieSB0aGUgUmVuZXNhcyBHSUMgZHJpdmVycy4gKi8NCi10eXBlZGVmIHZvaWQgKCpJU1JfRlVOQ1RJT04pKCB1aW50MzJfdCApOw0KLQ0KLS8qDQotICogVGhlIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgY29uZmlndXJlcyBhIHBlcmlwaGVyYWwgdG8NCi0gKiBjcmVhdGUgdGhlIEZyZWVSVE9TIHRpY2sgaW50ZXJydXB0LCB0aGVuIGRlZmluZSBjb25maWdTRVRVUF9USUNLX0lOVEVSUlVQVCgpDQotICogaW4gRnJlZVJUT1NDb25maWcuaCB0byBjYWxsIHRoZSBmdW5jdGlvbi4gIFRoaXMgZmlsZSBjb250YWlucyBhIGZ1bmN0aW9uDQotICogdGhhdCBpcyBzdWl0YWJsZSBmb3IgdXNlIG9uIHRoZSBSZW5lc2FzIFJaIE1QVS4NCi0gKi8NCi12b2lkIHZDb25maWd1cmVUaWNrSW50ZXJydXB0KCB2b2lkICkNCi17DQotCS8qIFN0b3AgdGhlIGNvdW50ZXIuICovDQotICAgIE9TVE0wLk9TVE1uVFQuQklULk9TVE1uVFQgPSAxOw0KLQ0KLSAgICAvKiBXb3JrIGluIGludGVydmFsIG1vZGUuICovDQotICAgIE9TVE0wLk9TVE1uQ1RMLkJJVC5PU1RNbk1EMSA9IE9TVE1fTU9ERV9JTlRFUlZBTDsNCi0NCi0gICAgLyogVXNlIGludGVycnVwdHMgYWZ0ZXIgY291bnRpbmcgc3RhcnRzLiAqLw0KLSAgICBPU1RNMC5PU1RNbkNUTC5CSVQuT1NUTW5NRDAgPSAxOw0KLQ0KLSAgICAvKiBTdGFydCB2YWx1ZSBmb3IgZG93biBjb3VudGVyLiAqLw0KLSAgICBPU1RNMC5PU1RNbkNNUCA9IGNvbmZpZ1BFUklQSEVSQUxfQ0xPQ0tfSFogLyBjb25maWdUSUNLX1JBVEVfSFo7DQotDQotICAgIC8qIENvbmZpZ3VyZSB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuICovDQotICAgIFJfSU5UQ19SZWdpc3RJbnRGdW5jKCBJTlRDX0lEX09TVE1JMCwgKCBJU1JfRlVOQ1RJT04gKSBGcmVlUlRPU19UaWNrX0hhbmRsZXIgKTsNCi0NCi0gICAgLyogVGljayBtdXN0IGJlIGFzc2lnbmVkIHRoZSBsb3dlc3QgaW50ZXJydXB0IHByaW9yaXR5LiAqLw0KLSAgICBSX0lOVENfU2V0UHJpb3JpdHkoIElOVENfSURfT1NUTUkwLCBwb3J0TE9XRVNUX1VTQUJMRV9JTlRFUlJVUFRfUFJJT1JJVFkgKTsNCi0NCi0gICAgSU5UQy5JQ0NCUFIuQklULkJpbmFyeXBvaW50ID0gMDsNCi0gICAgUl9JTlRDX0VuYWJsZSggSU5UQ19JRF9PU1RNSTAgKTsNCi0NCi0gICAgUl9PU1RNX09wZW4oIERFVkRSVl9DSF8wICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogQ3J1ZGUgaW1wbGVtZW50YXRpb24gb2YgYSBydW4gdGltZSBjb3VudGVyIHVzZWQgdG8gbWVhc3VyZSBob3cgbXVjaCB0aW1lDQotICogZWFjaCB0YXNrIHNwZW5kcyBpbiB0aGUgUnVubmluZyBzdGF0ZS4NCi0gKi8NCi11bnNpZ25lZCBsb25nIHVsR2V0UnVuVGltZUNvdW50ZXJWYWx1ZSggdm9pZCApDQotew0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHVsTGFzdENvdW50ZXJWYWx1ZSA9IDBVTCwgdWxPdmVyZmxvd3MgPSAwOw0KLXVuc2lnbmVkIGxvbmcgdWxWYWx1ZU5vdzsNCi0NCi0JdWxWYWx1ZU5vdyA9IE9TVE0xLk9TVE1uQ05UOw0KLQ0KLQkvKiBIYXMgdGhlIHZhbHVlIG92ZXJmbG93ZWQgc2luY2UgaXQgd2FzIGxhc3QgcmVhZC4gKi8NCi0JaWYoIHVsVmFsdWVOb3cgPCB1bExhc3RDb3VudGVyVmFsdWUgKQ0KLQl7DQotCQl1bE92ZXJmbG93cysrOw0KLQl9DQotCXVsTGFzdENvdW50ZXJWYWx1ZSA9IHVsVmFsdWVOb3c7DQotDQotCS8qIFRoZXJlIGlzIG5vIHByZXNjYWxlIG9uIHRoZSBjb3VudGVyLCBzbyBzaW11bGF0ZSBpbiBzb2Z0d2FyZS4gKi8NCi0JdWxWYWx1ZU5vdyA+Pj0gcnVudGltZUNMT0NLX1NDQUxFX1NISUZUOw0KLQl1bFZhbHVlTm93ICs9ICggcnVudGltZU9WRVJGTE9XX0JJVCAqIHVsT3ZlcmZsb3dzICk7DQotDQotCXJldHVybiB1bFZhbHVlTm93Ow0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZJbml0aWFsaXNlUnVuVGltZVN0YXRzKCB2b2lkICkNCi17DQotCS8qIE9TVE0xIGlzIHVzZWQgYXMgdGhlIHJ1biB0aW1lIHN0YXRzIGNvdW50ZXIuICovDQotDQotCS8qIFN0b3AgdGhlIGNvdW50ZXIuICovDQotICAgIE9TVE0xLk9TVE1uVFQuQklULk9TVE1uVFQgPSAxOw0KLQ0KLSAgICAvKiBXb3JrIGluIGNvbXBhcmUgbW9kZSBtb2RlLiAqLw0KLSAgICBPU1RNMS5PU1RNbkNUTC5CSVQuT1NUTW5NRDEgPSBPU1RNX01PREVfQ09NUEFSRTsNCi0NCi0gICAgLyogRG9uJ3QgdXNlIGludGVycnVwdHMuICovDQotICAgIE9TVE0xLk9TVE1uQ1RMLkJJVC5PU1RNbk1EMCA9IDA7DQotDQotICAgIC8qIENvbXBhcmUgaXMganVzdCBzZXQgdG8gMC4gKi8NCi0gICAgT1NUTTEuT1NUTW5DTVAgPSAwOw0KLQ0KLSAgICBSX09TVE1fT3BlbiggREVWRFJWX0NIXzEgKTsNCi19DQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9GaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9GaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWZkYmI2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vRmlsZS1yZWxlYXRlZC1DTEktY29tbWFuZHMuYworKysgL2Rldi9udWxsCkBAIC0xLDU3NiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RkbGliLmg+DQotI2luY2x1ZGUgPHN0cmluZy5oPg0KLQ0KLS8qIEZyZWVSVE9TK0NMSSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1NfQ0xJLmgiDQotDQotLyogRmlsZSBzeXN0ZW0gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgImZhdF9zbC5oIg0KLSNpbmNsdWRlICJhcGlfbWRyaXZlcl9yYW0uaCINCi0NCi0jaWZkZWYgX1dJTkRPV1NfDQotCSNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmDQotI2VuZGlmDQotDQotI2RlZmluZSBjbGlORVdfTElORQkJIlxyXG4iDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBTZWUgdGhlIFVSTCBpbiB0aGUgY29tbWVudHMgd2l0aGluIG1haW4uYyBmb3IgdGhlIGxvY2F0aW9uIG9mIHRoZSBvbmxpbmUNCi0gKiBkb2N1bWVudGF0aW9uLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoNCi0gKiBQcmludCBvdXQgaW5mb3JtYXRpb24gb24gYSBzaW5nbGUgZmlsZS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVGaWxlSW5mb1N0cmluZyggY2hhciAqcGNCdWZmZXIsIEZfRklORCAqcHhGaW5kU3RydWN0ICk7DQotDQotLyoNCi0gKiBDb3BpZXMgYW4gZXhpc3RpbmcgZmlsZSBpbnRvIGEgbmV3bHkgY3JlYXRlZCBmaWxlLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlBlcmZvcm1Db3B5KCBjaGFyICpwY1NvdXJjZUZpbGUsDQotCQkJCQkJCQkJaW50MzJfdCBsU291cmNlRmlsZUxlbmd0aCwNCi0JCQkJCQkJCQljaGFyICpwY0Rlc3RpbmF0aW9uRmlsZSwNCi0JCQkJCQkJCQljaGFyICpweFdyaXRlQnVmZmVyLA0KLQkJCQkJCQkJCXNpemVfdCB4V3JpdGVCdWZmZXJMZW4gKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIERJUiBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRJUkNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgQ0QgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZDRENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgREVMIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2REVMQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBUWVBFIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VFlQRUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgQ09QWSBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkNPUFlDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIFJlZ2lzdGVycyB0aGUgQ0xJIGNvbW1hbmRzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBmaWxlcyBzeXN0ZW0gd2l0aCB0aGUNCi0gKiBGcmVlUlRPUytDTEkgY29tbWFuZCBpbnRlcnByZXRlci4NCi0gKi8NCi12b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApOw0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIERJUiBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggbGlzdHMgYWxsIHRoZQ0KLWZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhESVIgPQ0KLXsNCi0JImRpciIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRpcjpcclxuIExpc3RzIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcclxuIiwNCi0JcHJ2RElSQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENEIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBjaGFuZ2VzIHRoZQ0KLXdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENEID0NCi17DQotCSJjZCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmNkIDxkaXIgbmFtZT46XHJcbiBDaGFuZ2VzIHRoZSB3b3JraW5nIGRpcmVjdG9yeVxyXG4iLA0KLQlwcnZDRENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIFRZUEUgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIHByaW50cyB0aGUNCi1jb250ZW50cyBvZiBhIGZpbGUgdG8gdGhlIGNvbnNvbGUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VFlQRSA9DQotew0KLQkidHlwZSIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnR5cGUgPGZpbGVuYW1lPjpcclxuIFByaW50cyBmaWxlIGNvbnRlbnRzIHRvIHRoZSB0ZXJtaW5hbFxyXG4iLA0KLQlwcnZUWVBFQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgREVMIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBkZWxldGVzIGEgZmlsZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhERUwgPQ0KLXsNCi0JImRlbCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRlbCA8ZmlsZW5hbWU+OlxyXG4gZGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5XHJcbiIsDQotCXBydkRFTENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENPUFkgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGRlbGV0ZXMgYSBmaWxlLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENPUFkgPQ0KLXsNCi0JImNvcHkiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5jb3B5IDxzb3VyY2UgZmlsZT4gPGRlc3QgZmlsZT46XHJcbiBDb3BpZXMgPHNvdXJjZSBmaWxlPiB0byA8ZGVzdCBmaWxlPlxyXG4iLA0KLQlwcnZDT1BZQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMiAvKiBUd28gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApDQotew0KLQkvKiBSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmQgbGluZSBjb21tYW5kcyBkZWZpbmVkIGltbWVkaWF0ZWx5IGFib3ZlLiAqLw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4RElSICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDRCApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VFlQRSApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4REVMICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDT1BZICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRZUEVDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgsIHhSZXR1cm4gPSBwZFRSVUU7DQotc3RhdGljIEZfRklMRSAqcHhGaWxlID0gTlVMTDsNCi1pbnQgaUNoYXI7DQotc2l6ZV90IHhCeXRlOw0KLXNpemVfdCB4Q29sdW1ucyA9IDUwVTsNCi0NCi0JLyogRW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBhIG51bGwgdGVybWluYXRvciBhZnRlciBlYWNoIGNoYXJhY3RlciB3cml0dGVuLiAqLw0KLQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQ0KLQkvKiBFbnN1cmUgdGhlIGJ1ZmZlciBsZWF2ZXMgc3BhY2UgZm9yIHRoZSBcclxuLiAqLw0KLQljb25maWdBU1NFUlQoIHhXcml0ZUJ1ZmZlckxlbiA+ICggc3RybGVuKCBjbGlORVdfTElORSApICogMiApICk7DQotCXhXcml0ZUJ1ZmZlckxlbiAtPSBzdHJsZW4oIGNsaU5FV19MSU5FICk7DQotDQotCWlmKCB4V3JpdGVCdWZmZXJMZW4gPCB4Q29sdW1ucyApDQotCXsNCi0JCS8qIEVuc3VyZSB0aGUgbG9vcCB0aGF0IHVzZXMgeENvbHVtbnMgYXMgYW4gZW5kIGNvbmRpdGlvbiBkb2VzIG5vdA0KLQkJd3JpdGUgb2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4gKi8NCi0JCXhDb2x1bW5zID0geFdyaXRlQnVmZmVyTGVuOw0KLQl9DQotDQotCWlmKCBweEZpbGUgPT0gTlVMTCApDQotCXsNCi0JCS8qIFRoZSBmaWxlIGhhcyBub3QgYmVlbiBvcGVuZWQgeWV0LiAgRmluZCB0aGUgZmlsZSBuYW1lLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJCSgNCi0JCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkJKTsNCi0NCi0JCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQkJY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkJLyogQXR0ZW1wdCB0byBvcGVuIHRoZSByZXF1ZXN0ZWQgZmlsZS4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggcGNQYXJhbWV0ZXIsICJyIiApOw0KLQl9DQotDQotCWlmKCBweEZpbGUgIT0gTlVMTCApDQotCXsNCi0JCS8qIFJlYWQgdGhlIG5leHQgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBmaWxlLiAqLw0KLQkJZm9yKCB4Qnl0ZSA9IDA7IHhCeXRlIDwgeENvbHVtbnM7IHhCeXRlKysgKQ0KLQkJew0KLQkJCWlDaGFyID0gZl9nZXRjKCBweEZpbGUgKTsNCi0NCi0JCQlpZiggaUNoYXIgPT0gLTEgKQ0KLQkJCXsNCi0JCQkJLyogTm8gbW9yZSBjaGFyYWN0ZXJzIHRvIHJldHVybi4gKi8NCi0JCQkJZl9jbG9zZSggcHhGaWxlICk7DQotCQkJCXB4RmlsZSA9IE5VTEw7DQotCQkJCWJyZWFrOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlwY1dyaXRlQnVmZmVyWyB4Qnl0ZSBdID0gKCBjaGFyICkgaUNoYXI7DQotCQkJfQ0KLQkJfQ0KLQl9DQotDQotCWlmKCBweEZpbGUgPT0gTlVMTCApDQotCXsNCi0JCS8qIEVpdGhlciB0aGUgZmlsZSB3YXMgbm90IG9wZW5lZCwgb3IgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGZpbGUgaGFzDQotCQliZWVuIHJldHVybmVkIGFuZCB0aGUgZmlsZSBpcyBub3cgY2xvc2VkLiAqLw0KLQkJeFJldHVybiA9IHBkRkFMU0U7DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q0RDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLXNpemVfdCB4U3RyaW5nTGVuZ3RoOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBtb3ZlIHRvIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybmVkID0gZl9jaGRpciggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJJbjogIiApOw0KLQkJeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggcGNXcml0ZUJ1ZmZlciApOw0KLQkJZl9nZXRjd2QoICYoIHBjV3JpdGVCdWZmZXJbIHhTdHJpbmdMZW5ndGggXSApLCAoIHVuc2lnbmVkIGNoYXIgKSAoIHhXcml0ZUJ1ZmZlckxlbiAtIHhTdHJpbmdMZW5ndGggKSApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yIiApOw0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRJUkNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLXN0YXRpYyBGX0ZJTkQgKnB4RmluZFN0cnVjdCA9IE5VTEw7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLXBvcnRCQVNFX1RZUEUgeFJldHVybiA9IHBkRkFMU0U7DQotDQotCS8qIFRoaXMgYXNzdW1lcyBwY1dyaXRlQnVmZmVyIGlzIGxvbmcgZW5vdWdoLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotDQotCS8qIEVuc3VyZSB0aGUgYnVmZmVyIGxlYXZlcyBzcGFjZSBmb3IgdGhlIFxyXG4uICovDQotCWNvbmZpZ0FTU0VSVCggeFdyaXRlQnVmZmVyTGVuID4gKCBzdHJsZW4oIGNsaU5FV19MSU5FICkgKiAyICkgKTsNCi0JeFdyaXRlQnVmZmVyTGVuIC09IHN0cmxlbiggY2xpTkVXX0xJTkUgKTsNCi0NCi0JaWYoIHB4RmluZFN0cnVjdCA9PSBOVUxMICkNCi0Jew0KLQkJLyogVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkIHNpbmNlIHRoZSBEaXINCi0JCWNvbW1hbmQgd2FzIHJ1bi4gIENyZWF0ZSB0aGUgZmluZCBzdHJ1Y3R1cmUuICovDQotCQlweEZpbmRTdHJ1Y3QgPSAoIEZfRklORCAqICkgcHZQb3J0TWFsbG9jKCBzaXplb2YoIEZfRklORCApICk7DQotDQotCQlpZiggcHhGaW5kU3RydWN0ICE9IE5VTEwgKQ0KLQkJew0KLQkJCXVjUmV0dXJuZWQgPSBmX2ZpbmRmaXJzdCggIiouKiIsIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQkJCXsNCi0JCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCQl4UmV0dXJuID0gcGRQQVNTOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlzbnByaW50ZiggcGNXcml0ZUJ1ZmZlciwgeFdyaXRlQnVmZmVyTGVuLCAiRXJyb3I6IGZfZmluZGZpcnN0KCkgZmFpbGVkLiIgKTsNCi0JCQl9DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc25wcmludGYoIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBSQU0gKHVzaW5nIGhlYXBfNC5jIHdpbGwgcHJldmVudCBmcmFnbWVudGF0aW9uKS4iICk7DQotCQl9DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBUaGUgZmluZCBzdHJ1Y3QgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLiAgRmluZCB0aGUgbmV4dCBmaWxlIGluDQotCQl0aGUgZGlyZWN0b3J5LiAqLw0KLQkJdWNSZXR1cm5lZCA9IGZfZmluZG5leHQoIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCQl7DQotCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCXhSZXR1cm4gPSBwZFBBU1M7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJLyogVGhlcmUgYXJlIG5vIG1vcmUgZmlsZXMuICBGcmVlIHRoZSBmaW5kIHN0cnVjdHVyZS4gKi8NCi0JCQl2UG9ydEZyZWUoIHB4RmluZFN0cnVjdCApOw0KLQkJCXB4RmluZFN0cnVjdCA9IE5VTEw7DQotDQotCQkJLyogTm8gc3RyaW5nIHRvIHJldHVybi4gKi8NCi0JCQlwY1dyaXRlQnVmZmVyWyAwIF0gPSAweDAwOw0KLQkJfQ0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRFTENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuZWQ7DQotDQotCS8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB4V3JpdGVCdWZmZXJMZW4gaXMgbGFyZ2UgZW5vdWdoISAqLw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotDQotCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkvKiBBdHRlbXB0IHRvIGRlbGV0ZSB0aGUgZmlsZS4gKi8NCi0JdWNSZXR1cm5lZCA9IGZfZGVsZXRlKCBwY1BhcmFtZXRlciApOw0KLQ0KLQlpZiggdWNSZXR1cm5lZCA9PSBGX05PX0VSUk9SICkNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVzIHdhcyBkZWxldGVkIiwgcGNQYXJhbWV0ZXIgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciIgKTsNCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZDT1BZQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY2hhciAqcGNTb3VyY2VGaWxlLCAqcGNEZXN0aW5hdGlvbkZpbGU7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLWxvbmcgbFNvdXJjZUxlbmd0aCwgbERlc3RpbmF0aW9uTGVuZ3RoID0gMDsNCi0NCi0JLyogT2J0YWluIHRoZSBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiBmaWxlLiAqLw0KLQlwY0Rlc3RpbmF0aW9uRmlsZSA9ICggY2hhciAqICkgRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCSgNCi0JCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCQkyLAkJCQkJCS8qIFJldHVybiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNEZXN0aW5hdGlvbkZpbGUgKTsNCi0NCi0JLyogT2J0YWluIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS4gKi8NCi0JcGNTb3VyY2VGaWxlID0gKCBjaGFyICogKSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JY29uZmlnQVNTRVJUKCBwY1NvdXJjZUZpbGUgKTsNCi0NCi0JLyogVGVybWluYXRlIHRoZSBzdHJpbmcuICovDQotCXBjU291cmNlRmlsZVsgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCBdID0gMHgwMDsNCi0NCi0JLyogU2VlIGlmIHRoZSBzb3VyY2UgZmlsZSBleGlzdHMsIG9idGFpbiBpdHMgbGVuZ3RoIGlmIGl0IGRvZXMuICovDQotCWxTb3VyY2VMZW5ndGggPSBmX2ZpbGVsZW5ndGgoIHBjU291cmNlRmlsZSApOw0KLQ0KLQlpZiggbFNvdXJjZUxlbmd0aCA9PSAwICkNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlNvdXJjZSBmaWxlIGRvZXMgbm90IGV4aXN0IiApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogU2VlIGlmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGV4aXN0cy4gKi8NCi0JCWxEZXN0aW5hdGlvbkxlbmd0aCA9IGZfZmlsZWxlbmd0aCggcGNEZXN0aW5hdGlvbkZpbGUgKTsNCi0NCi0JCWlmKCBsRGVzdGluYXRpb25MZW5ndGggIT0gMCApDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzIiApOw0KLQkJfQ0KLQl9DQotDQotCS8qIENvbnRpbnVlIG9ubHkgaWYgdGhlIHNvdXJjZSBmaWxlIGV4aXN0cyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgZG9lcw0KLQlub3QgZXhpc3QuICovDQotCWlmKCAoIGxTb3VyY2VMZW5ndGggIT0gMCApICYmICggbERlc3RpbmF0aW9uTGVuZ3RoID09IDAgKSApDQotCXsNCi0JCWlmKCBwcnZQZXJmb3JtQ29weSggcGNTb3VyY2VGaWxlLCBsU291cmNlTGVuZ3RoLCBwY0Rlc3RpbmF0aW9uRmlsZSwgcGNXcml0ZUJ1ZmZlciwgeFdyaXRlQnVmZmVyTGVuICkgPT0gcGRQQVNTICkNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiQ29weSBtYWRlIiApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciBkdXJpbmcgY29weSIgKTsNCi0JCX0NCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQZXJmb3JtQ29weSggCWNoYXIgKnBjU291cmNlRmlsZSwNCi0JCQkJCQkJCQkJaW50MzJfdCBsU291cmNlRmlsZUxlbmd0aCwNCi0JCQkJCQkJCQkJY2hhciAqcGNEZXN0aW5hdGlvbkZpbGUsDQotCQkJCQkJCQkJCWNoYXIgKnB4V3JpdGVCdWZmZXIsDQotCQkJCQkJCQkJCXNpemVfdCB4V3JpdGVCdWZmZXJMZW4gKQ0KLXsNCi1pbnQzMl90IGxCeXRlc1JlYWQgPSAwLCBsQnl0ZXNUb1JlYWQsIGxCeXRlc1JlbWFpbmluZzsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1wb3J0QkFTRV9UWVBFIHhSZXR1cm4gPSBwZFBBU1M7DQotDQotCS8qIE5PVEU6ICBFcnJvciBoYW5kbGluZyBoYXMgYmVlbiBvbWl0dGVkIGZvciBjbGFyaXR5LiAqLw0KLQ0KLQl3aGlsZSggbEJ5dGVzUmVhZCA8IGxTb3VyY2VGaWxlTGVuZ3RoICkNCi0Jew0KLQkJLyogSG93IG1hbnkgYnl0ZXMgYXJlIGxlZnQ/ICovDQotCQlsQnl0ZXNSZW1haW5pbmcgPSBsU291cmNlRmlsZUxlbmd0aCAtIGxCeXRlc1JlYWQ7DQotDQotCQkvKiBIb3cgbWFueSBieXRlcyBzaG91bGQgYmUgcmVhZCB0aGlzIHRpbWUgYXJvdW5kIHRoZSBsb29wLiAgQ2FuJ3QNCi0JCXJlYWQgbW9yZSBieXRlcyB0aGFuIHdpbGwgZml0IGludG8gdGhlIGJ1ZmZlci4gKi8NCi0JCWlmKCBsQnl0ZXNSZW1haW5pbmcgPiAoIGxvbmcgKSB4V3JpdGVCdWZmZXJMZW4gKQ0KLQkJew0KLQkJCWxCeXRlc1RvUmVhZCA9ICggbG9uZyApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlsQnl0ZXNUb1JlYWQgPSBsQnl0ZXNSZW1haW5pbmc7DQotCQl9DQotDQotCQkvKiBPcGVuIHRoZSBzb3VyY2UgZmlsZSwgc2VlayBwYXN0IHRoZSBkYXRhIHRoYXQgaGFzIGFscmVhZHkgYmVlbg0KLQkJcmVhZCBmcm9tIHRoZSBmaWxlLCByZWFkIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEsIHRoZW4gY2xvc2UgdGhlDQotCQlmaWxlIGFnYWluIHNvIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGNhbiBiZSBvcGVuZWQuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjU291cmNlRmlsZSwgInIiICk7DQotCQlpZiggcHhGaWxlICE9IE5VTEwgKQ0KLQkJew0KLQkJCWZfc2VlayggcHhGaWxlLCBsQnl0ZXNSZWFkLCBGX1NFRUtfU0VUICk7DQotCQkJZl9yZWFkKCBweFdyaXRlQnVmZmVyLCBsQnl0ZXNUb1JlYWQsIDEsIHB4RmlsZSApOw0KLQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXhSZXR1cm4gPSBwZEZBSUw7DQotCQkJYnJlYWs7DQotCQl9DQotDQotCQkvKiBPcGVuIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGFuZCB3cml0ZSB0aGUgYmxvY2sgb2YgZGF0YSB0byB0aGUgZW5kIG9mDQotCQl0aGUgZmlsZS4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggcGNEZXN0aW5hdGlvbkZpbGUsICJhIiApOw0KLQkJaWYoIHB4RmlsZSAhPSBOVUxMICkNCi0JCXsNCi0JCQlmX3dyaXRlKCBweFdyaXRlQnVmZmVyLCBsQnl0ZXNUb1JlYWQsIDEsIHB4RmlsZSApOw0KLQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXhSZXR1cm4gPSBwZEZBSUw7DQotCQkJYnJlYWs7DQotCQl9DQotDQotCQlsQnl0ZXNSZWFkICs9IGxCeXRlc1RvUmVhZDsNCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIGNoYXIgKnBjQnVmZmVyLCBGX0ZJTkQgKnB4RmluZFN0cnVjdCApDQotew0KLWNvbnN0IGNoYXIgKnBjV3JpdGFibGVGaWxlID0gIndyaXRhYmxlIGZpbGUiLCAqcGNSZWFkT25seUZpbGUgPSAicmVhZCBvbmx5IGZpbGUiLCAqcGNEaXJlY3RvcnkgPSAiZGlyZWN0b3J5IjsNCi1jb25zdCBjaGFyICogcGNBdHRyaWI7DQotDQotCS8qIFBvaW50IHBjQXR0cmliIHRvIGEgc3RyaW5nIHRoYXQgZGVzY3JpYmVzIHRoZSBmaWxlLiAqLw0KLQlpZiggKCBweEZpbmRTdHJ1Y3QtPmF0dHIgJiBGX0FUVFJfRElSICkgIT0gMCApDQotCXsNCi0JCXBjQXR0cmliID0gcGNEaXJlY3Rvcnk7DQotCX0NCi0JZWxzZSBpZiggcHhGaW5kU3RydWN0LT5hdHRyICYgRl9BVFRSX1JFQURPTkxZICkNCi0Jew0KLQkJcGNBdHRyaWIgPSBwY1JlYWRPbmx5RmlsZTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXBjQXR0cmliID0gcGNXcml0YWJsZUZpbGU7DQotCX0NCi0NCi0JLyogQ3JlYXRlIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZpbGUgbmFtZSwgdGhlIGZpbGUgc2l6ZSBhbmQgdGhlDQotCWF0dHJpYnV0ZXMgc3RyaW5nLiAqLw0KLQlzcHJpbnRmKCBwY0J1ZmZlciwgIiVzIFslc10gW3NpemU9JWRdIiwgcHhGaW5kU3RydWN0LT5maWxlbmFtZSwgcGNBdHRyaWIsIHB4RmluZFN0cnVjdC0+ZmlsZXNpemUgKTsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9GaWxlLXN5c3RlbS1kZW1vLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL0ZpbGUtc3lzdGVtLWRlbW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NlNzA3Yy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL0ZpbGUtc3lzdGVtLWRlbW8uYworKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFNlZSB0aGUgVVJMIGluIHRoZSBjb21tZW50cyB3aXRoaW4gbWFpbi5jIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZQ0KLSAqIGRvY3VtZW50YXRpb24uDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmF0X3NsLmgiDQotI2luY2x1ZGUgImFwaV9tZHJpdmVyX3JhbS5oIg0KLQ0KLS8qIDguMyBmb3JtYXQsIHBsdXMgbnVsbCB0ZXJtaW5hdG9yLiAqLw0KLSNkZWZpbmUgZnNNQVhfRklMRV9OQU1FX0xFTgkJCQkxMw0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC93cml0dGVuIHRvIHRoZSBleGFtcGxlIGZpbGVzIGF0IGEgdGltZS4gKi8NCi0jZGVmaW5lIGZzUkFNX0JVRkZFUl9TSVpFIAkJCQkyMDANCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGZpbGUgdGhhdCB1c2VzIGZfcHV0YygpIGFuZCBmX2dldGMoKS4gKi8NCi0jZGVmaW5lIGZzUFVUQ19GSUxFX1NJWkUJCQkJMTAwDQotDQotLyogVGhlIG51bWJlciBvZiBmaWxlcyBjcmVhdGVkIGluIHJvb3QuICovDQotI2RlZmluZSBmc1JPT1RfRklMRVMJCQkJCTUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIENyZWF0ZXMgYW5kIHZlcmlmaWVzIGRpZmZlcmVudCBmaWxlcyBvbiB0aGUgdm9sdW1lLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YNCi0gKiB2YXJpb3VzIGRpZmZlcmVudCBBUEkgZnVuY3Rpb25zLg0KLSAqLw0KLXZvaWQgdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGUgYSBzZXQgb2YgZXhhbXBsZSBmaWxlcyBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHZvbHVtZSB1c2luZw0KLSAqIGZfd3JpdGUoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZXNVc2luZ19mX3dyaXRlKCB2b2lkICk7DQotDQotLyoNCi0gKiBVc2UgZl9yZWFkKCkgdG8gcmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5DQotICogcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGUgYW4gZXhhbXBsZSBmaWxlIGluIGEgc3ViLWRpcmVjdG9yeSB1c2luZyBmX3B1dGMoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0Yyggdm9pZCApOw0KLQ0KLS8qDQotICogVXNlIGZfZ2V0YygpIHRvIHJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlIHRoYXQgd2FzIGNyZWF0ZWQgYnkNCi0gKiBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0YygpLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogQSBidWZmZXIgdXNlZCB0byBib3RoIGNyZWF0ZSBjb250ZW50IHRvIHdyaXRlIHRvIGRpc2ssIGFuZCByZWFkIGNvbnRlbnQgYmFjaw0KLWZyb20gYSBkaXNrLiAgTm90ZSB0aGVyZSBpcyBubyBtdXR1YWwgZXhjbHVzaW9uIG9uIHRoaXMgYnVmZmVyLiAqLw0KLXN0YXRpYyBjaGFyIGNSQU1CdWZmZXJbIGZzUkFNX0JVRkZFUl9TSVpFIF07DQotDQotLyogTmFtZXMgb2YgZGlyZWN0b3JpZXMgdGhhdCBhcmUgY3JlYXRlZC4gKi8NCi1zdGF0aWMgY29uc3QgY2hhciAqcGNSb290ID0gIi8iLCAqcGNEaXJlY3RvcnkxID0gIlNVQjEiLCAqcGNEaXJlY3RvcnkyID0gIlNVQjIiLCAqcGNGdWxsUGF0aCA9ICIvU1VCMS9TVUIyIjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNTdGF0dXM7DQotDQotCS8qIEZpcnN0IGNyZWF0ZSB0aGUgdm9sdW1lLiAqLw0KLQl1Y1N0YXR1cyA9IGZfaW5pdHZvbHVtZSggcmFtX2luaXRmdW5jICk7DQotDQotCS8qIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHZvbHVtZSBpcyBub3QgZm9ybWF0dGVkLiAqLw0KLQlpZiggdWNTdGF0dXMgPT0gRl9FUlJfTk9URk9STUFUVEVEICkNCi0Jew0KLQkJLyogRm9ybWF0IHRoZSBjcmVhdGVkIHZvbHVtZS4gKi8NCi0JCXVjU3RhdHVzID0gZl9mb3JtYXQoIEZfRkFUMTJfTUVESUEgKTsNCi0JfQ0KLQ0KLQlpZiggdWNTdGF0dXMgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCS8qIENyZWF0ZSBhIHNldCBvZiBmaWxlcyB1c2luZyBmX3dyaXRlKCkuICovDQotCQlwcnZDcmVhdGVEZW1vRmlsZXNVc2luZ19mX3dyaXRlKCk7DQotDQotCQkvKiBSZWFkIGJhY2sgYW5kIHZlcmlmeSB0aGUgZmlsZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgdXNpbmcgZl93cml0ZSgpLiAqLw0KLQkJcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX3JlYWQoKTsNCi0NCi0JCS8qIENyZWF0ZSBzdWIgZGlyZWN0b3JpZXMgdHdvIGRlZXAgdGhlbiBjcmVhdGUgYSBmaWxlIHVzaW5nIHB1dGMuICovDQotCQlwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0YygpOw0KLQ0KLQkJLyogUmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGUgY3JlYXRlZCBieQ0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKS4gKi8NCi0JCXBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSggdm9pZCApDQotew0KLXBvcnRCQVNFX1RZUEUgeEZpbGVOdW1iZXIsIHhXcml0ZU51bWJlcjsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLWxvbmcgbEl0ZW1zV3JpdHRlbjsNCi1GX0ZJTEUgKnB4RmlsZTsNCi0NCi0JLyogQ3JlYXRlIGZzUk9PVF9GSUxFUyBmaWxlcy4gIEVhY2ggY3JlYXRlZCBmaWxlIHdpbGwgYmUNCi0JKCB4RmlsZU51bWJlciAqIGZzUkFNX0JVRkZFUl9TSVpFICkgYnl0ZXMgaW4gbGVuZ3RoLCBhbmQgZmlsbGVkDQotCXdpdGggYSBkaWZmZXJlbnQgcmVwZWF0aW5nIGNoYXJhY3Rlci4gKi8NCi0JZm9yKCB4RmlsZU51bWJlciA9IDE7IHhGaWxlTnVtYmVyIDw9IGZzUk9PVF9GSUxFUzsgeEZpbGVOdW1iZXIrKyApDQotCXsNCi0JCS8qIEdlbmVyYXRlIGEgZmlsZSBuYW1lLiAqLw0KLQkJc3ByaW50ZiggY0ZpbGVOYW1lLCAicm9vdCUwM2QudHh0IiwgeEZpbGVOdW1iZXIgKTsNCi0NCi0JCS8qIE9idGFpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kDQotCQl0aGUJZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcgd3JpdHRlbi4gKi8NCi0JCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQkJcHJpbnRmKCAiQ3JlYXRpbmcgZmlsZSAlcyBpbiAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JCS8qIE9wZW4gdGhlIGZpbGUsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuICovDQotCQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInciICk7DQotCQljb25maWdBU1NFUlQoIHB4RmlsZSApOw0KLQ0KLQkJLyogRmlsbCB0aGUgUkFNIGJ1ZmZlciB3aXRoIGRhdGEgdGhhdCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUuICBUaGlzDQotCQlpcyBqdXN0IGEgcmVwZWF0aW5nIGFzY2lpIGNoYXJhY3RlciB0aGF0IGluZGljYXRlcyB0aGUgZmlsZSBudW1iZXIuICovDQotCQltZW1zZXQoIGNSQU1CdWZmZXIsICggaW50ICkgKCAnMCcgKyB4RmlsZU51bWJlciApLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQ0KLQkJLyogV3JpdGUgdGhlIFJBTSBidWZmZXIgdG8gdGhlIG9wZW5lZCBmaWxlIGEgbnVtYmVyIG9mIHRpbWVzLiAgVGhlDQotCQludW1iZXIgb2YgdGltZXMgdGhlIFJBTSBidWZmZXIgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSBkZXBlbmRzIG9uIHRoZQ0KLQkJZmlsZSBudW1iZXIsIHNvIHRoZSBsZW5ndGggb2YgZWFjaCBjcmVhdGVkIGZpbGUgd2lsbCBiZSBkaWZmZXJlbnQuICovDQotCQlmb3IoIHhXcml0ZU51bWJlciA9IDA7IHhXcml0ZU51bWJlciA8IHhGaWxlTnVtYmVyOyB4V3JpdGVOdW1iZXIrKyApDQotCQl7DQotCQkJbEl0ZW1zV3JpdHRlbiA9IGZfd3JpdGUoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFLCAxLCBweEZpbGUgKTsNCi0JCQljb25maWdBU1NFUlQoIGxJdGVtc1dyaXR0ZW4gPT0gMSApOw0KLQkJfQ0KLQ0KLQkJLyogQ2xvc2UgdGhlIGZpbGUgc28gYW5vdGhlciBmaWxlIGNhbiBiZSBjcmVhdGVkLiAqLw0KLQkJZl9jbG9zZSggcHhGaWxlICk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX3JlYWQoIHZvaWQgKQ0KLXsNCi1wb3J0QkFTRV9UWVBFIHhGaWxlTnVtYmVyLCB4UmVhZE51bWJlcjsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLWxvbmcgbEl0ZW1zUmVhZCwgbENoYXI7DQotRl9GSUxFICpweEZpbGU7DQotDQotCS8qIFJlYWQgYmFjayB0aGUgZmlsZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkNCi0JcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpLiAqLw0KLQlmb3IoIHhGaWxlTnVtYmVyID0gMTsgeEZpbGVOdW1iZXIgPD0gZnNST09UX0ZJTEVTOyB4RmlsZU51bWJlcisrICkNCi0Jew0KLQkJLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0JCXNwcmludGYoIGNGaWxlTmFtZSwgInJvb3QlMDNkLnR4dCIsIHhGaWxlTnVtYmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZA0KLQkJdGhlCWRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nIHJlYWQuICovDQotCQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JCXByaW50ZiggIlJlYWRpbmcgZmlsZSAlcyBmcm9tICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkJLyogT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZy4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAiciIgKTsNCi0JCWNvbmZpZ0FTU0VSVCggcHhGaWxlICk7DQotDQotCQkvKiBSZWFkIHRoZSBmaWxlIGludG8gdGhlIFJBTSBidWZmZXIsIGNoZWNraW5nIHRoZSBmaWxlIGNvbnRlbnRzIGFyZSBhcw0KLQkJZXhwZWN0ZWQuICBUaGUgc2l6ZSBvZiB0aGUgZmlsZSBkZXBlbmRzIG9uIHRoZSBmaWxlIG51bWJlci4gKi8NCi0JCWZvciggeFJlYWROdW1iZXIgPSAwOyB4UmVhZE51bWJlciA8IHhGaWxlTnVtYmVyOyB4UmVhZE51bWJlcisrICkNCi0JCXsNCi0JCQkvKiBTdGFydCB3aXRoIHRoZSBSQU0gYnVmZmVyIGNsZWFyLiAqLw0KLQkJCW1lbXNldCggY1JBTUJ1ZmZlciwgMHgwMCwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0NCi0JCQlsSXRlbXNSZWFkID0gZl9yZWFkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSwgMSwgcHhGaWxlICk7DQotCQkJY29uZmlnQVNTRVJUKCBsSXRlbXNSZWFkID09IDEgKTsNCi0NCi0JCQkvKiBDaGVjayB0aGUgUkFNIGJ1ZmZlciBpcyBmaWxsZWQgd2l0aCB0aGUgZXhwZWN0ZWQgZGF0YS4gIEVhY2gNCi0JCQlmaWxlIGNvbnRhaW5zIGEgZGlmZmVyZW50IHJlcGVhdGluZyBhc2NpaSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMNCi0JCQl0aGUgbnVtYmVyIG9mIHRoZSBmaWxlLiAqLw0KLQkJCWZvciggbENoYXIgPSAwOyBsQ2hhciA8IGZzUkFNX0JVRkZFUl9TSVpFOyBsQ2hhcisrICkNCi0JCQl7DQotCQkJCWNvbmZpZ0FTU0VSVCggY1JBTUJ1ZmZlclsgbENoYXIgXSA9PSAoICcwJyArICggY2hhciApIHhGaWxlTnVtYmVyICkgKTsNCi0JCQl9DQotCQl9DQotDQotCQkvKiBDbG9zZSB0aGUgZmlsZS4gKi8NCi0JCWZfY2xvc2UoIHB4RmlsZSApOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZURlbW9GaWxlVXNpbmdfZl9wdXRjKCB2b2lkICkNCi17DQotdW5zaWduZWQgY2hhciB1Y1JldHVybjsNCi1pbnQgaUJ5dGUsIGlSZXR1cm5lZDsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkvKiBDcmVhdGUgYSBzdWIgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfbWtkaXIoIHBjRGlyZWN0b3J5MSApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogTW92ZSBpbnRvIHRoZSBjcmVhdGVkIHN1Yi1kaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggcGNEaXJlY3RvcnkxICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkvKiBDcmVhdGUgYSBzdWJkaXJlY3RvcnkgaW4gdGhlIG5ldyBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9ta2RpciggcGNEaXJlY3RvcnkyICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBNb3ZlIGludG8gdGhlIGRpcmVjdG9yeSBqdXN0IGNyZWF0ZWQgLSBub3cgdHdvIGRpcmVjdG9yaWVzIGRvd24gZnJvbQ0KLQl0aGUgcm9vdC4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCBwY0RpcmVjdG9yeTIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY0Z1bGxQYXRoICkgPT0gMCApOw0KLQ0KLQkvKiBHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lLiAqLw0KLQlzcHJpbnRmKCBjRmlsZU5hbWUsICIlcy50eHQiLCBwY0RpcmVjdG9yeTIgKTsNCi0NCi0JLyogUHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgZmlsZSBpcyBiZWluZw0KLQl3cml0dGVuLiAqLw0KLQlwcmludGYoICJXcml0aW5nIGZpbGUgJXMgaW4gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAidyIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgZmlsZSAxIGJ5dGUgYXQgYSB0aW1lLiAgVGhlIGZpbGUgaXMgZmlsbGVkIHdpdGggaW5jcmVtZW50aW5nDQotCWFzY2lpIGNoYXJhY3RlcnMgc3RhcnRpbmcgZnJvbSAnMCcuICovDQotCWZvciggaUJ5dGUgPSAwOyBpQnl0ZSA8IGZzUFVUQ19GSUxFX1NJWkU7IGlCeXRlKysgKQ0KLQl7DQotCQlpUmV0dXJuZWQgPSBmX3B1dGMoICggKCBpbnQgKSAnMCcgKyBpQnl0ZSApLCBweEZpbGUgKTsNCi0JCWNvbmZpZ0FTU0VSVCggaVJldHVybmVkID09ICAoICggaW50ICkgJzAnICsgaUJ5dGUgKSApOw0KLQl9DQotDQotCS8qIEZpbmlzaGVkIHNvIGNsb3NlIHRoZSBmaWxlLiAqLw0KLQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0NCi0JLyogTW92ZSBiYWNrIHRvIHRoZSByb290IGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCAiLi4vLi4iICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIHJvb3QgZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0JY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNSQU1CdWZmZXIsIHBjUm9vdCApID09IDAgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX2dldGMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuOw0KLWludCBpQnl0ZSwgaVJldHVybmVkOw0KLUZfRklMRSAqcHhGaWxlOw0KLWNoYXIgY0ZpbGVOYW1lWyBmc01BWF9GSUxFX05BTUVfTEVOIF07DQotDQotCS8qIE1vdmUgaW50byB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBmaWxlIHdhcyBjcmVhdGVkLiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoIHBjRnVsbFBhdGggKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkJhY2sgaW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0JY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNSQU1CdWZmZXIsIHBjRnVsbFBhdGggKSA9PSAwICk7DQotDQotCS8qIEdlbmVyYXRlIHRoZSBmaWxlIG5hbWUuICovDQotCXNwcmludGYoIGNGaWxlTmFtZSwgIiVzLnR4dCIsIHBjRGlyZWN0b3J5MiApOw0KLQ0KLQkvKiBQcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nDQotCXJlYWQuICovDQotCXByaW50ZiggIlJlYWRpbmcgZmlsZSAlcyBpbiAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogVGhpcyB0aW1lIHRoZSBmaWxlIGlzIG9wZW5lZCBmb3IgcmVhZGluZy4gKi8NCi0JcHhGaWxlID0gZl9vcGVuKCBjRmlsZU5hbWUsICJyIiApOw0KLQ0KLQkvKiBSZWFkIHRoZSBmaWxlIDEgYnl0ZSBhdCBhIHRpbWUuICovDQotCWZvciggaUJ5dGUgPSAwOyBpQnl0ZSA8IGZzUFVUQ19GSUxFX1NJWkU7IGlCeXRlKysgKQ0KLQl7DQotCQlpUmV0dXJuZWQgPSBmX2dldGMoIHB4RmlsZSApOw0KLQkJY29uZmlnQVNTRVJUKCBpUmV0dXJuZWQgPT0gICggKCBpbnQgKSAnMCcgKyBpQnl0ZSApICk7DQotCX0NCi0NCi0JLyogRmluaXNoZWQgc28gY2xvc2UgdGhlIGZpbGUuICovDQotCWZfY2xvc2UoIHB4RmlsZSApOw0KLQ0KLQkvKiBNb3ZlIGJhY2sgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoICIuLi8uLiIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkJhY2sgaW4gcm9vdCBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLX0NCi0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1NhbXBsZS1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vU2FtcGxlLUNMSS1jb21tYW5kcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYzMzc5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vU2FtcGxlLUNMSS1jb21tYW5kcy5jCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBTZWUgdGhlIGZvbGxvd2luZyBVUkwgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjb21tYW5kcyBkZWZpbmVkIGluIHRoaXMgZmlsZToNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzL0ZyZWVSVE9TX1BsdXNfVURQL0VtYmVkZGVkX0V0aGVybmV0X0V4YW1wbGVzL0V0aGVybmV0X1JlbGF0ZWRfQ0xJX0NvbW1hbmRzLnNodG1sDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0vKiBGcmVlUlRPUytDTEkgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TX0NMSS5oIg0KLQ0KLSNpZm5kZWYgIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMNCi0JI2RlZmluZSBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTIDANCi0jZW5kaWYNCi0NCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIHJ1bi10aW1lLXN0YXRzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VGFza1N0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSB0YXNrLXN0YXRzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBlY2hvLXRocmVlLXBhcmFtZXRlcnMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUaHJlZVBhcmFtZXRlckVjaG9Db21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIGVjaG8tcGFyYW1ldGVycyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlBhcmFtZXRlckVjaG9Db21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIFJlZ2lzdGVycyB0aGUgQ0xJIGNvbW1hbmRzIGRlZmluZWQgd2l0aGluIHRoaXMgZmlsZSB3aXRoIHRoZSBGcmVlUlRPUytDTEkNCi0gKiBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLg0KLSAqLw0KLXZvaWQgdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlICJ0cmFjZSBzdGFydCIgYW5kICJ0cmFjZSBzdG9wIiBjb21tYW5kczsNCi0gKi8NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotCXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotI2VuZGlmDQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgInJ1bi10aW1lLXN0YXRzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gICBUaGlzDQotZ2VuZXJhdGVzIGEgdGFibGUgdGhhdCBzaG93cyBob3cgbXVjaCBydW4gdGltZSBlYWNoIHRhc2sgaGFzICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4UnVuVGltZVN0YXRzID0NCi17DQotCSJydW4tdGltZS1zdGF0cyIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnJ1bi10aW1lLXN0YXRzOlxyXG4gRGlzcGxheXMgYSB0YWJsZSBzaG93aW5nIGhvdyBtdWNoIHByb2Nlc3NpbmcgdGltZSBlYWNoIEZyZWVSVE9TIHRhc2sgaGFzIHVzZWRcclxuIiwNCi0JcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJ0YXNrLXN0YXRzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMgZ2VuZXJhdGVzDQotYSB0YWJsZSB0aGF0IGdpdmVzIGluZm9ybWF0aW9uIG9uIGVhY2ggdGFzayBpbiB0aGUgc3lzdGVtLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRhc2tTdGF0cyA9DQotew0KLQkidGFzay1zdGF0cyIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnRhc2stc3RhdHM6XHJcbiBEaXNwbGF5cyBhIHRhYmxlIHNob3dpbmcgdGhlIHN0YXRlIG9mIGVhY2ggRnJlZVJUT1MgdGFza1xyXG4iLA0KLQlwcnZUYXNrU3RhdHNDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkwIC8qIE5vIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgImVjaG9fM19wYXJhbWV0ZXJzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMNCi10YWtlcyBleGFjdGx5IHRocmVlIHBhcmFtZXRlcnMgdGhhdCB0aGUgY29tbWFuZCBzaW1wbHkgZWNob3MgYmFjayBvbmUgYXQgYQ0KLXRpbWUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VGhyZWVQYXJhbWV0ZXJFY2hvID0NCi17DQotCSJlY2hvLTMtcGFyYW1ldGVycyIsDQotCSJcclxuZWNoby0zLXBhcmFtZXRlcnMgPHBhcmFtMT4gPHBhcmFtMj4gPHBhcmFtMz46XHJcbiBFeHBlY3RzIHRocmVlIHBhcmFtZXRlcnMsIGVjaG9zIGVhY2ggaW4gdHVyblxyXG4iLA0KLQlwcnZUaHJlZVBhcmFtZXRlckVjaG9Db21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkzIC8qIFRocmVlIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLCB3aGljaCBjYW4gdGFrZSBhbnkgdmFsdWUuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAiZWNob19wYXJhbWV0ZXJzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMNCi10YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGNvbW1hbmQgc2ltcGx5IGVjaG9zIGJhY2sgb25lIGF0DQotYSB0aW1lLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFBhcmFtZXRlckVjaG8gPQ0KLXsNCi0JImVjaG8tcGFyYW1ldGVycyIsDQotCSJcclxuZWNoby1wYXJhbWV0ZXJzIDwuLi4+OlxyXG4gVGFrZSB2YXJpYWJsZSBudW1iZXIgb2YgcGFyYW1ldGVycywgZWNob3MgZWFjaCBpbiB0dXJuXHJcbiIsDQotCXBydlBhcmFtZXRlckVjaG9Db21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQktMSAvKiBUaGUgdXNlciBjYW4gZW50ZXIgYW55IG51bWJlciBvZiBjb21tYW5kcy4gKi8NCi19Ow0KLQ0KLSNpZiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDENCi0JLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgInRyYWNlIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMgdGFrZXMgYSBzaW5nbGUNCi0JcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgZWl0aGVyICJzdGFydCIgb3IgInN0b3AiLiAqLw0KLQlzdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhTdGFydFN0b3BUcmFjZSA9DQotCXsNCi0JCSJ0cmFjZSIsDQotCQkiXHJcbnRyYWNlIFtzdGFydCB8IHN0b3BdOlxyXG4gU3RhcnRzIG9yIHN0b3BzIGEgdHJhY2UgcmVjb3JkaW5nIGZvciB2aWV3aW5nIGluIEZyZWVSVE9TK1RyYWNlXHJcbiIsDQotCQlwcnZTdGFydFN0b3BUcmFjZUNvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCQkxIC8qIE9uZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQuICBWYWxpZCB2YWx1ZXMgYXJlICJzdGFydCIgYW5kICJzdG9wIi4gKi8NCi0JfTsNCi0jZW5kaWYgLyogY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyAqLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoIHZvaWQgKQ0KLXsNCi0JLyogUmVnaXN0ZXIgYWxsIHRoZSBjb21tYW5kIGxpbmUgY29tbWFuZHMgZGVmaW5lZCBpbW1lZGlhdGVseSBhYm92ZS4gKi8NCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFRhc2tTdGF0cyApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4UnVuVGltZVN0YXRzICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhUaHJlZVBhcmFtZXRlckVjaG8gKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFBhcmFtZXRlckVjaG8gKTsNCi0NCi0JI2lmKCBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDEgKQ0KLQl7DQotCQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICYgeFN0YXJ0U3RvcFRyYWNlICk7DQotCX0NCi0JI2VuZGlmDQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRhc2tTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKmNvbnN0IHBjSGVhZGVyID0gIlRhc2sgICAgICAgICAgU3RhdGUgIFByaW9yaXR5ICBTdGFjawkjXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4iOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCS8qIEdlbmVyYXRlIGEgdGFibGUgb2YgdGFzayBzdGF0cy4gKi8NCi0Jc3RyY3B5KCBwY1dyaXRlQnVmZmVyLCBwY0hlYWRlciApOw0KLQl2VGFza0xpc3QoIHBjV3JpdGVCdWZmZXIgKyBzdHJsZW4oIHBjSGVhZGVyICkgKTsNCi0NCi0JLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQlwZEZBTFNFLiAqLw0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqIGNvbnN0IHBjSGVhZGVyID0gIlRhc2sgICAgICAgICAgICBBYnMgVGltZSAgICAgICUgVGltZVxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiI7DQotDQotCS8qIFJlbW92ZSBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMsIGFuZCBjaGVjayB0aGUNCi0Jd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0Jd3JpdGUgYnVmZmVyIGxlbmd0aCBpcyBhZGVxdWF0ZSwgc28gZG9lcyBub3QgY2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuICovDQotCSggdm9pZCApIHBjQ29tbWFuZFN0cmluZzsNCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQljb25maWdBU1NFUlQoIHBjV3JpdGVCdWZmZXIgKTsNCi0NCi0JLyogR2VuZXJhdGUgYSB0YWJsZSBvZiB0YXNrIHN0YXRzLiAqLw0KLQlzdHJjcHkoIHBjV3JpdGVCdWZmZXIsIHBjSGVhZGVyICk7DQotCXZUYXNrR2V0UnVuVGltZVN0YXRzKCBwY1dyaXRlQnVmZmVyICsgc3RybGVuKCBwY0hlYWRlciApICk7DQotDQotCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JcGRGQUxTRS4gKi8NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRocmVlUGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCwgeFJldHVybjsNCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyTnVtYmVyID0gMDsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAwICkNCi0Jew0KLQkJLyogVGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbg0KLQkJZW50ZXJlZCBqdXN0IGEgaGVhZGVyIHN0cmluZyBpcyByZXR1cm5lZC4gKi8NCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUaGUgdGhyZWUgcGFyYW1ldGVycyB3ZXJlOlxyXG4iICk7DQotDQotCQkvKiBOZXh0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpbGwgYmUgZWNob2VkDQotCQliYWNrLiAqLw0KLQkJbFBhcmFtZXRlck51bWJlciA9IDFMOw0KLQ0KLQkJLyogVGhlcmUgaXMgbW9yZSBkYXRhIHRvIGJlIHJldHVybmVkIGFzIG5vIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGVjaG9lZA0KLQkJYmFjayB5ZXQuICovDQotCQl4UmV0dXJuID0gcGRQQVNTOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJKA0KLQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCWxQYXJhbWV0ZXJOdW1iZXIsCQkvKiBSZXR1cm4gdGhlIG5leHQgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBSZXR1cm4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVkOiAiLCAoIGludCApIGxQYXJhbWV0ZXJOdW1iZXIgKTsNCi0JCXN0cm5jYXQoIHBjV3JpdGVCdWZmZXIsIHBjUGFyYW1ldGVyLCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoICk7DQotCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCS8qIElmIHRoaXMgaXMgdGhlIGxhc3Qgb2YgdGhlIHRocmVlIHBhcmFtZXRlcnMgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZQ0KLQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAzTCApDQotCQl7DQotCQkJLyogSWYgdGhpcyBpcyB0aGUgbGFzdCBvZiB0aGUgdGhyZWUgcGFyYW1ldGVycyB0aGVuIHRoZXJlIGFyZSBubyBtb3JlDQotCQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQkJeFJldHVybiA9IHBkRkFMU0U7DQotCQkJbFBhcmFtZXRlck51bWJlciA9IDBMOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFRoZXJlIGFyZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuOw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIGxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCWlmKCBsUGFyYW1ldGVyTnVtYmVyID09IDAgKQ0KLQl7DQotCQkvKiBUaGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuDQotCQllbnRlcmVkIGp1c3QgYSBoZWFkZXIgc3RyaW5nIGlzIHJldHVybmVkLiAqLw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRoZSBwYXJhbWV0ZXJzIHdlcmU6XHJcbiIgKTsNCi0NCi0JCS8qIE5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2lsbCBiZSBlY2hvZWQNCi0JCWJhY2suICovDQotCQlsUGFyYW1ldGVyTnVtYmVyID0gMUw7DQotDQotCQkvKiBUaGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgcmV0dXJuZWQgYXMgbm8gcGFyYW1ldGVycyBoYXZlIGJlZW4gZWNob2VkDQotCQliYWNrIHlldC4gKi8NCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCQkoDQotCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJbFBhcmFtZXRlck51bWJlciwJCS8qIFJldHVybiB0aGUgbmV4dCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJCSk7DQotDQotCQlpZiggcGNQYXJhbWV0ZXIgIT0gTlVMTCApDQotCQl7DQotCQkJLyogUmV0dXJuIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJCW1lbXNldCggcGNXcml0ZUJ1ZmZlciwgMHgwMCwgeFdyaXRlQnVmZmVyTGVuICk7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVkOiAiLCAoIGludCApIGxQYXJhbWV0ZXJOdW1iZXIgKTsNCi0JCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCBwY1BhcmFtZXRlciwgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCApOw0KLQkJCXN0cm5jYXQoIHBjV3JpdGVCdWZmZXIsICJcclxuIiwgc3RybGVuKCAiXHJcbiIgKSApOw0KLQ0KLQkJCS8qIFRoZXJlIG1pZ2h0IGJlIG1vcmUgcGFyYW1ldGVycyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQkJeFJldHVybiA9IHBkVFJVRTsNCi0JCQlsUGFyYW1ldGVyTnVtYmVyKys7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJLyogTm8gbW9yZSBwYXJhbWV0ZXJzIHdlcmUgZm91bmQuICBNYWtlIHN1cmUgdGhlIHdyaXRlIGJ1ZmZlciBkb2VzDQotCQkJbm90IGNvbnRhaW4gYSB2YWxpZCBzdHJpbmcuICovDQotCQkJcGNXcml0ZUJ1ZmZlclsgMCBdID0gMHgwMDsNCi0NCi0JCQkvKiBObyBtb3JlIGRhdGEgdG8gcmV0dXJuLiAqLw0KLQkJCXhSZXR1cm4gPSBwZEZBTFNFOw0KLQ0KLQkJCS8qIFN0YXJ0IG92ZXIgdGhlIG5leHQgdGltZSB0aGlzIGNvbW1hbmQgaXMgZXhlY3V0ZWQuICovDQotCQkJbFBhcmFtZXRlck51bWJlciA9IDA7DQotCQl9DQotCX0NCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLSNpZiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDENCi0NCi0Jc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2U3RhcnRTdG9wVHJhY2VDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLQl7DQotCWNoYXIgKnBjUGFyYW1ldGVyOw0KLQlwb3J0QkFTRV9UWVBFIGxQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotDQotCQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQkJd3JpdGUgYnVmZmVyIGxlbmd0aCBpcyBhZGVxdWF0ZSwgc28gZG9lcyBub3QgY2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuICovDQotCQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCQljb25maWdBU1NFUlQoIHBjV3JpdGVCdWZmZXIgKTsNCi0NCi0JCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCSgNCi0JCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJJmxQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBUaGVyZSBhcmUgb25seSB0d28gdmFsaWQgcGFyYW1ldGVyIHZhbHVlcy4gKi8NCi0JCWlmKCBzdHJuY21wKCBwY1BhcmFtZXRlciwgInN0YXJ0Iiwgc3RybGVuKCAic3RhcnQiICkgKSA9PSAwICkNCi0JCXsNCi0JCQkvKiBTdGFydCBvciByZXN0YXJ0IHRoZSB0cmFjZS4gKi8NCi0JCQl2VHJhY2VTdG9wKCk7DQotCQkJdlRyYWNlQ2xlYXIoKTsNCi0JCQl2VHJhY2VTdGFydCgpOw0KLQ0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUcmFjZSByZWNvcmRpbmcgKHJlKXN0YXJ0ZWQuXHJcbiIgKTsNCi0JCX0NCi0JCWVsc2UgaWYoIHN0cm5jbXAoIHBjUGFyYW1ldGVyLCAic3RvcCIsIHN0cmxlbiggInN0b3AiICkgKSA9PSAwICkNCi0JCXsNCi0JCQkvKiBFbmQgdGhlIHRyYWNlLCBpZiBvbmUgaXMgcnVubmluZy4gKi8NCi0JCQl2VHJhY2VTdG9wKCk7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlN0b3BwaW5nIHRyYWNlIHJlY29yZGluZy5cclxuIiApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJWYWxpZCBwYXJhbWV0ZXJzIGFyZSAnc3RhcnQnIGFuZCAnc3RvcCcuXHJcbiIgKTsNCi0JCX0NCi0NCi0JCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JCXBkRkFMU0UuICovDQotCQlyZXR1cm4gcGRGQUxTRTsNCi0JfQ0KLQ0KLSNlbmRpZiAvKiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2M2I1NTguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuYworKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAic3RyaW5nLmgiDQotI2luY2x1ZGUgInN0ZGlvLmgiDQotI2luY2x1ZGUgInN0ZGludC5oIg0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotI2luY2x1ZGUgInNlbXBoci5oIg0KLQ0KLS8qIENvbW1vbiBkZW1vIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJzZXJpYWwuaCINCi0NCi0vKiBFeGFtcGxlIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0jaW5jbHVkZSAiVUFSVENvbW1hbmRDb25zb2xlLmgiDQotDQotLyogRGltZW5zaW9ucyB0aGUgYnVmZmVyIGludG8gd2hpY2ggaW5wdXQgY2hhcmFjdGVycyBhcmUgcGxhY2VkLiAqLw0KLSNkZWZpbmUgY21kTUFYX0lOUFVUX1NJWkUJCTUwDQotDQotLyogVGhlIG1heGltdW0gdGltZSBpbiB0aWNrcyB0byB3YWl0IGZvciB0aGUgVUFSVCBhY2Nlc3MgbXV0ZXguICovDQotI2RlZmluZSBjbWRNQVhfTVVURVhfV0FJVAkJKCAyMDAgLyBwb3J0VElDS19QRVJJT0RfTVMgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogVGhlIHRhc2sgdGhhdCBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIGNvbnNvbGUgcHJvY2Vzc2luZy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZVQVJUQ29tbWFuZENvbnNvbGVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBDb25zdCBtZXNzYWdlcyBvdXRwdXQgYnkgdGhlIGNvbW1hbmQgY29uc29sZS4gKi8NCi1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBjV2VsY29tZU1lc3NhZ2UgPSAiRnJlZVJUT1MgY29tbWFuZCBzZXJ2ZXIuXHJcblR5cGUgSGVscCB0byB2aWV3IGEgbGlzdCBvZiByZWdpc3RlcmVkIGNvbW1hbmRzLlxyXG5cclxuPiI7DQotc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwY0VuZE9mT3V0cHV0TWVzc2FnZSA9ICJcclxuW1ByZXNzIEVOVEVSIHRvIGV4ZWN1dGUgdGhlIHByZXZpb3VzIGNvbW1hbmQgYWdhaW5dXHJcbj4iOw0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGNOZXdMaW5lID0gIlxyXG4iOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlVBUlRDb21tYW5kQ29uc29sZVN0YXJ0KCB1aW50MTZfdCB1c1N0YWNrU2l6ZSwgdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eFByaW9yaXR5ICkNCi17DQotCS8qIENyZWF0ZSB0aGF0IHRhc2sgdGhhdCBoYW5kbGVzIHRoZSBjb25zb2xlIGl0c2VsZi4gKi8NCi0JeFRhc2tDcmVhdGUoIAlwcnZVQVJUQ29tbWFuZENvbnNvbGVUYXNrLAkJCS8qIFRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlLiAqLw0KLQkJCQkJIkNMSSIsCQkJCQkJCQkvKiBUZXh0IG5hbWUgYXNzaWduZWQgdG8gdGhlIHRhc2suICBUaGlzIGlzIGp1c3QgdG8gYXNzaXN0IGRlYnVnZ2luZy4gIFRoZSBrZXJuZWwgZG9lcyBub3QgdXNlIHRoaXMgbmFtZSBpdHNlbGYuICovDQotCQkJCQl1c1N0YWNrU2l6ZSwJCQkJCQkvKiBUaGUgc2l6ZSBvZiB0aGUgc3RhY2sgYWxsb2NhdGVkIHRvIHRoZSB0YXNrLiAqLw0KLQkJCQkJTlVMTCwJCQkJCQkJCS8qIFRoZSBwYXJhbWV0ZXIgaXMgbm90IHVzZWQsIHNvIE5VTEwgaXMgcGFzc2VkLiAqLw0KLQkJCQkJdXhQcmlvcml0eSwJCQkJCQkJLyogVGhlIHByaW9yaXR5IGFsbG9jYXRlZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwgKTsJCQkJCQkJCS8qIEEgaGFuZGxlIGlzIG5vdCByZXF1aXJlZCwgc28ganVzdCBwYXNzIE5VTEwuICovDQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlVBUlRDb21tYW5kQ29uc29sZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLWNoYXIgY1J4ZWRDaGFyLCBjSW5wdXRJbmRleCA9IDAsICpwY091dHB1dFN0cmluZzsNCi1zdGF0aWMgY2hhciBjSW5wdXRTdHJpbmdbIGNtZE1BWF9JTlBVVF9TSVpFIF0sIGNMYXN0SW5wdXRTdHJpbmdbIGNtZE1BWF9JTlBVVF9TSVpFIF07DQotcG9ydEJBU0VfVFlQRSB4UmV0dXJuZWQ7DQotDQotCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCi0NCi0JLyogT2J0YWluIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLiAgTm90ZSB0aGVyZSBpcyBubyBtdXR1YWwNCi0JZXhjbHVzaW9uIG9uIHRoaXMgYnVmZmVyIGFzIGl0IGlzIGFzc3VtZWQgb25seSBvbmUgY29tbWFuZCBjb25zb2xlDQotCWludGVyZmFjZSB3aWxsIGJlIHVzZWQgYXQgYW55IG9uZSB0aW1lLiAqLw0KLQlwY091dHB1dFN0cmluZyA9IEZyZWVSVE9TX0NMSUdldE91dHB1dEJ1ZmZlcigpOw0KLQ0KLQkvKiBTZW5kIHRoZSB3ZWxjb21lIG1lc3NhZ2UuICovDQotCXZTZXJpYWxQdXRTdHJpbmcoIE5VTEwsICggY29uc3Qgc2lnbmVkIGNoYXIgKiApIHBjV2VsY29tZU1lc3NhZ2UsIHN0cmxlbiggKCBjaGFyICogKSBwY1dlbGNvbWVNZXNzYWdlICkgKTsNCi0NCi0JZm9yKCA7OyApDQotCXsNCi0JCS8qIE9ubHkgaW50ZXJlc3RlZCBpbiByZWFkaW5nIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lLiAqLw0KLQkJd2hpbGUoIHhTZXJpYWxHZXRDaGFyKCBOVUxMLCAoIHNpZ25lZCBjaGFyICogKSAmY1J4ZWRDaGFyLCBwb3J0TUFYX0RFTEFZICkgPT0gcGRGQUxTRSApOw0KLQ0KLQkJLyogRWNobyB0aGUgY2hhcmFjdGVyIGJhY2suICovDQotCQl4U2VyaWFsUHV0Q2hhciggTlVMTCwgY1J4ZWRDaGFyLCBwb3J0TUFYX0RFTEFZICk7DQotDQotCQkvKiBXYXMgaXQgdGhlIGVuZCBvZiB0aGUgbGluZT8gKi8NCi0JCWlmKCBjUnhlZENoYXIgPT0gJ1xuJyB8fCBjUnhlZENoYXIgPT0gJ1xyJyApDQotCQl7DQotCQkJLyogSnVzdCB0byBzcGFjZSB0aGUgb3V0cHV0IGZyb20gdGhlIGlucHV0LiAqLw0KLQkJCXZTZXJpYWxQdXRTdHJpbmcoIE5VTEwsICggY29uc3Qgc2lnbmVkIGNoYXIgKiApIHBjTmV3TGluZSwgc3RybGVuKCAoIGNoYXIgKiApIHBjTmV3TGluZSApICk7DQotDQotCQkJLyogU2VlIGlmIHRoZSBjb21tYW5kIGlzIGVtcHR5LCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxhc3QgY29tbWFuZCBpcw0KLQkJCXRvIGJlIGV4ZWN1dGVkIGFnYWluLiAqLw0KLQkJCWlmKCBjSW5wdXRJbmRleCA9PSAwICkNCi0JCQl7DQotCQkJCS8qIENvcHkgdGhlIGxhc3QgY29tbWFuZCBiYWNrIGludG8gdGhlIGlucHV0IHN0cmluZy4gKi8NCi0JCQkJc3RyY3B5KCAoIGNoYXIgKiApIGNJbnB1dFN0cmluZywgKCBjaGFyICogKSBjTGFzdElucHV0U3RyaW5nICk7DQotCQkJfQ0KLQ0KLQkJCS8qIFBhc3MgdGhlIHJlY2VpdmVkIGNvbW1hbmQgdG8gdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIuICBUaGUNCi0JCQljb21tYW5kIGludGVycHJldGVyIGlzIGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGl0IHJldHVybnMgcGRGQUxTRQ0KLQkJCShpbmRpY2F0aW5nIHRoZXJlIGlzIG5vIG1vcmUgb3V0cHV0KSBhcyBpdCBtaWdodCBnZW5lcmF0ZSBtb3JlIHRoYW4NCi0JCQlvbmUgc3RyaW5nLiAqLw0KLQkJCWRvDQotCQkJew0KLQkJCQkvKiBHZXQgdGhlIG5leHQgb3V0cHV0IHN0cmluZyBmcm9tIHRoZSBjb21tYW5kIGludGVycHJldGVyLiAqLw0KLQkJCQl4UmV0dXJuZWQgPSBGcmVlUlRPU19DTElQcm9jZXNzQ29tbWFuZCggY0lucHV0U3RyaW5nLCBwY091dHB1dFN0cmluZywgY29uZmlnQ09NTUFORF9JTlRfTUFYX09VVFBVVF9TSVpFICk7DQotDQotCQkJCS8qIFdyaXRlIHRoZSBnZW5lcmF0ZWQgc3RyaW5nIHRvIHRoZSBVQVJULiAqLw0KLQkJCQl2U2VyaWFsUHV0U3RyaW5nKCBOVUxMLCAoIGNvbnN0IHNpZ25lZCBjaGFyICogKSBwY091dHB1dFN0cmluZywgc3RybGVuKCAoIGNoYXIgKiApIHBjT3V0cHV0U3RyaW5nICkgKTsNCi0NCi0JCQl9IHdoaWxlKCB4UmV0dXJuZWQgIT0gcGRGQUxTRSApOw0KLQ0KLQkJCS8qIEFsbCB0aGUgc3RyaW5ncyBnZW5lcmF0ZWQgYnkgdGhlIGlucHV0IGNvbW1hbmQgaGF2ZSBiZWVuIHNlbnQuDQotCQkJQ2xlYXIgdGhlIGlucHV0CXN0cmluZyByZWFkeSB0byByZWNlaXZlIHRoZSBuZXh0IGNvbW1hbmQuICBSZW1lbWJlcg0KLQkJCXRoZSBjb21tYW5kIHRoYXQgd2FzIGp1c3QgcHJvY2Vzc2VkIGZpcnN0IGluIGNhc2UgaXQgaXMgdG8gYmUNCi0JCQlwcm9jZXNzZWQgYWdhaW4uICovDQotCQkJc3RyY3B5KCAoIGNoYXIgKiApIGNMYXN0SW5wdXRTdHJpbmcsICggY2hhciAqICkgY0lucHV0U3RyaW5nICk7DQotCQkJY0lucHV0SW5kZXggPSAwOw0KLQkJCW1lbXNldCggY0lucHV0U3RyaW5nLCAweDAwLCBjbWRNQVhfSU5QVVRfU0laRSApOw0KLQkJCXZTZXJpYWxQdXRTdHJpbmcoIE5VTEwsICggY29uc3Qgc2lnbmVkIGNoYXIgKiApIHBjRW5kT2ZPdXRwdXRNZXNzYWdlLCBzdHJsZW4oICggY2hhciAqICkgcGNFbmRPZk91dHB1dE1lc3NhZ2UgKSApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCWlmKCBjUnhlZENoYXIgPT0gJ1xyJyApDQotCQkJew0KLQkJCQkvKiBJZ25vcmUgdGhlIGNoYXJhY3Rlci4gKi8NCi0JCQl9DQotCQkJZWxzZSBpZiggY1J4ZWRDaGFyID09ICdcYicgKQ0KLQkJCXsNCi0JCQkJLyogQmFja3NwYWNlIHdhcyBwcmVzc2VkLiAgRXJhc2UgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZQ0KLQkJCQlzdHJpbmcgLSBpZiBhbnkuICovDQotCQkJCWlmKCBjSW5wdXRJbmRleCA+IDAgKQ0KLQkJCQl7DQotCQkJCQljSW5wdXRJbmRleC0tOw0KLQkJCQkJY0lucHV0U3RyaW5nWyBjSW5wdXRJbmRleCBdID0gJ1wwJzsNCi0JCQkJfQ0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQkvKiBBIGNoYXJhY3RlciB3YXMgZW50ZXJlZC4gIEFkZCBpdCB0byB0aGUgc3RyaW5nDQotCQkJCWVudGVyZWQgc28gZmFyLiAgV2hlbiBhIFxuIGlzIGVudGVyZWQgdGhlIGNvbXBsZXRlDQotCQkJCXN0cmluZyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZCBpbnRlcnByZXRlci4gKi8NCi0JCQkJaWYoICggY1J4ZWRDaGFyID49ICcgJyApICYmICggY1J4ZWRDaGFyIDw9ICd+JyApICkNCi0JCQkJew0KLQkJCQkJaWYoIGNJbnB1dEluZGV4IDwgY21kTUFYX0lOUFVUX1NJWkUgKQ0KLQkJCQkJew0KLQkJCQkJCWNJbnB1dFN0cmluZ1sgY0lucHV0SW5kZXggXSA9IGNSeGVkQ2hhcjsNCi0JCQkJCQljSW5wdXRJbmRleCsrOw0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGZhYjMyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0jaWZuZGVmIFVBUlRfQ09NTUFORF9DT05TT0xFX0gNCi0jZGVmaW5lIFVBUlRfQ09NTUFORF9DT05TT0xFX0gNCi0NCi0vKg0KLSAqIENyZWF0ZSB0aGUgdGFzayB0aGF0IGltcGxlbWVudHMgYSBjb21tYW5kIGNvbnNvbGUgdXNpbmcgdGhlIFVTQiB2aXJ0dWFsIGNvbQ0KLSAqIHBvcnQgZHJpdmVyIGZvciBpbnRwdXQgYW5kIG91dHB1dC4NCi0gKi8NCi12b2lkIHZVQVJUQ29tbWFuZENvbnNvbGVTdGFydCggdW5zaWduZWQgc2hvcnQgdXNTdGFja1NpemUsIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgdXhQcmlvcml0eSApOw0KLQ0KLSNlbmRpZiAvKiBVQVJUX0NPTU1BTkRfQ09OU09MRV9IICovDQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM2OWM2NC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2wuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbiBjb21wbGVtZW50YXJ5IGNvbXBvbmVudCBwcm92aWRlZCB0byBSZWFsIFRpbWUgRW5naW5lZXJzDQotICogTHRkLiBieSBIQ0MgRW1iZWRkZWQgZm9yIHVzZSB3aXRoIEZyZWVSVE9TLiAgSXQgaXMgbm90LCBpbiBpdHNlbGYsIHBhcnQgb2YNCi0gKiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgRnJlZVJUT1MrRkFUIFNMIGlzIGxpY2Vuc2VkIHNlcGFyYXRlbHkgZnJvbSBGcmVlUlRPUywNCi0gKiBhbmQgdXNlcyBhIGRpZmZlcmVudCBsaWNlbnNlIHRvIEZyZWVSVE9TLiAgRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsDQotICogbGljZW5zZSBtb2RlbCwgaW5mb3JtYXRpb24gb24gd2hpY2ggaXMgcHJvdmlkZWQgYmVsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytGQVQgU0wgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogY29tbWVyY2lhbCBsaWNlbnNlIC0gYW5kIGluLXNvLWRvaW5nIHN1cHBvcnQgdGhlIG1haW50ZW5hbmNlLCBzdXBwb3J0IGFuZA0KLSAqIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhlIEZyZWVSVE9TK0ZBVCBTTCBwcm9kdWN0LiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4NCi0gKiBiZSBvYnRhaW5lZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZyBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcw0KLSAqIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfQ09ORklHX0ZBVF9TTF9IDQotI2RlZmluZSBfQ09ORklHX0ZBVF9TTF9IDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNpbmNsdWRlICIuLi9hcGkvYXBpX21kcml2ZXIuaCINCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qKg0KLSoqICBGQVQgU0wgdXNlciBzZXR0aW5ncw0KLSoqDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBGX1NFQ1RPUl9TSVpFICAgICAgICAgICA1MTJ1ICAvKiBEaXNrIHNlY3RvciBzaXplLiAqLw0KLSNkZWZpbmUgRl9GU19USFJFQURfQVdBUkUgICAgICAgMCAgICAgLyogU2V0IHRvIG9uZSBpZiB0aGUgZmlsZSBzeXN0ZW0gd2lsbCBiZSBhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2suICovDQotI2RlZmluZSBGX01BWFBBVEggICAgICAgICAgICAgICA2NCAgICAvKiBNYXhpbXVtIGxlbmd0aCBhIGZpbGUgbmFtZSAoaW5jbHVkaW5nIGl0cyBmdWxsIHBhdGgpIGNhbiBiZS4gKi8NCi0jZGVmaW5lIEZfTUFYX0xPQ0tfV0FJVF9USUNLUyAgIDIwICAgIC8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBSVE9TIHRpY2tzIHRvIHdhaXQgd2hlbiBhdHRlbXB0aW5nIHRvIG9idGFpbiBhIGxvY2sgb24gdGhlIGZpbGUgc3lzdGVtIHdoZW4gRl9GU19USFJFQURfQVdBUkUgaXMgc2V0IHRvIDEuICovDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBfQ09ORklHX0ZBVF9TTF9IICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9jb25maWdfbWRyaXZlcl9yYW0uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vY29uZmlnX21kcml2ZXJfcmFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YWQ5YzYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9jb25maWdfbWRyaXZlcl9yYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbiBjb21wbGVtZW50YXJ5IGNvbXBvbmVudCBwcm92aWRlZCB0byBSZWFsIFRpbWUgRW5naW5lZXJzDQotICogTHRkLiBieSBIQ0MgRW1iZWRkZWQgZm9yIHVzZSB3aXRoIEZyZWVSVE9TLiAgSXQgaXMgbm90LCBpbiBpdHNlbGYsIHBhcnQgb2YNCi0gKiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgRnJlZVJUT1MrRkFUIFNMIGlzIGxpY2Vuc2VkIHNlcGFyYXRlbHkgZnJvbSBGcmVlUlRPUywNCi0gKiBhbmQgdXNlcyBhIGRpZmZlcmVudCBsaWNlbnNlIHRvIEZyZWVSVE9TLiAgRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsDQotICogbGljZW5zZSBtb2RlbCwgaW5mb3JtYXRpb24gb24gd2hpY2ggaXMgcHJvdmlkZWQgYmVsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytGQVQgU0wgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogY29tbWVyY2lhbCBsaWNlbnNlIC0gYW5kIGluLXNvLWRvaW5nIHN1cHBvcnQgdGhlIG1haW50ZW5hbmNlLCBzdXBwb3J0IGFuZA0KLSAqIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhlIEZyZWVSVE9TK0ZBVCBTTCBwcm9kdWN0LiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4NCi0gKiBiZSBvYnRhaW5lZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZyBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcw0KLSAqIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotI2RlZmluZSBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX21kcml2ZXJfcmFtLmgiDQotI2lmIFZFUl9NRFJJVkVSX1JBTV9NQUpPUiAhPSAxIHx8IFZFUl9NRFJJVkVSX1JBTV9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgTURSSVZFUl9SQU0gdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2RlZmluZSBNRFJJVkVSX1JBTV9TRUNUT1JfU0laRSAgIDUxMiAgICAgICAvKiBTZWN0b3Igc2l6ZSAqLw0KLQ0KLSNkZWZpbmUgTURSSVZFUl9SQU1fVk9MVU1FMF9TSVpFICAoNjQgKiAxMDI0KSAvKiBkZWZpbnRpb24gZm9yIHNpemUgb2YgcmFtZHJpdmUwICovDQotDQotI2RlZmluZSBNRFJJVkVSX01FTV9MT05HX0FDQ0VTUyAgIDEgICAgICAgICAvKiBzZXQgdGhpcyB2YWx1ZSB0byAxIGlmIDMyYml0IGFjY2VzcyBhdmFpbGFibGUgKi8NCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9DT05GSUdfTURSSVZFUl9SQU1fSF8gKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9tYWluX2Z1bGwuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYyMTZlYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL21haW5fZnVsbC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQotICogcHJvamVjdCwgYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCi0gKiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaW4gbWFpbi5jIGlzIHVzZWQgdG8gc2VsZWN0DQotICogYmV0d2VlbiB0aGUgdHdvLiAgU2VlIHRoZSBub3RlcyBvbiB1c2luZyBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZDQotICogaW4gbWFpbi5jLiAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyB2ZXJzaW9uLg0KLSAqDQotICogTk9URSAyOiAgVGhpcyBmaWxlIG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBjb2RlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlDQotICogZnVsbCBkZW1vLiAgR2VuZXJpYyBmdW5jdGlvbnMsIHN1Y2ggRnJlZVJUT1MgaG9vayBmdW5jdGlvbnMsIGFuZCBmdW5jdGlvbnMNCi0gKiByZXF1aXJlZCB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlLCBhcmUgZGVmaW5lZCBpbiBtYWluLmMuDQotICoNCi0gKiBOT1RFIDM6ICBJZiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyBpcyBzZXQgdG8gMSB0aGVuIHRoZSBVQVJUIGlzIHVzZWQgdG8NCi0gKiBpbnRlcmZhY2UgdG8gdGhlIEZyZWVSVE9TK0NMSSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiAgSWYNCi0gKiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyBpcyBzZXQgdG8gMCB0aGVuIHRoZSBVQVJUIGlzIHVzZWQgdG8gcnVuIHRoZSBzdGFuZGFyZA0KLSAqIENPTSB0ZXN0IHRhc2tzIGFuZCBhIGxvb3BiYWNrIGNvbm5lY3RvciBtdXN0IGJlIGZpdHRlZCB0byB0aGUgVUFSVCBwb3J0DQotICogYmVjYXVzZSB0aGUgdGVzdCBleHBlY3RzIHRvIHJlY2VpdmUgZXZlcnkgY2hhcmFjdGVyIHRoYXQgaXMgdHJhbnNtaXR0ZWQuICBBDQotICogc2ltcGxlIGxvb3BiYWNrIGNvbm5lY3RvciBjYW4gYmUgY3JlYXRlZCBieSBsaW5raW5nIHBpbnMgMiBhbmQgMyBvZiB0aGUgOSB3YXkNCi0gKiBVQVJUIGNvbm5lY3Rvci4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBtYWluX2Z1bGwoKSBjcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcyBhbmQgc29mdHdhcmUgdGltZXJzLCB0aGVuDQotICogc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgd2ViIGRvY3VtZW50YXRpb24gcHJvdmlkZXMgbW9yZSBkZXRhaWxzIG9mIHRoZQ0KLSAqIHN0YW5kYXJkIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHdoaWNoIHByb3ZpZGUgbm8gcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LA0KLSAqIGJ1dCBkbyBwcm92aWRlIGEgZ29vZCBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIEZyZWVSVE9TIEFQSS4NCi0gKg0KLSAqIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLCB0aGUgZm9sbG93aW5nIHRhc2tzIGFuZCB0ZXN0cyBhcmUNCi0gKiBkZWZpbmVkIGFuZC9vciBjcmVhdGVkIHdpdGhpbiB0aGlzIGZpbGU6DQotICoNCi0gKiBGcmVlUlRPUytDTEkgY29tbWFuZCBjb25zb2xlLiAgVGhlIGNvbW1hbmQgY29uc29sZSBpcyBhY2Nlc3MgdGhyb3VnaCBVQVJUMg0KLSAqIHVzaW5nIDExNTIwMCBiYXVkIGlmIG1haW5JTkNMVURFX0ZBVF9TTF9ERU1PIGlzIHNldCB0byAxLiAgRm9yIHJlYXNvbnMgb2YNCi0gKiByb2J1c3RuZXNzIHRlc3RpbmcgdGhlIFVBUlQgZHJpdmVyIGlzIGRlbGliZXJhdGVseSB3cml0dGVuIHRvIGJlIGluZWZmaWNpZW50DQotICogYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhcyBhIHRlbXBsYXRlIGZvciBhIHByb2R1Y3Rpb24gZHJpdmVyLiAgVHlwZSAiaGVscCIgdG8NCi0gKiBzZWUgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgY29tbWFuZHMuICBUaGUgRnJlZVJUT1MrQ0xJIGxpY2Vuc2UgaXMgZGlmZmVyZW50IHRvDQotICogdGhlIEZyZWVSVE9TIGxpY2Vuc2UsIHNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9jbGkgZm9yIGxpY2Vuc2UgYW5kIHVzYWdlDQotICogZGV0YWlscy4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTC4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBkZW1vbnN0cmF0ZWQgdXNpbmcgYSBSQU0gZGlzayBpZg0KLSAqIG1haW5JTkNMVURFX0ZBVF9TTF9ERU1PIGlzIHNldCB0byAxLiAgW0F0IHRoZSB0aW1lIG9mIHdyaXRpbmddIFRoZQ0KLSAqIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZpbGUgc3lzdGVtIGRlbW8gaXMgaWRlbnRpY2FsIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mDQotICogdGhlIEZyZWVSVE9TIFdpbjMyIHNpbXVsYXRvciBmaWxlIHN5c3RlbSBkZW1vLCB3aXRoIHRoZSBjb21tYW5kIGNvbnNvbGUgYmVpbmcNCi0gKiBhY2Nlc3NlZCB2aWEgdGhlIFVBUlQgKGFzIGRlc2NyaWJlZCBhYm92ZSkgaW5zdGVhZCBvZiBhIG5ldHdvcmsgdGVybWluYWwuDQotICogVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIGlzIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSwgc2VlDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZmF0X3NsIGZvciBsaWNlbnNlIGFuZCB1c2FnZSBkZXRhaWxzLCBhbmQgYQ0KLSAqIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBkZW1vIGZ1bmN0aW9uYWxpdHkuDQotICoNCi0gKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCBib3RoIHRoZSBjb3JlIGFuZCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgd2l0aA0KLSAqIGtub3duIHZhbHVlcywgdGhlbiBjaGVjayB0aGF0IGVhY2ggcmVnaXN0ZXIgbWFpbnRhaW5zIGl0cyBleHBlY3RlZCB2YWx1ZSBmb3INCi0gKiB0aGUgbGlmZXRpbWUgb2YgdGhlIHRhc2suICBFYWNoIHRhc2sgdXNlcyBhIGRpZmZlcmVudCBzZXQgb2YgdmFsdWVzLiAgVGhlIHJlZw0KLSAqIHRlc3QgdGFza3MgZXhlY3V0ZSB3aXRoIGEgdmVyeSBsb3cgcHJpb3JpdHksIHNvIGdldCBwcmVlbXB0ZWQgdmVyeQ0KLSAqIGZyZXF1ZW50bHkuICBBIHJlZ2lzdGVyIGNvbnRhaW5pbmcgYW4gdW5leHBlY3RlZCB2YWx1ZSBpcyBpbmRpY2F0aXZlIG9mIGFuDQotICogZXJyb3IgaW4gdGhlIGNvbnRleHQgc3dpdGNoaW5nIG1lY2hhbmlzbS4NCi0gKg0KLSAqICJDaGVjayIgdGFzayAtIFRoZSBjaGVjayB0YXNrIHBlcmlvZCBpcyBpbml0aWFsbHkgc2V0IHRvIHRocmVlIHNlY29uZHMuICBUaGUNCi0gKiB0YXNrIGNoZWNrcyB0aGF0IGFsbCB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcywgYW5kIHRoZSByZWdpc3RlciBjaGVjayB0YXNrcywNCi0gKiBhcmUgbm90IG9ubHkgc3RpbGwgZXhlY3V0aW5nLCBidXQgYXJlIGV4ZWN1dGluZyB3aXRob3V0IHJlcG9ydGluZyBhbnkgZXJyb3JzLg0KLSAqIElmIHRoZSBjaGVjayB0YXNrIGRpc2NvdmVycyB0aGF0IGEgdGFzayBoYXMgZWl0aGVyIHN0YWxsZWQsIG9yIHJlcG9ydGVkIGFuDQotICogZXJyb3IsIHRoZW4gaXQgY2hhbmdlcyBpdHMgb3duIGV4ZWN1dGlvbiBwZXJpb2QgZnJvbSB0aGUgaW5pdGlhbCB0aHJlZQ0KLSAqIHNlY29uZHMsIHRvIGp1c3QgMjAwbXMuICBUaGUgY2hlY2sgdGFzayBhbHNvIHRvZ2dsZXMgYW4gTEVEIGVhY2ggdGltZSBpdCBpcw0KLSAqIGNhbGxlZC4gIFRoaXMgcHJvdmlkZXMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiB0aGUgc3lzdGVtIHN0YXR1czogIElmIHRoZSBMRUQNCi0gKiB0b2dnbGVzIGV2ZXJ5IHRocmVlIHNlY29uZHMsIHRoZW4gbm8gaXNzdWVzIGhhdmUgYmVlbiBkaXNjb3ZlcmVkLiAgSWYgdGhlIExFRA0KLSAqIHRvZ2dsZXMgZXZlcnkgMjAwbXMsIHRoZW4gYW4gaXNzdWUgaGFzIGJlZW4gZGlzY292ZXJlZCB3aXRoIGF0IGxlYXN0IG9uZQ0KLSAqIHRhc2suDQotICovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotDQotLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotI2luY2x1ZGUgInRpbWVycy5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0NCi0vKiBTdGFuZGFyZCBkZW1vIGFwcGxpY2F0aW9uIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJmbG9wLmgiDQotI2luY2x1ZGUgInNlbXRlc3QuaCINCi0jaW5jbHVkZSAiZHluYW1pYy5oIg0KLSNpbmNsdWRlICJCbG9ja1EuaCINCi0jaW5jbHVkZSAiYmxvY2t0aW0uaCINCi0jaW5jbHVkZSAiY291bnRzZW0uaCINCi0jaW5jbHVkZSAiR2VuUVRlc3QuaCINCi0jaW5jbHVkZSAicmVjbXV0ZXguaCINCi0jaW5jbHVkZSAiZGVhdGguaCINCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLSNpbmNsdWRlICJjb210ZXN0Mi5oIg0KLSNpbmNsdWRlICJzZXJpYWwuaCINCi0jaW5jbHVkZSAiVGltZXJEZW1vLmgiDQotI2luY2x1ZGUgIlF1ZXVlT3ZlcndyaXRlLmgiDQotDQotLyogRnJlZVJUT1MrQ0xJIGFuZCBGcmVlUlRPUytGQVQgU0wgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIlVBUlRDb21tYW5kQ29uc29sZS5oIg0KLQ0KLS8qIEVpdGhlciB0aGUgRnJlZVJUT1MrRkFUIFNMIGRlbW8gb3IgdGhlIENPTSB0ZXN0IGRlbW8gY2FuIGJlIGJ1aWxkIGludG8gdGhlDQotcHJvamVjdCwgbm90IGJvdGggKGJlY2F1c2UgdGhleSB1c2UgdGhlIHNhbWUgVUFSVCkuICBTZXQNCi1jb25maWdJTkNMVURFX0ZBVF9TTF9ERU1PIHRvIDEgdG8gaW5jbHVkZSB0aGUgRnJlZVJUT1MrRkFUIFNMIChhbmQgdGhlcmVmb3JlDQotYWxzbyBGcmVlUlRPUytDTEkpIGRlbW8gaW4gdGhlIGJ1aWxkLiAgU2V0IGNvbmZpZ0lOQ0xVREVfRkFUX1NMX0RFTU8gdG8gMCB0bw0KLWluY2x1ZGUgdGhlIENPTSB0ZXN0IHRhc2tzLiAgVGhlIENPTSB0ZXN0IHRhc2tzIHJlcXVpcmUgYSBsb29wIGJhY2sgY29ubmVjdG9yDQotdG8gYmUgZml0dGVkIHRvIHRoZSBVQVJUIHBvcnQuICovDQotI2RlZmluZSBtYWluSU5DTFVERV9GQVRfU0xfREVNTwkJCQkxDQotDQotLyogUHJpb3JpdGllcyBmb3IgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MuICovDQotI2RlZmluZSBtYWluU0VNX1RFU1RfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMVVMICkNCi0jZGVmaW5lIG1haW5CTE9DS19RX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDJVTCApDQotI2RlZmluZSBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgM1VMICkNCi0jZGVmaW5lIG1haW5GTE9QX1RBU0tfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICkNCi0jZGVmaW5lIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9TVEFDS19TSVpFCSggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFICogM1VMICkNCi0jZGVmaW5lIG1haW5DT01fVEVTVF9UQVNLX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMiApDQotI2RlZmluZSBtYWluQ0hFQ0tfVEFTS19QUklPUklUWQkJCQkoIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApDQotI2RlZmluZSBtYWluUVVFVUVfT1ZFUldSSVRFX1BSSU9SSVRZCQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KLQ0KLS8qIFRoZSBwcmlvcml0eSB1c2VkIGJ5IHRoZSBVQVJUIGNvbW1hbmQgY29uc29sZSB0YXNrLiAqLw0KLSNkZWZpbmUgbWFpblVBUlRfQ09NTUFORF9DT05TT0xFX1RBU0tfUFJJT1JJVFkJKCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDIgKQ0KLQ0KLS8qIFRoZSBMRUQgdXNlZCBieSB0aGUgY2hlY2sgdGFzay4gKi8NCi0jZGVmaW5lIG1haW5DSEVDS19MRUQJCQkJCQkoIDAgKQ0KLQ0KLS8qIEEgYmxvY2sgdGltZSBvZiB6ZXJvIHNpbXBseSBtZWFucyAiZG9uJ3QgYmxvY2siLiAqLw0KLSNkZWZpbmUgbWFpbkRPTlRfQkxPQ0sJCQkJCQkoIDBVTCApDQotDQotLyogSW4gdGhpcyBleGFtcGxlIHRoZSBiYXVkIHJhdGUgaXMgaGFyZCBjb2RlZCBhbmQgdGhlcmUgaXMgbm8gTEVEIGZvciB1c2UgYnkNCi10aGUgQ09NIHRlc3QgdGFza3MsIHNvIGp1c3Qgc2V0IGJvdGggdG8gaW52YWxpZCB2YWx1ZXMuICovDQotI2RlZmluZSBtYWluQ09NX1RFU1RfTEVECQkJCQkoIDEwMCApDQotI2RlZmluZSBtYWluQkFVRF9SQVRFCQkJCQkJKCAwICkNCi0NCi0vKiBUaGUgcGVyaW9kIG9mIHRoZSBjaGVjayB0YXNrLCBpbiBtcywgcHJvdmlkZWQgbm8gZXJyb3JzIGhhdmUgYmVlbiByZXBvcnRlZCBieQ0KLWFueSBvZiB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gIG1zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIGVxdWl2YWxlbnQgaW4gdGlja3MNCi11c2luZyB0aGUgcGRNU19UT19USUNLUygpIG1hY3JvIGNvbnN0YW50LiAqLw0KLSNkZWZpbmUgbWFpbk5PX0VSUk9SX0NIRUNLX1RBU0tfUEVSSU9ECQlwZE1TX1RPX1RJQ0tTKCAzMDAwVUwgKQ0KLQ0KLS8qIFRoZSBwZXJpb2Qgb2YgdGhlIGNoZWNrIHRhc2ssIGluIG1zLCBpZiBhbiBlcnJvciBoYXMgYmVlbiByZXBvcnRlZCBpbiBvbmUgb2YNCi10aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gIG1zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIGVxdWl2YWxlbnQgaW4gdGlja3MgdXNpbmcgdGhlDQotcGRNU19UT19USUNLUygpIG1hY3JvLiAqLw0KLSNkZWZpbmUgbWFpbkVSUk9SX0NIRUNLX1RBU0tfUEVSSU9EIAkJcGRNU19UT19USUNLUyggMjAwVUwgKQ0KLQ0KLS8qIFBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGludG8gdGhlIHJlZ2lzdGVyIGNoZWNrIHRhc2tzIHNvbGVseSBmb3IgdGhlDQotcHVycG9zZSBvZiBlbnN1cmluZyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgaW50byB0YXNrcyBjb3JyZWN0bHkuICovDQotI2RlZmluZSBtYWluUkVHX1RFU1RfVEFTS18xX1BBUkFNRVRFUgkJKCAoIHZvaWQgKiApIDB4MTIzNDU2NzggKQ0KLSNkZWZpbmUgbWFpblJFR19URVNUX1RBU0tfMl9QQVJBTUVURVIJCSggKCB2b2lkICogKSAweDg3NjU0MzIxICkNCi0NCi0vKiBUaGUgYmFzZSBwZXJpb2QgdXNlZCBieSB0aGUgdGltZXIgdGVzdCB0YXNrcy4gKi8NCi0jZGVmaW5lIG1haW5USU1FUl9URVNUX1BFUklPRAkJCQkoIDUwICkNCi0NCi0vKiBUaGUgbGVuZ3RoIG9mIHF1ZXVlcyB1c2VkIHRvIHBhc3MgY2hhcmFjdGVycyBpbnRvIGFuZCBvdXQgb2YgdGhlIFVBUlQNCi1pbnRlcnJ1cHQuICBOb3RlIHRoZSBjb21tZW50cyBhYm92ZSBhYm91dCB0aGUgVUFSVCBkcml2ZXIgYmVpbmcgaW1wbGVtZW50ZWQgaW4NCi10aGlzIHdheSB0byB0ZXN0IHRoZSBrZXJuZWwgcm9idXN0bmVzcyByYXRoZXIgdGhhbiB0byBwcm92aWRlIGEgdGVtcGxhdGUgZm9yIGFuDQotZWZmaWNpZW50IHByb2R1Y3Rpb24gZHJpdmVyLiAqLw0KLSNkZWZpbmUgbWFpblVBUlRfUVVFVUVfTEVOR1RIUwkxMA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogQ2FsbGVkIGJ5IG1haW4oKSB0byBydW4gdGhlIGZ1bGwgZGVtbyAoYXMgb3Bwb3NlZCB0byB0aGUgYmxpbmt5IGRlbW8pIHdoZW4NCi0gKiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAwLg0KLSAqLw0KLXZvaWQgbWFpbl9mdWxsKCB2b2lkICk7DQotDQotLyoNCi0gKiBUaGUgY2hlY2sgdGFzaywgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydkNoZWNrVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotDQotLyoNCi0gKiBSZWdpc3RlciBjaGVjayB0YXNrcywgYW5kIHRoZSB0YXNrcyB1c2VkIHRvIHdyaXRlIG92ZXIgYW5kIGNoZWNrIHRoZSBjb250ZW50cw0KLSAqIG9mIHRoZSBGUFUgcmVnaXN0ZXJzLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuICBUaGUgbmF0dXJlIG9mDQotICogdGhlc2UgZmlsZXMgbmVjZXNzaXRhdGVzIHRoYXQgdGhleSBhcmUgd3JpdHRlbiBpbiBhbiBhc3NlbWJseSBmaWxlLCBidXQgdGhlDQotICogZW50cnkgcG9pbnRzIGFyZSBrZXB0IGluIHRoZSBDIGZpbGUgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiBjaGVja2luZyB0aGUgdGFzaw0KLSAqIHBhcmFtZXRlci4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZSZWdUZXN0VGFza0VudHJ5MSggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotZXh0ZXJuIHZvaWQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24oIHZvaWQgKTsNCi1zdGF0aWMgdm9pZCBwcnZSZWdUZXN0VGFza0VudHJ5Miggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotZXh0ZXJuIHZvaWQgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24oIHZvaWQgKTsNCi0NCi0vKg0KLSAqIFJlZ2lzdGVyIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBGcmVlUlRPUytDTEkuICBUaGUgY29tbWFuZHMgYXJlDQotICogZGVmaW5lZCBpbiBDTEktQ29tbWFuZHMuYyBhbmQgRmlsZS1SZWxhdGVkLUNMSS1Db21tYW5kLmMgcmVzcGVjdGl2ZWx5Lg0KLSAqLw0KLWV4dGVybiB2b2lkIHZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCB2b2lkICk7DQotZXh0ZXJuIHZvaWQgdlJlZ2lzdGVyRmlsZVN5c3RlbUNMSUNvbW1hbmRzKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGVzIGFuZCB2ZXJpZmllcyBkaWZmZXJlbnQgZmlsZXMgb24gdGhlIHZvbHVtZSwgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mDQotICogdmFyaW91cyBkaWZmZXJlbnQgQVBJIGZ1bmN0aW9ucy4NCi0gKi8NCi1leHRlcm4gdm9pZCB2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBUaGUgZm9sbG93aW5nIHR3byB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUNCi1yZWdpc3RlciBjaGVjayB0YXNrcyB0byB0aGUgY2hlY2sgc29mdHdhcmUgdGltZXIuICBJZiB0aGUgdmFyaWFibGVzIGtlZXANCi1pbmNyZW1lbnRpbmcsIHRoZW4gdGhlIHJlZ2lzdGVyIGNoZWNrIHRhc2tzIGhhdmUgbm90IGRpc2NvdmVyZWQgYW55IGVycm9ycy4gIElmDQotYSB2YXJpYWJsZSBzdG9wcyBpbmNyZW1lbnRpbmcsIHRoZW4gYW4gZXJyb3IgaGFzIGJlZW4gZm91bmQuICovDQotdm9sYXRpbGUgdW5zaWduZWQgbG9uZyB1bFJlZ1Rlc3QxTG9vcENvdW50ZXIgPSAwVUwsIHVsUmVnVGVzdDJMb29wQ291bnRlciA9IDBVTDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIG1haW5fZnVsbCggdm9pZCApDQotew0KLQkvKiBUaGUgYmF1ZCByYXRlIHNldHRpbmcgaGVyZSBoYXMgbm8gZWZmZWN0LCBoZW5jZSBpdCBpcyBzZXQgdG8gMCB0bw0KLQltYWtlIHRoYXQgb2J2aW91cy4gKi8NCi0JeFNlcmlhbFBvcnRJbml0TWluaW1hbCggMCwgbWFpblVBUlRfUVVFVUVfTEVOR1RIUyApOw0KLQ0KLQkvKiBJZiB0aGUgZmlsZSBzeXN0ZW0gaXMgb25seSBnb2luZyB0byBiZSBhY2Nlc3NlZCBmcm9tIG9uZSB0YXNrIHRoZW4NCi0JRl9GU19USFJFQURfQVdBUkUgY2FuIGJlIHNldCB0byAwIGFuZCB0aGUgc2V0IG9mIGV4YW1wbGUgZmlsZXMgYXJlIGNyZWF0ZWQNCi0JYmVmb3JlIHRoZSBSVE9TIHNjaGVkdWxlciBpcyBzdGFydGVkLiAgSWYgdGhlIGZpbGUgc3lzdGVtIGlzIGdvaW5nIHRvIGJlDQotCWFjY2VzcyBmcm9tIG1vcmUgdGhhbiBvbmUgdGFzayB0aGVuIEZfRlNfVEhSRUFEX0FXQVJFIG11c3QgYmUgc2V0IHRvIDEgYW5kDQotCXRoZQlzZXQgb2Ygc2FtcGxlIGZpbGVzIGFyZSBjcmVhdGVkIGZyb20gdGhlIGlkbGUgdGFzayBob29rIGZ1bmN0aW9uDQotCXZBcHBsaWNhdGlvbklkbGVIb29rKCkgLSB3aGljaCBpcyBkZWZpbmVkIGluIHRoaXMgZmlsZS4gKi8NCi0JI2lmICggbWFpbklOQ0xVREVfRkFUX1NMX0RFTU8gPT0gMSApJiYgKCBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAwICkNCi0Jew0KLQkJLyogSW5pdGlhbGlzZSB0aGUgZHJpdmUgYW5kIGZpbGUgc3lzdGVtLCB0aGVuIGNyZWF0ZSBhIGZldyBleGFtcGxlDQotCQlmaWxlcy4gIFRoZSBvdXRwdXQgZnJvbSB0aGlzIGZ1bmN0aW9uIGp1c3QgZ29lcyB0byB0aGUgc3Rkb3V0IHdpbmRvdywNCi0JCWFsbG93aW5nIHRoZSBvdXRwdXQgdG8gYmUgdmlld2VkIHdoZW4gdGhlIFVEUCBjb21tYW5kIGNvbnNvbGUgaXMgbm90DQotCQljb25uZWN0ZWQuICovDQotCQl2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoKTsNCi0JfQ0KLQkjZW5kaWYNCi0NCi0JLyogU3RhcnQgYWxsIHRoZSBvdGhlciBzdGFuZGFyZCBkZW1vL3Rlc3QgdGFza3MuICBUaGUgaGF2ZSBub3QgcGFydGljdWxhcg0KLQlmdW5jdGlvbmFsaXR5LCBidXQgZG8gZGVtb25zdHJhdGUgaG93IHRvIHVzZSB0aGUgRnJlZVJUT1MgQVBJIGFuZCB0ZXN0IHRoZQ0KLQlrZXJuZWwgcG9ydC4gKi8NCi0JdlN0YXJ0RHluYW1pY1ByaW9yaXR5VGFza3MoKTsNCi0JdlN0YXJ0QmxvY2tpbmdRdWV1ZVRhc2tzKCBtYWluQkxPQ0tfUV9QUklPUklUWSApOw0KLQl2Q3JlYXRlQmxvY2tUaW1lVGFza3MoKTsNCi0JdlN0YXJ0Q291bnRpbmdTZW1hcGhvcmVUYXNrcygpOw0KLQl2U3RhcnRHZW5lcmljUXVldWVUYXNrcyggdHNrSURMRV9QUklPUklUWSApOw0KLQl2U3RhcnRSZWN1cnNpdmVNdXRleFRhc2tzKCk7DQotCXZTdGFydFNlbWFwaG9yZVRhc2tzKCBtYWluU0VNX1RFU1RfUFJJT1JJVFkgKTsNCi0JdlN0YXJ0TWF0aFRhc2tzKCBtYWluRkxPUF9UQVNLX1BSSU9SSVRZICk7DQotCXZTdGFydFRpbWVyRGVtb1Rhc2soIG1haW5USU1FUl9URVNUX1BFUklPRCApOw0KLQl2U3RhcnRRdWV1ZU92ZXJ3cml0ZVRhc2soIG1haW5RVUVVRV9PVkVSV1JJVEVfUFJJT1JJVFkgKTsNCi0NCi0JI2lmIG1haW5JTkNMVURFX0ZBVF9TTF9ERU1PID09IDENCi0Jew0KLQkJLyogU3RhcnQgdGhlIHRhc2tzIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlIG9uIHRoZSBVQVJULCBhcw0KLQkJZGVzY3JpYmVkIGFib3ZlLiAqLw0KLQkJdlVBUlRDb21tYW5kQ29uc29sZVN0YXJ0KCBtYWluVUFSVF9DT01NQU5EX0NPTlNPTEVfU1RBQ0tfU0laRSwgbWFpblVBUlRfQ09NTUFORF9DT05TT0xFX1RBU0tfUFJJT1JJVFkgKTsNCi0NCi0JCS8qIFJlZ2lzdGVyIGJvdGggdGhlIHN0YW5kYXJkIGFuZCBmaWxlIHN5c3RlbSByZWxhdGVkIENMSSBjb21tYW5kcy4gKi8NCi0JCXZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCk7DQotCQl2UmVnaXN0ZXJGaWxlU3lzdGVtQ0xJQ29tbWFuZHMoKTsNCi0JfQ0KLQkjZWxzZQ0KLQl7DQotCQkvKiBUaGUgQ09NIHRlc3QgdGFza3MgY2FuIHVzZSB0aGUgVUFSVCBpZiB0aGUgQ0xJIGlzIG5vdCB1c2VkIGJ5IHRoZQ0KLQkJRkFUIFNMIGRlbW8uICBUaGUgQ09NIHRlc3QgdGFza3MgcmVxdWlyZSBhIFVBUlQgY29ubmVjdG9yIHRvIGJlIGZpdHRlZA0KLQkJdG8gdGhlIFVBUlQgcG9ydC4gKi8NCi0JCXZBbHRTdGFydENvbVRlc3RUYXNrcyggbWFpbkNPTV9URVNUX1RBU0tfUFJJT1JJVFksIG1haW5CQVVEX1JBVEUsIG1haW5DT01fVEVTVF9MRUQgKTsNCi0JfQ0KLQkjZW5kaWYNCi0NCi0NCi0JLyogQ3JlYXRlIHRoZSByZWdpc3RlciBjaGVjayB0YXNrcywgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgdGhpcw0KLQlmaWxlICovDQotCXhUYXNrQ3JlYXRlKCBwcnZSZWdUZXN0VGFza0VudHJ5MSwgIlJlZzEiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIG1haW5SRUdfVEVTVF9UQVNLXzFfUEFSQU1FVEVSLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQotCXhUYXNrQ3JlYXRlKCBwcnZSZWdUZXN0VGFza0VudHJ5MiwgIlJlZzIiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIG1haW5SRUdfVEVTVF9UQVNLXzJfUEFSQU1FVEVSLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQotDQotCS8qIENyZWF0ZSB0aGUgdGFzayB0aGF0IHBlcmZvcm1zIHRoZSAnY2hlY2snIGZ1bmN0aW9uYWxpdHksCWFzIGRlc2NyaWJlZCBhdA0KLQl0aGUgdG9wIG9mIHRoaXMgZmlsZS4gKi8NCi0JeFRhc2tDcmVhdGUoIHBydkNoZWNrVGFzaywgIkNoZWNrIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCBtYWluQ0hFQ0tfVEFTS19QUklPUklUWSwgTlVMTCApOw0KLQ0KLQkvKiBUaGUgc2V0IG9mIHRhc2tzIGNyZWF0ZWQgYnkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYWxsIGhhdmUgdG8gYmUNCi0JY3JlYXRlZCBsYXN0IGFzIHRoZXkga2VlcCBhY2NvdW50IG9mIHRoZSBudW1iZXIgb2YgdGFza3MgdGhleSBleHBlY3QgdG8gc2VlDQotCXJ1bm5pbmcuICovDQotCXZDcmVhdGVTdWljaWRhbFRhc2tzKCBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZICk7DQotDQotCS8qIFN0YXJ0IHRoZSBzY2hlZHVsZXIuICovDQotCXZUYXNrU3RhcnRTY2hlZHVsZXIoKTsNCi0NCi0JLyogSWYgYWxsIGlzIHdlbGwsIHRoZSBzY2hlZHVsZXIgd2lsbCBub3cgYmUgcnVubmluZywgYW5kIHRoZSBmb2xsb3dpbmcNCi0JbGluZSB3aWxsIG5ldmVyIGJlIHJlYWNoZWQuICBJZiB0aGUgZm9sbG93aW5nIGxpbmUgZG9lcyBleGVjdXRlLCB0aGVuDQotCXRoZXJlIHdhcyBlaXRoZXIgaW5zdWZmaWNpZW50IEZyZWVSVE9TIGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgdGhlIGlkbGUNCi0JYW5kL29yIHRpbWVyIHRhc2tzIHRvIGJlIGNyZWF0ZWQsIG9yIHZUYXNrU3RhcnRTY2hlZHVsZXIoKSB3YXMgY2FsbGVkIGZyb20NCi0JVXNlciBtb2RlLiAgU2VlIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzZWN0aW9uIG9uIHRoZSBGcmVlUlRPUyB3ZWIgc2l0ZSBmb3INCi0JbW9yZSBkZXRhaWxzIG9uIHRoZSBGcmVlUlRPUyBoZWFwIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sLiAgVGhlDQotCW1vZGUgZnJvbSB3aGljaCBtYWluKCkgaXMgY2FsbGVkIGlzIHNldCBpbiB0aGUgQyBzdGFydCB1cCBjb2RlIGFuZCBtdXN0IGJlDQotCWEgcHJpdmlsZWdlZCBtb2RlIChub3QgdXNlciBtb2RlKS4gKi8NCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDaGVja1Rhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLVRpY2tUeXBlX3QgeERlbGF5UGVyaW9kID0gbWFpbk5PX0VSUk9SX0NIRUNLX1RBU0tfUEVSSU9EOw0KLVRpY2tUeXBlX3QgeExhc3RFeGVjdXRpb25UaW1lOw0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHVsTGFzdFJlZ1Rlc3QxVmFsdWUgPSAwLCB1bExhc3RSZWdUZXN0MlZhbHVlID0gMDsNCi11bnNpZ25lZCBsb25nIHVsRXJyb3JGb3VuZCA9IHBkRkFMU0U7DQotDQotCS8qIEp1c3QgdG8gc3RvcCBjb21waWxlciB3YXJuaW5ncy4gKi8NCi0JKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KLQ0KLQkvKiBJbml0aWFsaXNlIHhMYXN0RXhlY3V0aW9uVGltZSBzbyB0aGUgZmlyc3QgY2FsbCB0byB2VGFza0RlbGF5VW50aWwoKQ0KLQl3b3JrcyBjb3JyZWN0bHkuICovDQotCXhMYXN0RXhlY3V0aW9uVGltZSA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQotDQotCS8qIEN5Y2xlIGZvciBldmVyLCBkZWxheWluZyB0aGVuIGNoZWNraW5nIGFsbCB0aGUgb3RoZXIgdGFza3MgYXJlIHN0aWxsDQotCW9wZXJhdGluZyB3aXRob3V0IGVycm9yLiAgVGhlIG9uYm9hcmQgTEVEIGlzIHRvZ2dsZWQgb24gZWFjaCBpdGVyYXRpb24uDQotCUlmIGFuIGVycm9yIGlzIGRldGVjdGVkIHRoZW4gdGhlIGRlbGF5IHBlcmlvZCBpcyBkZWNyZWFzZWQgZnJvbQ0KLQltYWluTk9fRVJST1JfQ0hFQ0tfVEFTS19QRVJJT0QgdG8gbWFpbkVSUk9SX0NIRUNLX1RBU0tfUEVSSU9ELiAgVGhpcyBoYXMgdGhlDQotCWVmZmVjdCBvZiBpbmNyZWFzaW5nIHRoZSByYXRlIGF0IHdoaWNoIHRoZSBvbmJvYXJkIExFRCB0b2dnbGVzLCBhbmQgaW4gc28NCi0JZG9pbmcgZ2l2ZXMgdmlzdWFsIGZlZWRiYWNrIG9mIHRoZSBzeXN0ZW0gc3RhdHVzLiAqLw0KLQlmb3IoIDs7ICkNCi0Jew0KLQkJLyogRGVsYXkgdW50aWwgaXQgaXMgdGltZSB0byBleGVjdXRlIGFnYWluLiAqLw0KLQkJdlRhc2tEZWxheVVudGlsKCAmeExhc3RFeGVjdXRpb25UaW1lLCB4RGVsYXlQZXJpb2QgKTsNCi0NCi0JCS8qIENoZWNrIGFsbCB0aGUgZGVtbyB0YXNrcyAob3RoZXIgdGhhbiB0aGUgZmxhc2ggdGFza3MpIHRvIGVuc3VyZQ0KLQkJdGhhdCB0aGV5IGFyZSBhbGwgc3RpbGwgcnVubmluZywgYW5kIHRoYXQgbm9uZSBoYXZlIGRldGVjdGVkIGFuIGVycm9yLiAqLw0KLQkJaWYoIHhBcmVNYXRoc1Rhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmKCB4QXJlRHluYW1pY1ByaW9yaXR5VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmKCB4QXJlQmxvY2tpbmdRdWV1ZXNTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmICggeEFyZUJsb2NrVGltZVRlc3RUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQ0KLQkJaWYgKCB4QXJlR2VuZXJpY1F1ZXVlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmICggeEFyZVJlY3Vyc2l2ZU11dGV4VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmKCB4SXNDcmVhdGVUYXNrU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeEFyZVNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeEFyZVRpbWVyRGVtb1Rhc2tzU3RpbGxSdW5uaW5nKCAoIFRpY2tUeXBlX3QgKSBtYWluTk9fRVJST1JfQ0hFQ0tfVEFTS19QRVJJT0QgKSAhPSBwZFBBU1MgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmKCB4QXJlQ291bnRpbmdTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQ0KLQkJaWYoIHhJc1F1ZXVlT3ZlcndyaXRlVGFza1N0aWxsUnVubmluZygpICE9IHBkUEFTUyApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQ0KLQkJI2lmIG1haW5JTkNMVURFX0ZBVF9TTF9ERU1PID09IDANCi0JCXsNCi0JCQlpZiggeEFyZUNvbVRlc3RUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCQkJew0KLQkJCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQkJfQ0KLQkJfQ0KLQkJI2VuZGlmDQotDQotCQkvKiBDaGVjayB0aGF0IHRoZSByZWdpc3RlciB0ZXN0IDEgdGFzayBpcyBzdGlsbCBydW5uaW5nLiAqLw0KLQkJaWYoIHVsTGFzdFJlZ1Rlc3QxVmFsdWUgPT0gdWxSZWdUZXN0MUxvb3BDb3VudGVyICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotCQl1bExhc3RSZWdUZXN0MVZhbHVlID0gdWxSZWdUZXN0MUxvb3BDb3VudGVyOw0KLQ0KLQkJLyogQ2hlY2sgdGhhdCB0aGUgcmVnaXN0ZXIgdGVzdCAyIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCi0JCWlmKCB1bExhc3RSZWdUZXN0MlZhbHVlID09IHVsUmVnVGVzdDJMb29wQ291bnRlciApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQkJdWxMYXN0UmVnVGVzdDJWYWx1ZSA9IHVsUmVnVGVzdDJMb29wQ291bnRlcjsNCi0NCi0JCS8qIFRvZ2dsZSB0aGUgY2hlY2sgTEVEIHRvIGdpdmUgYW4gaW5kaWNhdGlvbiBvZiB0aGUgc3lzdGVtIHN0YXR1cy4gIElmDQotCQl0aGUgTEVEIHRvZ2dsZXMgZXZlcnkgbWFpbk5PX0VSUk9SX0NIRUNLX1RBU0tfUEVSSU9EIG1pbGxpc2Vjb25kcyB0aGVuDQotCQlldmVyeXRoaW5nIGlzIG9rLiAgQSBmYXN0ZXIgdG9nZ2xlIGluZGljYXRlcyBhbiBlcnJvci4gKi8NCi0JCXZQYXJUZXN0VG9nZ2xlTEVEKCBtYWluQ0hFQ0tfTEVEICk7DQotDQotCQlpZiggdWxFcnJvckZvdW5kICE9IHBkRkFMU0UgKQ0KLQkJew0KLQkJCS8qIEFuIGVycm9yIGhhcyBiZWVuIGRldGVjdGVkIGluIG9uZSBvZiB0aGUgdGFza3MgLSBmbGFzaCB0aGUgTEVEDQotCQkJYXQgYSBoaWdoZXIgZnJlcXVlbmN5IHRvIGdpdmUgdmlzaWJsZSBmZWVkYmFjayB0aGF0IHNvbWV0aGluZyBoYXMNCi0JCQlnb25lIHdyb25nIChpdCBtaWdodCBqdXN0IGJlIHRoYXQgdGhlIGxvb3AgYmFjayBjb25uZWN0b3IgcmVxdWlyZWQNCi0JCQlieSB0aGUgY29tdGVzdCB0YXNrcyBoYXMgbm90IGJlZW4gZml0dGVkKS4gKi8NCi0JCQl4RGVsYXlQZXJpb2QgPSBtYWluRVJST1JfQ0hFQ0tfVEFTS19QRVJJT0Q7DQotCQl9DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UmVnVGVzdFRhc2tFbnRyeTEoIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLQkvKiBBbHRob3VnaCB0aGUgcmVndGVzdCB0YXNrIGlzIHdyaXR0ZW4gaW4gYXNzZW1ibGVyLCBpdHMgZW50cnkgcG9pbnQgaXMNCi0Jd3JpdHRlbiBpbiBDIGZvciBjb252ZW5pZW5jZSBvZiBjaGVja2luZyB0aGUgdGFzayBwYXJhbWV0ZXIgaXMgYmVpbmcgcGFzc2VkDQotCWluIGNvcnJlY3RseS4gKi8NCi0JaWYoIHB2UGFyYW1ldGVycyA9PSBtYWluUkVHX1RFU1RfVEFTS18xX1BBUkFNRVRFUiApDQotCXsNCi0JCS8qIFRoZSByZWcgdGVzdCB0YXNrIGFsc28gdGVzdHMgdGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4gIFRhc2tzDQotCQl0aGF0IHVzZSB0aGUgZmxvYXRpbmcgcG9pbnQgdW5pdCBtdXN0IGNhbGwgdlBvcnRUYXNrVXNlc0ZQVSgpIGJlZm9yZQ0KLQkJYW55IGZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9ucyBhcmUgZXhlY3V0ZWQuICovDQotCQl2UG9ydFRhc2tVc2VzRlBVKCk7DQotDQotCQkvKiBTdGFydCB0aGUgcGFydCBvZiB0aGUgdGVzdCB0aGF0IGlzIHdyaXR0ZW4gaW4gYXNzZW1ibGVyLiAqLw0KLQkJdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24oKTsNCi0JfQ0KLQ0KLQkvKiBUaGUgZm9sbG93aW5nIGxpbmUgd2lsbCBvbmx5IGV4ZWN1dGUgaWYgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGZvdW5kIHRvDQotCWJlIGluY29ycmVjdC4gIFRoZSBjaGVjayB0YXNrIHdpbGwgZGV0ZWN0IHRoYXQgdGhlIHJlZ3Rlc3QgbG9vcCBjb3VudGVyIGlzDQotCW5vdCBiZWluZyBpbmNyZW1lbnRlZCBhbmQgZmxhZyBhbiBlcnJvci4gKi8NCi0JdlRhc2tEZWxldGUoIE5VTEwgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UmVnVGVzdFRhc2tFbnRyeTIoIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLQkvKiBBbHRob3VnaCB0aGUgcmVndGVzdCB0YXNrIGlzIHdyaXR0ZW4gaW4gYXNzZW1ibGVyLCBpdHMgZW50cnkgcG9pbnQgaXMNCi0Jd3JpdHRlbiBpbiBDIGZvciBjb252ZW5pZW5jZSBvZiBjaGVja2luZyB0aGUgdGFzayBwYXJhbWV0ZXIgaXMgYmVpbmcgcGFzc2VkDQotCWluIGNvcnJlY3RseS4gKi8NCi0JaWYoIHB2UGFyYW1ldGVycyA9PSBtYWluUkVHX1RFU1RfVEFTS18yX1BBUkFNRVRFUiApDQotCXsNCi0JCS8qIFRoZSByZWcgdGVzdCB0YXNrIGFsc28gdGVzdHMgdGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4gIFRhc2tzDQotCQl0aGF0IHVzZSB0aGUgZmxvYXRpbmcgcG9pbnQgdW5pdCBtdXN0IGNhbGwgdlBvcnRUYXNrVXNlc0ZQVSgpIGJlZm9yZQ0KLQkJYW55IGZsb2F0aW5nIHBvaW50IGluc3RydWN0aW9ucyBhcmUgZXhlY3V0ZWQuICovDQotCQl2UG9ydFRhc2tVc2VzRlBVKCk7DQotDQotCQkvKiBTdGFydCB0aGUgcGFydCBvZiB0aGUgdGVzdCB0aGF0IGlzIHdyaXR0ZW4gaW4gYXNzZW1ibGVyLiAqLw0KLQkJdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24oKTsNCi0JfQ0KLQ0KLQkvKiBUaGUgZm9sbG93aW5nIGxpbmUgd2lsbCBvbmx5IGV4ZWN1dGUgaWYgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGZvdW5kIHRvDQotCWJlIGluY29ycmVjdC4gIFRoZSBjaGVjayB0YXNrIHdpbGwgZGV0ZWN0IHRoYXQgdGhlIHJlZ3Rlc3QgbG9vcCBjb3VudGVyIGlzDQotCW5vdCBiZWluZyBpbmNyZW1lbnRlZCBhbmQgZmxhZyBhbiBlcnJvci4gKi8NCi0JdlRhc2tEZWxldGUoIE5VTEwgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9yZWdfdGVzdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9yZWdfdGVzdC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmY0ODUzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vcmVnX3Rlc3QucworKysgL2Rldi9udWxsCkBAIC0xLDY3MCArMCwwIEBACi07LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOyAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotOyAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLTsgICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi07ICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLTsgICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotOyAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotOyAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi07ICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsqLw0KLQ0KLQlFWFBPUlQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCi0JRVhQT1JUIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQotDQotCTsgVGhpcyBmaWxlIGlzIGJ1aWx0IHdpdGggSUFSIGFuZCBBUk0gY29tcGlsZXJzLiAgV2hlbiB0aGUgQVJNIGNvbXBpbGVyDQotCTsgaXMgdXNlZCB0aGUgY29tcGlsZXIgb3B0aW9ucyBtdXN0IGRlZmluZSBfX0lBU01BUk1fXyBhcyAwIHVzaW5nIHRoZQ0KLQk7IC0tcHJlZGVmaW5lICJfX0lBU01BUk1fXyBTRVRBIDAiIGNvbW1hbmQgbGluZSBvcHRpb24uICBXaGVuIGNvbXBpbGluZw0KLQk7IHdpdGggSUFSIF9fSUFTTUFSTV9fIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIDEgc28gbm8gYWRkaXRpb25hbCBhc3NlbWJsZXINCi0JOyBvcHRpb25zIGFyZSByZXF1aXJlZC4NCi0JaWYgX19JQVNNQVJNX18gPT0gMQ0KLQkJOyBTeW50YXggZm9yIElBUiBjb21waWxlci4NCi0JCVNFQ1RJT04gLnRleHQ6Q09ERTpST09UKDIpDQotCWVsc2UNCi0JCTsgU3ludGF4IGZvciBBUk0gY29tcGlsZXIuDQotCQlBUkVBIFJlZ1Rlc3QsIENPREUsIFJFQURPTkxZDQotCWVuZGlmDQotCUFSTQ0KLQ0KLQk7IFRoaXMgZnVuY3Rpb24gaXMgZXhwbGFpbmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIG1haW4tZnVsbC5jLg0KLXZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQotDQotCVBSRVNFUlZFOA0KLQlJTVBPUlQgdWxSZWdUZXN0MUxvb3BDb3VudGVyDQotDQotCTsgRmlsbCBlYWNoIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciB3aXRoIGEga25vd24gdmFsdWUuDQotCW1vdgkJcjAsICAjMHhGRg0KLQltb3YJCXIxLCAgIzB4MTENCi0JbW92CQlyMiwgICMweDIyDQotCW1vdgkJcjMsICAjMHgzMw0KLQltb3YgICAgIHI0LCAgIzB4NDQNCi0JbW92ICAgICByNSwgICMweDU1DQotCW1vdiAgICAgcjYsICAjMHg2Ng0KLQltb3YgICAgIHI3LCAgIzB4NzcNCi0JbW92ICAgICByOCwgICMweDg4DQotCW1vdiAgICAgcjksICAjMHg5OQ0KLQltb3YgICAgIHIxMCwgIzB4QUENCi0JbW92ICAgICByMTEsICMweEJCDQotCW1vdiAgICAgcjEyLCAjMHhDQw0KLQltb3YJCXIxNCwgIzB4RUUNCi0NCi0JOyBGaWxsIGVhY2ggRlBVIHJlZ2lzdGVyIHdpdGggYSBrbm93biB2YWx1ZS4NCi0Jdm1vdiAJZDAsIHIwLCByMQ0KLQl2bW92IAlkMSwgcjIsIHIzDQotCXZtb3YgCWQyLCByNCwgcjUNCi0Jdm1vdiAJZDMsIHI2LCByNw0KLQl2bW92IAlkNCwgcjgsIHI5DQotCXZtb3YgCWQ1LCByMTAsIHIxMQ0KLQl2bW92IAlkNiwgcjAsIHIxDQotCXZtb3YgCWQ3LCByMiwgcjMNCi0Jdm1vdiAJZDgsIHI0LCByNQ0KLQl2bW92IAlkOSwgcjYsIHI3DQotCXZtb3YgCWQxMCwgcjgsIHI5DQotCXZtb3YgCWQxMSwgcjEwLCByMTENCi0Jdm1vdiAJZDEyLCByMCwgcjENCi0Jdm1vdiAJZDEzLCByMiwgcjMNCi0Jdm1vdiAJZDE0LCByNCwgcjUNCi0Jdm1vdiAJZDE1LCByNiwgcjcNCi0NCi0Jdm1vdiAJZDE2LCByMCwgcjENCi0Jdm1vdiAJZDE3LCByMiwgcjMNCi0Jdm1vdiAJZDE4LCByNCwgcjUNCi0Jdm1vdiAJZDE5LCByNiwgcjcNCi0Jdm1vdiAJZDIwLCByOCwgcjkNCi0Jdm1vdiAJZDIxLCByMTAsIHIxMQ0KLQl2bW92IAlkMjIsIHIwLCByMQ0KLQl2bW92IAlkMjMsIHIyLCByMw0KLQl2bW92IAlkMjQsIHI0LCByNQ0KLQl2bW92IAlkMjUsIHI2LCByNw0KLQl2bW92IAlkMjYsIHI4LCByOQ0KLQl2bW92IAlkMjcsIHIxMCwgcjExDQotCXZtb3YgCWQyOCwgcjAsIHIxDQotCXZtb3YgCWQyOSwgcjIsIHIzDQotCXZtb3YgCWQzMCwgcjQsIHI1DQotCXZtb3YgCWQzMSwgcjYsIHI3DQotDQotCTsgTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KLQk7IGV4cGVjdGVkIHZhbHVlLg0KLXJlZzFfbG9vcA0KLQk7IFlpZWxkIHRvIGluY3JlYXNlIHRlc3QgY292ZXJhZ2UNCi0Jc3ZjIDANCi0NCi0JOyBDaGVjayBhbGwgdGhlIFZGUCByZWdpc3RlcnMgc3RpbGwgY29udGFpbiB0aGUgdmFsdWVzIHNldCBhYm92ZS4NCi0JOyBGaXJzdCBzYXZlIHJlZ2lzdGVycyB0aGF0IGFyZSBjbG9iYmVyZWQgYnkgdGhlIHRlc3QuDQotCXB1c2ggeyByMC1yMSB9DQotDQotCXZtb3YgCXIwLCByMSwgZDANCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxDQotCWNtcCAJcjAsICMweDIyDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMg0KLQljbXAgCXIwLCAjMHg0NA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDMNCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ0DQotCWNtcCAJcjAsICMweDg4DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg5OQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkNQ0KLQljbXAgCXIwLCAjMHhBQQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4QkINCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDYNCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ3DQotCWNtcCAJcjAsICMweDIyDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkOA0KLQljbXAgCXIwLCAjMHg0NA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDkNCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxMA0KLQljbXAgCXIwLCAjMHg4OA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDExDQotCWNtcCAJcjAsICMweEFBDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTINCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxMw0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE0DQotCWNtcCAJcjAsICMweDQ0DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTUNCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQ0KLQl2bW92IAlyMCwgcjEsIGQxNg0KLQljbXAgCXIwLCAjMHhGRg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE3DQotCWNtcCAJcjAsICMweDIyDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTgNCi0JY21wIAlyMCwgIzB4NDQNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxOQ0KLQljbXAgCXIwLCAjMHg2Ng0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDIwDQotCWNtcCAJcjAsICMweDg4DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg5OQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjENCi0JY21wIAlyMCwgIzB4QUENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweEJCDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMg0KLQljbXAgCXIwLCAjMHhGRg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDIzDQotCWNtcCAJcjAsICMweDIyDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjQNCi0JY21wIAlyMCwgIzB4NDQNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyNQ0KLQljbXAgCXIwLCAjMHg2Ng0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI2DQotCWNtcCAJcjAsICMweDg4DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg5OQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjcNCi0JY21wIAlyMCwgIzB4QUENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweEJCDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyOA0KLQljbXAgCXIwLCAjMHhGRg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI5DQotCWNtcCAJcjAsICMweDIyDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMzANCi0JY21wIAlyMCwgIzB4NDQNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQzMQ0KLQljbXAgCXIwLCAjMHg2Ng0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotDQotCTsgUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHRoYXQgd2VyZSBjbG9iYmVyZWQgYnkgdGhlIHRlc3QuDQotCXBvcCAJe3IwLXIxfQ0KLQ0KLQk7IFZGUCByZWdpc3RlciB0ZXN0IHBhc3NlZC4gIEp1bXAgdG8gdGhlIGNvcmUgcmVnaXN0ZXIgdGVzdC4NCi0JYiAJCXJlZzFfbG9vcGZfcGFzcw0KLQ0KLXJlZzFfZXJyb3JfbG9vcGYNCi0JOyBJZiB0aGlzIGxpbmUgaXMgaGl0IHRoZW4gYSBWRlAgcmVnaXN0ZXIgdmFsdWUgd2FzIGZvdW5kIHRvIGJlDQotCTsgaW5jb3JyZWN0Lg0KLQliIHJlZzFfZXJyb3JfbG9vcGYNCi0NCi1yZWcxX2xvb3BmX3Bhc3MNCi0NCi0JOyBUZXN0IGVhY2ggZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVyIHRvIGNoZWNrIHRoYXQgaXQgc3RpbGwgY29udGFpbnMgdGhlDQotCTsgZXhwZWN0ZWQga25vd24gdmFsdWUsIGp1bXBpbmcgdG8gcmVnMV9lcnJvcl9sb29wIGlmIGFueSByZWdpc3RlciBjb250YWlucw0KLQk7IGFuIHVuZXhwZWN0ZWQgdmFsdWUuDQotCWNtcAkJcjAsICMweEZGDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjEsICMweDExDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjIsICMweDIyDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjMsICMweDMzDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjQsICMweDQ0DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjUsICMweDU1DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjYsICMweDY2DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjcsICMweDc3DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjgsICMweDg4DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjksICMweDk5DQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjEwLCAjMHhBQQ0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIxMSwgIzB4QkINCi0JYm5lCQlyZWcxX2Vycm9yX2xvb3ANCi0JY21wCQlyMTIsICMweENDDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjE0LCAjMHhFRQ0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQ0KLQk7IEV2ZXJ5dGhpbmcgcGFzc2VkLCBpbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlci4NCi0JcHVzaCB7IHIwLXIxIH0NCi0JbGRyCXIwLCA9dWxSZWdUZXN0MUxvb3BDb3VudGVyDQotCWxkciByMSwgW3IwXQ0KLQlhZGRzIHIxLCByMSwgIzENCi0Jc3RyIHIxLCBbcjBdDQotCXBvcCB7IHIwLXIxIH0NCi0NCi0JOyBTdGFydCBhZ2Fpbi4NCi0JYiByZWcxX2xvb3ANCi0NCi1yZWcxX2Vycm9yX2xvb3ANCi0JOyBJZiB0aGlzIGxpbmUgaXMgaGl0IHRoZW4gdGhlcmUgd2FzIGFuIGVycm9yIGluIGEgY29yZSByZWdpc3RlciB2YWx1ZS4NCi0JOyBUaGUgbG9vcCBlbnN1cmVzIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nLg0KLQliIHJlZzFfZXJyb3JfbG9vcA0KLQlub3ANCi0NCi07LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCi0NCi0JUFJFU0VSVkU4DQotCUlNUE9SVCB1bFJlZ1Rlc3QyTG9vcENvdW50ZXINCi0NCi0JOyBQdXQgYSBrbm93biB2YWx1ZSBpbiBlYWNoIHJlZ2lzdGVyLg0KLQltb3YJCXIwLCAgIzB4RkYwMDAwMDANCi0JbW92CQlyMSwgICMweDExMDAwMDAwDQotCW1vdgkJcjIsICAjMHgyMjAwMDAwMA0KLQltb3YJCXIzLCAgIzB4MzMwMDAwMDANCi0JbW92ICAgICByNCwgICMweDQ0MDAwMDAwDQotCW1vdiAgICAgcjUsICAjMHg1NTAwMDAwMA0KLQltb3YgICAgIHI2LCAgIzB4NjYwMDAwMDANCi0JbW92ICAgICByNywgICMweDc3MDAwMDAwDQotCW1vdiAgICAgcjgsICAjMHg4ODAwMDAwMA0KLQltb3YgICAgIHI5LCAgIzB4OTkwMDAwMDANCi0JbW92ICAgICByMTAsICMweEFBMDAwMDAwDQotCW1vdiAgICAgcjExLCAjMHhCQjAwMDAwMA0KLQltb3YgICAgIHIxMiwgIzB4Q0MwMDAwMDANCi0JbW92ICAgICByMTQsICMweEVFMDAwMDAwDQotDQotCTsgTGlrZXdpc2UgdGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycw0KLQl2bW92IAlkMCwgcjAsIHIxDQotCXZtb3YgCWQxLCByMiwgcjMNCi0Jdm1vdiAJZDIsIHI0LCByNQ0KLQl2bW92IAlkMywgcjYsIHI3DQotCXZtb3YgCWQ0LCByOCwgcjkNCi0Jdm1vdiAJZDUsIHIxMCwgcjExDQotCXZtb3YgCWQ2LCByMCwgcjENCi0Jdm1vdiAJZDcsIHIyLCByMw0KLQl2bW92IAlkOCwgcjQsIHI1DQotCXZtb3YgCWQ5LCByNiwgcjcNCi0Jdm1vdiAJZDEwLCByOCwgcjkNCi0Jdm1vdiAJZDExLCByMTAsIHIxMQ0KLQl2bW92IAlkMTIsIHIwLCByMQ0KLQl2bW92IAlkMTMsIHIyLCByMw0KLQl2bW92IAlkMTQsIHI0LCByNQ0KLQl2bW92IAlkMTUsIHI2LCByNw0KLQ0KLQl2bW92IAlkMTYsIHIwLCByMQ0KLQl2bW92IAlkMTcsIHIyLCByMw0KLQl2bW92IAlkMTgsIHI0LCByNQ0KLQl2bW92IAlkMTksIHI2LCByNw0KLQl2bW92IAlkMjAsIHI4LCByOQ0KLQl2bW92IAlkMjEsIHIxMCwgcjExDQotCXZtb3YgCWQyMiwgcjAsIHIxDQotCXZtb3YgCWQyMywgcjIsIHIzDQotCXZtb3YgCWQyNCwgcjQsIHI1DQotCXZtb3YgCWQyNSwgcjYsIHI3DQotCXZtb3YgCWQyNiwgcjgsIHI5DQotCXZtb3YgCWQyNywgcjEwLCByMTENCi0Jdm1vdiAJZDI4LCByMCwgcjENCi0Jdm1vdiAJZDI5LCByMiwgcjMNCi0Jdm1vdiAJZDMwLCByNCwgcjUNCi0Jdm1vdiAJZDMxLCByNiwgcjcNCi0NCi0JOyBMb29wLCBjaGVja2luZyBlYWNoIGl0ZXJhdGlvbiB0aGF0IGVhY2ggcmVnaXN0ZXIgc3RpbGwgY29udGFpbnMgdGhlDQotCTsgZXhwZWN0ZWQgdmFsdWUuDQotcmVnMl9sb29wDQotCTsgQ2hlY2sgYWxsIHRoZSBWRlAgcmVnaXN0ZXJzIHN0aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBzZXQgYWJvdmUuDQotCTsgRmlyc3Qgc2F2ZSByZWdpc3RlcnMgdGhhdCBhcmUgY2xvYmJlcmVkIGJ5IHRoZSB0ZXN0Lg0KLQlwdXNoIAl7IHIwLXIxIH0NCi0NCi0Jdm1vdiAJcjAsIHIxLCBkMA0KLQljbXAgCXIwLCAjMHhGRjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTEwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDENCi0JY21wIAlyMCwgIzB4MjIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyDQotCWNtcCAJcjAsICMweDQ0MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMw0KLQljbXAgCXIwLCAjMHg2NjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDQNCi0JY21wIAlyMCwgIzB4ODgwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDk5MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ1DQotCWNtcCAJcjAsICMweEFBMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkNg0KLQljbXAgCXIwLCAjMHhGRjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTEwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDcNCi0JY21wIAlyMCwgIzB4MjIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ4DQotCWNtcCAJcjAsICMweDQ0MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkOQ0KLQljbXAgCXIwLCAjMHg2NjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDEwDQotCWNtcCAJcjAsICMweDg4MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg5OTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTENCi0JY21wIAlyMCwgIzB4QUEwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweEJCMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxMg0KLQljbXAgCXIwLCAjMHhGRjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MTEwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YJcjAsIHIxLCBkMTMNCi0JY21wIAlyMCwgIzB4MjIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxNA0KLQljbXAgCXIwLCAjMHg0NDAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE1DQotCWNtcCAJcjAsICMweDY2MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3NzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0NCi0Jdm1vdiAJcjAsIHIxLCBkMTYNCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxNw0KLQljbXAgCXIwLCAjMHgyMjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE4DQotCWNtcCAJcjAsICMweDQ0MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTkNCi0JY21wIAlyMCwgIzB4NjYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMA0KLQljbXAgCXIwLCAjMHg4ODAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDIxDQotCWNtcCAJcjAsICMweEFBMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjINCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMw0KLQljbXAgCXIwLCAjMHgyMjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI0DQotCWNtcCAJcjAsICMweDQ0MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjUNCi0JY21wIAlyMCwgIzB4NjYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyNg0KLQljbXAgCXIwLCAjMHg4ODAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI3DQotCWNtcCAJcjAsICMweEFBMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjgNCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92CXIwLCByMSwgZDI5DQotCWNtcCAJcjAsICMweDIyMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMzANCi0JY21wIAlyMCwgIzB4NDQwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQzMQ0KLQljbXAgCXIwLCAjMHg2NjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotDQotCTsgUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHRoYXQgd2VyZSBjbG9iYmVyZWQgYnkgdGhlIHRlc3QuDQotCXBvcCAJe3IwLXIxfQ0KLQ0KLQk7IFZGUCByZWdpc3RlciB0ZXN0IHBhc3NlZC4gIEp1bXAgdG8gdGhlIGNvcmUgcmVnaXN0ZXIgdGVzdC4NCi0JYiAJCXJlZzJfbG9vcGZfcGFzcw0KLQ0KLXJlZzJfZXJyb3JfbG9vcGYNCi0JOyBJZiB0aGlzIGxpbmUgaXMgaGl0IHRoZW4gYSBWRlAgcmVnaXN0ZXIgdmFsdWUgd2FzIGZvdW5kIHRvIGJlDQotCTsgaW5jb3JyZWN0Lg0KLQliIAkJcmVnMl9lcnJvcl9sb29wZg0KLQ0KLXJlZzJfbG9vcGZfcGFzcw0KLQ0KLQljbXAJCXIwLCAjMHhGRjAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXIxLCAjMHgxMTAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXIyLCAjMHgyMjAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXIzLCAjMHgzMzAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI0LCAjMHg0NDAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI1LCAjMHg1NTAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI2LCAjMHg2NjAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI3LCAjMHg3NzAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI4LCAjMHg4ODAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXI5LCAjMHg5OTAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXIxMCwgIzB4QUEwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyMTEsICMweEJCMDAwMDAwDQotCWJuZQkJcmVnMl9lcnJvcl9sb29wDQotCWNtcAkJcjEyLCAjMHhDQzAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAgICAgIHIxNCwgIzB4RUUwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0NCi0JOyBFdmVyeXRoaW5nIHBhc3NlZCwgaW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIuDQotCXB1c2ggCXsgcjAtcjEgfQ0KLQlsZHIJCXIwLCA9dWxSZWdUZXN0Mkxvb3BDb3VudGVyDQotCWxkciAJcjEsIFtyMF0NCi0JYWRkcyAJcjEsIHIxLCAjMQ0KLQlzdHIgCXIxLCBbcjBdDQotCXBvcCAJeyByMC1yMSB9DQotDQotCTsgU3RhcnQgYWdhaW4uDQotCWIgCQlyZWcyX2xvb3ANCi0NCi1yZWcyX2Vycm9yX2xvb3ANCi0JOyBJZiB0aGlzIGxpbmUgaXMgaGl0IHRoZW4gdGhlcmUgd2FzIGFuIGVycm9yIGluIGEgY29yZSByZWdpc3RlciB2YWx1ZS4NCi0JOyBUaGUgbG9vcCBlbnN1cmVzIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nLg0KLQliIAkJcmVnMl9lcnJvcl9sb29wDQotCW5vcA0KLQ0KLQ0KLQlFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9zZXJpYWwuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkODA2ZC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL3NlcmlhbC5jCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qDQotCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMi4NCi0NCi0JKioqTm90ZSoqKiBUaGlzIGV4YW1wbGUgdXNlcyBxdWV1ZXMgdG8gc2VuZCBlYWNoIGNoYXJhY3RlciBpbnRvIGFuIGludGVycnVwdA0KLQlzZXJ2aWNlIHJvdXRpbmUgYW5kIG91dCBvZiBhbiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGluZGl2aWR1YWxseS4gIFRoaXMNCi0JaXMgZG9uZSB0byBkZW1vbnN0cmF0ZSBxdWV1ZXMgYmVpbmcgdXNlZCBpbiBhbiBpbnRlcnJ1cHQsIGFuZCB0byBkZWxpYmVyYXRlbHkNCi0JbG9hZCB0aGUgc3lzdGVtIHRvIHRlc3QgdGhlIEZyZWVSVE9TIHBvcnQuICBJdCBpcyAqTk9UKiBtZWFudCB0byBiZSBhbg0KLQlleGFtcGxlIG9mIGFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbi4gIEFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBzaG91bGQNCi0JdXNlIHRoZSBETUEsIGFuZCBvbmx5IHVzZSBGcmVlUlRPUyBBUEkgZnVuY3Rpb25zIHdoZW4gZW5vdWdoIGhhcyBiZWVuDQotCXJlY2VpdmVkIHRvIHdhcnJhbnQgYSB0YXNrIGJlaW5nIHVuYmxvY2tlZCB0byBwcm9jZXNzIHRoZSBkYXRhLg0KLSovDQotDQotLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0jaW5jbHVkZSAiY29tdGVzdDIuaCINCi0NCi0vKiBEcml2ZXIgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2X2Rydi5oIg0KLSNpbmNsdWRlICJkZXZkcnZfc2NpZl91YXJ0LmgiDQotI2luY2x1ZGUgInNpb19jaGFyLmgiDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotI2luY2x1ZGUgImRldmRydl9pbnRjLmgiDQotDQotLyogRGVtbyBhcHBsaWNhdGlvbiBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAic2VyaWFsLmgiDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogTWlzYyBkZWZpbmVzLiAqLw0KLSNkZWZpbmUgc2VySU5WQUxJRF9RVUVVRQkJCQkoICggUXVldWVIYW5kbGVfdCApIDAgKQ0KLSNkZWZpbmUgc2VyTk9fQkxPQ0sJCQkJCQkoICggVGlja1R5cGVfdCApIDAgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIEhhbmRsZXJzIGZvciB0aGUgUnggYW5kIFR4IGludGVycnVwdHMgcmVzcGVjdGl2ZWx5LiAqLw0KLXN0YXRpYyB2b2lkIHBydlJYSV9IYW5kbGVyKCB1aW50MzJfdCB1bFVudXNlZFBhcmFtZXRlciApOw0KLXN0YXRpYyB2b2lkIHBydlRYSV9IYW5kbGVyKCB1aW50MzJfdCB1bFVudXNlZFBhcmFtZXRlciApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIFRoZSBxdWV1ZSB1c2VkIHRvIGhvbGQgcmVjZWl2ZWQgY2hhcmFjdGVycy4gKi8NCi1zdGF0aWMgUXVldWVIYW5kbGVfdCB4UnhlZENoYXJzOw0KLXN0YXRpYyBRdWV1ZUhhbmRsZV90IHhDaGFyc0ZvclR4Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogU2VlIHRoZSBzZXJpYWwyLmggaGVhZGVyIGZpbGUuDQotICovDQoteENvbVBvcnRIYW5kbGUgeFNlcmlhbFBvcnRJbml0TWluaW1hbCggdW5zaWduZWQgbG9uZyB1bFdhbnRlZEJhdWQsIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgdXhRdWV1ZUxlbmd0aCApDQotew0KLQkvKiBCYXVkIGlzIHNldCBpbiBJb0luaXRTY2lmMigpLCBjYWxsZWQgaW4gcHJ2U2V0dXBIYXJkd2FyZSgpIGluIG1haW4uYy4gKi8NCi0JKCB2b2lkICkgdWxXYW50ZWRCYXVkOw0KLQ0KLQkvKiBDcmVhdGUgdGhlIHF1ZXVlcyB1c2VkIHRvIGhvbGQgUngvVHggY2hhcmFjdGVycy4gIE5vdGUgdGhlIGNvbW1lbnRzIGF0DQotCXRoZSB0b3Agb2YgdGhpcyBmaWxlIHJlZ2FyZGluZyB0aGUgdXNlIG9mIHF1ZXVlcyBpbiB0aGlzIG1hbm5lci4gKi8NCi0JeFJ4ZWRDaGFycyA9IHhRdWV1ZUNyZWF0ZSggdXhRdWV1ZUxlbmd0aCwgKCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFICkgc2l6ZW9mKCBjaGFyICkgKTsNCi0JeENoYXJzRm9yVHggPSB4UXVldWVDcmVhdGUoIHV4UXVldWVMZW5ndGggKyAxLCAoIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgKSBzaXplb2YoIGNoYXIgKSApOw0KLQ0KLQkvKiBJZiB0aGUgcXVldWVzIHdlcmUgY3JlYXRlZCBjb3JyZWN0bHkgdGhlbiBzZXR1cCB0aGUgc2VyaWFsIHBvcnQNCi0JaGFyZHdhcmUuICovDQotCWlmKCAoIHhSeGVkQ2hhcnMgIT0gc2VySU5WQUxJRF9RVUVVRSApICYmICggeENoYXJzRm9yVHggIT0gc2VySU5WQUxJRF9RVUVVRSApICkNCi0Jew0KLQkgICAgLyogUmVnaXN0ZXIgUlhJIGFuZCBUWEkgaGFuZGxlcnMuICovDQotCSAgICBSX0lOVENfUmVnaXN0SW50RnVuYyggSU5UQ19JRF9SWEkyLCBwcnZSWElfSGFuZGxlciApOw0KLQkgICAgUl9JTlRDX1JlZ2lzdEludEZ1bmMoIElOVENfSURfVFhJMiwgcHJ2VFhJX0hhbmRsZXIgKTsNCi0NCi0JICAgIC8qIFNldCBib3RoIGludGVycnVwdHMgc3VjaCB0aGF0IHRoZXkgY2FuIGludGVycnVwdCB0aGUgdGljay4gIEFsc28NCi0JICAgIHNldCB0aGUgUnggaW50ZXJydXB0IGFib3ZlIHRoZSBUeCBpbnRlcnJ1cHQgaW4gdGhlIGhvcGUgdGhhdCAoZm9yIHRlc3QNCi0JICAgIHB1cnBvc2VzKSB0aGUgVHggaW50ZXJydXB0IHdpbGwgaW50ZXJydXB0IHRoZSBSeCBpbnRlcnJ1cHQuICovDQotCSAgICBSX0lOVENfU2V0UHJpb3JpdHkoIElOVENfSURfUlhJMiwgY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSApOw0KLQkgICAgUl9JTlRDX1NldFByaW9yaXR5KCBJTlRDX0lEX1RYSTIsICggY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSArIDEgKSApOw0KLQ0KLQkgICAgLyogVGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gdGVzdCBpbnRlcnJ1cHQgaW50ZXJhY3Rpb25zLCBhbmQgbm90DQotCSAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQuICBUaGVyZWZvcmUgc2V0IHRoZSBSWCB0cmlnZ2VyIGxldmVsIHRvIDEuICovDQotCSAgICBTQ0lGMi5TQ0ZDUi5CSVQuUlRSRyA9IDA7DQotCSAgICBTQ0lGMi5TQ0ZDUi5CSVQuVFRSRyA9IDM7DQotDQotCQkvKiBFbmFibGUgUnggaW50ZXJydXB0LiAgVHggaW50ZXJydXB0IHdpbGwgYmUgZW5hYmxlZCB3aGVuIGEgVHggaXMNCi0JCXBlcmZvcm1lZC4gKi8NCi0JCVNDSUYyLlNDU0NSLkJJVC5SSUUgPSAxOw0KLQkJUl9JTlRDX0VuYWJsZSggSU5UQ19JRF9SWEkyICk7DQotCQlSX0lOVENfRW5hYmxlKCBJTlRDX0lEX1RYSTIgKTsNCi0JfQ0KLQ0KLQkvKiBUaGlzIGRlbW8gZmlsZSBvbmx5IHN1cHBvcnRzIGEgc2luZ2xlIHBvcnQgYnV0IHdlIGhhdmUgdG8gcmV0dXJuDQotCXNvbWV0aGluZyB0byBjb21wbHkgd2l0aCB0aGUgc3RhbmRhcmQgZGVtbyBoZWFkZXIgZmlsZS4gKi8NCi0JcmV0dXJuICggeENvbVBvcnRIYW5kbGUgKSAwOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zaWduZWQgcG9ydEJBU0VfVFlQRSB4U2VyaWFsR2V0Q2hhciggeENvbVBvcnRIYW5kbGUgcHhQb3J0LCBzaWduZWQgY2hhciAqcGNSeGVkQ2hhciwgVGlja1R5cGVfdCB4QmxvY2tUaW1lICkNCi17DQotCS8qIFRoZSBwb3J0IGhhbmRsZSBpcyBub3QgcmVxdWlyZWQgYXMgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBvbmUgcG9ydC4gKi8NCi0JKCB2b2lkICkgcHhQb3J0Ow0KLQ0KLQkvKiBHZXQgdGhlIG5leHQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlci4gIFJldHVybiBmYWxzZSBpZiBubyBjaGFyYWN0ZXJzDQotCWFyZSBhdmFpbGFibGUsIG9yIGFycml2ZSBiZWZvcmUgeEJsb2NrVGltZSBleHBpcmVzLiAqLw0KLQlpZiggeFF1ZXVlUmVjZWl2ZSggeFJ4ZWRDaGFycywgcGNSeGVkQ2hhciwgeEJsb2NrVGltZSApICkNCi0Jew0KLQkJcmV0dXJuIHBkVFJVRTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXJldHVybiBwZEZBTFNFOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlNlcmlhbFB1dFN0cmluZyggeENvbVBvcnRIYW5kbGUgcHhQb3J0LCBjb25zdCBzaWduZWQgY2hhciAqIGNvbnN0IHBjU3RyaW5nLCB1bnNpZ25lZCBzaG9ydCB1c1N0cmluZ0xlbmd0aCApDQotew0KLWNoYXIgKnB4TmV4dDsNCi0NCi0JLyogQSBjb3VwbGUgb2YgcGFyYW1ldGVycyB0aGF0IHRoaXMgcG9ydCBkb2VzIG5vdCB1c2UuICovDQotCSggdm9pZCApIHVzU3RyaW5nTGVuZ3RoOw0KLQkoIHZvaWQgKSBweFBvcnQ7DQotDQotCS8qIFNlbmQgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywgb25lIGF0IGEgdGltZS4gKi8NCi0JcHhOZXh0ID0gKCBjaGFyICogKSBwY1N0cmluZzsNCi0Jd2hpbGUoICpweE5leHQgKQ0KLQl7DQotCQl4U2VyaWFsUHV0Q2hhciggcHhQb3J0LCAqcHhOZXh0LCBwb3J0TUFYX0RFTEFZICk7DQotCQlweE5leHQrKzsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zaWduZWQgcG9ydEJBU0VfVFlQRSB4U2VyaWFsUHV0Q2hhciggeENvbVBvcnRIYW5kbGUgcHhQb3J0LCBzaWduZWQgY2hhciBjT3V0Q2hhciwgVGlja1R5cGVfdCB4QmxvY2tUaW1lICkNCi17DQotc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFJldHVybjsNCi0NCi0JLyogTm90ZSB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgcmVnYXJkaW5nIHRoZSB1c2Ugb2YgcXVldWVzIGluDQotCXRoaXMgbWFubmVyLiAqLw0KLQlpZiggeFF1ZXVlU2VuZCggeENoYXJzRm9yVHgsICZjT3V0Q2hhciwgeEJsb2NrVGltZSApID09IHBkUEFTUyApDQotCXsNCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotDQotCQkvKiBFbmFibGUgdGhlIGludGVycnVwdCB3aGljaCB3aWxsIHJlbW92ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlDQotCQlxdWV1ZS4gKi8NCi0JCVNDSUYyLlNDU0NSLkJJVC5USUUgPSAxOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJeFJldHVybiA9IHBkRkFJTDsNCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2U2VyaWFsQ2xvc2UoIHhDb21Qb3J0SGFuZGxlIHhQb3J0ICkNCi17DQotCS8qIE5vdCBzdXBwb3J0ZWQgYXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBkZW1vIGFwcGxpY2F0aW9uLiAqLw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZSWElfSGFuZGxlciggdWludDMyX3QgdWxVbnVzZWRQYXJhbWV0ZXIgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjUnhlZEJ5dGU7DQotbG9uZyBsSGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOw0KLQ0KLQkvKiBUaGUgcGFyYW1ldGVyIGlzIG5vdCB1c2VkLiAgSXQgaXMgb25seSBwcmVzZW50IGJlY2F1c2UgUmVuZXNhcyBkcml2ZXJzDQotCWFyZSB1c2VkIHRvIGluc3RhbGwgdGhlIGludGVycnVwdCBoYW5kbGVycywgYW5kIHRoZSBkcml2ZXJzIGV4cGVjdCB0aGUNCi0JcGFyYW1ldGVyIHRvIGJlIHByZXNlbnQuICovDQotCSggdm9pZCApIHVsVW51c2VkUGFyYW1ldGVyOw0KLQ0KLQkvKiBOb3RlIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZSByZWdhcmRpbmcgdGhlIHVzZSBvZiBxdWV1ZXMgaW4NCi0JdGhpcyBtYW5uZXIuICovDQotCXdoaWxlKCAoIFNDSUYyLlNDRkRSLldPUkQgJiAweDFGICkgIT0gMCApDQotCXsNCi0JCXVjUnhlZEJ5dGUgPSBTQ0lGMi5TQ0ZSRFIuQllURTsNCi0JCXhRdWV1ZVNlbmRGcm9tSVNSKCB4UnhlZENoYXJzLCAmdWNSeGVkQnl0ZSwgJmxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KLQl9DQotDQotCVNDSUYyLlNDRlNSLkJJVC5SREYgPSAwOw0KLQ0KLQkvKiBJZiBzZW5kaW5nIHRvIHRoZSBxdWV1ZSBoYXMgY2F1c2VkIGEgdGFzayB0byB1bmJsb2NrLCBhbmQgdGhlIHVuYmxvY2tlZA0KLQl0YXNrIGhhcyBhIHByaW9yaXR5IGVxdWFsIHRvIG9yIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrICh0aGUNCi0JdGFzayB0aGlzIElTUiBpbnRlcnJ1cHRlZCksIHRoZW4gbEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdpbGwgaGF2ZQ0KLQlhdXRvbWF0aWNhbGx5IGJlZW4gc2V0IHRvIHBkVFJVRSB3aXRoaW4gdGhlIHF1ZXVlIHNlbmQgZnVuY3Rpb24uDQotCXBvcnRZSUVMRF9GUk9NX0lTUigpIHdpbGwgdGhlbiBlbnN1cmUgdGhhdCB0aGlzIElTUiByZXR1cm5zCWRpcmVjdGx5IHRvIHRoZQ0KLQloaWdoZXIgcHJpb3JpdHkgdW5ibG9ja2VkIHRhc2suICovDQotCXBvcnRZSUVMRF9GUk9NX0lTUiggbEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlRYSV9IYW5kbGVyKCB1aW50MzJfdCB1bFVudXNlZFBhcmFtZXRlciApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNCeXRlOw0KLWxvbmcgbEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsNCi0NCi0JLyogVGhlIHBhcmFtZXRlciBpcyBub3QgdXNlZC4gIEl0IGlzIG9ubHkgcHJlc2VudCBiZWNhdXNlIFJlbmVzYXMgZHJpdmVycw0KLQlhcmUgdXNlZCB0byBpbnN0YWxsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCB0aGUgZHJpdmVycyBleHBlY3QgdGhlDQotCXBhcmFtZXRlciB0byBiZSBwcmVzZW50LiAqLw0KLQkoIHZvaWQgKSB1bFVudXNlZFBhcmFtZXRlcjsNCi0NCi0JLyogTm90ZSB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgcmVnYXJkaW5nIHRoZSB1c2Ugb2YgcXVldWVzIGluDQotCXRoaXMgbWFubmVyLiAqLw0KLQlpZiggeFF1ZXVlUmVjZWl2ZUZyb21JU1IoIHhDaGFyc0ZvclR4LCAmdWNCeXRlLCAmbEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgPT0gcGRQQVNTICkNCi0Jew0KLQkJU0NJRjIuU0NGVERSLkJZVEUgPSB1Y0J5dGU7DQotDQotCQkvKiBDbGVhciBURFJFIGFuZCBURU5EIGZsYWcgKi8NCi0JICAgIFNDSUYyLlNDRlNSLldPUkQgJj0gfjB4MDA2MDsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCS8qIE5vIG1vcmUgY2hhcmFjdGVycy4gIERpc2FibGUgdGhlIGludGVycnVwdC4gKi8NCi0JCVNDSUYyLlNDU0NSLkJJVC5USUUgPSAwOw0KLQl9DQotDQotCS8qIElmIHJlY2VpdmluZyBmcm9tIHRoZSBxdWV1ZSBoYXMgY2F1c2VkIGEgdGFzayB0byB1bmJsb2NrLCBhbmQgdGhlDQotCXVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGVxdWFsIHRvIG9yIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgcnVubmluZw0KLQl0YXNrICh0aGUgdGFzayB0aGlzIElTUiBpbnRlcnJ1cHRlZCksIHRoZW4gbEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdpbGwNCi0JaGF2ZSBhdXRvbWF0aWNhbGx5IGJlZW4gc2V0IHRvIHBkVFJVRSB3aXRoaW4gdGhlIHF1ZXVlIHJlY2VpdmUgZnVuY3Rpb24uDQotCXBvcnRZSUVMRF9GUk9NX0lTUigpIHdpbGwgdGhlbiBlbnN1cmUgdGhhdCB0aGlzIElTUiByZXR1cm5zCWRpcmVjdGx5IHRvIHRoZQ0KLQloaWdoZXIgcHJpb3JpdHkgdW5ibG9ja2VkIHRhc2suICovDQotCXBvcnRZSUVMRF9GUk9NX0lTUiggbEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9MRURzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvTEVEcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Mjg3NWUyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9MRURzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIGFuIExFRC4NCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBEZW1vIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJwYXJ0ZXN0LmgiDQotDQotLyogSGFyZHdhcmUgc3BlY2lmaWNzLiAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlBhclRlc3RJbml0aWFsaXNlKCB2b2lkICkNCi17DQotCS8qIEluaXRpYWxpc2UgUDdfMDEgZm9yIExFRDAuICovDQotCVBPUlQ3LlBNQ24uQklULlBNQ24xID0gMDsNCi0JUE9SVDcuUG4uQklULlBuMSA9IDE7DQotCVBPUlQ3LlBNbi5CSVQuUE1uMSA9IDA7DQotCVBPUlQ3LlBJUENuLkJJVC5QSVBDbjEgPSAwOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZQYXJUZXN0VG9nZ2xlTEVEKCB1bnNpZ25lZCBsb25nIHVsTEVEICkNCi17DQotCWlmKCB1bExFRCA9PSAwICkNCi0Jew0KLQkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQotCQl7DQotCQkJUE9SVDcuUG4uQklULlBuMSA9ICFQT1JUNy5Qbi5CSVQuUG4xOw0KLQkJfQ0KLQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZQYXJUZXN0U2V0TEVEKCB1bnNpZ25lZCBsb25nIHVsTEVELCBzaWduZWQgbG9uZyB4VmFsdWUgKQ0KLXsNCi0JLyogQSBoaWdoIHZhbHVlIHR1cm5zIHRoZSBMRUQgb2ZmLiAqLw0KLQl4VmFsdWUgPSAheFZhbHVlOw0KLQ0KLQlpZiggdWxMRUQgPT0gMCApDQotCXsNCi0JCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KLQkJew0KLQkJCVBPUlQ3LlBuLkJJVC5QbjEgPSB4VmFsdWU7DQotCQl9DQotCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3MvcGVyaXBoZXJhbF9pbml0X2Jhc2ljLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BlcmlwaGVyYWxfaW5pdF9iYXNpYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjdkY2RhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3MvcGVyaXBoZXJhbF9pbml0X2Jhc2ljLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogcGVyaXBoZXJhbF9pbml0X2Jhc2ljLmMNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOg0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSW5pdGlhbGl6ZSBwZXJpcGhlcmFsIGZ1bmN0aW9uIHNhbXBsZQ0KLSogT3BlcmF0aW9uICAgIDoNCi0qIExpbWl0YXRpb25zICA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfY29tbW9uLmgiICAgICAgLyogQ29tbW9uIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfQkFTSUNfU0VUVVAiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX0JBU0lDX1NFVFVQIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX0JBU0lDX1NFVFVQIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfQkFTSUNfU0VUVVAiDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFBlcmlwaGVyYWxfQmFzaWNJbml0KHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9pZCBDUEdfSW5pdCh2b2lkKTsNCi1zdGF0aWMgdm9pZCBDUzBfUE9SVEluaXQodm9pZCk7DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUGVyaXBoZXJhbEJhc2ljSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qICAgICAgICAgICAgICA6DQotKiAgICAgICAgICAgICAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFBlcmlwaGVyYWxfQmFzaWNJbml0KHZvaWQpDQotew0KLSAgICAvKiA9PT09IENsb2NrIFB1bHNlIEdlbmVyYXRvciAoQ1BHKSBzZXR0aW5nID09PT0qLw0KLSAgICBDUEdfSW5pdCgpOw0KLQ0KLSAgICAvKiA9PT09IFBvcnQgc2V0dGluZyA9PT09ICovDQotICAgIENTMF9QT1JUSW5pdCgpOw0KLQ0KLSAgICAvKiA9PT09IEJ1cyBTdGF0ZSBDb250cm9sbGVyIChCU0MpIHNldHRpbmcgPT09PSAqLw0KLSAgICBSX0JTQ19Jbml0KCh1aW50OF90KShCU0NfQVJFQV9DUzAgfCBCU0NfQVJFQV9DUzEpKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogQ1BHX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIENQR19Jbml0KHZvaWQpDQotew0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCBkdW1teV9idWZfMzJiOw0KLSAgICB2b2xhdGlsZSB1aW50OF90ICBkdW1teV9idWZfOGI7DQotDQotICAgICoodm9sYXRpbGUgdWludDMyX3QgKikoMHgzZmZmZmY4MCkgPSAweDAwMDAwMDAxOw0KLSAgICBkdW1teV9idWZfMzJiID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgweDNmZmZmZjgwKTsNCi0NCi0gICAgLyogPT09PSBDUEcgU2V0dGluZ3MgPT09PSAqLw0KLSAgICBDUEcuRlJRQ1IuV09SRCAgPSAweDEwMzV1OyAgICAgIC8qIFBMTCh4MzApLCBJOkc6QjpQMTpQMCA9IDMwOjIwOjEwOjU6NS8yICovDQotICAgIENQRy5GUlFDUjIuV09SRCA9IDB4MDAwMXU7ICAgICAgLyogQ0tJTzpPdXRwdXQgYXQgdGltZSB1c3VhbGx5LCAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPdXRwdXQgd2hlbiBidXMgcmlnaHQgaXMgb3BlbmVkLCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCBhdCBzdGFuZGJ5IkwiICAgICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvY2tpbiA9IDEzLjMzTUh6LCBDS0lPID0gNjYuNjdNSHosICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJICBDbG9jayA9IDQwMC4wME1IeiwgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEcgIENsb2NrID0gMjY2LjY3TUh6LCAgICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQiAgQ2xvY2sgPSAxMzMuMzNNSHosICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQMSBDbG9jayA9ICA2Ni42N01IeiwgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFAwIENsb2NrID0gIDMzLjMzTUh6ICAgICAgICAgICAgICAgICAgICovDQotDQotICAgIC8qIC0tLS0gIFdyaXRpbmcgdG8gT24tQ2hpcCBEYXRhLVJldGVudGlvbiBSQU0gaXMgZW5hYmxlZC4gLS0tLSAqLw0KLSAgICBDUEcuU1lTQ1IzLkJZVEUgPSAweDBGdTsNCi0gICAgZHVtbXlfYnVmXzhiID0gQ1BHLlNZU0NSMy5CWVRFOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBDUzBfUE9SVEluaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIENTMF9QT1JUSW5pdCh2b2lkKQ0KLXsNCi0gICAgLyogPT09PSBCU0Mgc2V0dGluZ3MgPT09PSAqLw0KLQ0KLSAgICAvKiAtLS0tIFA5XzEgOiBBMjUgLS0tLSAqLw0KLSAgICBQT1JUOS5QTUNuLkJJVC5QTUNuMSAgICAgPSAxOw0KLSAgICBQT1JUOS5QRkNBRW4uQklULlBGQ0FFbjEgPSAwOw0KLSAgICBQT1JUOS5QRkNFbi5CSVQuUEZDRW4xICAgPSAwOw0KLSAgICBQT1JUOS5QRkNuLkJJVC5QRkNuMSAgICAgPSAwOw0KLSAgICBQT1JUOS5QSVBDbi5CSVQuUElQQ24xICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA5XzAgOiBBMjQgLS0tLSAqLw0KLSAgICBQT1JUOS5QTUNuLkJJVC5QTUNuMCAgICAgPSAxOw0KLSAgICBQT1JUOS5QRkNBRW4uQklULlBGQ0FFbjAgPSAwOw0KLSAgICBQT1JUOS5QRkNFbi5CSVQuUEZDRW4wICAgPSAwOw0KLSAgICBQT1JUOS5QRkNuLkJJVC5QRkNuMCAgICAgPSAwOw0KLSAgICBQT1JUOS5QSVBDbi5CSVQuUElQQ24wICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA4XzE1IDogQTIzIC0tLS0gKi8NCi0gICAgUE9SVDguUE1Dbi5CSVQuUE1DbjE1ICAgICA9IDE7DQotICAgIFBPUlQ4LlBGQ0FFbi5CSVQuUEZDQUVuMTUgPSAwOw0KLSAgICBQT1JUOC5QRkNFbi5CSVQuUEZDRW4xNSAgID0gMDsNCi0gICAgUE9SVDguUEZDbi5CSVQuUEZDbjE1ICAgICA9IDA7DQotICAgIFBPUlQ4LlBJUENuLkJJVC5QSVBDbjE1ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA4XzE0IDogQTIyIC0tLS0gKi8NCi0gICAgUE9SVDguUE1Dbi5CSVQuUE1DbjE0ICAgICA9IDE7DQotICAgIFBPUlQ4LlBGQ0FFbi5CSVQuUEZDQUVuMTQgPSAwOw0KLSAgICBQT1JUOC5QRkNFbi5CSVQuUEZDRW4xNCAgID0gMDsNCi0gICAgUE9SVDguUEZDbi5CSVQuUEZDbjE0ICAgICA9IDA7DQotICAgIFBPUlQ4LlBJUENuLkJJVC5QSVBDbjE0ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA4XzEzIDogQTIxIC0tLS0gKi8NCi0gICAgUE9SVDguUE1Dbi5CSVQuUE1DbjEzICAgICA9IDE7DQotICAgIFBPUlQ4LlBGQ0FFbi5CSVQuUEZDQUVuMTMgPSAwOw0KLSAgICBQT1JUOC5QRkNFbi5CSVQuUEZDRW4xMyAgID0gMDsNCi0gICAgUE9SVDguUEZDbi5CSVQuUEZDbjEzICAgICA9IDA7DQotICAgIFBPUlQ4LlBJUENuLkJJVC5QSVBDbjEzICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzYgOiBXRTAjIC8gRFFNTEwjIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjYgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW42ID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuNiAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjYgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuNiAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN184IDogUkQgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuOCAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjggPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW44ICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuOCAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ244ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzAgOiBDUzAgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuMCAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjAgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW4wICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuMCAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ24wICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFAzXzcgOiBDUzEgLS0tLSAqLw0KLSAgICBQT1JUMy5QTUNuLkJJVC5QTUNuNyAgICAgPSAxOw0KLSAgICBQT1JUMy5QRkNBRW4uQklULlBGQ0FFbjcgPSAxOw0KLSAgICBQT1JUMy5QRkNFbi5CSVQuUEZDRW43ICAgPSAxOw0KLSAgICBQT1JUMy5QRkNuLkJJVC5QRkNuNyAgICAgPSAwOw0KLSAgICBQT1JUMy5QSVBDbi5CSVQuUElQQ243ICAgPSAxOw0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3MvcG9ydF9pbml0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BvcnRfaW5pdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDU0ZWZhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3MvcG9ydF9pbml0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogcG9ydF9pbml0LmMNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOg0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSW5pdGlhbGl6ZSBwZXJpcGhlcmFsIGZ1bmN0aW9uIHNhbXBsZQ0KLSogT3BlcmF0aW9uICAgIDoNCi0qIExpbWl0YXRpb25zICA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfY29tbW9uLmgiICAgICAgIC8qIENvbW1vbiBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgInBvcnRfaW5pdC5oIg0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qIERvIG5vdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgcHJhZ21hcyB3aGVuIGNvbXBpbGluZyB3aXRoIElBUi4gKi8NCi0jaWZuZGVmIF9fSUNDQVJNX18NCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiBjb2RlICAgPSAiQ09ERV9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcndkYXRhID0gIkRBVEFfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gemlkYXRhID0gIkJTU19SRVNFVCINCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBQT1JUX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiAgICAgICAgICAgICAgOg0KLSogICAgICAgICAgICAgIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBQT1JUX0luaXQodm9pZCkNCi17DQotICAgIC8qID09PT0gQlNDIHNldHRpbmdzID09PT0gKi8NCi0NCi0gICAgLyogLS0tLSBQN18yIDogUkFTIyAtLS0tICovDQotICAgIFBPUlQ3LlBNQ24uQklULlBNQ24yICAgICA9IDE7DQotICAgIFBPUlQ3LlBGQ0FFbi5CSVQuUEZDQUVuMiA9IDA7DQotICAgIFBPUlQ3LlBGQ0VuLkJJVC5QRkNFbjIgICA9IDA7DQotICAgIFBPUlQ3LlBGQ24uQklULlBGQ24yICAgICA9IDA7DQotICAgIFBPUlQ3LlBJUENuLkJJVC5QSVBDbjIgICA9IDE7DQotDQotICAgIC8qIC0tLS0gUDdfMyA6IENBUyMgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuMyAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjMgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW4zICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuMyAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ24zICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzQgOiBDS0UgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuNCAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjQgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW40ICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuNCAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ240ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzUgOiBSRC9XUiMgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuNSAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjUgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW41ICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuNSAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ241ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzcgOiBEUU1MVSMgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuNyAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjcgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW43ICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuNyAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ243ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA1XzggOiBDUzIgLS0tLSAqLw0KLSAgICBQT1JUNS5QTUNuLkJJVC5QTUNuOCAgICAgPSAxOw0KLSAgICBQT1JUNS5QRkNBRW4uQklULlBGQ0FFbjggPSAxOw0KLSAgICBQT1JUNS5QRkNFbi5CSVQuUEZDRW44ICAgPSAwOw0KLSAgICBQT1JUNS5QRkNuLkJJVC5QRkNuOCAgICAgPSAxOw0KLSAgICBQT1JUNS5QSVBDbi5CSVQuUElQQ244ICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzEgOiBDUzMgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuMSAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjEgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW4xICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuMSAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ24xICAgPSAxOw0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3Mvc2lvY2hhci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy9zaW9jaGFyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNmZmZTUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy9zaW9jaGFyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc2lvY2hhci5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBTZXJpYWwgSS9PIGNoYXJhY3RlciBSL1cgKFNDSUYgMi1jaCBwcm9jZXNzKQ0KLSogT3BlcmF0aW9uICAgIDogDQotKiBMaW1pdGF0aW9ucyAgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9zY2lmX3VhcnQuaCIgICAgICAgLyogVUFSVCBEcml2ZXIgaGVhZGVyICovDQotI2luY2x1ZGUgInNpb19jaGFyLmgiDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogSW9Jbml0U2NpZjINCi0qIERlc2NyaXB0aW9uICA6IFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgU0NJRiBjaGFubmVsIDIgYXMgVUFSVCBtb2RlLg0KLSogICAgICAgICAgICAgIDogVGhlIHRyYW5zbWl0IGFuZCB0aGUgcmVjZWl2ZSBvZiBTQ0lGIGNoYW5uZWwgMiBhcmUgZW5hYmxlZC4NCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBJb0luaXRTY2lmMih2b2lkKQ0KLXsNCi0gICAgLyogUDE9NjYuNjdNSHogQ0tTPTAgU0NCUlI9MTcgQml0IHJhdGUgZXJyb3I9MC40NiUgPT4gQmF1ZCByYXRlPTExNTIwMGJwcyAqLw0KLSAgICBSX1NDSUZfVUFSVF9Jbml0KERFVkRSVl9DSF8yLCBTQ0lGX1VBUlRfTU9ERV9SVywgMCwgMTcpOw0KLQ0KLSAgICAvKiA9PT0gUE9SVCA9PT09ICovDQotICAgIC8qIC0tLS0gUDNfMCA6IFR4RDIgLS0tLSAqLw0KLSAgICBQT1JUMy5QTUNuLkJJVC5QTUNuMCAgICAgPSAxOw0KLSAgICBQT1JUMy5QRkNBRW4uQklULlBGQ0FFbjAgPSAxOw0KLSAgICBQT1JUMy5QRkNFbi5CSVQuUEZDRW4wICAgPSAwOw0KLSAgICBQT1JUMy5QRkNuLkJJVC5QRkNuMCAgICAgPSAxOw0KLSAgICBQT1JUMy5QSVBDbi5CSVQuUElQQ24wICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFAzXzIgOiBSeEQyIC0tLS0gKi8NCi0gICAgUE9SVDMuUE1Dbi5CSVQuUE1DbjIgICAgID0gMTsNCi0gICAgUE9SVDMuUEZDQUVuLkJJVC5QRkNBRW4yID0gMDsNCi0gICAgUE9SVDMuUEZDRW4uQklULlBGQ0VuMiAgID0gMTsNCi0gICAgUE9SVDMuUEZDbi5CSVQuUEZDbjIgICAgID0gMTsNCi0gICAgUE9SVDMuUElQQ24uQklULlBJUENuMiAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBTZXJpYWwgY29udHJvbCByZWdpc3RlciAoU0NTQ1JpKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgU0NJRjIuU0NTQ1IuV09SRCA9IDB4MDAzMDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NJRjIgdHJhbnNtaXR0aW5nIGFuZCByZWNlaXZpbmcgb3BlcmF0aW9ucyBhcmUgZW5hYmxlZCAqLw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBJb0dldGNoYXINCi0qIERlc2NyaXB0aW9uICA6IE9uZSBjaGFyYWN0ZXIgaXMgcmVjZWl2ZWQgZnJvbSBTQ0lGMiwgYW5kIGl0J3MgZGF0YSBpcyByZXR1cm5lZC4NCi0qICAgICAgICAgICAgICA6IFRoaXMgZnVuY3Rpb24ga2VlcHMgd2FpdGluZyB1bnRpbCBpdCBjYW4gb2J0YWluIHRoZSByZWNlaXZpbmcgZGF0YS4NCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IENoYXJhY3RlciB0byByZWNlaXZlIChCeXRlKS4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotY2hhcl90IElvR2V0Y2hhcih2b2lkKQ0KLXsNCi0gICAgY2hhcl90IGRhdGE7DQotDQotICAgIC8qIENvbmZpcm1pbmcgcmVjZWl2ZSBlcnJvcihFUixEUixCUkspICovDQotICAgIGlmIChTQ0lGMi5TQ0ZTUi5XT1JEICYgMHgwOUMpDQotICAgIHsNCi0gICAgICAgIC8qIERldGVjdCByZWNlaXZlIGVycm9yICovDQotICAgICAgICBTQ0lGMi5TQ1NDUi5CSVQuUkUgICAgPSAwOyAgICAgIC8qIERpc2FibGUgcmVjZXB0aW9uICAgICAgICAgICAgICovDQotICAgICAgICBTQ0lGMi5TQ0ZDUi5CSVQuUkZSU1QgPSAxOyAgICAgIC8qIFJlc2V0IHJlY2VpdmluZyBGSUZPICAgICAgICAgICovDQotICAgICAgICBTQ0lGMi5TQ0ZDUi5CSVQuUkZSU1QgPSAwOyAgICAgIC8qIENsZWFyaW5nIEZJRk8gcmVjZXB0aW9uIHJlc2V0ICovDQotICAgICAgICBTQ0lGMi5TQ0ZTUi5XT1JEICAgICAmPSB+MHg5QzsgIC8qIEVycm9yIGJpdCBjbGVhciAgICAgICAgICAgICAgICovDQotICAgICAgICBTQ0lGMi5TQ1NDUi5CSVQuUkUgICAgPSAxOyAgICAgIC8qIEVuYWJsZSByZWNlcHRpb24gICAgICAgICAgICAgICovDQotICAgICAgICByZXR1cm4gMDsNCi0gICAgfQ0KLQ0KLSAgICAvKiBJcyB0aGVyZSByZWNlaXZlIEZJRk8gZGF0YT8gKi8NCi0gICAgd2hpbGUgKDAgPT0gU0NJRjIuU0NGU1IuQklULlJERikNCi0gICAgew0KLSAgICAgICAgLyogV0FJVCAqLw0KLSAgICB9DQotDQotICAgIC8qIFJlYWQgcmVjZWl2ZSBkYXRhICovDQotICAgIGRhdGEgPSBTQ0lGMi5TQ0ZSRFIuQllURTsNCi0gICAgLyogQ2xlYXIgUkRGICovDQotICAgIFNDSUYyLlNDRlNSLkJJVC5SREYgPSAwOw0KLQ0KLSAgICAvKiBJcyBpdCBvdmVyZmxvd2VkPyAqLw0KLSAgICBpZiAoMSA9PSBTQ0lGMi5TQ0xTUi5CSVQuT1JFUikNCi0gICAgew0KLSAgICAgICAgU0NJRjIuU0NMU1IuQklULk9SRVIgPSAwOyAgICAgICAvKiBPUkVSIGNsZWFyICovDQotICAgIH0NCi0NCi0gICAgcmV0dXJuIGRhdGE7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IElvUHV0Y2hhcg0KLSogRGVzY3JpcHRpb24gIDogQ2hhcmFjdGVyICJidWZmZXIiIGlzIG91dHB1dCB0byBTQ0lGMi4NCi0qICAgICAgICAgICAgICA6IFRoaXMgZnVuY3Rpb24ga2VlcHMgd2FpdGluZyB1bnRpbCBpdCBiZWNvbWVzIHRoZSB0cmFuc21pc3Npb24NCi0qICAgICAgICAgICAgICA6IGVuYWJsZWQgc3RhdGUuDQotKiBBcmd1bWVudHMgICAgOiBjaGFyX3QgYnVmZmVyIDogY2hhcmFjdGVyIHRvIG91dHB1dA0KLSogUmV0dXJuIFZhbHVlIDogTm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIElvUHV0Y2hhcihjaGFyX3QgYnVmZmVyKQ0KLXsNCi0gICAgLyogQ2hlY2sgaWYgaXQgaXMgcG9zc2libGUgdG8gdHJhbnNtaXQgKFRERkUgZmxhZykgKi8NCi0gICAgd2hpbGUgKDAgPT0gU0NJRjIuU0NGU1IuQklULlRERkUpDQotICAgIHsNCi0gICAgICAgIC8qIFdhaXQgKi8NCi0gICAgfQ0KLQ0KLSAgICAvKiBXcml0ZSB0aGUgcmVjZWl2aW5nIGRhdGEgaW4gVERSICovDQotICAgIFNDSUYyLlNDRlREUi5CWVRFID0gYnVmZmVyOw0KLQ0KLSAgICAvKiBDbGVhciBURFJFIGFuZCBURU5EIGZsYWcgKi8NCi0gICAgU0NJRjIuU0NGU1IuV09SRCAmPSB+MHgwMDYwOw0KLX0NCi0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3Mvc3RiX2luaXQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3Mvc3RiX2luaXQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQzYjZmYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3N0Yl9pbml0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc3RiX2luaXQuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6DQotKiBIL1cgUGxhdGZvcm0gOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBJbml0aWFsaXplIHBlcmlwaGVyYWwgZnVuY3Rpb24gc2FtcGxlDQotKiBPcGVyYXRpb24gICAgOg0KLSogTGltaXRhdGlvbnMgIDoNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldmRydl9jb21tb24uaCIgICAgICAgLyogQ29tbW9uIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAic3RiX2luaXQuaCINCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfUkVTRVQiDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogU3RiSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qICAgICAgICAgICAgICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgU1RCX0luaXQodm9pZCkNCi17DQotICAgIHZvbGF0aWxlIHVpbnQ4X3QgZHVtbXlfYnVmOw0KLQ0KLSAgICAvKiAtLS0tIFRoZSBjbG9jayBvZiBhbGwgbW9kdWxlcyBpcyBwZXJtaXR0ZWQuIC0tLS0gKi8NCi0gICAgQ1BHLlNUQkNSMi5CWVRFICA9IDB4NkF1OyAgICAgICAvKiBQb3J0IGxldmVsIGlzIGtlZXAgaW4gc3RhbmRieSBtb2RlLCBbMV0sIFsxXSwgWzBdLCAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbMV0sIFswXSwgWzFdLCBDb3JlU2lnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSMi5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSMy5CWVRFICA9IDB4MDB1OyAgICAgICAvKiBJRUJ1cywgSXJEQSwgTElOMCwgTElOMSwgTVRVMiwgUlNDQU4yLCBbMF0sIFBXTSAgICAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSMy5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSNC5CWVRFICA9IDB4MDB1OyAgICAgICAvKiBTQ0lGMCwgU0NJRjEsIFNDSUYyLCBTQ0lGMywgU0NJRjQsIFNDSUY1LCBTQ0lGNiwgU0NJRjcgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSNC5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSNS5CWVRFICA9IDB4MDB1OyAgICAgICAvKiBTQ0lNMCwgU0NJTTEsIFNERzAsIFNERzEsIFNERzIsIFNERzMsIE9TVE0wLCBPU1RNMSAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSNS5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSNi5CWVRFICA9IDB4MDB1OyAgICAgICAvKiBBL0QsIENFVSwgRElTQ09NMCwgRElTQ09NMSwgRFJDMCwgRFJDMSwgSkNVLCBSVENsb2NrICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSNi5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSNy5CWVRFICA9IDB4MjR1OyAgICAgICAvKiBEVkRFQzAsIERWREVDMSwgWzFdLCBFVEhFUiwgRkxDVEwsIFsxXSwgVVNCMCwgVVNCMSAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSNy5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSOC5CWVRFICA9IDB4MDV1OyAgICAgICAvKiBJTVItTFMyMCwgSU1SLUxTMjEsIElNUi1MU0QsIE1NQ0lGLCBNT1NUNTAsIFsxXSwgU0NVWCwgWzFdICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSOC5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSOS5CWVRFICA9IDB4MDB1OyAgICAgICAvKiBJMkMwLCBJMkMxLCBJMkMyLCBJMkMzLCBTUElCU0MwLCBTUElCU0MxLCBWREM1MCwgVkRDNTEgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSOS5CWVRFOyAgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSMTAuQllURSA9IDB4MDB1OyAgICAgICAvKiBSU1BJMCwgUlNQSTEsIFJTUEkyLCBSU1BJMywgUlNQSTQsIENELVJPTURFQywgUlNQRElGLCBSR1BWRyAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSMTAuQllURTsgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSMTEuQllURSA9IDB4QzB1OyAgICAgICAvKiBbMV0sIFsxXSwgU1NJRjAsIFNTSUYxLCBTU0lGMiwgU1NJRjMsIFNTSUY0LCBTU0lGNSAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSMTEuQllURTsgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgQ1BHLlNUQkNSMTIuQllURSA9IDB4RjB1OyAgICAgICAvKiBbMV0sIFsxXSwgWzFdLCBbMV0sIFNESEkwMCwgU0RISTAxLCBTREhJMTAsIFNESEkxMSAgICAgICAgICAgKi8NCi0gICAgZHVtbXlfYnVmID0gQ1BHLlNUQkNSMTIuQllURTsgICAvKiAoRHVtbXkgcmVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi19DQotDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3R0Yl9pbml0LnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3R0Yl9pbml0LnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYjg4NTQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy90dGJfaW5pdC5zCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIERJU0NMQUlNRVINCi07KiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi07KiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLTsqIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLTsqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi07KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi07KiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLTsqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotOyogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLTsqIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi07KiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi07KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLTsqIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLTsqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLTsqIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi07KiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLTsqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotOyogZm9sbG93aW5nIGxpbms6DQotOyogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotOyoNCi07KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBGaWxlIE5hbWUgICAgIDogdHRiX2luaXQucw0KLTsqIFZlcnNpb24gICAgICAgOiAwLjAxDQotOyogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLTsqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLTsqICAgICAgICAgICAgICAgOiANCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBUVEIgaW5pdGlhbGl6ZQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOyAtLS0tIFBhcmFtZXRlciBzZXR0aW5nIHRvIGxldmVsMSBkZXNjcmlwdG9yIChiaXRzIDE5OjApIC0tLS0NCi07IHNldHRpbmcgZm9yIFN0cm9uZ2x5LW9yZGVyZWQgbWVtb3J5DQotVFRCX1BBUkFfU1RSR0xZCQkJCUVRVQkJMl8wMDAwMDAwMDAwMDAwMDAwMDAwMDExMDExMTEwMDAxMA0KLTsgc2V0dGluZyBmb3IgT3V0ZXIgYW5kIGlubmVyIG5vdCBjYWNoZSBub3JtYWwgbWVtb3J5DQotVFRCX1BBUkFfTk9STUFMX05PVF9DQUNIRQlFUVUJCTJfMDAwMDAwMDAwMDAwMDAwMDAwMDExMTAxMTExMDAwMTANCi07IHNldHRpbmcgZm9yIE91dGVyIGFuZCBpbm5lciB3cml0ZSBiYWNrLCB3cml0ZSBhbGxvY2F0ZSBub3JtYWwgbWVtb3J5IChDYWNoZWFibGUpDQotVFRCX1BBUkFfTk9STUFMX0NBQ0hFCQlFUVUJCTJfMDAwMDAwMDAwMDAwMDAwMDAwMDExMTAxMTExMDExMTANCi07IHNldHRpbmcgZm9yIE91dGVyIGFuZCBpbm5lciB3cml0ZSBiYWNrLCB3cml0ZSBhbGxvY2F0ZSBub3JtYWwgbWVtb3J5IChDYWNoZWFibGUpDQotO1RUQl9QQVJBX05PUk1BTF9DQUNIRQkJRVFVCQkyXzAwMDAwMDAwMDAwMDAwMDAwMTAxMTEwMTExMTAwMTEwDQotDQotOyAtLS0tIE1lbW9yeSBhcmVhIHNpemUgKE1CKSAtLS0tDQotTV9TSVpFX05PUgkJRVFVCQkxMjgJCQkJOyBbQXJlYTAwXSBDUzAsIENTMSBhcmVhIChmb3IgTk9SIGZsYXNoKQ0KLU1fU0laRV9TRFJBTQlFUVUJCTEyOAkJCQk7IFtBcmVhMDFdIENTMiwgQ1MzIGFyZWEgKGZvciBTRFJBTSkNCi1NX1NJWkVfQ1M0NQkJRVFVCQkxMjgJCQkJOyBbQXJlYTAyXSBDUzQsIENTNSBhcmVhDQotTV9TSVpFX1NQSQkJRVFVCQkxMjgJCQkJOyBbQXJlYTAzXSBTUEksIFNQMiBhcmVhIChmb3IgU2VyaWFsIGZsYXNoKQ0KLU1fU0laRV9SQU0JCUVRVQkJMTAJCQkJOyBbQXJlYTA0XSBJbnRlcm5hbCBSQU0NCi1NX1NJWkVfSU9fMQkJRVFVCQk1MDIJCQkJOyBbQXJlYTA1XSBJL08gYXJlYSAxDQotTV9TSVpFX05PUl9NCUVRVQkJMTI4CQkJCTsgW0FyZWEwNl0gQ1MwLCBDUzEgYXJlYSAoZm9yIE5PUiBmbGFzaCkgKG1pcnJvcikNCi1NX1NJWkVfU0RSQU1fTQlFUVUJCTEyOAkJCQk7IFtBcmVhMDddIENTMiwgQ1MzIGFyZWEgKGZvciBTRFJBTSkgKG1pcnJvcikNCi1NX1NJWkVfQ1M0NV9NCUVRVQkJMTI4CQkJCTsgW0FyZWEwOF0gQ1M0LCBDUzUgYXJlYSAobWlycm9yKQ0KLU1fU0laRV9TUElfTQlFUVUJCTEyOAkJCQk7IFtBcmVhMDldIFNQSSwgU1AyIGFyZWEgKGZvciBTZXJpYWwgZmxhc2gpIChtaXJyb3IpDQotTV9TSVpFX1JBTV9NCUVRVQkJMTAJCQkJOyBbQXJlYTEwXSBJbnRlcm5hbCBSQU0gKG1pcnJvcikNCi1NX1NJWkVfSU9fMgkJRVFVCQkyNTUwCQkJOyBbQXJlYTExXSBJL08gYXJlYSAyDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgVGhpcyBjb2RlIHByb3ZpZGVzIGJhc2ljIGdsb2JhbCBlbmFibGUgZm9yIENvcnRleC1BOSBjYWNoZS4NCi07IEl0IGFsc28gZW5hYmxlcyBicmFuY2ggcHJlZGljdGlvbg0KLTsgVGhpcyBjb2RlIG11c3QgYmUgcnVuIGZyb20gYSBwcml2aWxlZ2VkIG1vZGUNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCUFSRUEgICBJTklUX1RUQiwgQ09ERSwgUkVBRE9OTFkNCi0NCi0JSU1QT1JUIHx8SW1hZ2UkJFRUQiQkWkkkJEJhc2V8fAkJOzs7IEZyb20gc2NhdHRlciBmaWxlDQotCQ0KLQlFWFBPUlQJaW5pdF9UVEINCi0NCi1pbml0X1RUQglGVU5DVElPTg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBDb3J0ZXgtQTkgTU1VIENvbmZpZ3VyYXRpb24NCi07IFNldCB0cmFuc2xhdGlvbiB0YWJsZSBiYXNlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JOzs7IENvcnRleC1BOSBzdXBwb3J0cyB0d28gdHJhbnNsYXRpb24gdGFibGVzDQotCTs7OyBDb25maWd1cmUgdHJhbnNsYXRpb24gdGFibGUgYmFzZSAoVFRCKSBjb250cm9sIHJlZ2lzdGVyIGNwMTUsYzINCi0JOzs7IHRvIGEgdmFsdWUgb2YgYWxsIHplcm9zLCBpbmRpY2F0ZXMgd2UgYXJlIHVzaW5nIFRUQiByZWdpc3RlciAwLg0KLQlNT1YgIHIwLCMweDANCi0JTUNSICBwMTUsIDAsIHIwLCBjMiwgYzAsIDIJCTs7OyBUVEJDUg0KLQ0KLQk7Ozsgd3JpdGUgdGhlIGFkZHJlc3Mgb2Ygb3VyIHBhZ2UgdGFibGUgYmFzZSB0byBUVEIgcmVnaXN0ZXIgMA0KLQlMRFIgIHIwLD18fEltYWdlJCRUVEIkJFpJJCRCYXNlfHwNCi0JTU9WICByMSwgIzB4MDgJCQkJCTs7OyBSR049YjAxICAob3V0ZXIgY2FjaGVhYmxlIHdyaXRlLWJhY2sgY2FjaGVkLCB3cml0ZSBhbGxvY2F0ZSkNCi0JCQkJCQkJCQk7OzsgUz0wICAgICAgKHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsgdG8gbm9uLXNoYXJlZCBtZW1vcnkpDQotCU9SUiAgcjEscjEsIzB4NDAJCQkJOzs7IElSR049YjAxIChpbm5lciBjYWNoZWFiaWxpdHkgZm9yIHRoZSB0cmFuc2xhdGlvbiB0YWJsZSB3YWxrIGlzIFdyaXRlLWJhY2sgV3JpdGUtYWxsb2NhdGUpDQotCU9SUiAgcjAscjAscjENCi0JTUNSICBwMTUsIDAsIHIwLCBjMiwgYzAsIDAJCTs7OyBUVEJSMA0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBQQUdFIFRBQkxFIGdlbmVyYXRpb24gDQotOyBHZW5lcmF0ZSB0aGUgcGFnZSB0YWJsZXMNCi07IEJ1aWxkIGEgZmxhdCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgdGhlIHdob2xlIGFkZHJlc3Mgc3BhY2UuDQotOyBpZTogQ3JlYXRlIDQwOTYgMU1CIHNlY3Rpb25zIGZyb20gMHgwMDB4eHh4eCB0byAweEZGRnh4eHh4DQotOyAzMSAgICAgICAgICAgICAgICAgMjAgMTkgIDE4ICAxNyAgMTYgMTUgIDE0ICAgMTIgMTEgMTAgIDkgIDggICAgIDUgICA0ICAgIDMgMiAgIDEgMA0KLTsgfHNlY3Rpb24gYmFzZSBhZGRyZXNzfCAwICAwICB8bkd8IFMgfEFQMnwgIFRFWCAgfCAgQVAgfCBQIHwgRG9tYWluIHwgWE4gfCBDIEIgfCAxIDB8DQotOw0KLTsgQml0c1szMToyMF0gICAtIFRvcCAxMiBiaXRzIG9mIFZBIGlzIHBvaW50ZXIgaW50byB0YWJsZQ0KLTsgbkdbMTddPTAgICAgICAtIE5vbiBnbG9iYWwsIGVuYWJsZXMgbWF0Y2hpbmcgYWdhaW5zdCBBU0lEIGluIHRoZSBUTEIgd2hlbiBzZXQuDQotOyBTWzE2XT0wICAgICAgIC0gSW5kaWNhdGVzIG5vcm1hbCBtZW1vcnkgaXMgc2hhcmVkIHdoZW4gc2V0Lg0KLTsgQVAyWzE1XT0wICANCi07IEFQWzExOjEwXT0xMSAgLSBDb25maWd1cmUgZm9yIGZ1bGwgcmVhZC93cml0ZSBhY2Nlc3MgaW4gYWxsIG1vZGVzDQotOyBURVhbMTQ6MTJdPTAwMA0KLTsgQ0JbMzoyXT0gMDAgICAtIFNldCBhdHRyaWJ1dGVzIHRvIFN0cm9uZ2x5LW9yZGVyZWQgbWVtb3J5Lg0KLTsgICAgICAgICAgICAgICAgIChleGNlcHQgZm9yIHRoZSBkZXNjcmlwdG9yIHdoZXJlIGNvZGUgc2VnbWVudCBpcyBiYXNlZCwgc2VlIGJlbG93KQ0KLTsgSU1QUFs5XT0wICAgICAtIElnbm9yZWQNCi07IERvbWFpbls1OjhdPTExMTEgICAtIFNldCBhbGwgcGFnZXMgdG8gdXNlIGRvbWFpbiAxNQ0KLTsgWE5bNF09MCAgICAgICAtIEV4ZWN1dGUgbmV2ZXIgZGlzYWJsZWQNCi07IEJpdHNbMTowXT0xMCAgLSBJbmRpY2F0ZSBlbnRyeSBpcyBhIDFNQiBzZWN0aW9uDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTERSICByMCw9fHxJbWFnZSQkVFRCJCRaSSQkQmFzZXx8DQotCUxEUiAgcjEsPTB4RkZGDQotCUxEUiAgcjIsPTExDQotCUxEUiAgcjMsPTANCi0JTERSCSByNCw9MA0KLQlMRFIgIHI1LD0wDQotDQotCTs7OyByMCBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgdHJhbnNsYXRpb24gdGFibGUgYmFzZQ0KLQk7OzsgcjEgaXMgbG9vcCBjb3VudGVyDQotCTs7OyByMiBpcyB0YXJnZXQgYXJlYSBjb3VudGVyIChJbml0aWFsaXplIHZhbHVlID0gTGFzdCBhcmVhIE5vLikNCi0JOzs7IHIzIGlzIGxvb3AgY291bnRlciBieSBhcmVhDQotDQotCTs7OyB1c2UgbG9vcCBjb3VudGVyIHRvIGNyZWF0ZSA0MDk2IGluZGl2aWR1YWwgdGFibGUgZW50cmllcy4NCi0JOzs7IHRoaXMgd3JpdGVzIGZyb20gYWRkcmVzcyAnSW1hZ2UkJFRUQiQkWkkkJEJhc2UnICsgDQotCTs7OyBvZmZzZXQgMHgzRkZDIGRvd24gdG8gb2Zmc2V0IDB4MCBpbiB3b3JkIHN0ZXBzICg0IGJ5dGVzKQ0KLQ0KLXNldF9tZW1fYWNjc2Vzcw0KLQlDTVAgIHIyLCAjMTENCi0JQkVRICBzZXR0aW5nX2FyZWExMQ0KLQlDTVAgIHIyLCAjMTANCi0JQkVRICBzZXR0aW5nX2FyZWExMA0KLQlDTVAgIHIyLCAjOQ0KLQlCRVEgIHNldHRpbmdfYXJlYTkNCi0JQ01QICByMiwgIzgNCi0JQkVRICBzZXR0aW5nX2FyZWE4DQotCUNNUCAgcjIsICM3DQotCUJFUSAgc2V0dGluZ19hcmVhNw0KLQlDTVAgIHIyLCAjNg0KLQlCRVEgIHNldHRpbmdfYXJlYTYNCi0JQ01QICByMiwgIzUNCi0JQkVRICBzZXR0aW5nX2FyZWE1DQotCUNNUCAgcjIsICM0DQotCUJFUSAgc2V0dGluZ19hcmVhNA0KLQlDTVAgIHIyLCAjMw0KLQlCRVEgIHNldHRpbmdfYXJlYTMNCi0JQ01QICByMiwgIzINCi0JQkVRICBzZXR0aW5nX2FyZWEyDQotCUNNUCAgcjIsICMxDQotCUJFUSAgc2V0dGluZ19hcmVhMQ0KLQlDTVAgIHIyLCAjMA0KLQlCRVEgIHNldHRpbmdfYXJlYTANCi1zZXR0aW5nX2FyZWExMQkJCQkJCTs7OyBbYXJlYTExXSBJL08gYXJlYSAyDQotCUxEUiAgcjMsID1NX1NJWkVfSU9fMg0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfU1RSR0xZCQk7OzsgCVN0cm9uZ2x5LW9yZGVyZWQNCi0JQkFMICBpbml0X2NvdW50ZXINCi1zZXR0aW5nX2FyZWExMAkJCQkJCTs7OyBbYXJlYTEwXSBJbnRlcm5hbCBSQU0gKG1pcnJvcikNCi0JTERSICByMywgPU1fU0laRV9SQU1fTQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX05PVF9DQUNIRQk7OzsgTm9ybWFsIChub3QgY2FjaGUpDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhOQkJCQkJCTs7OyBbYXJlYTA5XSBTUEksIFNQMiBhcmVhIChmb3IgU2VyaWFsIGZsYXNoKSAobWlycm9yKQ0KLQlMRFIgIHIzLCA9TV9TSVpFX1NQSV9NDQotCUxEUiAgcjQsID1UVEJfUEFSQV9OT1JNQUxfTk9UX0NBQ0hFCTs7OyBOb3JtYWwgKG5vdCBjYWNoZSkNCi0JQkFMICBpbml0X2NvdW50ZXINCi1zZXR0aW5nX2FyZWE4CQkJCQkJOzs7IFthcmVhMDhdIENTNCwgQ1M1IGFyZWEgKG1pcnJvcikNCi0JTERSICByMywgPU1fU0laRV9DUzQ1X00NCi0JTERSICByNCwgPVRUQl9QQVJBX1NUUkdMWQkJOzs7IAlTdHJvbmdseS1vcmRlcmVkDQotCUJBTCAgaW5pdF9jb3VudGVyCQ0KLXNldHRpbmdfYXJlYTcJCQkJCQk7OzsgW2FyZWEwN10gQ1MyLCBDUzMgYXJlYSAoZm9yIFNEUkFNKSAobWlycm9yKQ0KLQlMRFIgIHIzLCA9TV9TSVpFX1NEUkFNX00NCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9OT1RfQ0FDSEUJOzs7IE5vcm1hbCAobm90IGNhY2hlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLXNldHRpbmdfYXJlYTYJCQkJCQk7OzsgW2FyZWEwNl0gQ1MwLCBDUzEgYXJlYSAoZm9yIE5PUiBmbGFzaCkgKG1pcnJvcikNCi0JTERSICByMywgPU1fU0laRV9OT1JfTQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX05PVF9DQUNIRQk7OzsgTm9ybWFsIChub3QgY2FjaGUpDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhNQkJCQkJCTs7OyBbYXJlYTA1XSBJL08gYXJlYSAxDQotCUxEUiAgcjMsID1NX1NJWkVfSU9fMQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfU1RSR0xZCQk7OzsgCVN0cm9uZ2x5LW9yZGVyZWQNCi0JQkFMICBpbml0X2NvdW50ZXINCi1zZXR0aW5nX2FyZWE0CQkJCQkJOzs7IFthcmVhMDRdIEludGVybmFsIFJBTQ0KLQlMRFIgIHIzLCA9TV9TSVpFX1JBTQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX0NBQ0hFCTs7OyAJTm9ybWFsIChDYWNoZWFibGUpDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhMwkJCQkJCTs7OyBbYXJlYTAzXSBTUEksIFNQMiBhcmVhIChmb3IgU2VyaWFsIGZsYXNoKQ0KLQlMRFIgIHIzLCA9TV9TSVpFX1NQSQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX0NBQ0hFCTs7OyAJTm9ybWFsIChDYWNoZWFibGUpDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhMgkJCQkJCTs7OyBbYXJlYTAyXSBDUzQsIENTNSBhcmVhDQotCUxEUiAgcjMsID1NX1NJWkVfQ1M0NQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfU1RSR0xZCQk7OzsgCVN0cm9uZ2x5LW9yZGVyZWQNCi0JQkFMICBpbml0X2NvdW50ZXINCi1zZXR0aW5nX2FyZWExCQkJCQkJOzs7IFthcmVhMDFdIENTMiwgQ1MzIGFyZWEgKGZvciBTRFJBTSkNCi0JTERSICByMywgPU1fU0laRV9TRFJBTQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX0NBQ0hFCTs7OyAJTm9ybWFsIChDYWNoZWFibGUpDQotCUJBTCAgaW5pdF9jb3VudGVyCQ0KLXNldHRpbmdfYXJlYTAJCQkJCQk7OzsgW2FyZWEwMF0gQ1MwLCBDUzEgYXJlYSAoZm9yIE5PUiBmbGFzaCkNCi0JTERSICByMywgPU1fU0laRV9OT1INCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9DQUNIRQk7OzsgCU5vcm1hbCAoQ2FjaGVhYmxlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLWluaXRfY291bnRlcg0KLQlTVUJTIHIzLCByMywgIzEJCQkJCTs7OyBtZW1vcnkgc2l6ZSAtPiBsb29wIGNvdW50ZXIgdmFsdWUNCi13cml0ZV90dGINCi0JT1JSICByNSwgcjQsIHIxLCBMU0wjMjAJCQk7OzsgUjUgbm93IGNvbnRhaW5zIGZ1bGwgbGV2ZWwxIGRlc2NyaXB0b3IgdG8gd3JpdGUNCi0JU1RSICByNSwgW3IwLCByMSwgTFNMIzJdCQk7OzsgU3RyIHRhYmxlIGVudHJ5IGF0IFRUQiBiYXNlICsgbG9vcGNvdW50KjQNCi0JU1VCICByMSwgcjEsICMxCQkJCQk7OzsgRGVjcmVtZW50IGxvb3AgY291bnRlcg0KLQlTVUJTIHIzLCByMywgIzEJCQkJCTs7OyBEZWNyZW1lbnQgbG9vcCBjb3VudGVyIGJ5IGFyZWENCi0JQlBMICB3cml0ZV90dGINCi0JU1VCUyByMiwgcjIsICMxCQkJCQk7OzsgdGFyZ2V0IGFyZWEgY291bnRlcg0KLQlCUEwgIHNldF9tZW1fYWNjc2VzcwkJCTs7OyBUbyB0aGUgbmV4dCBhcmVhDQotDQotCUJYICAgbHINCi0NCi0JRU5ERlVOQw0KLQ0KLQ0KLQlFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2NvbW1vbi9sMV9jYWNoZV9pbml0LnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2NvbW1vbi9sMV9jYWNoZV9pbml0LnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1NzlmZGMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vbDFfY2FjaGVfaW5pdC5zCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiBsMV9jYWNoZV9pbml0LnMNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24NCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotOyogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi07KiAgICAgICAgICAgICAgIDogDQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLTsqICAgICAgICAgOiAyMy4wNS4yMDEyIDAuMDENCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBUaGlzIGNvZGUgcHJvdmlkZXMgYmFzaWMgZ2xvYmFsIGVuYWJsZSBmb3IgQ29ydGV4LUE5IGNhY2hlLg0KLTsgSXQgYWxzbyBlbmFibGVzIGJyYW5jaCBwcmVkaWN0aW9uDQotOyBUaGlzIGNvZGUgbXVzdCBiZSBydW4gZnJvbSBhIHByaXZpbGVnZWQgbW9kZQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JQVJFQSAgIElOSVRDQTlDQUNIRSwgQ09ERSwgUkVBRE9OTFkNCi0JRVhQT1JUIEwxQ2FjaGVJbml0DQotDQotTDFDYWNoZUluaXQJRlVOQ1RJT04NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbmFibGUgY2FjaGVzDQotOyBDYWNoZXMgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyOg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JOzs7IEktY2FjaGUgaXMgY29udHJvbGxlZCBieSBiaXQgMTINCi0JOzs7IEQtY2FjaGUgaXMgY29udHJvbGxlZCBieSBiaXQgMg0KLQ0KLQlNUkMgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMAkJCTs7OyBSZWFkIENQMTUgcmVnaXN0ZXIgMQ0KLQlPUlIgIHIwLCByMCwgIygweDEgPDwgMTIpCQkJOzs7IEVuYWJsZSBJIENhY2hlDQotCU9SUiAgcjAsIHIwLCAjKDB4MSA8PCAyKQkJCTs7OyBFbmFibGUgRCBDYWNoZQ0KLQlNQ1IgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMAkJCTs7OyBXcml0ZSBDUDE1IHJlZ2lzdGVyIDENCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbmFibGUgUHJvZ3JhbSBGbG93IFByZWRpY3Rpb24NCi07DQotOyBCcmFuY2ggcHJlZGljdGlvbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlcjoNCi07IFNldCBCaXQgMTEgdG8gZW5hYmxlIGJyYW5jaCBwcmVkaWN0aW9uIGFuZCByZXR1cm4gIA0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JOzs7IFR1cm5pbmcgb24gYnJhbmNoIHByZWRpY3Rpb24gcmVxdWlyZXMgYSBnZW5lcmFsIGVuYWJsZQ0KLQk7OzsgQ1AxNSwgYzEuIENvbnRyb2wgUmVnaXN0ZXINCi0NCi0JOzs7IEJpdCAxMSBbWl0gYml0IFByb2dyYW0gZmxvdyBwcmVkaWN0aW9uOg0KLQk7OzsgMCA9IFByb2dyYW0gZmxvdyBwcmVkaWN0aW9uIGRpc2FibGVkDQotCTs7OyAxID0gUHJvZ3JhbSBmbG93IHByZWRpY3Rpb24gZW5hYmxlZC4NCi0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCQk7OzsgUmVhZCBTeXN0ZW0gQ29udHJvbCBSZWdpc3Rlcg0KLQlPUlIgIHIwLCByMCwgIygweDEgPDwgMTEpDQotCU1DUiAgcDE1LCAwLCByMCwgYzEsIGMwLCAwCQkJOzs7IFdyaXRlIFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW5hYmxlIEQtc2lkZSBwcmVmZXRjaA0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JOzs7IEJpdCAyIFtEUF0gRHNpZGUgcHJlZmV0Y2g6DQotCTs7OyAwID0gRHNpZGUgcHJlZmV0Y2ggZGlzYWJsZWQNCi0JOzs7IDEgPSBEc2lkZSBwcmVmZXRjaCBlbmFibGVkLg0KLQ0KLQlNUkMgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMQkJCTs7OyBSZWFkIEF1eGlsaWFyeSBDb250cm9sIFJlZ2lzdGVyDQotCU9SUiAgcjAsIHIwLCAjKDB4MSA8PCAyKQkJCTs7OyBFbmFibGUgRHNpZGUgcHJlZmV0Y2gNCi0JTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDEJCQk7OzsgV3JpdGUgQXV4aWxpYXJ5IENvbnRyb2wgUmVnaXN0ZXINCi0NCi0JQlggICAgICAgIGxyDQotDQotCUVOREZVTkMNCi0NCi0NCi0NCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vcmVzZXRwcmcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3Jlc2V0cHJnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmRkNzUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vcmVzZXRwcmcuYworKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiByZXNldHByZy5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBTdWIgTWFpbg0KLSogT3BlcmF0aW9uICAgIDogDQotKiBMaW1pdGF0aW9ucyAgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldmRydl9jb21tb24uaCIgICAgICAvKiBDb21tb24gRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIiAgICAgICAgLyogSU5UQyBEcml2ZXIgSGVhZGVyICAgKi8NCi0jaW5jbHVkZSAicmVzZXRwcmcuaCINCi0jaW5jbHVkZSAic2lvX2NoYXIuaCINCi0jaW5jbHVkZSAic3RiX2luaXQuaCINCi0jaW5jbHVkZSAicG9ydF9pbml0LmgiDQotDQotI3ByYWdtYSBhcm0gc2VjdGlvbiBjb2RlICAgPSAiQ09ERV9SRVNFVCINCi0jcHJhZ21hIGFybSBzZWN0aW9uIHJvZGF0YSA9ICJDT05TVF9SRVNFVCINCi0jcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX1JFU0VUIg0KLSNwcmFnbWEgYXJtIHNlY3Rpb24gemlkYXRhID0gIkJTU19SRVNFVCINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotZXh0ZXJuIHZvaWQgICAgVmJhckluaXQodm9pZCk7DQotZXh0ZXJuIHZvaWQgICAgTDFDYWNoZUluaXQodm9pZCk7DQotZXh0ZXJuIGludDMyX3QgJFN1cGVyJCRtYWluKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6ICRTdWIkJG1haW4NCi0qIERlc2NyaXB0aW9uICA6IA0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCAkU3ViJCRtYWluKHZvaWQpDQotew0KLSAgICBTVEJfSW5pdCgpOw0KLQ0KLSAgICAvKiA9PT09IFBPUlQgc2V0dGluZyA9PT09ICovDQotICAgIFBPUlRfSW5pdCgpOw0KLQ0KLSAgICAvKiA9PT09IEJTQyBzZXR0aW5nID09PT0gKi8NCi0gICAgUl9CU0NfSW5pdCgodWludDhfdCkoQlNDX0FSRUFfQ1MyIHwgQlNDX0FSRUFfQ1MzKSk7DQotDQotICAgIC8qID09PT0gSU5UQyBzZXR0aW5nID09PT0gKi8NCi0gICAgUl9JTlRDX0luaXQoKTsNCi0NCi0gICAgTDFDYWNoZUluaXQoKTsNCi0NCi0gICAgLyogPT09PSBWZWN0b3IgYmFzZSBhZGRyZXNzIHNldHRpbmcgPT09PSAqLw0KLSAgICBWYmFySW5pdCgpOw0KLQ0KLSAgICBfX2VuYWJsZV9pcnEoKTsNCi0gICAgX19lbmFibGVfZmlxKCk7DQotDQotICAgIC8qID09PT0gRnVuY3Rpb24gY2FsbCBvZiBtYWluIGZ1bmN0aW9uID09PT0gKi8NCi0gICAgJFN1cGVyJCRtYWluKCk7DQotfQ0KLQ0KLQ0KLS8qIEVORCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vcmV0YXJnZXQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3JldGFyZ2V0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZDFhMzMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vcmV0YXJnZXQuYworKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiByZXRhcmdldC5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjEzDQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gUmV0YXJnZXQgc3RhbmRhcmQgSS9PDQotKiBPcGVyYXRpb24gICAgOiANCi0qIExpbWl0YXRpb25zICA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotICAgICAgICAjaWZkZWYgICAgICAgIF9fU1RBTkRBTE9ORV9fDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAic2lvX2NoYXIuaCINCi0NCi0jcHJhZ21hIGltcG9ydChfX3VzZV9ub19zZW1paG9zdGluZykNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdHJ1Y3QgX19GSUxFDQotew0KLSAgaW50X3QgaGFuZGxlOw0KLQ0KLSAgLyogV2hhdGV2ZXIgeW91IHJlcXVpcmUgaGVyZS4gSWYgdGhlIG9ubHkgZmlsZSB5b3UgYXJlIHVzaW5nIGlzICAgKi8NCi0gIC8qIHN0YW5kYXJkIG91dHB1dCB1c2luZyBwcmludGYoKSBmb3IgZGVidWdnaW5nLCBubyBmaWxlIGhhbmRsaW5nICovDQotICAvKiBpcyByZXF1aXJlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLX07DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIEZpbGUgZGVzY3JpcHRvciAqLw0KLSNkZWZpbmUgU1RESU4gICAgICAgKDApDQotI2RlZmluZSBTVERPVVQgICAgICAoMSkNCi0jZGVmaW5lIFNUREVSUiAgICAgICgyKQ0KLQ0KLSNkZWZpbmUgSU9TVFJFQU0gICAgKDEpDQotI2RlZmluZSBCVUZGX1NJWkUgICAoMjU2KQ0KLQ0KLSNpZiAwDQotI2RlZmluZSBERUZBVUxUX0hBTkRMRSAgKDB4MTAwKQ0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1GSUxFIF9fc3Rkb3V0Ow0KLUZJTEUgX19zdGRpbjsNCi0jaWYgMA0KLUZJTEUgX19zdGRlcnI7DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IGZnZXRjDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDoNCi0qIFJldHVybiBWYWx1ZSA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludF90IGZnZXRjKEZJTEUgKiBmaWxlX3ApDQotew0KLSAgICAvKiBubyBjaGFyYWN0ZXIgdG8gcmVhZCAqLw0KLSAgICByZXR1cm4gRU9GOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBmcHV0Yw0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6DQotKiBSZXR1cm4gVmFsdWUgOg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnRfdCBmcHV0YyhpbnRfdCBjaGFubmVsLCBGSUxFICogZmlsZV9wKQ0KLXsNCi0gICAgIHJldHVybiBjaGFubmVsOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBmZXJyb3INCi0qIERlc2NyaXB0aW9uICA6IA0KLSogQXJndW1lbnRzICAgIDogDQotKiBSZXR1cm4gVmFsdWUgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50X3QgZmVycm9yKEZJTEUgKiBmaWxlX3ApDQotew0KLSAgICByZXR1cm4gMDsNCi19DQotDQotaW50X3QgX19iYWNrc3BhY2UoRklMRSAqIGZpbGVfcCkNCi17DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi0NCi12b2lkIF9zeXNfZXhpdChpbnRfdCByZXR1cm5jb2RlKQ0KLXsNCi0gICAgd2hpbGUgKDEpDQotICAgIHsNCi0gICAgICAgIC8qIERvIE5vdGhpbmcgKi8NCi0gICAgfQ0KLX0NCi0NCi1jaGFyX3QgKiBfc3lzX2NvbW1hbmRfc3RyaW5nKGNoYXJfdCAqIGNtZCwgaW50X3QgbGVuKQ0KLXsNCi0gICAgcmV0dXJuIGNtZDsNCi19DQotDQotICAgICNlbmRpZiAgICAgICAgLyogX19TVEFOREFMT05FX18gICAgg1qDfoN6g1iDZYNCg5ODT5azjPggICAgKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3ZiYXJfaW5pdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vdmJhcl9pbml0LnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNjEwYjkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vdmJhcl9pbml0LnMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IHZiYXJfaW5pdC5zDQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLTsqICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotOyogICAgICAgICAgICAgICA6IA0KLTsqIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotOyogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgVGhpcyBjb2RlIHByb3ZpZGVzIGJhc2ljIGdsb2JhbCBlbmFibGUgZm9yIENvcnRleC1BOSBjYWNoZS4NCi07IEl0IGFsc28gZW5hYmxlcyBicmFuY2ggcHJlZGljdGlvbg0KLTsgVGhpcyBjb2RlIG11c3QgYmUgcnVuIGZyb20gYSBwcml2aWxlZ2VkIG1vZGUNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCUFSRUEgICBJTklUX1ZCQVIsIENPREUsIFJFQURPTkxZDQotCQ0KLQlJTVBPUlQgIHx8SW1hZ2UkJFZFQ1RPUl9NSVJST1JfVEFCTEUkJEJhc2V8fA0KLTsJSU1QT1JUICB8fEltYWdlJCRWRUNUT1JfVEFCTEUkJEJhc2V8fA0KLQkNCi0JRVhQT1JUCVZiYXJJbml0DQotDQotVmJhckluaXQJRlVOQ1RJT04NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgU2V0IFZlY3RvciBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgKFZCQVIpIHRvIHBvaW50IHRvIHRoaXMgYXBwbGljYXRpb24ncyB2ZWN0b3IgdGFibGUNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlMRFIgcjAsID18fEltYWdlJCRWRUNUT1JfTUlSUk9SX1RBQkxFJCRCYXNlfHwNCi07CUxEUiByMCwgPXx8SW1hZ2UkJFZFQ1RPUl9UQUJMRSQkQmFzZXx8DQotCU1DUiBwMTUsIDAsIHIwLCBjMTIsIGMwLCAwDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFNldCBsb3cgdmVjdG9ycw0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotDQotICAgIE1SQyAgcDE1LCAwLCByMCwgYzEsIGMwLCAwICAgOy8qIFJlYWQgQ1AxNSBTeXN0ZW0gQ29udHJvbCByZWdpc3RlciAoU0NUTFIpICovDQotICAgIEJJQyAgcjAsIHIwLCAjKDB4MSA8PCAxMykgICAgOy8qIENsZWFyIFYgYml0IDEzIHRvIHNldCBMb3cgVmVjdG9ycyAgKi8NCi0gICAgTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAgICA7LyogV3JpdGUgQ1AxNSBTeXN0ZW0gQ29udHJvbCByZWdpc3RlciAqLw0KLSAgICBJU0INCi0JQlgJCWxyDQotDQotCUVOREZVTkMNCi0NCi0NCi0NCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2NvbW1vbi9jb21tb25fZHJpdmVyL2JzYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2NvbW1vbi9jb21tb25fZHJpdmVyL2JzYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTMwNmQ1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9jb21tb24vY29tbW9uX2RyaXZlci9ic2MuYworKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICA6IGJzYy5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBCU0MgaW5pdGlhbGl6ZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2X2Rydi5oIiAgICAgICAgICAgICAvKiBEZXZpY2UgRHJpdmVyIGNvbW1vbiBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X2NvbW1vbi5oIiAgICAgICAvKiBDb21tb24gRHJpdmVyIEhlYWRlciAqLw0KLQ0KLS8qIERvIG5vdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgcHJhZ21hcyB3aGVuIGNvbXBpbGluZyB3aXRoIElBUi4gKi8NCi0jaWZuZGVmIF9fSUNDQVJNX18NCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiBjb2RlICAgPSAiQ09ERV9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcndkYXRhID0gIkRBVEFfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gemlkYXRhID0gIkJTU19SRVNFVCINCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0JTQ19Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDggYXJlYQ0KLSogICAgICAgICAgICAgIDogICBCJ3h4eHh4eHh4DQotKiAgICAgICAgICAgICAgOiAgICAgfHx8fHx8fCstLS0gWzBdICAgQ1MwDQotKiAgICAgICAgICAgICAgOiAgICAgfHx8fHx8Ky0tLS0gWzFdICAgQ1MxDQotKiAgICAgICAgICAgICAgOiAgICAgfHx8fHwrLS0tLS0gWzJdICAgQ1MyDQotKiAgICAgICAgICAgICAgOiAgICAgfHx8fCstLS0tLS0gWzNdICAgQ1MzDQotKiAgICAgICAgICAgICAgOiAgICAgfHx8Ky0tLS0tLS0gWzRdICAgQ1M0DQotKiAgICAgICAgICAgICAgOiAgICAgfHwrLS0tLS0tLS0gWzVdICAgQ1M1DQotKiAgICAgICAgICAgICAgOiAgICAgKystLS0tLS0tLS0gWzYtN10gbi9hDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgUl9CU0NfSW5pdCh1aW50OF90IGFyZWEpDQotew0KLSAgICAvKiA9PT09IEJTQyBpbml0aWFsaXplID09PT0gKi8NCi0gICAgaWYgKChhcmVhICYgQlNDX0FSRUFfQ1MwKSAhPSAwKSAgICAgLyogQ1MwICovDQotICAgIHsNCi0gICAgICAgIFVzZXJkZWZfQlNDX0NTMEluaXQoKTsNCi0gICAgfQ0KLSAgICBpZiAoKGFyZWEgJiBCU0NfQVJFQV9DUzEpICE9IDApICAgICAvKiBDUzEgKi8NCi0gICAgew0KLSAgICAgICAgVXNlcmRlZl9CU0NfQ1MxSW5pdCgpOw0KLSAgICB9DQotICAgIGlmICgoYXJlYSAmIEJTQ19BUkVBX0NTMikgIT0gMCkgICAgIC8qIENTMiAqLw0KLSAgICB7DQotICAgICAgICBVc2VyZGVmX0JTQ19DUzJJbml0KCk7DQotICAgIH0NCi0gICAgaWYgKChhcmVhICYgQlNDX0FSRUFfQ1MzKSAhPSAwKSAgICAgLyogQ1MzICovDQotICAgIHsNCi0gICAgICAgIFVzZXJkZWZfQlNDX0NTM0luaXQoKTsNCi0gICAgfQ0KLSAgICBpZiAoKGFyZWEgJiBCU0NfQVJFQV9DUzQpICE9IDApICAgICAvKiBDUzQgKi8NCi0gICAgew0KLSAgICAgICAgVXNlcmRlZl9CU0NfQ1M0SW5pdCgpOw0KLSAgICB9DQotICAgIGlmICgoYXJlYSAmIEJTQ19BUkVBX0NTNSkgIT0gMCkgICAgIC8qIENTNSAqLw0KLSAgICB7DQotICAgICAgICBVc2VyZGVmX0JTQ19DUzVJbml0KCk7DQotICAgIH0NCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvY29tbW9uL3VzZXJkZWYvYnNjX3VzZXJkZWYuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9jb21tb24vdXNlcmRlZi9ic2NfdXNlcmRlZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjlkNzI1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9jb21tb24vdXNlcmRlZi9ic2NfdXNlcmRlZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGJzY191c2VyZGVmLmMNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOg0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gQ29tbW9uIGRyaXZlciAoVXNlciBkZWZpbmUgZnVuY3Rpb24pDQotKiBPcGVyYXRpb24gICAgOg0KLSogTGltaXRhdGlvbnMgIDoNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAvKiBEZXZpY2UgRHJpdmVyIGNvbW1vbiBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X2NvbW1vbi5oIiAgICAgIC8qIENvbW1vbiBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyogRG8gbm90IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBwcmFnbWFzIHdoZW4gY29tcGlsaW5nIHdpdGggSUFSLiAqLw0KLSNpZm5kZWYgX19JQ0NBUk1fXw0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIGNvZGUgICA9ICJDT0RFX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJvZGF0YSA9ICJDT05TVF9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByd2RhdGEgPSAiREFUQV9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiB6aWRhdGEgPSAiQlNTX1JFU0VUIg0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBUaGUgYWRkcmVzcyB3aGVuIHdyaXRpbmcgaW4gYSBTRFJBTSBtb2RlIHJlZ2lzdGVyICovDQotI2RlZmluZSBTRFJBTV9NT0RFX0NTMiAgICAoKih2b2xhdGlsZSB1aW50MTZfdCAqKSgweDNGRkZEMDQwKSkNCi0jZGVmaW5lIFNEUkFNX01PREVfQ1MzICAgICgqKHZvbGF0aWxlIHVpbnQxNl90ICopKDB4M0ZGRkUwNDApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9CU0NfQ1MwSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0JTQ19DUzBJbml0KHZvaWQpDQotew0KLSAgICAvKiAtLS0tIENTMEJDUiBzZXR0aW5ncyAtLS0tICovDQotICAgIEJTQy5DUzBCQ1IuTE9ORyA9IDB4MTAwMDBDMDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZGxlIEN5Y2xlcyBiZXR3ZWVuIFdyaXRlLXJlYWQgQ3ljbGVzICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIGFuZCBXcml0ZS13cml0ZSBDeWNsZXMgOiAxIGlkbGUgY3ljbGUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERhdGEgQnVzIFNpemU6IDE2LWJpdCAgICAgICAgICAgICAgICAgICAgKi8NCi0NCi0gICAgLyogLS0tLSBDUzBXQ1Igc2V0dGluZ3MgLS0tLSAgKi8NCi0gICAgQlNDLkNTMFdDUi5OT1JNQUwuTE9ORyA9IDB4MDAwMDBCNDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgRGVsYXkgQ3ljbGVzIGZyb20gQWRkcmVzcywgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIENTMCMgQXNzZXJ0aW9uIHRvIFJEIyxXRW4gQXNzZXJ0aW9uICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICA6IDEuNSBjeWNsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgQWNjZXNzIFdhaXQgQ3ljbGVzOiA2IGN5Y2xlcyAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgQ3ljbGVzIGZyb20gUkQsV0VuIyBuZWdhdGlvbiB0byAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBBZGRyZXNzLENTbiMgbmVnYXRpb246IDAuNSBjeWNsZXMgICAgICAgKi8NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9CU0NfQ1MxSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0JTQ19DUzFJbml0KHZvaWQpDQotew0KLSAgICAvKiAtLS0tIENTMUJDUiBzZXR0aW5ncyAtLS0tICovDQotICAgIEJTQy5DUzFCQ1IuTE9ORyA9IDB4MTAwMDBDMDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZGxlIEN5Y2xlcyBiZXR3ZWVuIFdyaXRlLXJlYWQgQ3ljbGVzICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIGFuZCBXcml0ZS13cml0ZSBDeWNsZXMgOiAxIGlkbGUgY3ljbGUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERhdGEgQnVzIFNpemU6IDE2LWJpdCAgICAgICAgICAgICAgICAgICAgKi8NCi0NCi0gICAgLyogLS0tLSBDUzFXQ1Igc2V0dGluZ3MgLS0tLSAgKi8NCi0gICAgQlNDLkNTMVdDUi5MT05HID0gMHgwMDAwMEI0MHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBEZWxheSBDeWNsZXMgZnJvbSBBZGRyZXNzLCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQ1MwIyBBc3NlcnRpb24gdG8gUkQjLFdFbiBBc3NlcnRpb24gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIDogMS41IGN5Y2xlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBBY2Nlc3MgV2FpdCBDeWNsZXM6IDYgY3ljbGVzICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWxheSBDeWNsZXMgZnJvbSBSRCxXRW4jIG5lZ2F0aW9uIHRvICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEFkZHJlc3MsQ1NuIyBuZWdhdGlvbjogMC41IGN5Y2xlcyAgICAgICAqLw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0JTQ19DUzJJbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfQlNDX0NTMkluaXQodm9pZCkNCi17DQotICAgIC8qID09PT0gQ1MyQkNSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLkNTMkJDUi5MT05HID0gMHgwMDAwNEMwMHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRsZSBDeWNsZXMgYmV0d2VlbiBXcml0ZS1yZWFkIEN5Y2xlcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFuZCBXcml0ZS13cml0ZSBDeWNsZXMgOiAwIGlkbGUgY3ljbGVzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNZW1vcnkgdHlwZSA6U0RSQU0gICAgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGF0YSBCdXMgU2l6ZSA6IDE2LWJpdCAgICAgICAgICAgICAgICAgKi8NCi0NCi0gICAgLyogPT09PSBDUzJXQ1Igc2V0dGluZ3MgPT09PSAqLw0KLSAgICBCU0MuQ1MyV0NSLlNEUkFNLkxPTkcgPSAweDAwMDAwNDgwdWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQVMgbGF0ZW5jeSBmb3IgQXJlYSAyIDogMiBjeWNsZXMgKi8NCi0NCi0NCi0gICAgLyogPT09PSBXcml0dGVuIGluIFNEUkFNIE1vZGUgUmVnaXN0ZXIgPT09PSAqLw0KLSAgICBTRFJBTV9NT0RFX0NTMiA9IDA7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgd3JpdGluZyBkYXRhIGlzIGFyYml0cmFyeSAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTRFJBTSBtb2RlIHJlZ2lzdGVyIHNldHRpbmcgQ1MyIHNwYWNlICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCdXJzdCByZWFkIChidXJzdCBsZW5ndGggMSkuL0J1cnN0IHdyaXRlICovDQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfQlNDX0NTM0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1MzSW5pdCh2b2lkKQ0KLXsNCi0gICAgdm9sYXRpbGUgaW50MzJfdCBjbnQ7DQotDQotICAgIGNudCA9IDE1MDsNCi0gICAgd2hpbGUgKGNudC0tID4gMCkNCi0gICAgew0KLSAgICAgICAgLyogd2FpdCAqLw0KLSAgICB9DQotDQotICAgIC8qID09PT0gQ1MzQkNSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLkNTM0JDUi5MT05HID0gMHgwMDAwNEMwMHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRsZSBDeWNsZXMgYmV0d2VlbiBXcml0ZS1yZWFkIEN5Y2xlcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFuZCBXcml0ZS13cml0ZSBDeWNsZXMgOiAwIGlkbGUgY3ljbGVzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNZW1vcnkgdHlwZSA6U0RSQU0gICAgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGF0YSBCdXMgU2l6ZSA6IDE2LWJpdCAgICAgICAgICAgICAgICAgKi8NCi0NCi0gICAgLyogPT09PSBDUzNXQ1Igc2V0dGluZ3MgPT09PSAqLw0KLSAgICBCU0MuQ1MzV0NSLlNEUkFNLkxPTkcgPSAweDAwMDAyNDkydWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQcmVjaGFyZ2UgY29tcGxldGlvbiB3YWl0IGN5Y2xlczogMSBjeWNsZSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgY3ljbGVzIGJldHdlZW4gQUNUViBjb21tYW5kICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW5kIFJFQUQoQSkvV1JJVEUoQSkgY29tbWFuZCA6IDEgY3ljbGVzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQVMgbGF0ZW5jeSBmb3IgQXJlYSAzIDogMiBjeWNsZXMgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF1dG8tcHJlY2hhcmdlIHN0YXJ0dXAgd2FpdCBjeWNsZXMgOiAyIGN5Y2xlcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRsZSBjeWNsZXMgZnJvbSBSRUYgY29tbWFuZC9zZWxmLXJlZnJlc2ggICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWxlYXNlIHRvIEFDVFYvUkVGL01SUyBjb21tYW5kIDogNSBjeWNsZXMgICAgKi8NCi0NCi0gICAgLyogPT09PSBTRENSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLlNEQ1IuTE9ORyA9IDB4MDAxMjA4MTJ1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJvdyBhZGRyZXNzIGZvciBBcmVhIDIgOiAxMy1iaXQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbHVtbiBBZGRyZXNzIGZvciBBcmVhIDIgOiAxMC1iaXQgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlZnJlc2ggQ29udHJvbCA6UmVmcmVzaCAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJNT0RFIDpBdXRvLXJlZnJlc2ggaXMgcGVyZm9ybWVkICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJBQ1RWIDpBdXRvLXByZWNoYXJnZSBtb2RlICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJvdyBhZGRyZXNzIGZvciBBcmVhIDMgOiAxMy1iaXQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbHVtbiBBZGRyZXNzIGZvciBBcmVhIDMgOiAxMC1iaXQgKi8NCi0NCi0gICAgLyogPT09PSBSVENPUiBzZXR0aW5ncyA9PT09ICovDQotICAgIEJTQy5SVENPUi5MT05HID0gMHhBNTVBMDAyMHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNy44MTN1c2VjIC8yNDBuc2VjICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgPSAzMigweDIwKWN5Y2xlcyBwZXIgcmVmcmVzaCAqLw0KLQ0KLSAgICAvKiA9PT09IFJUQ1NSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLlJUQ1NSLkxPTkcgPSAweEE1NUEwMDEwdWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBzdGFydCAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xvY2sgc2VsZWN0IEItcGh5LzE2ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlZnJlc2ggY291bnQgOk9uY2UgICAgICAgICAgICovDQotDQotICAgIC8qID09PT0gV3JpdHRlbiBpbiBTRFJBTSBNb2RlIFJlZ2lzdGVyID09PT0gKi8NCi0gICAgU0RSQU1fTU9ERV9DUzMgPSAwOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHdyaXRpbmcgZGF0YSBpcyBhcmJpdHJhcnkgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0RSQU0gbW9kZSByZWdpc3RlciBzZXR0aW5nIENTMyBzcGFjZSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVyc3QgcmVhZCAoYnVyc3QgbGVuZ3RoIDEpLi9CdXJzdCB3cml0ZSAqLw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0JTQ19DUzRJbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfQlNDX0NTNEluaXQodm9pZCkNCi17DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfQlNDX0NTNUluaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1M1SW5pdCh2b2lkKQ0KLXsNCi19DQotDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvaW50Yy9pbnRjX2RyaXZlci9pbnRjLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvaW50Yy9pbnRjX2RyaXZlci9pbnRjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMDFhNjIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvaW50Y19kcml2ZXIvaW50Yy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgIDogaW50Yy5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGVzY3JpcHRpb24gOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBJbnRlcnJ1cHQgcHJvY2Vzcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2X2Rydi5oIiAgICAgICAgICAgICAgICAvKiBEZXZpY2UgRHJpdmVyIGNvbW1vbiBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCIgICAgICAgICAgICAvKiBJTlRDIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBJTlRDX0lDRElTUl9SRUdfVE9UQUwgICAoKCh1aW50MTZfdClJTlRDX0lEX1RPVEFMIC8gMzIpICsgMSkgLyogSUNESVNSICAqLw0KLSNkZWZpbmUgSU5UQ19JQ0RJQ0ZSX1JFR19UT1RBTCAgKCgodWludDE2X3QpSU5UQ19JRF9UT1RBTCAvIDE2KSArIDEpIC8qIElDRElDRlIgKi8NCi0jZGVmaW5lIElOVENfSUNESVBSX1JFR19UT1RBTCAgICgoKHVpbnQxNl90KUlOVENfSURfVE9UQUwgLyAgNCkgKyAxKSAvKiBJQ0RJUFIgICovDQotI2RlZmluZSBJTlRDX0lDRElQVFJfUkVHX1RPVEFMICAoKCh1aW50MTZfdClJTlRDX0lEX1RPVEFMIC8gIDQpICsgMSkgLyogSUNESVBUUiAqLw0KLSNkZWZpbmUgSU5UQ19JQ0RJU0VSX1JFR19UT1RBTCAgKCgodWludDE2X3QpSU5UQ19JRF9UT1RBTCAvIDMyKSArIDEpIC8qIElDRElTRVIgKi8NCi0jZGVmaW5lIElOVENfSUNESUNFUl9SRUdfVE9UQUwgICgoKHVpbnQxNl90KUlOVENfSURfVE9UQUwgLyAzMikgKyAxKSAvKiBJQ0RJQ0VSICovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiA9PT09IEdsb2JhbCB2YXJpYWJsZSA9PT09ICovDQotc3RhdGljIHVpbnQzMl90IGludGNfaWNkaWNmcm5fdGFibGVbXSA9DQotew0KLSAgICAweEFBQUFBQUFBLCAgICAgICAgICAgIC8qIElDRElDRlIwICA6ICAxNSAtICAgMCAqLw0KLSAgICAweDAwMDAwMDU1LCAgICAgICAgICAgIC8qIElDRElDRlIxICA6ICAxOSAtICAxNiAqLw0KLSAgICAweEZGRkQ1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyICA6ICA0NyAtICAzMiAqLw0KLSAgICAweDU1NUZGRkZGLCAgICAgICAgICAgIC8qIElDRElDRlIzICA6ICA2MyAtICA0OCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlI0ICA6ICA3OSAtICA2NCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlI1ICA6ICA5NSAtICA4MCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlI2ICA6IDExMSAtICA5NiAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlI3ICA6IDEyNyAtIDExMiAqLw0KLSAgICAweDU1NTVGNTU1LCAgICAgICAgICAgIC8qIElDRElDRlI4ICA6IDE0MyAtIDEyOCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlI5ICA6IDE1OSAtIDE0NCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxMCA6IDE3NSAtIDE2MCAqLw0KLSAgICAweEY1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxMSA6IDE5MSAtIDE3NiAqLw0KLSAgICAweEY1NTVGNTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxMiA6IDIwNyAtIDE5MiAqLw0KLSAgICAweDU1NTVGNTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxMyA6IDIyMyAtIDIwOCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxNCA6IDIzOSAtIDIyNCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxNSA6IDI1NSAtIDI0MCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxNiA6IDI3MSAtIDI1NiAqLw0KLSAgICAweEZENTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxNyA6IDI4NyAtIDI3MiAqLw0KLSAgICAweDU1NTU1NTU3LCAgICAgICAgICAgIC8qIElDRElDRlIxOCA6IDMwMyAtIDI4OCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIxOSA6IDMxOSAtIDMwNCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyMCA6IDMzNSAtIDMyMCAqLw0KLSAgICAweDVGNTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyMSA6IDM1MSAtIDMzNiAqLw0KLSAgICAweEZENTU1NTVGLCAgICAgICAgICAgIC8qIElDRElDRlIyMiA6IDM2NyAtIDM1MiAqLw0KLSAgICAweDU1NTU1NTU3LCAgICAgICAgICAgIC8qIElDRElDRlIyMyA6IDM4MyAtIDM2OCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyNCA6IDM5OSAtIDM4NCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyNSA6IDQxNSAtIDQwMCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyNiA6IDQzMSAtIDQxNiAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyNyA6IDQ0NyAtIDQzMiAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyOCA6IDQ2MyAtIDQ0OCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIyOSA6IDQ3OSAtIDQ2NCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzMCA6IDQ5NSAtIDQ4MCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzMSA6IDUxMSAtIDQ5NiAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzMiA6IDUyNyAtIDUxMiAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzMyA6IDU0MyAtIDUyOCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzNCA6IDU1OSAtIDU0NCAqLw0KLSAgICAweDU1NTU1NTU1LCAgICAgICAgICAgIC8qIElDRElDRlIzNSA6IDU3NSAtIDU2MCAqLw0KLSAgICAweDAwMTU1NTU1ICAgICAgICAgICAgIC8qIElDRElDRlIzNiA6IDU4NiAtIDU3NiAqLw0KLX07DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9JTlRDX1JlZ2lzdEludEZ1bmMNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MTZfdCBpbnRfaWQNCi0qICAgICAgICAgICAgICA6IHZvaWQgKCogZnVuYykodWludDMyX3QpDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX1JlZ2lzdEludEZ1bmModWludDE2X3QgaW50X2lkLCB2b2lkICgqIGZ1bmMpKHVpbnQzMl90IGludF9zZW5zZSkpDQotew0KLSAgICBpZiAoaW50X2lkID49IElOVENfSURfVE9UQUwpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgVXNlcmRlZl9JTlRDX1JlZ2lzdEludEZ1bmMoaW50X2lkLCBmdW5jKTsNCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBSX0lOVENfSW5pdCh2b2lkKQ0KLXsNCi0gICAgdWludDE2X3Qgb2Zmc2V0Ow0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCAqIGFkZHI7DQotDQotICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgSU5UQ19JQ0RJQ0ZSX1JFR19UT1RBTDsgb2Zmc2V0KyspDQotICAgIHsNCi0gICAgICAgIElOVEMuSUNESUNGUi5MT05HW29mZnNldF0gPSBpbnRjX2ljZGljZnJuX3RhYmxlW29mZnNldF07DQotICAgIH0NCi0NCi0gICAgYWRkciA9ICh2b2xhdGlsZSB1aW50MzJfdCAqKSZJTlRDLklDRElQUjAuTE9ORzsNCi0gICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBJTlRDX0lDRElQUl9SRUdfVE9UQUw7IG9mZnNldCsrKQ0KLSAgICB7DQotICAgICAgICAqKGFkZHIgKyBvZmZzZXQpID0gMHhGOEY4RjhGODsNCi0gICAgfQ0KLQ0KLSAgICBhZGRyID0gKHZvbGF0aWxlIHVpbnQzMl90ICopJklOVEMuSUNESVBUUjAuTE9ORzsNCi0gICAgZm9yIChvZmZzZXQgPSA4OyBvZmZzZXQgPCBJTlRDX0lDRElQVFJfUkVHX1RPVEFMOyBvZmZzZXQrKykNCi0gICAgew0KLSAgICAgICAgKihhZGRyICsgb2Zmc2V0KSA9IDB4MDEwMTAxMDE7DQotICAgIH0NCi0NCi0gICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBJTlRDX0lDRElDRVJfUkVHX1RPVEFMOyBvZmZzZXQrKykNCi0gICAgew0KLSAgICAgICAgSU5UQy5JQ0RJQ0VSLkxPTkdbb2Zmc2V0XSA9IDB4RkZGRkZGRkY7DQotICAgIH0NCi0NCi0gICAgUl9JTlRDX1NldE1hc2tMZXZlbCgzMSk7DQotDQotICAgIElOVEMuSUNDQlBSLkJJVC5CaW5hcnlwb2ludCA9IDA7DQotDQotICAgIElOVEMuSUNDSUNSLkxPTkcgPSAzOw0KLQ0KLSAgICAvKiBEaXN0cmlidXRvciBDb250cm9sIFJlZ2lzdGVyICovDQotICAgIElOVEMuSUNERENSLkJJVC5FbmFibGUgPSAxOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfRW5hYmxlDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDE2X3QgaW50X2lkDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX0VuYWJsZSh1aW50MTZfdCBpbnRfaWQpDQotew0KLSAgICB1aW50MzJfdCByZWdfdmFsdWU7DQotICAgIHVpbnQzMl90IG1hc2s7DQotDQotICAgIGlmIChpbnRfaWQgPj0gSU5UQ19JRF9UT1RBTCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBtYXNrID0gMTsNCi0gICAgbWFzayA9IG1hc2sgPDwgKGludF9pZCAlIDMyKTsNCi0NCi0gICAgcmVnX3ZhbHVlID0gSU5UQy5JQ0RJU0VSLkxPTkdbaW50X2lkIC8gMzJdOw0KLSAgICByZWdfdmFsdWUgfD0gbWFzazsNCi0gICAgSU5UQy5JQ0RJU0VSLkxPTkdbaW50X2lkIC8gMzJdID0gcmVnX3ZhbHVlOw0KLQ0KLSAgICByZXR1cm4gREVWRFJWX1NVQ0NFU1M7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfSU5UQ19EaXNhYmxlDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDE2X3QgaW50X2lkDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX0Rpc2FibGUodWludDE2X3QgaW50X2lkKQ0KLXsNCi0gICAgdWludDMyX3QgcmVnX3ZhbHVlOw0KLSAgICB1aW50MzJfdCBtYXNrOw0KLQ0KLSAgICBpZiAoaW50X2lkID49IElOVENfSURfVE9UQUwpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgbWFzayA9IDE7DQotICAgIG1hc2sgPSBtYXNrIDw8IChpbnRfaWQgJSAzMik7DQotDQotICAgIHJlZ192YWx1ZSA9IElOVEMuSUNESUNFUi5MT05HW2ludF9pZCAvIDMyXTsNCi0gICAgcmVnX3ZhbHVlIHw9IG1hc2s7DQotICAgIElOVEMuSUNESUNFUi5MT05HW2ludF9pZCAvIDMyXSA9IHJlZ192YWx1ZTsNCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfU2V0UHJpb3JpdHkNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MTZfdCBpbnRfaWQNCi0qICAgICAgICAgICAgICA6IHVpbnQ4X3QgcHJpb3JpdHkNCi0qIFJldHVybiBWYWx1ZSA6IERFVkRSVl9TVUNDRVNTDQotKiAgICAgICAgICAgICAgOiBERVZEUlZfRVJST1INCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBSX0lOVENfU2V0UHJpb3JpdHkodWludDE2X3QgaW50X2lkLCB1aW50OF90IHByaW9yaXR5KQ0KLXsNCi0gICAgdWludDMyX3QgaWNkaXByOw0KLSAgICB1aW50MzJfdCBtYXNrOw0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCAqIGFkZHI7DQotDQotICAgIGlmICgoaW50X2lkID49IElOVENfSURfVE9UQUwpIHx8IHByaW9yaXR5ID49IDMyKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIHByaW9yaXR5ID0gcHJpb3JpdHkgPDwgMzsNCi0NCi0gICAgYWRkciA9ICh2b2xhdGlsZSB1aW50MzJfdCAqKSZJTlRDLklDRElQUjAuTE9ORzsNCi0NCi0gICAgaWNkaXByID0gKihhZGRyICsgKGludF9pZCAvIDQpKTsNCi0NCi0gICAgbWFzayA9ICh1aW50MzJfdCkweDAwMDAwMEZGOw0KLSAgICBtYXNrID0gbWFzayA8PCAoKGludF9pZCAlIDQpICogOCk7DQotICAgIGljZGlwciAmPSB+bWFzazsNCi0gICAgbWFzayA9ICh1aW50MzJfdClwcmlvcml0eTsNCi0gICAgbWFzayA9IG1hc2sgPDwgKChpbnRfaWQgJSA0KSAqIDgpOw0KLSAgICBpY2RpcHIgfD0gbWFzazsNCi0NCi0gICAgKihhZGRyICsgKGludF9pZCAvIDQpKSA9IGljZGlwcjsNCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfU2V0TWFza0xldmVsDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDhfdCBtYXNrX2xldmVsDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX1NldE1hc2tMZXZlbCh1aW50OF90IG1hc2tfbGV2ZWwpDQotew0KLSAgICBpZiAobWFza19sZXZlbCA+PSAzMikNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBtYXNrX2xldmVsID0gbWFza19sZXZlbCA8PCAzOw0KLSAgICBJTlRDLklDQ1BNUi5CSVQuUHJpb3JpdHkgPSBtYXNrX2xldmVsOw0KLQ0KLSAgICByZXR1cm4gREVWRFJWX1NVQ0NFU1M7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfSU5UQ19HZXRNYXNrTGV2ZWwNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50OF90ICogbWFza19sZXZlbA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFJfSU5UQ19HZXRNYXNrTGV2ZWwodWludDhfdCAqIG1hc2tfbGV2ZWwpDQotew0KLSAgICAqbWFza19sZXZlbCA9IElOVEMuSUNDUE1SLkJJVC5Qcmlvcml0eTsNCi0gICAgKm1hc2tfbGV2ZWwgPSAqbWFza19sZXZlbCA+PiAzOw0KLX0NCi0NCi0vKiBFTkQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL2ludGNfZHJpdmVyL2ludGNfaGFuZGxlci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvaW50Y19kcml2ZXIvaW50Y19oYW5kbGVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjN2Q1NzYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvaW50Y19kcml2ZXIvaW50Y19oYW5kbGVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICA6IGludGNfaGFuZGxlci5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGVzY3JpcHRpb24gOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBIYW5kbGVyIHByb2Nlc3MNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldmRydl9pbnRjLmgiICAgICAgICAvKiBJTlRDIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfSEFORExFUiINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfSEFORExFUiINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByd2RhdGEgPSAiREFUQV9IQU5ETEVSIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfSEFORExFUiINCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qID09PT0gUHJvdG90eXBlIGRlY2xhcmF0aW9uID09PT0gKi8NCi1fX2lycSB2b2lkIEZpcUhhbmRsZXJfSW50ZXJydXB0KHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogRmlxSGFuZGxlcl9JbnRlcnJ1cHQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2lycSB2b2lkIEZpcUhhbmRsZXJfSW50ZXJydXB0KHZvaWQpDQotew0KLSAgICBVc2VyZGVmX0ZJUV9IYW5kbGVyRXhlKCk7DQotfQ0KLQ0KLQ0KLS8qIEVORCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvdXNlcmRlZi9pbnRjX3VzZXJkZWYuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL3VzZXJkZWYvaW50Y191c2VyZGVmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ODM4NzkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvdXNlcmRlZi9pbnRjX3VzZXJkZWYuYworKysgL2Rldi9udWxsCkBAIC0xLDc0MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBpbnRjX3VzZXJkZWYuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6DQotKiBIL1cgUGxhdGZvcm0gOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBJbnRlcnJ1cHQgZnVuYyB0YWJsZQ0KLSogT3BlcmF0aW9uICAgIDoNCi0qIExpbWl0YXRpb25zICA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIiAgICAgICAgICAgIC8qIElOVEMgRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qIERvIG5vdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgcHJhZ21hcyB3aGVuIGNvbXBpbGluZyB3aXRoIElBUi4gKi8NCi0jaWZuZGVmIF9fSUNDQVJNX18NCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiBjb2RlICAgPSAiQ09ERV9IQU5ETEVSX0pNUFRCTCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfSEFORExFUl9KTVBUQkwiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcndkYXRhID0gIkRBVEFfSEFORExFUl9KTVBUQkwiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gemlkYXRhID0gIkJTU19IQU5ETEVSX0pNUFRCTCINCi0jZWxzZQ0KLQkvKiBJQVIgcmVxdWlyZXMgaW50cmluc2ljcy5oIGZvciB0aGUgX19lbmFibGVfaXJxKCkgZnVuY3Rpb24uICovDQotCSNpbmNsdWRlIDxpbnRyaW5zaWNzLmg+DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogPT09PSAgUHJvdG90eXBlIGZ1bmN0aW9uID09PT0gKi8NCi1zdGF0aWMgdm9pZCBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0KHVpbnQzMl90IGludF9zZW5zZSk7DQotDQotLyogPT09PSBHbG9iYWwgdmFyaWFibGUgPT09PSAqLw0KLXN0YXRpYyB2b2lkICgqIGludGNfZnVuY190YWJsZVtJTlRDX0lEX1RPVEFMXSkodWludDMyX3QgaW50X3NlbnNlKSA9DQotew0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMCAgIDogU1cwICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMSAgIDogU1cxICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMiAgIDogU1cyICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMyAgIDogU1czICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNCAgIDogU1c0ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNSAgIDogU1c1ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNiAgIDogU1c2ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNyAgIDogU1c3ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOCAgIDogU1c4ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOSAgIDogU1c5ICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTAgIDogU1cxMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTEgIDogU1cxMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTIgIDogU1cxMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTMgIDogU1cxMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQgIDogU1cxNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTUgIDogU1cxNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTYgIDogUE1VSVJRMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTcgIDogQ09NTVJYMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTggIDogQ09NTVRYMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTkgIDogQ1RJSVJRMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjAgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjEgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjIgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjMgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjUgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjYgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjcgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjggIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjkgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzAgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzEgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzIgIDogSVJRMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzMgIDogSVJRMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQgIDogSVJRMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzUgIDogSVJRMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzYgIDogSVJRNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzcgIDogSVJRNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzggIDogSVJRNiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzkgIDogSVJRNyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDAgIDogUEwzMTBFUlIgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDEgIDogRE1BSU5UMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDIgIDogRE1BSU5UMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDMgIDogRE1BSU5UMiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDQgIDogRE1BSU5UMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDUgIDogRE1BSU5UNCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDYgIDogRE1BSU5UNSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDcgIDogRE1BSU5UNiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDggIDogRE1BSU5UNyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNDkgIDogRE1BSU5UOCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTAgIDogRE1BSU5UOSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTEgIDogRE1BSU5UMTAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTIgIDogRE1BSU5UMTEgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTMgIDogRE1BSU5UMTIgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTQgIDogRE1BSU5UMTMgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTUgIDogRE1BSU5UMTQgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTYgIDogRE1BSU5UMTUgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTcgIDogRE1BRVJSICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTggIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNTkgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjAgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjEgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjIgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjMgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjQgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjUgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjYgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjcgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjggIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNjkgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzAgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzEgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzIgIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzMgIDogVVNCSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzQgIDogVVNCSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzUgIDogUzBfVklfVlNZTkMwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzYgIDogUzBfTE9fVlNZTkMwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzcgIDogUzBfVlNZTkNFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzggIDogR1IzX1ZMSU5FMCAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogNzkgIDogUzBfVkZJRUxEMCAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODAgIDogSVYxX1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODEgIDogSVYzX1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODIgIDogSVY1X1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODMgIDogSVY2X1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODQgIDogUzBfV0xJTkUwICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODUgIDogUzFfVklfVlNZTkMwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODYgIDogUzFfTE9fVlNZTkMwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODcgIDogUzFfVlNZTkNFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODggIDogUzFfVkZJRUxEMCAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogODkgIDogSVYyX1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTAgIDogSVY0X1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTEgIDogUzFfV0xJTkUwICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTIgIDogT0lSX1ZJX1ZTWU5DMCAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTMgIDogT0lSX0xPX1ZTWU5DMCAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTQgIDogT0lSX1ZTWU5DRVJSMCAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTUgIDogT0lSX1ZGSUVMRDAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTYgIDogSVY3X1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTcgIDogSVY4X1ZCVUZFUlIwICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTggIDogT0lSX1dMSU5FMCAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogOTkgIDogUzBfVklfVlNZTkMxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTAwIDogUzBfTE9fVlNZTkMxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTAxIDogUzBfVlNZTkNFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTAyIDogR1IzX1ZMSU5FMSAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTAzIDogUzBfVkZJRUxEMSAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA0IDogSVYxX1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA1IDogSVYzX1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA2IDogSVY1X1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA3IDogSVY2X1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA4IDogUzBfV0xJTkUxICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTA5IDogUzFfVklfVlNZTkMxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTEwIDogUzFfTE9fVlNZTkMxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTExIDogUzFfVlNZTkNFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTEyIDogUzFfVkZJRUxEMSAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTEzIDogSVYyX1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE0IDogSVY0X1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE1IDogUzFfV0xJTkUxICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE2IDogT0lSX1ZJX1ZTWU5DMSAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE3IDogT0lSX0xPX1ZTWU5DMSAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE4IDogT0lSX1ZMSU5FMSAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTE5IDogT0lSX1ZGSUVMRDEgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTIwIDogSVY3X1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTIxIDogSVY4X1ZCVUZFUlIxICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTIyIDogT0lSX1dMSU5FMSAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTIzIDogSU1SREkgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI0IDogSU1SMkkwICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI1IDogSU1SMkkxICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI2IDogSkVESSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI3IDogSkRUSSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI4IDogQ01QMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTI5IDogQ01QMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTMwIDogSU5UMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTMxIDogSU5UMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTMyIDogSU5UMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTMzIDogSU5UMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM0IDogT1NUTUkwICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM1IDogT1NUTUkxICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM2IDogQ01JICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM3IDogV1RPVVQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM4IDogSVRJICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTM5IDogVEdJMEEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQwIDogVEdJMEIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQxIDogVEdJMEMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQyIDogVEdJMEQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQzIDogVEdJMFYgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ0IDogVEdJMEUgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ1IDogVEdJMEYgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ2IDogVEdJMUEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ3IDogVEdJMUIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ4IDogVEdJMVYgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTQ5IDogVEdJMVUgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTUwIDogVEdJMkEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTUxIDogVEdJMkIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTUyIDogVEdJMlYgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTUzIDogVEdJMlUgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU0IDogVEdJM0EgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU1IDogVEdJM0IgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU2IDogVEdJM0MgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU3IDogVEdJM0QgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU4IDogVEdJM1YgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTU5IDogVEdJNEEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTYwIDogVEdJNEIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTYxIDogVEdJNEMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTYyIDogVEdJNEQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTYzIDogVEdJNFYgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY0IDogQ01JMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY1IDogQ01JMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY2IDogU0dERUkwICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY3IDogU0dERUkxICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY4IDogU0dERUkyICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTY5IDogU0dERUkzICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTcwIDogQURJICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTcxIDogQURXQVIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTcyIDogU1NJSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTczIDogU1NJUlhJMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc0IDogU1NJVFhJMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc1IDogU1NJSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc2IDogU1NJUlhJMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc3IDogU1NJVFhJMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc4IDogU1NJSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTc5IDogU1NJUlRJMiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTgwIDogU1NJSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTgxIDogU1NJUlhJMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTgyIDogU1NJVFhJMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTgzIDogU1NJSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg0IDogU1NJUlRJNCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg1IDogU1NJSTUgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg2IDogU1NJUlhJNSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg3IDogU1NJVFhJNSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg4IDogU1BESUZJICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTg5IDogVEVJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTkwIDogUkkwICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTkxIDogVEkwICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTkyIDogU1BJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTkzIDogU1RJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk0IDogTkFLSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk1IDogQUxJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk2IDogVE1PSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk3IDogVEVJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk4IDogUkkxICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMTk5IDogVEkxICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjAwIDogU1BJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjAxIDogU1RJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjAyIDogTkFLSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjAzIDogQUxJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA0IDogVE1PSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA1IDogVEVJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA2IDogUkkyICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA3IDogVEkyICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA4IDogU1BJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjA5IDogU1RJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjEwIDogTkFLSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjExIDogQUxJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjEyIDogVE1PSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjEzIDogVEVJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE0IDogUkkzICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE1IDogVEkzICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE2IDogU1BJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE3IDogU1RJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE4IDogTkFLSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjE5IDogQUxJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjIwIDogVE1PSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjIxIDogQlJJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjIyIDogRVJJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjIzIDogUlhJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI0IDogVFhJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI1IDogQlJJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI2IDogRVJJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI3IDogUlhJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI4IDogVFhJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjI5IDogQlJJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjMwIDogRVJJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjMxIDogUlhJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjMyIDogVFhJMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjMzIDogQlJJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM0IDogRVJJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM1IDogUlhJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM2IDogVFhJMyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM3IDogQlJJNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM4IDogRVJJNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjM5IDogUlhJNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQwIDogVFhJNCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQxIDogQlJJNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQyIDogRVJJNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQzIDogUlhJNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ0IDogVFhJNSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ1IDogQlJJNiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ2IDogRVJJNiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ3IDogUlhJNiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ4IDogVFhJNiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjQ5IDogQlJJNyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjUwIDogRVJJNyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjUxIDogUlhJNyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjUyIDogVFhJNyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjUzIDogR0VSSSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU0IDogUkZJICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU1IDogQ0ZSWEkwICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU2IDogQ0VSSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU3IDogQ1RYSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU4IDogQ0ZSWEkxICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjU5IDogQ0VSSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjYwIDogQ1RYSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjYxIDogQ0ZSWEkyICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjYyIDogQ0VSSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjYzIDogQ1RYSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY0IDogQ0ZSWEkzICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY1IDogQ0VSSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY2IDogQ1RYSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY3IDogQ0ZSWEk0ICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY4IDogQ0VSSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjY5IDogQ1RYSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjcwIDogU1BFSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjcxIDogU1BSSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjcyIDogU1BUSTAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjczIDogU1BFSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc0IDogU1BSSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc1IDogU1BUSTEgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc2IDogU1BFSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc3IDogU1BSSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc4IDogU1BUSTIgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjc5IDogU1BFSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjgwIDogU1BSSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjgxIDogU1BUSTMgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjgyIDogU1BFSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjgzIDogU1BSSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg0IDogU1BUSTQgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg1IDogSUVCQlREICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg2IDogSUVCQlRFUlIgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg3IDogSUVCQlRTVEEgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg4IDogSUVCQlRWICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjg5IDogSVNZICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjkwIDogSUVSUiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjkxIDogSVRBUkcgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjkyIDogSVNFQyAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjkzIDogSUJVRiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk0IDogSVJFQURZICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk1IDogRkxTVEUgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk2IDogRkxURU5ESSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk3IDogRkxUUkVRMEkgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk4IDogRkxUUkVRMUkgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMjk5IDogTU1DMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzAwIDogTU1DMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzAxIDogTU1DMiAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzAyIDogU0RISTBfMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzAzIDogU0RISTBfMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA0IDogU0RISTBfMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA1IDogU0RISTFfMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA2IDogU0RISTFfMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA3IDogU0RISTFfMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA4IDogQVJNICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzA5IDogUFJEICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzEwIDogQ1VQICAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzExIDogU0NVQUkwICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzEyIDogU0NVQUkxICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzEzIDogU0NVRkRJMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE0IDogU0NVRkRJMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE1IDogU0NVRkRJMiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE2IDogU0NVRkRJMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE3IDogU0NVRlVJMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE4IDogU0NVRlVJMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzE5IDogU0NVRlVJMiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzIwIDogU0NVRlVJMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzIxIDogU0NVRFZJMCAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzIyIDogU0NVRFZJMSAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzIzIDogU0NVRFZJMiAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI0IDogU0NVRFZJMyAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI1IDogTUxCQ0kgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI2IDogTUxCU0kgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI3IDogRFJDMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI4IDogRFJDMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzI5IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzMwIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzMxIDogTElOSTBfSU5UX1QgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzMyIDogTElOSTBfSU5UX1IgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzMzIDogTElOSTBfSU5UX1MgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM0IDogTElOSTBfSU5UX00gICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM1IDogTElOSTFfSU5UX1QgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM2IDogTElOSTFfSU5UX1IgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM3IDogTElOSTFfSU5UX1MgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM4IDogTElOSTFfSU5UX00gICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzM5IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQwIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQxIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQyIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQzIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ0IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ1IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ2IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ3IDogRVJJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ4IDogUlhJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzQ5IDogVFhJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzUwIDogVEVJMCAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzUxIDogRVJJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzUyIDogUlhJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzUzIDogVFhJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU0IDogVEVJMSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU1IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU2IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU3IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU4IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzU5IDogRVRIRVJJICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzYwIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzYxIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzYyIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzYzIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY0IDogQ0VVSSAgICAgICAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY1IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY2IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY3IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY4IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzY5IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzcwIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzcxIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzcyIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzczIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc0IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc1IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc2IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc3IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc4IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzc5IDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzgwIDogPHJlc2VydmVkPiAgICAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzgxIDogSDJYTUxCX0VSUklOVCAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzgyIDogSDJYSUMxX0VSUklOVCAqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzgzIDogWDJIUEVSSTFfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4NCA6IFgySFBFUkkyX0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODUgOiBYMkhQRVJJMzRfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4NiA6IFgySFBFUkk1X0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODcgOiBYMkhQRVJJNjdfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4OCA6IFgySERCR1JfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4OSA6IFgySEJTQ19FUlJJTlQgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5MCA6IFgySFNQSTFfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5MSA6IFgySFNQSTJfRVJSSU5UKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5MiA6IFBSUkkgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5MyA6IElGRUkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5NCA6IE9GRkkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5NSA6IFBGVkVJMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5NiA6IElGRUkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5NyA6IE9GRkkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5OCA6IFBGVkVJMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5OSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwMCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwMSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwMiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwMyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwNCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwNSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwNiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwNyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwOCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwOSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxMCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxMSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxMiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxMyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxNCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxNSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxNiA6IFRJTlQwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxNyA6IFRJTlQxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxOCA6IFRJTlQyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxOSA6IFRJTlQzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyMCA6IFRJTlQ0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyMSA6IFRJTlQ1ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyMiA6IFRJTlQ2ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyMyA6IFRJTlQ3ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyNCA6IFRJTlQ4ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyNSA6IFRJTlQ5ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyNiA6IFRJTlQxMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyNyA6IFRJTlQxMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyOCA6IFRJTlQxMiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyOSA6IFRJTlQxMyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzMCA6IFRJTlQxNCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzMSA6IFRJTlQxNSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzMiA6IFRJTlQxNiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzMyA6IFRJTlQxNyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzNCA6IFRJTlQxOCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzNSA6IFRJTlQxOSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzNiA6IFRJTlQyMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzNyA6IFRJTlQyMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzOCA6IFRJTlQyMiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzOSA6IFRJTlQyMyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0MCA6IFRJTlQyNCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0MSA6IFRJTlQyNSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0MiA6IFRJTlQyNiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0MyA6IFRJTlQyNyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0NCA6IFRJTlQyOCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0NSA6IFRJTlQyOSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0NiA6IFRJTlQzMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0NyA6IFRJTlQzMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0OCA6IFRJTlQzMiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0OSA6IFRJTlQzMyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1MCA6IFRJTlQzNCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1MSA6IFRJTlQzNSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1MiA6IFRJTlQzNiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1MyA6IFRJTlQzNyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1NCA6IFRJTlQzOCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1NSA6IFRJTlQzOSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1NiA6IFRJTlQ0MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1NyA6IFRJTlQ0MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1OCA6IFRJTlQ0MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1OSA6IFRJTlQ0MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2MCA6IFRJTlQ0NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2MSA6IFRJTlQ0NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2MiA6IFRJTlQ0NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2MyA6IFRJTlQ0NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2NCA6IFRJTlQ0OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2NSA6IFRJTlQ0OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2NiA6IFRJTlQ1MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2NyA6IFRJTlQ1MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2OCA6IFRJTlQ1MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2OSA6IFRJTlQ1MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3MCA6IFRJTlQ1NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3MSA6IFRJTlQ1NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3MiA6IFRJTlQ1NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3MyA6IFRJTlQ1NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3NCA6IFRJTlQ1OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3NSA6IFRJTlQ1OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3NiA6IFRJTlQ2MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3NyA6IFRJTlQ2MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3OCA6IFRJTlQ2MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3OSA6IFRJTlQ2MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4MCA6IFRJTlQ2NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4MSA6IFRJTlQ2NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4MiA6IFRJTlQ2NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4MyA6IFRJTlQ2NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4NCA6IFRJTlQ2OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4NSA6IFRJTlQ2OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4NiA6IFRJTlQ3MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4NyA6IFRJTlQ3MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4OCA6IFRJTlQ3MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4OSA6IFRJTlQ3MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5MCA6IFRJTlQ3NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5MSA6IFRJTlQ3NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5MiA6IFRJTlQ3NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5MyA6IFRJTlQ3NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5NCA6IFRJTlQ3OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5NSA6IFRJTlQ3OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5NiA6IFRJTlQ4MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5NyA6IFRJTlQ4MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5OCA6IFRJTlQ4MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5OSA6IFRJTlQ4MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwMCA6IFRJTlQ4NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwMSA6IFRJTlQ4NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwMiA6IFRJTlQ4NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwMyA6IFRJTlQ4NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwNCA6IFRJTlQ4OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwNSA6IFRJTlQ4OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwNiA6IFRJTlQ5MCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwNyA6IFRJTlQ5MSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwOCA6IFRJTlQ5MiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwOSA6IFRJTlQ5MyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxMCA6IFRJTlQ5NCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxMSA6IFRJTlQ5NSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxMiA6IFRJTlQ5NiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxMyA6IFRJTlQ5NyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxNCA6IFRJTlQ5OCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxNSA6IFRJTlQ5OSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxNiA6IFRJTlQxMDAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxNyA6IFRJTlQxMDEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxOCA6IFRJTlQxMDIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxOSA6IFRJTlQxMDMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyMCA6IFRJTlQxMDQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyMSA6IFRJTlQxMDUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyMiA6IFRJTlQxMDYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyMyA6IFRJTlQxMDcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyNCA6IFRJTlQxMDggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyNSA6IFRJTlQxMDkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyNiA6IFRJTlQxMTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyNyA6IFRJTlQxMTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyOCA6IFRJTlQxMTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyOSA6IFRJTlQxMTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzMCA6IFRJTlQxMTQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzMSA6IFRJTlQxMTUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzMiA6IFRJTlQxMTYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzMyA6IFRJTlQxMTcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzNCA6IFRJTlQxMTggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzNSA6IFRJTlQxMTkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzNiA6IFRJTlQxMjAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzNyA6IFRJTlQxMjEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzOCA6IFRJTlQxMjIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzOSA6IFRJTlQxMjMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0MCA6IFRJTlQxMjQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0MSA6IFRJTlQxMjUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0MiA6IFRJTlQxMjYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0MyA6IFRJTlQxMjcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0NCA6IFRJTlQxMjggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0NSA6IFRJTlQxMjkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0NiA6IFRJTlQxMzAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0NyA6IFRJTlQxMzEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0OCA6IFRJTlQxMzIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0OSA6IFRJTlQxMzMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1MCA6IFRJTlQxMzQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1MSA6IFRJTlQxMzUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1MiA6IFRJTlQxMzYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1MyA6IFRJTlQxMzcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1NCA6IFRJTlQxMzggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1NSA6IFRJTlQxMzkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1NiA6IFRJTlQxNDAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1NyA6IFRJTlQxNDEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1OCA6IFRJTlQxNDIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1OSA6IFRJTlQxNDMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2MCA6IFRJTlQxNDQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2MSA6IFRJTlQxNDUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2MiA6IFRJTlQxNDYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2MyA6IFRJTlQxNDcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2NCA6IFRJTlQxNDggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2NSA6IFRJTlQxNDkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2NiA6IFRJTlQxNTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2NyA6IFRJTlQxNTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2OCA6IFRJTlQxNTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2OSA6IFRJTlQxNTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3MCA6IFRJTlQxNTQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3MSA6IFRJTlQxNTUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3MiA6IFRJTlQxNTYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3MyA6IFRJTlQxNTcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3NCA6IFRJTlQxNTggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3NSA6IFRJTlQxNTkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3NiA6IFRJTlQxNjAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3NyA6IFRJTlQxNjEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3OCA6IFRJTlQxNjIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3OSA6IFRJTlQxNjMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4MCA6IFRJTlQxNjQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4MSA6IFRJTlQxNjUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4MiA6IFRJTlQxNjYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4MyA6IFRJTlQxNjcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4NCA6IFRJTlQxNjggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4NSA6IFRJTlQxNjkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4NiA6IFRJTlQxNzAgICAgICAgKi8NCi19Ow0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfSU5UQ19SZWdpc3RJbnRGdW5jDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDE2X3QgaW50X2lkDQotKiAgICAgICAgICAgICAgOiB2b2lkICgqIGZ1bmMpKHVpbnQzMl90KQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfSU5UQ19SZWdpc3RJbnRGdW5jKHVpbnQxNl90IGludF9pZCwgdm9pZCAoKiBmdW5jKSh1aW50MzJfdCBpbnRfc2Vuc2UpKQ0KLXsNCi0gICAgaW50Y19mdW5jX3RhYmxlW2ludF9pZF0gPSBmdW5jOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0lOVENfVW5kZWZJZA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQxNl90IGludF9pZA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfSU5UQ19VbmRlZklkKHVpbnQxNl90IGludF9pZCkNCi17DQotICAgIHdoaWxlICgxKQ0KLSAgICB7DQotICAgICAgICAvKiBEbyBOb3RoaW5nICovDQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHZvaWQgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCh1aW50MzJfdCBpbnRfc2Vuc2UpDQotew0KLSAgICAvKiBEbyBOb3RoaW5nICovDQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfRklRX0hhbmRsZXJFeGUNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9GSVFfSGFuZGxlckV4ZSh2b2lkKQ0KLXsNCi19DQotDQotLyogVGhlIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgUlRPUyBwb3J0IGxheWVyIGFmdGVyIGl0IGhhcyBtYW5hZ2VkIGludGVycnVwdA0KLWVudHJ5LiAqLw0KLXZvaWQgdkFwcGxpY2F0aW9uSVJRSGFuZGxlciggdWludDMyX3QgdWxJQ0NJQVIgKQ0KLXsNCi11aW50MzJfdCB1bEludGVycnVwdElEOw0KLQ0KLQkvKiBSZS1lbmFibGUgaW50ZXJydXB0cy4gKi8NCi0gICAgX19lbmFibGVfaXJxKCk7DQotDQotCS8qIFRoZSBJRCBvZiB0aGUgaW50ZXJydXB0IGNhbiBiZSBvYnRhaW5lZCBieSBiaXR3aXNlIGFuZGluZyB0aGUgSUNDSUFSIHZhbHVlDQotCXdpdGggMHgzRkYuICovDQotCXVsSW50ZXJydXB0SUQgPSB1bElDQ0lBUiAmIDB4M0ZGVUw7DQotDQotCS8qIENhbGwgdGhlIGZ1bmN0aW9uIGluc3RhbGxlZCBpbiB0aGUgYXJyYXkgb2YgaW5zdGFsbGVkIGhhbmRsZXIgZnVuY3Rpb25zLiAqLw0KLQlpbnRjX2Z1bmNfdGFibGVbIHVsSW50ZXJydXB0SUQgXSggMCApOw0KLX0NCi0NCi0NCi0vKiBFTkQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9vc3RtL29zdG1fZHJpdmVyL29zdG0uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9vc3RtL29zdG1fZHJpdmVyL29zdG0uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IxYzBmYy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS9vc3RtX2RyaXZlci9vc3RtLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgOiBvc3RtLmMNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIE9TIHRpbWVyIGRldmljZSBkcml2ZXIgKEluaXRpYWxpemUgcHJvY2VzcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9vc3RtLmgiICAgICAgICAgICAgLyogT1NUTSBEcml2ZXIgaGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qID09PT0gT1NUTSBIL1cgPT09PSAqLw0KLSNkZWZpbmUgT1NUTV9DSF9UT1RBTCAgICAgICAoMikNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIE9TVE1fT3Blbih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICogb3N0bSk7DQotc3RhdGljIHZvaWQgT1NUTV9DbG9zZSh2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICogb3N0bSwgdWludDMyX3QgKiBjb3VudCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9PU1RNX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MzJfdCBjaGFubmVsDQotKiAgICAgICAgICAgICAgOiB1aW50MzJfdCBtb2RlDQotKiAgICAgICAgICAgICAgOiB1aW50MzJfdCBjeWNsZQ0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfT1NUTV9Jbml0KHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IGN5Y2xlKQ0KLXsNCi0gICAgaW50MzJfdCByZXQ7DQotDQotICAgIGlmICgoY2hhbm5lbCA+PSBPU1RNX0NIX1RPVEFMKSB8fCAobW9kZSA+IE9TVE1fTU9ERV9DT01QQVJFKSkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBzd2l0Y2ggKGNoYW5uZWwpDQotICAgIHsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzA6DQotICAgICAgICAgICAgcmV0ID0gVXNlcmRlZl9PU1RNMF9Jbml0KG1vZGUsIGN5Y2xlKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMToNCi0gICAgICAgICAgICByZXQgPSBVc2VyZGVmX09TVE0xX0luaXQobW9kZSwgY3ljbGUpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIHJldCA9IERFVkRSVl9FUlJPUjsNCi0gICAgICAgIGJyZWFrOw0KLSAgICB9DQotDQotICAgIHJldHVybiByZXQ7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfT1NUTV9PcGVuDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogaW50MzJfdCBjaGFubmVsDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9PU1RNX09wZW4odWludDMyX3QgY2hhbm5lbCkNCi17DQotICAgIGlmIChjaGFubmVsID49IE9TVE1fQ0hfVE9UQUwpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgc3dpdGNoIChjaGFubmVsKQ0KLSAgICB7DQotICAgICAgICBjYXNlIERFVkRSVl9DSF8wOg0KLSAgICAgICAgICAgIE9TVE1fT3BlbigmT1NUTTApOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBjYXNlIERFVkRSVl9DSF8xOg0KLSAgICAgICAgICAgIE9TVE1fT3BlbigmT1NUTTEpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX09TVE1fQ2xvc2UNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MzJfdCBjaGFubmVsDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9PU1RNX0Nsb3NlKHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90ICogY291bnQpDQotew0KLSAgICBpZiAoY2hhbm5lbCA+PSBPU1RNX0NIX1RPVEFMKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIHN3aXRjaCAoY2hhbm5lbCkNCi0gICAgew0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMDoNCi0gICAgICAgICAgICBPU1RNX0Nsb3NlKCZPU1RNMCwgY291bnQpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBjYXNlIERFVkRSVl9DSF8xOg0KLSAgICAgICAgICAgIE9TVE1fQ2xvc2UoJk9TVE0xLCBjb3VudCk7DQotICAgICAgICBicmVhazsNCi0gICAgICAgIGRlZmF1bHQ6DQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICByZXR1cm4gREVWRFJWX1NVQ0NFU1M7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IGludF9vc3RtMF9pbnRlcnJ1cHQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9PU1RNX0ludGVycnVwdCh1aW50MzJfdCBjaGFubmVsKQ0KLXsNCi0gICAgaWYgKGNoYW5uZWwgPj0gT1NUTV9DSF9UT1RBTCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBzd2l0Y2ggKGNoYW5uZWwpDQotICAgIHsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzA6DQotICAgICAgICAgICAgVXNlcmRlZl9PU1RNMF9JbnQoKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMToNCi0gICAgICAgICAgICBVc2VyZGVmX09TVE0xX0ludCgpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogT1NUTV9PcGVuDQotKiBEZXNjcmlwdGlvbiAgOiBUaGlzIGZ1bmN0aW9uIG9wZW5zIE9TVE0uDQotKiBBcmd1bWVudHMgICAgOiB2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICogb3N0bQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHZvaWQgT1NUTV9PcGVuKHZvbGF0aWxlIHN0cnVjdCBzdF9vc3RtX24gKiBvc3RtKQ0KLXsNCi0gICAgb3N0bS0+T1NUTW5UUy5CSVQuT1NUTW5UUyA9IDE7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IE9TVE1fQ2xvc2UNCi0qIERlc2NyaXB0aW9uICA6IFRoaXMgZnVuY3Rpb24gY2xvc2VzIE9TVE0uDQotKiBBcmd1bWVudHMgICAgOiB2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICogb3N0bQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9pZCBPU1RNX0Nsb3NlKHZvbGF0aWxlIHN0cnVjdCBzdF9vc3RtX24gKiBvc3RtLCB1aW50MzJfdCAqIGNvdW50KQ0KLXsNCi0gICAgb3N0bS0+T1NUTW5UVC5CSVQuT1NUTW5UVCA9IDE7DQotICAgICpjb3VudCA9IG9zdG0tPk9TVE1uQ05UOw0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9vc3RtL3VzZXJkZWYvb3N0bV91c2VyZGVmLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS91c2VyZGVmL29zdG1fdXNlcmRlZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTVkZGYzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9vc3RtL3VzZXJkZWYvb3N0bV91c2VyZGVmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogb3N0bV91c2VyZGVmLmMNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuMTMNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBPUyB0aW1lciBkZXZpY2UgZHJpdmVyIChVc2VyIGRlZmluZSBmdW5jdGlvbikNCi0qIE9wZXJhdGlvbiAgICA6IA0KLSogTGltaXRhdGlvbnMgIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgICAgIC8qIERldmljZSBEcml2ZXIgY29tbW9uIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfb3N0bS5oIiAgICAgICAgICAgIC8qIE9TVE0gRHJpdmVyIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIiAgICAgICAgICAgIC8qIElOVEMgRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLSNpbmNsdWRlICJtYWluLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgUDBfQ0xPQ0tfRlJFUVVFTkNZX2tIeiAgKDMzLjMzMyAqIDEwMDApICAgICAvKiAzMy4zMzNNSHogKi8NCi0jZGVmaW5lIE1BWF9DWUNMRV9tc2VjICAgICAgICAgICgweEZGRkZGRkZGIC8gUDBfQ0xPQ0tfRlJFUVVFTkNZX2tIeikNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2xhdGlsZSB1aW50OF90IG9zdG1faW50X2ZsZzsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX09TVE0wX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MzJfdCBtb2RlDQotKiAgICAgICAgICAgICAgOiB1aW50MzJfdCBjeWNsZQ0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFVzZXJkZWZfT1NUTTBfSW5pdCh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBjeWNsZSkNCi17DQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9PU1RNMV9Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDMyX3QgbW9kZQ0KLSogICAgICAgICAgICAgIDogdWludDMyX3QgY3ljbGUNCi0qIFJldHVybiBWYWx1ZSA6IERFVkRSVl9TVUNDRVNTDQotKiAgICAgICAgICAgICAgOiBERVZEUlZfRVJST1INCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBVc2VyZGVmX09TVE0xX0luaXQodWludDMyX3QgbW9kZSwgdWludDMyX3QgY3ljbGUpDQotew0KLSAgICByZXR1cm4gMDsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9PU1RNMF9JbnQNCi0qIERlc2NyaXB0aW9uICA6IA0KLSogQXJndW1lbnRzICAgIDogDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9PU1RNMF9JbnQodm9pZCkNCi17DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfT1NUTTFfSW50DQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfT1NUTTFfSW50KHZvaWQpDQotew0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX09TVE0wX1dhaXRJbnQNCi0qIERlc2NyaXB0aW9uICA6IA0KLSogQXJndW1lbnRzICAgIDogDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9PU1RNMF9XYWl0SW50KHZvaWQpDQotew0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX09TVE0xX1dhaXRJbnQNCi0qIERlc2NyaXB0aW9uICA6IA0KLSogQXJndW1lbnRzICAgIDogDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9PU1RNMV9XYWl0SW50KHZvaWQpDQotew0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9zY2lmX3VhcnQvc2NpZl91YXJ0X2RyaXZlci9zY2lmX3VhcnQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9zY2lmX3VhcnQvc2NpZl91YXJ0X2RyaXZlci9zY2lmX3VhcnQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3ZjBhMi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvc2NpZl91YXJ0L3NjaWZfdWFydF9kcml2ZXIvc2NpZl91YXJ0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICA6IHNjaWZfdWFydF9pbml0aWFsaXplLmMNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFNDSUYgVUFSVCBkZXZpY2UgZHJpdmVyIChJbml0aWFsaXplIHByb2Nlc3MpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgICAgIC8qIERldmljZSBEcml2ZXIgY29tbW9uIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfc2NpZl91YXJ0LmgiICAgICAgIC8qIFVBUlQgRHJpdmVyIGhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIFNDSUZfVUFSVF9DSF9UT1RBTCAgICAgICg4KQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9TQ0lGX1VBUlRfSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQzMl90IGNoYW5uZWwNCi0qICAgICAgICAgICAgICA6IHVpbnQzMl90IG1vZGUNCi0qICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgOiAgIFNDSUZfVUFSVF9NT0RFX1cNCi0qICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgOiAgIFNDSUZfVUFSVF9NT0RFX1INCi0qICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgOiAgIFNDSUZfVUFSVF9NT0RFX1JXDQotKiAgICAgICAgICAgICAgOiB1aW50MTZfdCBja3MNCi0qICAgICAgICAgICAgICA6IHVpbnQ4X3Qgc2NicnINCi0qIFJldHVybiBWYWx1ZSA6IERFVkRSVl9TVUNDRVNTICAgOiBTdWNjZXNzDQotKiAgICAgICAgICAgICAgOiBERVZEUlZfRVJST1IgICAgIDogRXJyb3INCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBSX1NDSUZfVUFSVF9Jbml0KHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90IG1vZGUsIHVpbnQxNl90IGNrcywgdWludDhfdCBzY2JycikNCi17DQotICAgIGlmICgoY2hhbm5lbCA+PSBTQ0lGX1VBUlRfQ0hfVE9UQUwpIHx8IChtb2RlIDwgU0NJRl9VQVJUX01PREVfVykgfHwgKG1vZGUgPiBTQ0lGX1VBUlRfTU9ERV9SVykgfHwgKGNrcyA+IDMpKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIHN3aXRjaCAoY2hhbm5lbCkNCi0gICAgew0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMjoNCi0gICAgICAgICAgICBVc2VyZGVmX1NDSUYyX1VBUlRfSW5pdChtb2RlLCBja3MsIHNjYnJyKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICAvKiBEbyBOb3RoaW5nICovDQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICByZXR1cm4gREVWRFJWX1NVQ0NFU1M7DQotfQ0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL3NjaWZfdWFydC91c2VyZGVmL3NjaWZfdWFydF91c2VyZGVmLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvc2NpZl91YXJ0L3VzZXJkZWYvc2NpZl91YXJ0X3VzZXJkZWYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E5NWJjMS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvc2NpZl91YXJ0L3VzZXJkZWYvc2NpZl91YXJ0X3VzZXJkZWYuYworKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBzY2lmX3VhcnRfdXNlcmRlZi5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjEzDQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gU0NJRiBVQVJUIGRldmljZSBkcml2ZXIgKFVzZXIgZGVmaW5lIGZ1bmN0aW9uKQ0KLSogT3BlcmF0aW9uICAgIDogDQotKiBMaW1pdGF0aW9ucyAgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9zY2lmX3VhcnQuaCIgICAgICAgLyogVUFSVCBEcml2ZXIgaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9pbnRjLmgiICAgICAgICAgICAgLyogSU5UQyBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9TQ0lGMl9VQVJUX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50OF90ICBtb2RlDQotKiAgICAgICAgICAgICAgOiB1aW50MTZfdCBja3MNCi0qICAgICAgICAgICAgICA6IHVpbnQ4X3QgIHNjYnJyDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9TQ0lGMl9VQVJUX0luaXQodWludDhfdCBtb2RlLCB1aW50MTZfdCBja3MsIHVpbnQ4X3Qgc2NicnIpDQotew0KLSAgICAvKiA9PT09IFNDSUYgaW5pdGlhbCBzZXR0aW5nID09PT0gKi8NCi0gICAgLyogLS0tLSBTZXJpYWwgY29udHJvbCByZWdpc3RlciAoU0NTQ1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogU0NJRiB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBvcGVyYXRpb25zIHN0b3AgKi8NCi0gICAgU0NJRjIuU0NTQ1IuV09SRCA9IDB4MDAwMDsNCi0NCi0gICAgaWYgKFNDSUZfVUFSVF9NT0RFX1cgPT0gKG1vZGUgJiBTQ0lGX1VBUlRfTU9ERV9XKSkNCi0gICAgew0KLSAgICAgICAgLyogLS0tLSBGSUZPIGNvbnRyb2wgcmVnaXN0ZXIgKFNDRkNSMikgc2V0dGluZyAtLS0tICovDQotICAgICAgICBTQ0lGMi5TQ0ZDUi5CSVQuVEZSU1QgPSAxOyAgLyogVHJhbnNtaXQgRklGTyByZXNldCAqLw0KLSAgICB9DQotDQotICAgIGlmIChTQ0lGX1VBUlRfTU9ERV9SID09IChtb2RlICYgU0NJRl9VQVJUX01PREVfUikpDQotICAgIHsNCi0gICAgICAgIC8qIC0tLS0gRklGTyBjb250cm9sIHJlZ2lzdGVyIChTQ0ZDUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAgICAgLyogU0NJRiB0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZyBvcGVyYXRpb25zIHN0b3AgKi8NCi0gICAgCVNDSUYyLlNDRkNSLkJJVC5SRlJTVCA9IDE7DQotDQotICAgIAkvKiBSZWNlaXZlIEZJRk8gZGF0YSByZWdpc3RlciByZXNldCAqLw0KLSAgICB9DQotDQotICAgIC8qIC0tLS0gU2VyaWFsIHN0YXR1cyByZWdpc3RlcihTQ0ZTUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAvKiBFUixCUkssRFIgYml0IGNsZWFyICovDQotICAgIFNDSUYyLlNDRlNSLldPUkQgJj0gMHhGRjZFOw0KLQ0KLSAgICAvKiAtLS0tIExpbmUgc3RhdHVzIHJlZ2lzdGVyIChTQ0xTUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAvKiBPUkVSIGJpdCBjbGVhciAqLw0KLSAgICBTQ0lGMi5TQ0xTUi5CSVQuT1JFUiAgPSAwOw0KLQ0KLSAgICAvKiAtLS0tIFNlcmlhbCBjb250cm9sIHJlZ2lzdGVyIChTQ1NDUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAvKiBCJzAwIDogSW50ZXJuYWwgQ0xLICovDQotICAgIFNDSUYyLlNDU0NSLkJJVC5DS0UgICA9IDB4MDsNCi0NCi0gICAgLyogLS0tLSBTZXJpYWwgbW9kZSByZWdpc3RlciAoU0NTTVIyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogIENvbW11bmljYXRpb24gbW9kZSAwOiBBc3luY2hyb25vdXMgbW9kZSAJCQkqLw0KLSAgICAvKiAgQ2hhcmFjdGVyIGxlbmd0aCAgIDA6IDgtYml0IGRhdGEJCQkJCSovDQotICAgIC8qICBQYXJpdHkgZW5hYmxlICAgICAgMDogQWRkIGFuZCBjaGVjayBhcmUgZGlzYWJsZWQJKi8NCi0gICAgLyogIFN0b3AgYml0IGxlbmd0aCAgICAwOiAxIHN0b3AgYml0CQkJCQkqLw0KLSAgICAvKiAgQ2xvY2sgc2VsZWN0ICAgICAgIGNrcyhhcmd1bWVudCkgCQkJCQkqLw0KLSAgICBTQ0lGMi5TQ1NNUi5XT1JEID0gY2tzICYgMHgwMDAzOw0KLQ0KLSAgICAvKiAtLS0tIFNldHMgdGhlIFNlcmlhbCBleHRlbnNpb24gbW9kZSByZWdpc3RlciAoU0NFTVIyKSAtLS0tICovDQotICAgIC8qIEJhdWQgcmF0ZSBnZW5lcmF0b3IgZG91YmxlLXNwZWVkIG1vZGUsIDA6IE5vcm1hbCBtb2RlIAkqLw0KLSAgICAvKiBCYXNlIGNsb2NrIHNlbGVjdCBpbiBhc3luY2hyb25vdXMgbW9kZSwgCQkJCQkqLw0KLSAgICAvKiAgIDA6IEJhc2UgY2xvY2sgaXMgMTYgdGltZXMgdGhlIGJpdCByYXRlIAkJCQkqLw0KLSAgICBTQ0lGMi5TQ0VNUi5XT1JEID0gMHgwMDAwOw0KLQ0KLSAgICAvKiAtLS0tIEJpdCByYXRlIHJlZ2lzdGVyIChTQ0JSUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICBTQ0lGMi5TQ0JSUi5CWVRFID0gc2NicnI7DQotDQotICAgIC8qIC0tLS0gRklGTyBjb250cm9sIHJlZ2lzdGVyIChTQ0ZDUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAvKiAgUlRTIG91dHB1dCBhY3RpdmUgdHJpZ2dlciAgICAgICAgOkluaXRpYWwgdmFsdWUJKi8NCi0gICAgLyogIFJlY2VpdmUgRklGTyBkYXRhIHRyaWdnZXIgICAgICAgIDoxLWRhdGEJCSovDQotICAgIC8qICBUcmFuc21pdCBGSUZPIGRhdGEgdHJpZ2dlciAgICAgICA6MC1kYXRhCQkqLw0KLSAgICAvKiAgTW9kZW0gY29udHJvbCBlbmFibGUgICAgICAgICAgICAgOkRpc2FibGVkCQkqLw0KLSAgICAvKiAgUmVjZWl2ZSBGSUZPIGRhdGEgcmVnaXN0ZXIgcmVzZXQgOkRpc2FibGVkCQkqLw0KLSAgICAvKiAgTG9vcC1iYWNrIHRlc3QgICAgICAgICAgICAgICAgICAgOkRpc2FibGVkIAkJKi8NCi0gICAgU0NJRjIuU0NGQ1IuV09SRCA9IDB4MDAzMDsNCi0NCi0gICAgLyogLS0tLSBTZXJpYWwgcG9ydCByZWdpc3RlciAoU0NTUFRSMikgc2V0dGluZyAtLS0tICovDQotICAgIC8qIFNlcmlhbCBwb3J0ICBicmVhayBvdXRwdXQoU1BCMklPKSAgMTogRW5hYmxlZCAqLw0KLSAgICAvKiBTZXJpYWwgcG9ydCBicmVhayBkYXRhKFNQQjJEVCkgIDE6IEhpZ2gtbGV2ZWwgKi8NCi0gICAgU0NJRjIuU0NTUFRSLldPUkQgfD0gMHgwMDAzOw0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9pcnFmaXFfaGFuZGxlci5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9oYW5kbGVyL2lycWZpcV9oYW5kbGVyLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzQ3ZmIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9oYW5kbGVyL2lycWZpcV9oYW5kbGVyLnMKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IGlycWZpcV9oYW5kbGVyLnMNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24NCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS4xMw0KLTsqICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXINCi07KiAgICAgICAgICAgICAgIDoNCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBJUlEsIEZJUSBoYW5kbGVyDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLTsqICAgICAgICAgOiAyMy4wNS4yMDEyIDAuMDENCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi07IFN0YW5kYXJkIGRlZmluaXRpb25zIG9mIG1vZGUgYml0cyBhbmQgaW50ZXJydXB0IChJICYgRikgZmxhZ3MgaW4gUFNScw0KLUlOVENfSUNDSUFSX0FERFIgICAgRVFVIAkweEU4MjAyMDBDDQotSU5UQ19JQ0NFT0lSX0FERFIgICBFUVUgCTB4RTgyMDIwMTANCi0NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbnRyeSBwb2ludCBmb3IgdGhlIEZJUSBoYW5kbGVyDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlQUkVTRVJWRTgNCi0JQVJFQSBJUlFfRklRX0hBTkRMRVIsIENPREUsIFJFQURPTkxZDQotDQotCUlNUE9SVAlGaXFIYW5kbGVyX0ludGVycnVwdA0KLQ0KLQlFWFBPUlQgIGZpcV9oYW5kbGVyDQotDQotZmlxX2hhbmRsZXINCi0JQkwJRmlxSGFuZGxlcl9JbnRlcnJ1cHQNCi0NCi1maXFfaGFuZGxlcl9lbmQNCi0JQglmaXFfaGFuZGxlcl9lbmQNCi0NCi0NCi1MaXRlcmFsczMNCi0JTFRPUkcNCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9oYW5kbGVyL3Jlc2V0X2hhbmRsZXIucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9yZXNldF9oYW5kbGVyLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhYWU2NDIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9oYW5kbGVyL3Jlc2V0X2hhbmRsZXIucworKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IHJlc2V0X2hhbmRsZXIucw0KLTsqIFZlcnNpb24gICAgICAgOiAwLjAxDQotOyogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLTsqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLTsqICAgICAgICAgICAgICAgOiANCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBSZXNldCBoYW5kbGVyDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLTsqICAgICAgICAgOiAyMy4wNS4yMDEyIDAuMDENCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi07IFN0YW5kYXJkIGRlZmluaXRpb25zIG9mIG1vZGUgYml0cyBhbmQgaW50ZXJydXB0IChJICYgRikgZmxhZ3MgaW4gUFNScw0KLVVTUl9NT0RFCQlFUVUJCTB4MTANCi1GSVFfTU9ERQkJRVFVCQkweDExDQotSVJRX01PREUJCUVRVQkJMHgxMg0KLVNWQ19NT0RFCQlFUVUJCTB4MTMNCi1BQlRfTU9ERQkJRVFVCQkweDE3DQotVU5EX01PREUJCUVRVQkJMHgxYg0KLVNZU19NT0RFCQlFUVUJCTB4MWYNCi1UaHVtX2JpdAkJRVFVCQkweDIwCQkJOyBDUFNSL1NQU1IgVGh1bWIgYml0DQotDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW50cnkgcG9pbnQgZm9yIHRoZSBSZXNldCBoYW5kbGVyDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlQUkVTRVJWRTgNCi0JQVJFQSBSRVNFVF9IQU5ETEVSLCBDT0RFLCBSRUFET05MWQ0KLQ0KLQlJTVBPUlQgIHx8SW1hZ2UkJEFSTV9MSUJfU1RBQ0skJFpJJCRMaW1pdHx8ICAgOyBMaW5rZXIgc3ltYm9sIGZyb20gc2NhdHRlciBmaWxlDQotCUlNUE9SVCAgfHxJbWFnZSQkSVJRX1NUQUNLJCRaSSQkTGltaXR8fCAgICAgICA7IExpbmtlciBzeW1ib2wgZnJvbSBzY2F0dGVyIGZpbGUNCi0JSU1QT1JUICB8fEltYWdlJCRGSVFfU1RBQ0skJFpJJCRMaW1pdHx8ICAgICAgIDsgTGlua2VyIHN5bWJvbCBmcm9tIHNjYXR0ZXIgZmlsZQ0KLQlJTVBPUlQgIHx8SW1hZ2UkJFNWQ19TVEFDSyQkWkkkJExpbWl0fHwgICAgICAgOyBMaW5rZXIgc3ltYm9sIGZyb20gc2NhdHRlciBmaWxlDQotCUlNUE9SVCAgfHxJbWFnZSQkQUJUX1NUQUNLJCRaSSQkTGltaXR8fCAgICAgICA7IExpbmtlciBzeW1ib2wgZnJvbSBzY2F0dGVyIGZpbGUNCi0NCi0JSU1QT1JUCVBlcmlwaGVyYWxfQmFzaWNJbml0DQotCUlNUE9SVAlpbml0X1RUQg0KLQlJTVBPUlQgIF9fbWFpbg0KLQ0KLQlFWFBPUlQJcmVzZXRfaGFuZGxlcg0KLQlFWFBPUlQJdW5kZWZpbmVkX2hhbmRsZXINCi0JRVhQT1JUICBzdmNfaGFuZGxlcg0KLQlFWFBPUlQgIHByZWZldGNoX2hhbmRsZXINCi0JRVhQT1JUICBhYm9ydF9oYW5kbGVyDQotCUVYUE9SVCAgcmVzZXJ2ZWRfaGFuZGxlcg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFJlc2V0IEhhbmRsZXINCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotcmVzZXRfaGFuZGxlcglGVU5DVElPTiB7fQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IERpc2FibGUgY2FjaGUgYW5kIE1NVSBpbiBjYXNlIGl0IHdhcyBsZWZ0IGVuYWJsZWQgZnJvbSBhbiBlYXJsaWVyIHJ1bg0KLTsgVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRvbmUgZnJvbSBhIGNvbGQgcmVzZXQgDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlNUkMgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMAkJOzs7IFJlYWQgQ1AxNSBTeXN0ZW0gQ29udHJvbCByZWdpc3RlciAoU0NUTFIpDQotCUJJQyAgcjAsIHIwLCAjKDB4MSA8PCAxMikJCTs7OyBDbGVhciBJIGJpdCAxMiB0byBkaXNhYmxlIEkgQ2FjaGUNCi0JQklDICByMCwgcjAsICMoMHgxIDw8ICAyKQkJOzs7IENsZWFyIEMgYml0ICAyIHRvIGRpc2FibGUgRCBDYWNoZQ0KLQlCSUMgIHIwLCByMCwgIzB4MQkJCQk7OzsgQ2xlYXIgTSBiaXQgIDAgdG8gZGlzYWJsZSBNTVUNCi0JTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCTs7OyBXcml0ZSB2YWx1ZSBiYWNrIHRvIENQMTUgU3lzdGVtIENvbnRyb2wgcmVnaXN0ZXINCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBTZXR0aW5nIHVwIFN0YWNrIEFyZWENCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCQkJCQkJCQkJOzs7IFNWQyBNb2RlKERlZmF1bHQpDQotCUxEUiAgc3AsID18fEltYWdlJCRTVkNfU1RBQ0skJFpJJCRMaW1pdHx8DQotDQotCUNQUyAgI0lSUV9NT0RFCQkJCQk7OzsgSVJRIE1vZGUNCi0JTERSICBzcCwgPXx8SW1hZ2UkJElSUV9TVEFDSyQkWkkkJExpbWl0fHwNCi0NCi0JQ1BTICAjRklRX01PREUJCQkJCTs7OyBGSVEgTW9kZQ0KLQlMRFIgIHNwLCA9fHxJbWFnZSQkRklRX1NUQUNLJCRaSSQkTGltaXR8fA0KLQ0KLQlDUFMgICNBQlRfTU9ERQkJCQkJOzs7IEFCVCBNb2RlDQotCUxEUiAgc3AsID18fEltYWdlJCRBQlRfU1RBQ0skJFpJJCRMaW1pdHx8DQotDQotOzsgRnJlZVJUT1MgTm90ZToNCi07OyBGcmVlUlRPUyBkb2VzIG5vdCBuZWVkIGEgU3lzdGVtL1VzZXIgbW9kZSBzdGFjayBhcyBvbmx5IHRhc2tzIHJ1biBpbg0KLTs7IFN5c3RlbS9Vc2VyIG1vZGUsIGFuZCB0aGVpciBzdGFjayBpcyBhbGxvY2F0ZWQgd2hlbiB0aGUgdGFzayBpcyBjcmVhdGVkLg0KLTs7IFRoZXJlZm9yZSB0aGUgQ1NUQUNLIGFsbG9jYXRlZCBpbiB0aGUgbGlua2VyIHNjcmlwdCBpcyBpbnN0ZWFkIGdpdmVuIHRvDQotOzsgU3VwZXJ2aXNvciBtb2RlLCBhbmQgbWFpbigpIGlzIGNhbGxlZCBmcm9tIFN1cGVydmlzb3IgbW9kZS4NCi0NCi0JQ1BTICAjU1ZDX01PREUJCQkJCTs7OyBTVkMgTW9kZQ0KLQ0KLTs7IFNWQyBtb2RlIFN0YWNrIHBvaW50ZXIgaXMgc2V0IHVwIEFSTV9MSUJfU1RBQ0sgaW4gdGhlIF9fbWFpbigpLT5fX2VudHJ5KCkNCi0JTERSICBzcCwgPXx8SW1hZ2UkJEFSTV9MSUJfU1RBQ0skJFpJJCRMaW1pdHx8DQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgVExCIG1haW50ZW5hbmNlLCBJbnZhbGlkYXRlIERhdGEgYW5kIEluc3RydWN0aW9uIFRMQnMNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCU1PViAgcjAsIzANCi0JTUNSICBwMTUsIDAsIHIwLCBjOCwgYzcsIDAJCTs7OyBDb3J0ZXgtQTkgSS1UTEIgYW5kIEQtVExCIGludmFsaWRhdGlvbiAoVExCSUFMTCkNCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgSW52YWxpZGF0ZSBpbnN0cnVjdGlvbiBjYWNoZSwgYWxzbyBmbHVzaGVzIEJUQUMNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlNT1YgIHIwLCAjMAkJCQkJCTs7OyBTQloNCi0JTUNSICBwMTUsIDAsIHIwLCBjNywgYzUsIDAJCTs7OyBJQ0lBTExVIC0gSW52YWxpZGF0ZSBlbnRpcmUgSSBDYWNoZSwgYW5kIGZsdXNoZXMgYnJhbmNoIHRhcmdldCBjYWNoZQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IENhY2hlIEludmFsaWRhdGlvbiBjb2RlIGZvciBDb3J0ZXgtQTkNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCTs7OyBJbnZhbGlkYXRlIEwxIEluc3RydWN0aW9uIENhY2hlDQotCU1SQyAgcDE1LCAxLCByMCwgYzAsIGMwLCAxCQk7OzsgUmVhZCBDYWNoZSBMZXZlbCBJRCBSZWdpc3RlciAoQ0xJRFIpDQotCVRTVCAgcjAsICMweDMJCQkJCTs7OyBIYXJ2YXJkIENhY2hlPw0KLQlNT1YgIHIwLCAjMA0KLQlNQ1JORSAgIHAxNSwgMCwgcjAsIGM3LCBjNSwgMAk7OzsgSW52YWxpZGF0ZSBJbnN0cnVjdGlvbiBDYWNoZQ0KLQ0KLQk7OzsgSW52YWxpZGF0ZSBEYXRhL1VuaWZpZWQgQ2FjaGVzDQotCU1SQyAgcDE1LCAxLCByMCwgYzAsIGMwLCAxCQk7OzsgUmVhZCBDTElEUg0KLQlBTkRTIHIzLCByMCwgIzB4MDcwMDAwMDAJCTs7OyBFeHRyYWN0IGNvaGVyZW5jeSBsZXZlbA0KLQlNT1YgIHIzLCByMywgTFNSICMyMwkJCTs7OyBUb3RhbCBjYWNoZSBsZXZlbHMgPDwgMQ0KLQlCRVEgIEZpbmlzaGVkCQkJCQk7OzsgSWYgMCwgbm8gbmVlZCB0byBjbGVhbg0KLQ0KLQlNT1YgIHIxMCwgIzAJCQkJCTs7OyBSMTAgaG9sZHMgY3VycmVudCBjYWNoZSBsZXZlbCA8PCAxDQotTG9vcDENCi0JQUREICByMiwgcjEwLCByMTAsIExTUiAjMQkJOzs7IFIyIGhvbGRzIGNhY2hlICJTZXQiIHBvc2l0aW9uIA0KLQlNT1YgIHIxLCByMCwgTFNSIHIyCQkJCTs7OyBCb3R0b20gMyBiaXRzIGFyZSB0aGUgQ2FjaGUtdHlwZSBmb3IgdGhpcyBsZXZlbA0KLQlBTkQgIHIxLCByMSwgIzcJCQkJCTs7OyBJc29sYXRlIHRob3NlIGxvd2VyIDMgYml0cw0KLQlDTVAgIHIxLCAjMg0KLQlCTFQgIFNraXAJCQkJCQk7OzsgTm8gY2FjaGUgb3Igb25seSBpbnN0cnVjdGlvbiBjYWNoZSBhdCB0aGlzIGxldmVsDQotDQotCU1DUiAgcDE1LCAyLCByMTAsIGMwLCBjMCwgMAkJOzs7IFdyaXRlIHRoZSBDYWNoZSBTaXplIHNlbGVjdGlvbiByZWdpc3RlciAoQ1NTRUxSKQ0KLQlJU0IJCQkJCQkJCTs7OyBJU0IgdG8gc3luYyB0aGUgY2hhbmdlIHRvIHRoZSBDYWNoZVNpemVJRCByZWcNCi0JTVJDICBwMTUsIDEsIHIxLCBjMCwgYzAsIDAJCTs7OyBSZWFkcyBjdXJyZW50IENhY2hlIFNpemUgSUQgcmVnaXN0ZXIgKENDU0lEUikNCi0JQU5EICByMiwgcjEsICM3CQkJCQk7OzsgRXh0cmFjdCB0aGUgbGluZSBsZW5ndGggZmllbGQNCi0JQUREICByMiwgcjIsICM0CQkJCQk7OzsgQWRkIDQgZm9yIHRoZSBsaW5lIGxlbmd0aCBvZmZzZXQgKGxvZzIgMTYgYnl0ZXMpDQotCUxEUiAgcjQsID0weDNGRg0KLQlBTkRTIHI0LCByNCwgcjEsIExTUiAjMwkJCTs7OyBSNCBpcyB0aGUgbWF4IG51bWJlciBvbiB0aGUgd2F5IHNpemUgKHJpZ2h0IGFsaWduZWQpDQotCUNMWiAgcjUsIHI0ICAgICAgICAgICAgICAgICAgICAgOzs7IFI1IGlzIHRoZSBiaXQgcG9zaXRpb24gb2YgdGhlIHdheSBzaXplIGluY3JlbWVudA0KLQlMRFIgIHI3LCA9MHg3RkZGDQotCUFORFMgcjcsIHI3LCByMSwgTFNSICMxMwkJOzs7IFI3IGlzIHRoZSBtYXggbnVtYmVyIG9mIHRoZSBpbmRleCBzaXplIChyaWdodCBhbGlnbmVkKQ0KLUxvb3AyDQotCU1PViAgcjksIHI0CQkJCQkJOzs7IFI5IHdvcmtpbmcgY29weSBvZiB0aGUgbWF4IHdheSBzaXplIChyaWdodCBhbGlnbmVkKQ0KLQ0KLUxvb3AzDQotCU9SUiAgcjExLCByMTAsIHI5LCBMU0wgcjUJCTs7OyBGYWN0b3IgaW4gdGhlIFdheSBudW1iZXIgYW5kIGNhY2hlIG51bWJlciBpbnRvIFIxMQ0KLQlPUlIgIHIxMSwgcjExLCByNywgTFNMIHIyCQk7OzsgRmFjdG9yIGluIHRoZSBTZXQgbnVtYmVyDQotCU1DUiAgcDE1LCAwLCByMTEsIGM3LCBjNiwgMgkJOzs7IEludmFsaWRhdGUgYnkgU2V0L1dheSAoRENJU1cpDQotCVNVQlMgcjksIHI5LCAjMQkJCQkJOzs7IERlY3JlbWVudCB0aGUgV2F5IG51bWJlcg0KLQlCR0UgIExvb3AzDQotCVNVQlMgcjcsIHI3LCAjMQkJCQkJOzs7IERlY3JlbWVudCB0aGUgU2V0IG51bWJlcg0KLQlCR0UgIExvb3AyDQotU2tpcA0KLQlBREQgIHIxMCwgcjEwLCAjMgkJCQk7OzsgaW5jcmVtZW50IHRoZSBjYWNoZSBudW1iZXINCi0JQ01QICByMywgcjEwDQotCUJHVCAgTG9vcDENCi0NCi1GaW5pc2hlZA0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFRUQiBpbml0aWFsaXplDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlCTAlpbml0X1RUQgkJCQkJOzs7IEluaXRpYWxpemUgVFRCDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFNldHVwIGRvbWFpbiBjb250cm9sIHJlZ2lzdGVyIC0gRW5hYmxlIGFsbCBkb21haW5zIHRvIGNsaWVudCBtb2RlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMywgYzAsIDAJCQk7OzsgUmVhZCBEb21haW4gQWNjZXNzIENvbnRyb2wgUmVnaXN0ZXIgKERBQ1IpDQotCUxEUiAgcjAsID0weDU1NTU1NTU1CQkJCTs7OyBJbml0aWFsaXplIGV2ZXJ5IGRvbWFpbiBlbnRyeSB0byBiMDEgKGNsaWVudCkNCi0JTUNSICBwMTUsIDAsIHIwLCBjMywgYzAsIDAJCQk7OzsgV3JpdGUgRG9tYWluIEFjY2VzcyBDb250cm9sIFJlZ2lzdGVyDQotDQotCQkJSUYge1RBUkdFVF9GRUFUVVJFX05FT059IHx8IHtUQVJHRVRfRlBVX1ZGUH0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbmFibGUgYWNjZXNzIHRvIE5FT04vVkZQIGJ5IGVuYWJsaW5nIGFjY2VzcyB0byBDb3Byb2Nlc3NvcnMgMTAgYW5kIDExLg0KLTsgRW5hYmxlcyBGdWxsIEFjY2VzcyBpLmUuIGluIGJvdGggcHJpdmlsZWdlZCBhbmQgbm9uIHByaXZpbGVnZWQgbW9kZXMNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCU1SQyAgcDE1LCAwLCByMCwgYzEsIGMwLCAyCQkJOzs7IFJlYWQgQ29wcm9jZXNzb3IgQWNjZXNzIENvbnRyb2wgUmVnaXN0ZXIgKENQQUNSKQ0KLQlPUlIgIHIwLCByMCwgIygweEYgPDwgMjApCQkJOzs7IEVuYWJsZSBhY2Nlc3MgdG8gQ1AgMTAgJiAxMQ0KLQlNQ1IgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMgkJCTs7OyBXcml0ZSBDb3Byb2Nlc3NvciBBY2Nlc3MgQ29udHJvbCBSZWdpc3RlciAoQ1BBQ1IpDQotCUlTQg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgU3dpdGNoIG9uIHRoZSBWRlAgYW5kIE5FT04gaGFyZHdhcmUNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTU9WICByMCwgIzB4NDAwMDAwMDANCi0JVk1TUiBGUEVYQywgcjAJCQkJCQk7OzsgV3JpdGUgRlBFWEMgcmVnaXN0ZXIsIEVOIGJpdCBzZXQNCi0NCi0JCQlFTkRJRg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbmFibGUgTU1VDQotOyBMZWF2aW5nIHRoZSBjYWNoZXMgZGlzYWJsZWQgdW50aWwgYWZ0ZXIgc2NhdHRlciBsb2FkaW5nKF9fbWFpbikuDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCQk7OzsgUmVhZCBDUDE1IFN5c3RlbSBDb250cm9sIHJlZ2lzdGVyIChTQ1RMUikNCi0JQklDICByMCwgcjAsICMoMHgxIDw8IDEyKQkJCTs7OyBDbGVhciBJIGJpdCAxMiB0byBkaXNhYmxlIEkgQ2FjaGUNCi0JQklDICByMCwgcjAsICMoMHgxIDw8ICAyKQkJCTs7OyBDbGVhciBDIGJpdCAgMiB0byBkaXNhYmxlIEQgQ2FjaGUNCi0JQklDICByMCwgcjAsICMweDIJCQkJCTs7OyBDbGVhciBBIGJpdCAgMSB0byBkaXNhYmxlIHN0cmljdCBhbGlnbm1lbnQgZmF1bHQgY2hlY2tpbmcNCi0JT1JSICByMCwgcjAsICMweDEJCQkJCTs7OyBTZXQgTSBiaXQgMCB0byBlbmFibGUgTU1VIGJlZm9yZSBzY2F0dGVyIGxvYWRpbmcNCi0JTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCQk7OzsgV3JpdGUgQ1AxNSBTeXN0ZW0gQ29udHJvbCByZWdpc3Rlcg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEhhcmR3YXJlIGluaXRpYWxpemUNCi07IEluaXRpYWxpemUgQ1BHLCBCU0MgZm9yIENTMCBhbmQgQ1MxLCBhbmQgZW5hYmxlIE9uLUNoaXAgRGF0YS1SZXRlbnRpb24gUkFNDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlMRFIgIHIxMiw9UGVyaXBoZXJhbF9CYXNpY0luaXQJCTs7OyBTYXZlIHRoaXMgaW4gcmVnaXN0ZXIgZm9yIHBvc3NpYmxlIGxvbmcganVtcA0KLQlCTFggIHIxMgkJCQkJCQk7OzsgSGFyZHdhcmUgSW5pdGlhbGl6ZQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBCcmFuY2ggdG8gX19tYWluDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTERSICByMTIsPV9fbWFpbgkJCQkJOzs7IFNhdmUgdGhpcyBpbiByZWdpc3RlciBmb3IgcG9zc2libGUgbG9uZyBqdW1wDQotCUJYICAgcjEyCQkJCQkJCTs7OyBCcmFuY2ggdG8gX19tYWluICBDIGxpYnJhcnkgZW50cnkgcG9pbnQNCi0NCi0NCi0JRU5ERlVOQw0KLQ0KLUxpdGVyYWxzMg0KLQlMVE9SRw0KLQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IE90aGVyIEhhbmRsZXINCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotdW5kZWZpbmVkX2hhbmRsZXINCi0JQgl1bmRlZmluZWRfaGFuZGxlcgkJCQk7Ozsgxb3CqeKAncOU4oCZbsaS4oC577+9W8aSdg0KLQ0KLXN2Y19oYW5kbGVyDQotCUIJc3ZjX2hhbmRsZXIJCQkJCQk7Ozsgxb3CqeKAncOU4oCZbsaS4oC577+9W8aSdg0KLQ0KLXByZWZldGNoX2hhbmRsZXINCi0JQglwcmVmZXRjaF9oYW5kbGVyCQkJCTs7OyDFvcKp4oCdw5TigJluxpLigLnvv71bxpJ2DQotDQotYWJvcnRfaGFuZGxlcg0KLQlCCWFib3J0X2hhbmRsZXIJCQkJCTs7OyDFvcKp4oCdw5TigJluxpLigLnvv71bxpJ2DQotDQotcmVzZXJ2ZWRfaGFuZGxlcg0KLQlCCXJlc2VydmVkX2hhbmRsZXIJCQkJOzs7IMW9wqnigJ3DlOKAmW7GkuKAue+/vVvGknYNCi0NCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2NvbW1hbmQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9jb21tYW5kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YTQ3OWUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2NvbW1hbmQuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogY29tbWFuZC5oDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gQ29tbWFuZCBoZWFkZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfQ09NTUFORF9IXw0KLSNkZWZpbmUgX0NPTU1BTkRfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi10eXBlZGVmIHN0cnVjdCBjb21tYW5kX2xpc3QNCi17DQotICAgIGNoYXJfdCAgKmNtZF9zdHI7DQotICAgIGludDMyX3QgKCpjbWRleGUpKGludDMyX3QsIGNoYXJfdCAqKik7DQotICAgIGludDMyX3QgKCpoZWxwZXhlKSh2b2lkKTsNCi19IGNvbW1hbmRfbGlzdF90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZvciBhcmd1bWVudHMgKi8NCi0jZGVmaW5lIENPTU1BTkRfTUFYX0FSR0xFTkdUSCAgICgyNTYpDQotDQotI2RlZmluZSBDT01NQU5EX0VYSVQgICAgICAgICAgICAoLTEwMCkNCi0jZGVmaW5lIENPTU1BTkRfU1VDQ0VTUyAgICAgICAgICgwKQ0KLSNkZWZpbmUgQ09NTUFORF9FUlJPUiAgICAgICAgICAgKC0xKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IENvbW1hbmRFeGUoY2hhcl90ICogYnVmZik7DQotdm9pZCAgICBDb21tYW5kU2V0Q21kTGlzdChjb25zdCBjb21tYW5kX2xpc3RfdCAqIGNtZCk7DQotDQotI2VuZGlmICAvKiBfQ09NTUFORF9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2Rldl9kcnYuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZfZHJ2LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YzlkODYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2Rldl9kcnYuaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogZGV2X2Rydi5oDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gRGV2aWNlIGRyaXZlciBoZWFkZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfREVWX0RSVl9IXw0KLSNkZWZpbmUgX0RFVl9EUlZfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBERVZEUlZfU1VDQ0VTUyAgICAgICgwKSAgICAgLyogU3VjY2VzcyAqLw0KLSNkZWZpbmUgREVWRFJWX0VSUk9SICAgICAgICAoLTEpICAgIC8qIEZhaWx1cmUgKi8NCi0NCi0jZGVmaW5lIERFVkRSVl9GTEFHX09GRiAgICAgKDApICAgICAvKiBGbGFnIE9GRiAqLw0KLSNkZWZpbmUgREVWRFJWX0ZMQUdfT04gICAgICAoMSkgICAgIC8qIEZsYWcgT04gICovDQotDQotdHlwZWRlZiBlbnVtIGRldmRydl9jaA0KLXsNCi0gICAgREVWRFJWX0NIXzAsICAgICAgICAgICAgLyogQ2hhbm5lbCAwICAqLw0KLSAgICBERVZEUlZfQ0hfMSwgICAgICAgICAgICAvKiBDaGFubmVsIDEgICovDQotICAgIERFVkRSVl9DSF8yLCAgICAgICAgICAgIC8qIENoYW5uZWwgMiAgKi8NCi0gICAgREVWRFJWX0NIXzMsICAgICAgICAgICAgLyogQ2hhbm5lbCAzICAqLw0KLSAgICBERVZEUlZfQ0hfNCwgICAgICAgICAgICAvKiBDaGFubmVsIDQgICovDQotICAgIERFVkRSVl9DSF81LCAgICAgICAgICAgIC8qIENoYW5uZWwgNSAgKi8NCi0gICAgREVWRFJWX0NIXzYsICAgICAgICAgICAgLyogQ2hhbm5lbCA2ICAqLw0KLSAgICBERVZEUlZfQ0hfNywgICAgICAgICAgICAvKiBDaGFubmVsIDcgICovDQotICAgIERFVkRSVl9DSF84LCAgICAgICAgICAgIC8qIENoYW5uZWwgOCAgKi8NCi0gICAgREVWRFJWX0NIXzksICAgICAgICAgICAgLyogQ2hhbm5lbCA5ICAqLw0KLSAgICBERVZEUlZfQ0hfMTAsICAgICAgICAgICAvKiBDaGFubmVsIDEwICovDQotICAgIERFVkRSVl9DSF8xMSwgICAgICAgICAgIC8qIENoYW5uZWwgMTEgKi8NCi0gICAgREVWRFJWX0NIXzEyLCAgICAgICAgICAgLyogQ2hhbm5lbCAxMiAqLw0KLSAgICBERVZEUlZfQ0hfMTMsICAgICAgICAgICAvKiBDaGFubmVsIDEzICovDQotICAgIERFVkRSVl9DSF8xNCwgICAgICAgICAgIC8qIENoYW5uZWwgMTQgKi8NCi0gICAgREVWRFJWX0NIXzE1ICAgICAgICAgICAgLyogQ2hhbm5lbCAxNSAqLw0KLX0gZGV2ZHJ2X2NoX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLSNlbmRpZiAgLyogX0RFVl9EUlZfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfY29tbW9uLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2NvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmVhMTMwLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfY29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGRldmRydl9jb21tb24uaA0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIENvbW1vbiBkcml2ZXIgaGVhZGVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX0RFVkRSVl9DT01NT05fSF8NCi0jZGVmaW5lIF9ERVZEUlZfQ09NTU9OX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgQlNDX0FSRUFfQ1MwICAgICgweDAxKSAgICAgICAgICAvKiBDUzAgKi8NCi0jZGVmaW5lIEJTQ19BUkVBX0NTMSAgICAoMHgwMikgICAgICAgICAgLyogQ1MxICovDQotI2RlZmluZSBCU0NfQVJFQV9DUzIgICAgKDB4MDQpICAgICAgICAgIC8qIENTMiAqLw0KLSNkZWZpbmUgQlNDX0FSRUFfQ1MzICAgICgweDA4KSAgICAgICAgICAvKiBDUzMgKi8NCi0jZGVmaW5lIEJTQ19BUkVBX0NTNCAgICAoMHgxMCkgICAgICAgICAgLyogQ1M0ICovDQotI2RlZmluZSBCU0NfQVJFQV9DUzUgICAgKDB4MjApICAgICAgICAgIC8qIENTNSAqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFJfQlNDX0luaXQodWludDhfdCBhcmVhKTsNCi12b2lkIFVzZXJkZWZfQlNDX0NTMEluaXQodm9pZCk7DQotdm9pZCBVc2VyZGVmX0JTQ19DUzFJbml0KHZvaWQpOw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1MySW5pdCh2b2lkKTsNCi12b2lkIFVzZXJkZWZfQlNDX0NTM0luaXQodm9pZCk7DQotdm9pZCBVc2VyZGVmX0JTQ19DUzRJbml0KHZvaWQpOw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1M1SW5pdCh2b2lkKTsNCi0NCi0jZW5kaWYgIC8qIF9ERVZEUlZfQ09NTU9OX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2ludGMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfaW50Yy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzc5YWJmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfaW50Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogZGV2ZHJ2X2ludGMuaA0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIElOVEMgZGV2aWNlIGRyaXZlciBoZWFkZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfREVWRFJWX0lOVENfSF8NCi0jZGVmaW5lIF9ERVZEUlZfSU5UQ19IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIElOVENfSURfVE9UQUwgICAgICAgICAgICg1ODcpDQotDQotI2RlZmluZSBJTlRDX0lEX1NXMCAgICAgICAgICAgICAoMCkNCi0jZGVmaW5lIElOVENfSURfU1cxICAgICAgICAgICAgICgxKSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzIgICAgICAgICAgICAgKDIpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXMyAgICAgICAgICAgICAoMykgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1c0ICAgICAgICAgICAgICg0KSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzUgICAgICAgICAgICAgKDUpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXNiAgICAgICAgICAgICAoNikgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1c3ICAgICAgICAgICAgICg3KSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzggICAgICAgICAgICAgKDgpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXOSAgICAgICAgICAgICAoOSkgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1cxMCAgICAgICAgICAgICgxMCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzExICAgICAgICAgICAgKDExKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXMTIgICAgICAgICAgICAoMTIpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1cxMyAgICAgICAgICAgICgxMykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzE0ICAgICAgICAgICAgKDE0KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXMTUgICAgICAgICAgICAoMTUpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUE1VSVJRMCAgICAgICAgICgxNikgICAgLyogQ1BVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DT01NUlgwICAgICAgICAgKDE3KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NPTU1UWDAgICAgICAgICAoMTgpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RJSVJRMCAgICAgICAgICgxOSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlEwICAgICAgICAgICAgKDMyKSAgICAvKiBJUlEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSUTEgICAgICAgICAgICAoMzMpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVJRMiAgICAgICAgICAgICgzNCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlEzICAgICAgICAgICAgKDM1KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSUTQgICAgICAgICAgICAoMzYpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVJRNSAgICAgICAgICAgICgzNykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlE2ICAgICAgICAgICAgKDM4KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSUTcgICAgICAgICAgICAoMzkpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUEwzMTBFUlIgICAgICAgICg0MCkNCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMCAgICAgICAgICg0MSkNCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMSAgICAgICAgICg0MikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQyICAgICAgICAgKDQzKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDMgICAgICAgICAoNDQpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UNCAgICAgICAgICg0NSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQ1ICAgICAgICAgKDQ2KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDYgICAgICAgICAoNDcpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UNyAgICAgICAgICg0OCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQ4ICAgICAgICAgKDQ5KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDkgICAgICAgICAoNTApICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMTAgICAgICAgICg1MSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQxMSAgICAgICAgKDUyKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDEyICAgICAgICAoNTMpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMTMgICAgICAgICg1NCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQxNCAgICAgICAgKDU1KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDE1ICAgICAgICAoNTYpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BRVJSICAgICAgICAgICg1NykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9VU0JJMCAgICAgICAgICAgKDczKQ0KLSNkZWZpbmUgSU5UQ19JRF9VU0JJMSAgICAgICAgICAgKDc0KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX1ZJX1ZTWU5DMCAgICAoNzUpDQotI2RlZmluZSBJTlRDX0lEX1MwX0xPX1ZTWU5DMCAgICAoNzYpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzBfVlNZTkNFUlIwICAgICg3NykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9HUjNfVkxJTkUwICAgICAgKDc4KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX1ZGSUVMRDAgICAgICAoNzkpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYxX1ZCVUZFUlIwICAgICg4MCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjNfVkJVRkVSUjAgICAgKDgxKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWNV9WQlVGRVJSMCAgICAoODIpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY2X1ZCVUZFUlIwICAgICg4MykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9XTElORTAgICAgICAgKDg0KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1ZJX1ZTWU5DMCAgICAoODUpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzFfTE9fVlNZTkMwICAgICg4NikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WU1lOQ0VSUjAgICAgKDg3KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1ZGSUVMRDAgICAgICAoODgpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYyX1ZCVUZFUlIwICAgICg4OSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjRfVkJVRkVSUjAgICAgKDkwKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1dMSU5FMCAgICAgICAoOTEpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1ZJX1ZTWU5DMCAgICg5MikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PSVJfTE9fVlNZTkMwICAgKDkzKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WU1lOQ0VSUjAgICAoOTQpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1ZGSUVMRDAgICAgICg5NSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjdfVkJVRkVSUjAgICAgKDk2KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWOF9WQlVGRVJSMCAgICAoOTcpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1dMSU5FMCAgICAgICg5OCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9WSV9WU1lOQzEgICAgKDk5KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX0xPX1ZTWU5DMSAgICAoMTAwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzBfVlNZTkNFUlIxICAgICgxMDEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9HUjNfVkxJTkUxICAgICAgKDEwMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX1ZGSUVMRDEgICAgICAoMTAzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYxX1ZCVUZFUlIxICAgICgxMDQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjNfVkJVRkVSUjEgICAgKDEwNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWNV9WQlVGRVJSMSAgICAoMTA2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY2X1ZCVUZFUlIxICAgICgxMDcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9XTElORTEgICAgICAgKDEwOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1ZJX1ZTWU5DMSAgICAoMTA5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzFfTE9fVlNZTkMxICAgICgxMTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WU1lOQ0VSUjEgICAgKDExMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1ZGSUVMRDEgICAgICAoMTEyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYyX1ZCVUZFUlIxICAgICgxMTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjRfVkJVRkVSUjEgICAgKDExNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX1dMSU5FMSAgICAgICAoMTE1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1ZJX1ZTWU5DMSAgICgxMTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PSVJfTE9fVlNZTkMxICAgKDExNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WTElORTEgICAgICAoMTE4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1ZGSUVMRDEgICAgICgxMTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjdfVkJVRkVSUjEgICAgKDEyMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWOF9WQlVGRVJSMSAgICAoMTIxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX1dMSU5FMSAgICAgICgxMjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JTVJESSAgICAgICAgICAgKDEyMykNCi0jZGVmaW5lIElOVENfSURfSU1SMkkwICAgICAgICAgICgxMjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JTVIySTEgICAgICAgICAgKDEyNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0pFREkgICAgICAgICAgICAoMTI2KQ0KLSNkZWZpbmUgSU5UQ19JRF9KRFRJICAgICAgICAgICAgKDEyNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NNUDAgICAgICAgICAgICAoMTI4KQ0KLSNkZWZpbmUgSU5UQ19JRF9DTVAxICAgICAgICAgICAgKDEyOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lOVDAgICAgICAgICAgICAoMTMwKQ0KLSNkZWZpbmUgSU5UQ19JRF9JTlQxICAgICAgICAgICAgKDEzMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lOVDIgICAgICAgICAgICAoMTMyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSU5UMyAgICAgICAgICAgICgxMzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PU1RNSTAgICAgICAgICAgKDEzNCkNCi0jZGVmaW5lIElOVENfSURfT1NUTUkxICAgICAgICAgICgxMzUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DTUkgICAgICAgICAgICAgKDEzNikNCi0jZGVmaW5lIElOVENfSURfV1RPVVQgICAgICAgICAgICgxMzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVEkgICAgICAgICAgICAgKDEzOCkNCi0jZGVmaW5lIElOVENfSURfVEdJMEEgICAgICAgICAgICgxMzkpDQotI2RlZmluZSBJTlRDX0lEX1RHSTBCICAgICAgICAgICAoMTQwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMEMgICAgICAgICAgICgxNDEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kwRCAgICAgICAgICAgKDE0MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTBWICAgICAgICAgICAoMTQzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMEUgICAgICAgICAgICgxNDQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kwRiAgICAgICAgICAgKDE0NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTFBICAgICAgICAgICAoMTQ2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMUIgICAgICAgICAgICgxNDcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kxViAgICAgICAgICAgKDE0OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTFVICAgICAgICAgICAoMTQ5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMkEgICAgICAgICAgICgxNTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kyQiAgICAgICAgICAgKDE1MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTJWICAgICAgICAgICAoMTUyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMlUgICAgICAgICAgICgxNTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kzQSAgICAgICAgICAgKDE1NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTNCICAgICAgICAgICAoMTU1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJM0MgICAgICAgICAgICgxNTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kzRCAgICAgICAgICAgKDE1NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTNWICAgICAgICAgICAoMTU4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJNEEgICAgICAgICAgICgxNTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0k0QiAgICAgICAgICAgKDE2MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTRDICAgICAgICAgICAoMTYxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJNEQgICAgICAgICAgICgxNjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0k0ViAgICAgICAgICAgKDE2MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NNSTEgICAgICAgICAgICAoMTY0KQ0KLSNkZWZpbmUgSU5UQ19JRF9DTUkyICAgICAgICAgICAgKDE2NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NHREVJMCAgICAgICAgICAoMTY2KQ0KLSNkZWZpbmUgSU5UQ19JRF9TR0RFSTEgICAgICAgICAgKDE2NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NHREVJMiAgICAgICAgICAoMTY4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0dERUkzICAgICAgICAgICgxNjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9BREkgICAgICAgICAgICAgKDE3MCkNCi0jZGVmaW5lIElOVENfSURfQURXQVIgICAgICAgICAgICgxNzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lJMCAgICAgICAgICAgKDE3MikNCi0jZGVmaW5lIElOVENfSURfU1NJUlhJMCAgICAgICAgICgxNzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lUWEkwICAgICAgICAgKDE3NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSUkxICAgICAgICAgICAoMTc1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJUlhJMSAgICAgICAgICgxNzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lUWEkxICAgICAgICAgKDE3NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSUkyICAgICAgICAgICAoMTc4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJUlRJMiAgICAgICAgICgxNzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lJMyAgICAgICAgICAgKDE4MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVJYSTMgICAgICAgICAoMTgxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJVFhJMyAgICAgICAgICgxODIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lJNCAgICAgICAgICAgKDE4MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVJUSTQgICAgICAgICAoMTg0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJSTUgICAgICAgICAgICgxODUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lSWEk1ICAgICAgICAgKDE4NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVRYSTUgICAgICAgICAoMTg3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BESUZJICAgICAgICAgICgxODgpDQotI2RlZmluZSBJTlRDX0lEX1RFSTAgICAgICAgICAgICAoMTg5KQ0KLSNkZWZpbmUgSU5UQ19JRF9SSTAgICAgICAgICAgICAgKDE5MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJMCAgICAgICAgICAgICAoMTkxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BJMCAgICAgICAgICAgICgxOTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVEkwICAgICAgICAgICAgKDE5MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX05BS0kwICAgICAgICAgICAoMTk0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQUxJMCAgICAgICAgICAgICgxOTUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UTU9JMCAgICAgICAgICAgKDE5NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RFSTEgICAgICAgICAgICAoMTk3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUkkxICAgICAgICAgICAgICgxOTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USTEgICAgICAgICAgICAgKDE5OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQSTEgICAgICAgICAgICAoMjAwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1RJMSAgICAgICAgICAgICgyMDEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9OQUtJMSAgICAgICAgICAgKDIwMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0FMSTEgICAgICAgICAgICAoMjAzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVE1PSTEgICAgICAgICAgICgyMDQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9URUkyICAgICAgICAgICAgKDIwNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JJMiAgICAgICAgICAgICAoMjA2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEkyICAgICAgICAgICAgICgyMDcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUEkyICAgICAgICAgICAgKDIwOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NUSTIgICAgICAgICAgICAoMjA5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTkFLSTIgICAgICAgICAgICgyMTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9BTEkyICAgICAgICAgICAgKDIxMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RNT0kyICAgICAgICAgICAoMjEyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEVJMyAgICAgICAgICAgICgyMTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SSTMgICAgICAgICAgICAgKDIxNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJMyAgICAgICAgICAgICAoMjE1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BJMyAgICAgICAgICAgICgyMTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVEkzICAgICAgICAgICAgKDIxNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX05BS0kzICAgICAgICAgICAoMjE4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQUxJMyAgICAgICAgICAgICgyMTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UTU9JMyAgICAgICAgICAgKDIyMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0JSSTAgICAgICAgICAgICAoMjIxKQ0KLSNkZWZpbmUgSU5UQ19JRF9FUkkwICAgICAgICAgICAgKDIyMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTAgICAgICAgICAgICAoMjIzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJMCAgICAgICAgICAgICgyMjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkkxICAgICAgICAgICAgKDIyNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VSSTEgICAgICAgICAgICAoMjI2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUlhJMSAgICAgICAgICAgICgyMjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UWEkxICAgICAgICAgICAgKDIyOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0JSSTIgICAgICAgICAgICAoMjI5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRVJJMiAgICAgICAgICAgICgyMzApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SWEkyICAgICAgICAgICAgKDIzMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RYSTIgICAgICAgICAgICAoMjMyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQlJJMyAgICAgICAgICAgICgyMzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9FUkkzICAgICAgICAgICAgKDIzNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTMgICAgICAgICAgICAoMjM1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJMyAgICAgICAgICAgICgyMzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkk0ICAgICAgICAgICAgKDIzNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VSSTQgICAgICAgICAgICAoMjM4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUlhJNCAgICAgICAgICAgICgyMzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UWEk0ICAgICAgICAgICAgKDI0MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0JSSTUgICAgICAgICAgICAoMjQxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRVJJNSAgICAgICAgICAgICgyNDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SWEk1ICAgICAgICAgICAgKDI0MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RYSTUgICAgICAgICAgICAoMjQ0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQlJJNiAgICAgICAgICAgICgyNDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9FUkk2ICAgICAgICAgICAgKDI0NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTYgICAgICAgICAgICAoMjQ3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJNiAgICAgICAgICAgICgyNDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkk3ICAgICAgICAgICAgKDI0OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VSSTcgICAgICAgICAgICAoMjUwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUlhJNyAgICAgICAgICAgICgyNTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UWEk3ICAgICAgICAgICAgKDI1MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0dFUkkgICAgICAgICAgICAoMjUzKQ0KLSNkZWZpbmUgSU5UQ19JRF9SRkkgICAgICAgICAgICAgKDI1NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NGUlhJMCAgICAgICAgICAoMjU1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ0VSSTAgICAgICAgICAgICgyNTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVFhJMCAgICAgICAgICAgKDI1NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NGUlhJMSAgICAgICAgICAoMjU4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ0VSSTEgICAgICAgICAgICgyNTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVFhJMSAgICAgICAgICAgKDI2MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NGUlhJMiAgICAgICAgICAoMjYxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ0VSSTIgICAgICAgICAgICgyNjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVFhJMiAgICAgICAgICAgKDI2MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NGUlhJMyAgICAgICAgICAoMjY0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ0VSSTMgICAgICAgICAgICgyNjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVFhJMyAgICAgICAgICAgKDI2NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NGUlhJNCAgICAgICAgICAoMjY3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ0VSSTQgICAgICAgICAgICgyNjgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVFhJNCAgICAgICAgICAgKDI2OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRUkwICAgICAgICAgICAoMjcwKQ0KLSNkZWZpbmUgSU5UQ19JRF9TUFJJMCAgICAgICAgICAgKDI3MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQVEkwICAgICAgICAgICAoMjcyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BFSTEgICAgICAgICAgICgyNzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFJJMSAgICAgICAgICAgKDI3NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQVEkxICAgICAgICAgICAoMjc1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BFSTIgICAgICAgICAgICgyNzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFJJMiAgICAgICAgICAgKDI3NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQVEkyICAgICAgICAgICAoMjc4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BFSTMgICAgICAgICAgICgyNzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFJJMyAgICAgICAgICAgKDI4MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQVEkzICAgICAgICAgICAoMjgxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BFSTQgICAgICAgICAgICgyODIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFJJNCAgICAgICAgICAgKDI4MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQVEk0ICAgICAgICAgICAoMjg0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSUVCQlREICAgICAgICAgICgyODUpDQotI2RlZmluZSBJTlRDX0lEX0lFQkJURVJSICAgICAgICAoMjg2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSUVCQlRTVEEgICAgICAgICgyODcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JRUJCVFYgICAgICAgICAgKDI4OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lTWSAgICAgICAgICAgICAoMjg5KQ0KLSNkZWZpbmUgSU5UQ19JRF9JRVJSICAgICAgICAgICAgKDI5MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lUQVJHICAgICAgICAgICAoMjkxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVNFQyAgICAgICAgICAgICgyOTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JQlVGICAgICAgICAgICAgKDI5MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSRUFEWSAgICAgICAgICAoMjk0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRkxTVEUgICAgICAgICAgICgyOTUpDQotI2RlZmluZSBJTlRDX0lEX0ZMVEVOREkgICAgICAgICAoMjk2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRkxUUkVRMEkgICAgICAgICgyOTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9GTFRSRVExSSAgICAgICAgKDI5OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX01NQzAgICAgICAgICAgICAoMjk5KQ0KLSNkZWZpbmUgSU5UQ19JRF9NTUMxICAgICAgICAgICAgKDMwMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX01NQzIgICAgICAgICAgICAoMzAxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0RISTBfMyAgICAgICAgICgzMDIpDQotI2RlZmluZSBJTlRDX0lEX1NESEkwXzAgICAgICAgICAoMzAzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0RISTBfMSAgICAgICAgICgzMDQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TREhJMV8zICAgICAgICAgKDMwNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NESEkxXzAgICAgICAgICAoMzA2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0RISTFfMSAgICAgICAgICgzMDcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9BUk0gICAgICAgICAgICAgKDMwOCkNCi0jZGVmaW5lIElOVENfSURfUFJEICAgICAgICAgICAgICgzMDkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DVVAgICAgICAgICAgICAgKDMxMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUFJMCAgICAgICAgICAoMzExKSAgIC8qIFNDVVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVQUkxICAgICAgICAgICgzMTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGREkwICAgICAgICAgKDMxMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUZESTEgICAgICAgICAoMzE0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRkRJMiAgICAgICAgICgzMTUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGREkzICAgICAgICAgKDMxNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUZVSTAgICAgICAgICAoMzE3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRlVJMSAgICAgICAgICgzMTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGVUkyICAgICAgICAgKDMxOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUZVSTMgICAgICAgICAoMzIwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRFZJMCAgICAgICAgICgzMjEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VEVkkxICAgICAgICAgKDMyMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVURWSTIgICAgICAgICAoMzIzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRFZJMyAgICAgICAgICgzMjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9NTEJDSSAgICAgICAgICAgKDMyNSkNCi0jZGVmaW5lIElOVENfSURfTUxCU0kgICAgICAgICAgICgzMjYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9EUkMwICAgICAgICAgICAgKDMyNykNCi0jZGVmaW5lIElOVENfSURfRFJDMSAgICAgICAgICAgICgzMjgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMF9JTlRfVCAgICAgKDMzMSkgICAvKiBSZW5lc2FzIExJTjMgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0xJTkkwX0lOVF9SICAgICAoMzMyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTElOSTBfSU5UX1MgICAgICgzMzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMF9JTlRfTSAgICAgKDMzNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0xJTkkxX0lOVF9UICAgICAoMzM1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTElOSTFfSU5UX1IgICAgICgzMzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMV9JTlRfUyAgICAgKDMzNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0xJTkkxX0lOVF9NICAgICAoMzM4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NJX0VSSTAgICAgICAgICgzNDcpDQotI2RlZmluZSBJTlRDX0lEX1NDSV9SWEkwICAgICAgICAoMzQ4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NJX1RYSTAgICAgICAgICgzNDkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ0lfVEVJMCAgICAgICAgKDM1MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDSV9FUkkxICAgICAgICAoMzUxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NJX1JYSTEgICAgICAgICgzNTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ0lfVFhJMSAgICAgICAgKDM1MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDSV9URUkxICAgICAgICAoMzU0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRVRIRVJJICAgICAgICAgICgzNTkpDQotI2RlZmluZSBJTlRDX0lEX0NFVUkgICAgICAgICAgICAoMzY0KQ0KLSNkZWZpbmUgSU5UQ19JRF9IMlhNTEJfRVJSSU5UICAgKDM4MSkNCi0jZGVmaW5lIElOVENfSURfSDJYSUMxX0VSUklOVCAgICgzODIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhQRVJJMV9FUlJJTlQgKDM4MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySFBFUkkyX0VSUklOVCAoMzg0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIUEVSSTM0X0VSUklOVCAoMzg1KSAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhQRVJJNV9FUlJJTlQgKDM4NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySFBFUkk2N19FUlJJTlQgKDM4NykgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIREJHUl9FUlJJTlQgICgzODgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhCU0NfRVJSSU5UICAgKDM4OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySFNQSTFfRVJSSU5UICAoMzkwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIU1BJMl9FUlJJTlQgICgzOTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9QUlJJICAgICAgICAgICAgKDM5MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lGRUkwICAgICAgICAgICAoMzkzKQ0KLSNkZWZpbmUgSU5UQ19JRF9PRkZJMCAgICAgICAgICAgKDM5NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1BGVkVJMCAgICAgICAgICAoMzk1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSUZFSTEgICAgICAgICAgICgzOTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PRkZJMSAgICAgICAgICAgKDM5NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1BGVkVJMSAgICAgICAgICAoMzk4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDAgICAgICAgICAgICg0MTYpDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxICAgICAgICAgICAoNDE3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDIgICAgICAgICAgICg0MTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMyAgICAgICAgICAgKDQxOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0ICAgICAgICAgICAoNDIwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDUgICAgICAgICAgICg0MjEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNiAgICAgICAgICAgKDQyMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3ICAgICAgICAgICAoNDIzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDggICAgICAgICAgICg0MjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOSAgICAgICAgICAgKDQyNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMCAgICAgICAgICAoNDI2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExICAgICAgICAgICg0MjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTIgICAgICAgICAgKDQyOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMyAgICAgICAgICAoNDI5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0ICAgICAgICAgICg0MzApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTUgICAgICAgICAgKDQzMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNiAgICAgICAgICAoNDMyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE3ICAgICAgICAgICg0MzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTggICAgICAgICAgKDQzNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxOSAgICAgICAgICAoNDM1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDIwICAgICAgICAgICg0MzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjEgICAgICAgICAgKDQzNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyMiAgICAgICAgICAoNDM4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDIzICAgICAgICAgICg0MzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjQgICAgICAgICAgKDQ0MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyNSAgICAgICAgICAoNDQxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDI2ICAgICAgICAgICg0NDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjcgICAgICAgICAgKDQ0MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyOCAgICAgICAgICAoNDQ0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDI5ICAgICAgICAgICg0NDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzAgICAgICAgICAgKDQ0NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzMSAgICAgICAgICAoNDQ3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDMyICAgICAgICAgICg0NDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzMgICAgICAgICAgKDQ0OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzNCAgICAgICAgICAoNDUwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDM1ICAgICAgICAgICg0NTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzYgICAgICAgICAgKDQ1MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzNyAgICAgICAgICAoNDUzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDM4ICAgICAgICAgICg0NTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzkgICAgICAgICAgKDQ1NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0MCAgICAgICAgICAoNDU2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQxICAgICAgICAgICg0NTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDIgICAgICAgICAgKDQ1OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0MyAgICAgICAgICAoNDU5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQ0ICAgICAgICAgICg0NjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDUgICAgICAgICAgKDQ2MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0NiAgICAgICAgICAoNDYyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQ3ICAgICAgICAgICg0NjMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDggICAgICAgICAgKDQ2NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0OSAgICAgICAgICAoNDY1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDUwICAgICAgICAgICg0NjYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTEgICAgICAgICAgKDQ2NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1MiAgICAgICAgICAoNDY4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDUzICAgICAgICAgICg0NjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTQgICAgICAgICAgKDQ3MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1NSAgICAgICAgICAoNDcxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDU2ICAgICAgICAgICg0NzIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTcgICAgICAgICAgKDQ3MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1OCAgICAgICAgICAoNDc0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDU5ICAgICAgICAgICg0NzUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjAgICAgICAgICAgKDQ3NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2MSAgICAgICAgICAoNDc3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDYyICAgICAgICAgICg0NzgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjMgICAgICAgICAgKDQ3OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2NCAgICAgICAgICAoNDgwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDY1ICAgICAgICAgICg0ODEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjYgICAgICAgICAgKDQ4MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2NyAgICAgICAgICAoNDgzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDY4ICAgICAgICAgICg0ODQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjkgICAgICAgICAgKDQ4NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3MCAgICAgICAgICAoNDg2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDcxICAgICAgICAgICg0ODcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzIgICAgICAgICAgKDQ4OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3MyAgICAgICAgICAoNDg5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDc0ICAgICAgICAgICg0OTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzUgICAgICAgICAgKDQ5MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3NiAgICAgICAgICAoNDkyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDc3ICAgICAgICAgICg0OTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzggICAgICAgICAgKDQ5NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3OSAgICAgICAgICAoNDk1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDgwICAgICAgICAgICg0OTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODEgICAgICAgICAgKDQ5NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4MiAgICAgICAgICAoNDk4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDgzICAgICAgICAgICg0OTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODQgICAgICAgICAgKDUwMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4NSAgICAgICAgICAoNTAxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDg2ICAgICAgICAgICg1MDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODcgICAgICAgICAgKDUwMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4OCAgICAgICAgICAoNTA0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDg5ICAgICAgICAgICg1MDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTAgICAgICAgICAgKDUwNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5MSAgICAgICAgICAoNTA3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDkyICAgICAgICAgICg1MDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTMgICAgICAgICAgKDUwOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5NCAgICAgICAgICAoNTEwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDk1ICAgICAgICAgICg1MTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTYgICAgICAgICAgKDUxMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5NyAgICAgICAgICAoNTEzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDk4ICAgICAgICAgICg1MTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTkgICAgICAgICAgKDUxNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDAgICAgICAgICAoNTE2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwMSAgICAgICAgICg1MTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTAyICAgICAgICAgKDUxOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDMgICAgICAgICAoNTE5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwNCAgICAgICAgICg1MjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTA1ICAgICAgICAgKDUyMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDYgICAgICAgICAoNTIyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwNyAgICAgICAgICg1MjMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTA4ICAgICAgICAgKDUyNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDkgICAgICAgICAoNTI1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExMCAgICAgICAgICg1MjYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTExICAgICAgICAgKDUyNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTIgICAgICAgICAoNTI4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExMyAgICAgICAgICg1MjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTE0ICAgICAgICAgKDUzMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTUgICAgICAgICAoNTMxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExNiAgICAgICAgICg1MzIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTE3ICAgICAgICAgKDUzMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTggICAgICAgICAoNTM0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExOSAgICAgICAgICg1MzUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTIwICAgICAgICAgKDUzNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjEgICAgICAgICAoNTM3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyMiAgICAgICAgICg1MzgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTIzICAgICAgICAgKDUzOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjQgICAgICAgICAoNTQwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyNSAgICAgICAgICg1NDEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTI2ICAgICAgICAgKDU0MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjcgICAgICAgICAoNTQzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyOCAgICAgICAgICg1NDQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTI5ICAgICAgICAgKDU0NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzAgICAgICAgICAoNTQ2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzMSAgICAgICAgICg1NDcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTMyICAgICAgICAgKDU0OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzMgICAgICAgICAoNTQ5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzNCAgICAgICAgICg1NTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTM1ICAgICAgICAgKDU1MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzYgICAgICAgICAoNTUyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzNyAgICAgICAgICg1NTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTM4ICAgICAgICAgKDU1NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzkgICAgICAgICAoNTU1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0MCAgICAgICAgICg1NTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQxICAgICAgICAgKDU1NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDIgICAgICAgICAoNTU4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0MyAgICAgICAgICg1NTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQ0ICAgICAgICAgKDU2MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDUgICAgICAgICAoNTYxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0NiAgICAgICAgICg1NjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQ3ICAgICAgICAgKDU2MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDggICAgICAgICAoNTY0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0OSAgICAgICAgICg1NjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTUwICAgICAgICAgKDU2NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTEgICAgICAgICAoNTY3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1MiAgICAgICAgICg1NjgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTUzICAgICAgICAgKDU2OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTQgICAgICAgICAoNTcwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1NSAgICAgICAgICg1NzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTU2ICAgICAgICAgKDU3MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTcgICAgICAgICAoNTczKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1OCAgICAgICAgICg1NzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTU5ICAgICAgICAgKDU3NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjAgICAgICAgICAoNTc2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2MSAgICAgICAgICg1NzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTYyICAgICAgICAgKDU3OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjMgICAgICAgICAoNTc5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2NCAgICAgICAgICg1ODApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTY1ICAgICAgICAgKDU4MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjYgICAgICAgICAoNTgyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2NyAgICAgICAgICg1ODMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTY4ICAgICAgICAgKDU4NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjkgICAgICAgICAoNTg1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE3MCAgICAgICAgICg1ODYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUgSU5UQ19MRVZFTF9TRU5TSVRJVkUgICAgKDApDQotI2RlZmluZSBJTlRDX0VER0VfVFJJR0dFUiAgICAgICAoMSkNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBSX0lOVENfUmVnaXN0SW50RnVuYyh1aW50MTZfdCBpbnRfaWQsIHZvaWQgKCogZnVuYykodWludDMyX3QgaW50X3NlbnNlKSk7DQotdm9pZCAgICBSX0lOVENfSW5pdCh2b2lkKTsNCi1pbnQzMl90IFJfSU5UQ19FbmFibGUodWludDE2X3QgaW50X2lkKTsNCi1pbnQzMl90IFJfSU5UQ19EaXNhYmxlKHVpbnQxNl90IGludF9pZCk7DQotaW50MzJfdCBSX0lOVENfU2V0UHJpb3JpdHkodWludDE2X3QgaW50X2lkLCB1aW50OF90IHByaW9yaXR5KTsNCi1pbnQzMl90IFJfSU5UQ19TZXRNYXNrTGV2ZWwodWludDhfdCBtYXNrX2xldmVsKTsNCi12b2lkICAgIFJfSU5UQ19HZXRNYXNrTGV2ZWwodWludDhfdCAqIG1hc2tfbGV2ZWwpOw0KLQ0KLXZvaWQgICAgVXNlcmRlZl9JTlRDX1JlZ2lzdEludEZ1bmModWludDE2X3QgaW50X2lkLCB2b2lkICgqIGZ1bmMpKHVpbnQzMl90IGludF9zZW5zZSkpOw0KLXZvaWQgICAgVXNlcmRlZl9JTlRDX1VuZGVmSWQodWludDE2X3QgaW50X2lkKTsNCi12b2lkICAgIFVzZXJkZWZfSU5UQ19IYW5kbGVyRXhlKHVpbnQxNl90IGludF9pZCwgdWludDMyX3QgaW50X3NlbnNlKTsNCi12b2lkICAgIFVzZXJkZWZfRklRX0hhbmRsZXJFeGUodm9pZCk7DQotDQotI2VuZGlmICAvKiBfREVWRFJWX0lOVENfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfb3N0bS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9vc3RtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OTIxMzguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9vc3RtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGRldmRydl9vc3RtLmgNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBPUyB0aW1lciBkZXZpY2UgZHJpdmVyIGhlYWRlcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9ERVZEUlZfT1NUTV9IXw0KLSNkZWZpbmUgX0RFVkRSVl9PU1RNX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgT1NUTV9NT0RFX0lOVEVSVkFMICAoMCkNCi0jZGVmaW5lIE9TVE1fTU9ERV9DT01QQVJFICAgKDEpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9PU1RNX0luaXQodWludDMyX3QgY2hhbm5lbCwgdWludDMyX3QgbW9kZSwgdWludDMyX3QgY3ljbGUpOw0KLWludDMyX3QgUl9PU1RNX09wZW4odWludDMyX3QgY2hhbm5lbCk7DQotaW50MzJfdCBSX09TVE1fQ2xvc2UodWludDMyX3QgY2hhbm5lbCwgdWludDMyX3QgKiBjb3VudCk7DQotaW50MzJfdCBSX09TVE1fSW50ZXJydXB0KHVpbnQzMl90IGNoYW5uZWwpOw0KLQ0KLWludDMyX3QgVXNlcmRlZl9PU1RNMF9Jbml0KHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IGN5Y2xlKTsNCi1pbnQzMl90IFVzZXJkZWZfT1NUTTFfSW5pdCh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBjeWNsZSk7DQotdm9pZCAgICBVc2VyZGVmX09TVE0wX0ludCh2b2lkKTsNCi12b2lkICAgIFVzZXJkZWZfT1NUTTFfSW50KHZvaWQpOw0KLXZvaWQgICAgVXNlcmRlZl9PU1RNMF9XYWl0SW50KHZvaWQpOw0KLXZvaWQgICAgVXNlcmRlZl9PU1RNMV9XYWl0SW50KHZvaWQpOw0KLQ0KLSNlbmRpZiAgLyogX0RFVkRSVl9PU1RNX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X3NjaWZfdWFydC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9zY2lmX3VhcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFiOWNkOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X3NjaWZfdWFydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBzY2lmX3VhcnQuaA0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFNDSUYgVUFSVCBkZXZpY2UgZHJpdmVyIGhlYWRlcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9ERVZEUlZfU0NJRl9VQVJUX0hfDQotI2RlZmluZSBfREVWRFJWX1NDSUZfVUFSVF9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIFNDSUZfVUFSVF9NT0RFX1cgICAgICAgICgxKQ0KLSNkZWZpbmUgU0NJRl9VQVJUX01PREVfUiAgICAgICAgKDIpDQotI2RlZmluZSBTQ0lGX1VBUlRfTU9ERV9SVyAgICAgICAoMykNCi0NCi10eXBlZGVmIGVudW0gc2NpZl9ja3NfZGl2aXNpb24NCi17DQotICAgIFNDSUZfQ0tTX0RJVklTSU9OXzEsDQotICAgIFNDSUZfQ0tTX0RJVklTSU9OXzQsDQotICAgIFNDSUZfQ0tTX0RJVklTSU9OXzE2LA0KLSAgICBTQ0lGX0NLU19ESVZJU0lPTl82NA0KLX0gc2NpZl9ja3NfZGl2aXNpb25fdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBSX1NDSUZfVUFSVF9Jbml0KHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90IG1vZGUsIHVpbnQxNl90IGNrcywgdWludDhfdCBzY2Jycik7DQotDQotdm9pZCBVc2VyZGVmX1NDSUYyX1VBUlRfSW5pdCh1aW50OF90IG1vZGUsIHVpbnQxNl90IGNrcywgdWludDhfdCBzY2Jycik7DQotDQotI2VuZGlmICAvKiBfREVWRFJWX1NDSUZfVUFSVF9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4YTk3Yi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOTY5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIERJU0NMQUlNRVINCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4NCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiAgIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qDQotKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTDQotKiAgIFJFR0FSRElORyBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLA0KLSogICBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBDQotKiAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWQ0KLSogICBESVNDTEFJTUVELg0KLSoNCi0qICAgVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogICBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUw0KLSogICBGT1IgQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMNCi0qICAgQUZGSUxJQVRFUyBIQVZFIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSoNCi0qICAgUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcw0KLSogICBzb2Z0d2FyZSBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLg0KLSogICBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLCB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kDQotKiAgIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZSBmb2xsb3dpbmcgbGluazoNCi0qICAgaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIENvcHlyaWdodCAoQykgMjAxMCgyMDExKSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGVjaG5pY2FsIHJlZmVyZW5jZSBkYXRhICoqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIFN5c3RlbSBOYW1lIDogU0g3MjY5IFNhbXBsZSBQcm9ncmFtDQotKiAgIEZpbGUgTmFtZSAgIDogaW9kZWZpbmUuaA0KLSogICBBYnN0cmFjdCAgICA6IFNINzI2OSBJTyBkZWZpbmUgZmlsZQ0KLSogICBWZXJzaW9uICAgICA6IDAuMTEuMDANCi0qICAgRGV2aWNlICAgICAgOiBTSDcyNjkNCi0NCi0qICAgVG9vbC1DaGFpbiAgOiBIaWdoLXBlcmZvcm1hbmNlIEVtYmVkZGVkIFdvcmtzaG9wIChWZXIuNC4wNy4wMCkuDQotKiAgICAgICAgICAgICAgIDogQy9DKysgY29tcGlsZXIgcGFja2FnZSBmb3IgdGhlIFN1cGVySCBSSVNDIGVuZ2luZSBmYW1pbHkNCi0qICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWZXIuOS4wMyBSZWxlYXNlMDIpLg0KLSogICBPUyAgICAgICAgICA6IE5vbmUNCi0qICAgSC9XIFBsYXRmb3JtOiBSMEs1NzI2OShDUFUgYm9hcmQpDQotKiAgIERlc2NyaXB0aW9uIDoNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBIaXN0b3J5ICAgICA6IFNlcC4wMiwyMDEwIFZlci4wLjAxLjAwIFByZWxpbWluYXJ5IHZlcnNpb24gaXNzdWVkDQotKiAgICAgICAgICAgICAgIDogT2N0LjA2LjIwMTAgVmVyLjAuMDIuMDAgVkRDNC5HUjFfQUIxIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgIDogT2N0LjA3LjIwMTAgVmVyLjAuMDMuMDAgVkRDNC5HUjFfQUIxIHR5cGUgZGVmaW5pdGlvbiBtb2RpZmllZA0KLSogICAgICAgICAgICAgICA6IE9jdC4xOS4yMDEwIFZlci4wLjA0LjAwIE1NQy5DRV9ETUFfTU9ERSBhZGRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1NQy5DRV9CT09UIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgOiBOb3YuMDkuMjAxMCBWZXIuMC4wNS4wMCBWREM0LkdSM19DTFVUX0lOVC5HUjNfTElORSBhZGRlZA0KLSogICAgICAgICAgICAgICA6IEphbi4yOC4yMDExIFZlci4wLjA2LjAwIERWREVDLkFERENSLT5BRENDUjEgY2hhbmdlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkFEQ0NSMS5BR0NNT0RFWEEtPkFHQ01PREUgY2hhbmdlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLklOU0NSIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5BR0NDUjIuQUdDTUFYR0FJTiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuQUdDQ1IyLlZJREVPR0FJTiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuQUdDQ1IyLlZJREVPR0FJTiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuQ1JPTUFTUjIuTkNPTU9ERSBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuRENQU1IzfjUgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLllDU0NSMSBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuWUNTQ1IzfjcsOSwxMSBhZGRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLllDU0NSOC5IRklMX1RBUF9TRUwgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5ZQ1NDUjEyLkRFVDJfTUlYX0MgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5ZQ1NDUjEyLkRFVDJfTUlYX1kgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5EQ1BDUjkuQ0xQX0ZJTF9TRUwgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkRDUENSMTB+MTMgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLlBHQV9VUERBVEUgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5QR0FDUiBhZGRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkFEQ0NSMiBhZGRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBTUElCU0MgYWRkZWQNCi0qICAgICAgICAgICAgICAgOiBGZWIuMjMuMjAxMSBWZXIuMC4wNy4wMCBDUEcuU1RCQ1I3Lk1TVFA3NSBhZGRlZA0KLSogICAgICAgICAgICAgICA6IEZlYi4yOC4yMDExIFZlci4wLjA4LjAwIFBPUlQuUEJDUjUgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1JULlBCQ1I0IG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9SVC5QQkNSMyBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ1NUUyBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5JTlBfU0VMX0NOVC5JTlBfVlNQX1NZTkNfU0VMIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LlNDTDBfRFM0LlJFU19EU19IX0lOSVBIQVNFIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LkdSMV9BQjEuR1IxX0FSQ19PTiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfQUIxLkdSMV9BUkNfRElTUF9PTiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfQUI0IGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LkdSMV9BQjUgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuR1IxX0FCNiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfQUI3LkdSMV9BUkNfREVGIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LkdSMV9NT04gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuQURKX01UWF9NT0RFLk1UWF9NRC0+QURKX01UWF9NRCBjaGFuZ2VkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5PVVRfU0VULk9VVF9QSVhFTF9JTlZfT04gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuT1VUX1NFVC5PVVRfU1VNX01PVkUgZGVsZXRlZA0KLSogICAgICAgICAgICAgICA6IE1hci4wMi4yMDExIFZlci4wLjA5LjAwIEpDVS5KQ1FUQkwwIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkNVLkpDUVRCTDEgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQ1UuSkNRVEJMMiBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ1FUQkwzIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkNVLkpDSFRCRDAgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQ1UuSkNIVEJBMCBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ0hUQkQxIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkNVLkpDSFRCQTEgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgOiBBcHIuMDQuMjAxMSBWZXIuMC4xMC4wMCBDUEcuU1dSU1RDUjIuSkNVU1JTVCBhZGRlZA0KLSogICAgICAgICAgICAgICA6IE1heS4wOS4yMDExIFZlci4wLjExLjAwIEJTQy5BQ1NXUiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNDLkFDS0VZUiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCLlVTQkFDU1dSMSBkZWxldGVkDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9JT0RFRklORV9IXw0KLSNkZWZpbmUgX0lPREVGSU5FX0hfDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi0vKiBuZXcgaW9kZWZpbmUgQURDICovDQotDQotc3RydWN0IHN0X2FkYw0KLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEFEQyAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSQSAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSQiAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSQyAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSRCAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSRSAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSRiAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSRyAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBEUkg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIERSSCAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBjaGFyICBkdW1teTMyWzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEEgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEEgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEIgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEIgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEMgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEMgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEQgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEQgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEUgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEUgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEYgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEYgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhHOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEcgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExHOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEcgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEhIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QSEggICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUExIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QTEggICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBjaGFyICBkdW1teTMzWzMyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFNSICAgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUEVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QRVIgICAgICAgICAgICAqLw0KLSAgICB1bnNpZ25lZCBzaG9ydCBNUFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIE1QU1IgICAgICAgICAgICAqLw0KLX07DQotDQotI2RlZmluZSBBRENEUkEgQURDLkRSQQ0KLSNkZWZpbmUgQURDRFJCIEFEQy5EUkINCi0jZGVmaW5lIEFEQ0RSQyBBREMuRFJDDQotI2RlZmluZSBBRENEUkQgQURDLkRSRA0KLSNkZWZpbmUgQURDRFJFIEFEQy5EUkUNCi0jZGVmaW5lIEFEQ0RSRiBBREMuRFJGDQotI2RlZmluZSBBRENEUkcgQURDLkRSRw0KLSNkZWZpbmUgQURDRFJIIEFEQy5EUkgNCi0jZGVmaW5lIEFEQ01QSEEgQURDLk1QSEENCi0jZGVmaW5lIEFEQ01QTEEgQURDLk1QTEENCi0jZGVmaW5lIEFEQ01QSEIgQURDLk1QSEINCi0jZGVmaW5lIEFEQ01QTEIgQURDLk1QTEINCi0jZGVmaW5lIEFEQ01QSEMgQURDLk1QSEMNCi0jZGVmaW5lIEFEQ01QTEMgQURDLk1QTEMNCi0jZGVmaW5lIEFEQ01QSEQgQURDLk1QSEQNCi0jZGVmaW5lIEFEQ01QTEQgQURDLk1QTEQNCi0jZGVmaW5lIEFEQ01QSEUgQURDLk1QSEUNCi0jZGVmaW5lIEFEQ01QTEUgQURDLk1QTEUNCi0jZGVmaW5lIEFEQ01QSEYgQURDLk1QSEYNCi0jZGVmaW5lIEFEQ01QTEYgQURDLk1QTEYNCi0jZGVmaW5lIEFEQ01QSEcgQURDLk1QSEcNCi0jZGVmaW5lIEFEQ01QTEcgQURDLk1QTEcNCi0jZGVmaW5lIEFEQ01QSEggQURDLk1QSEgNCi0jZGVmaW5lIEFEQ01QTEggQURDLk1QTEgNCi0jZGVmaW5lIEFEQ1NSIEFEQy5TUg0KLSNkZWZpbmUgQURDTVBFUiBBREMuTVBFUg0KLSNkZWZpbmUgQURDTVBTUiBBREMuTVBTUg0KLQ0KLSNkZWZpbmUgQURDICAgICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfYWRjICAgICAqKTB4RTgwMDU4MDApIC8qIEFEQyAqLw0KLQ0KLS8qIG5ldyBpb2RlZmluZSBBREMgKi8NCi0NCi0NCi0JI2lmCTANCi1zdHJ1Y3Qgc3RfY3BnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgQ1BHICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGUlFDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDS09FTjI6MTsgICAgICAgICAgICAvKiAgIENLT0VOMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDS09FTjoyOyAgICAgICAgICAgICAvKiAgIENLT0VOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJRkM6MjsgICAgICAgICAgICAgICAvKiAgIElGQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRkM6MjsgICAgICAgICAgICAgICAvKiAgIEJGQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGUlFDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJZOjE7ICAgICAgICAgICAgICAvKiAgIFNUQlkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERUVQOjE7ICAgICAgICAgICAgICAvKiAgIERFRVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA6MTsgICAgICAgICAgICAvKiAgIE1TVFAxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODoxOyAgICAgICAgICAgICAvKiAgIE1TVFA4ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzoxOyAgICAgICAgICAgICAvKiAgIE1TVFA3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls5OTldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1FMzoxOyAgICAgICAgICAgICAvKiAgIFJBTUUzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1FMjoxOyAgICAgICAgICAgICAvKiAgIFJBTUUyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1FMToxOyAgICAgICAgICAgICAvKiAgIFJBTUUxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1FMDoxOyAgICAgICAgICAgICAvKiAgIFJBTUUwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1XRTM6MTsgICAgICAgICAgICAvKiAgIFJBTVdFMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1XRTI6MTsgICAgICAgICAgICAvKiAgIFJBTVdFMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1XRTE6MTsgICAgICAgICAgICAvKiAgIFJBTVdFMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1XRTA6MTsgICAgICAgICAgICAvKiAgIFJBTVdFMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISVo6MTsgICAgICAgICAgICAgICAvKiAgIEhJWiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzY6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzU6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgIE1TVFAzNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgIE1TVFAzMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzI6MTsgICAgICAgICAgICAvKiAgIE1TVFAzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzA6MTsgICAgICAgICAgICAvKiAgIE1TVFAzMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDc6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDY6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDU6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDM6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDI6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDE6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDA6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTc6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTY6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTU6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTM6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTI6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTE6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTA6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjc6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjY6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjU6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjM6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjI6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjE6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjA6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzc6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzY6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzU6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzM6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzI6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzA6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjggICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODc6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODY6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODU6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODI6MTsgICAgICAgICAgICAvKiAgIE1TVFA4MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODE6MTsgICAgICAgICAgICAvKiAgIE1TVFA4MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTU6MTsgICAgICAgICAgICAvKiAgIFZSQU1FNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTQ6MTsgICAgICAgICAgICAvKiAgIFZSQU1FNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTM6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTI6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTE6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTA6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0U1OjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0U0OjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UzOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UyOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UxOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UwOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UzOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UyOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UxOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UwOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbN107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBWFRBTEU6MTsgICAgICAgICAgICAvKiAgIEFYVEFMRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGNVNSU1Q6MTsgICAgICAgICAvKiAgIFNTSUY1U1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGNFNSU1Q6MTsgICAgICAgICAvKiAgIFNTSUY0U1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRUJTUlNUOjE7ICAgICAgICAgICAvKiAgIElFQlNSU1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGM1NSU1Q6MTsgICAgICAgICAvKiAgIFNTSUYzU1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGMlNSU1Q6MTsgICAgICAgICAvKiAgIFNTSUYyU1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGMVNSU1Q6MTsgICAgICAgICAvKiAgIFNTSUYxU1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0lGMFNSU1Q6MTsgICAgICAgICAvKiAgIFNTSUYwU1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBKQ1VTUlNUOjE7ICAgICAgICAgICAvKiAgIEpDVVNSU1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSR1BWR1NSU1Q6MTsgICAgICAgICAvKiAgIFNTSUYzU1JTVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbMTFdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTc6MTsgICAgICAgICAgICAvKiAgIE1TVFA5NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTY6MTsgICAgICAgICAgICAvKiAgIE1TVFA5NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTU6MTsgICAgICAgICAgICAvKiAgIE1TVFA5NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA5NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTM6MTsgICAgICAgICAgICAvKiAgIE1TVFA5MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTI6MTsgICAgICAgICAgICAvKiAgIE1TVFA5MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTE6MTsgICAgICAgICAgICAvKiAgIE1TVFA5MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTA6MTsgICAgICAgICAgICAvKiAgIE1TVFA5MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjEwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA3OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA2OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA1OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAzOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAyOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAxOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAwOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTdbMjU1MzFdOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSUkFNS1AgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AzOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AyOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AxOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AwOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSUkFNS1A7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMThbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0NUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFQlVTS0VFUEU6MTsgICAgICAgICAvKiAgIEVCVVNLRUVQRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1CT09UOjE7ICAgICAgICAgICAvKiAgIFJBTUJPT1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTlbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1NTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIzOjE7ICAgICAgICAgICAgICAvKiAgIFBKMjMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIyOjE7ICAgICAgICAgICAgICAvKiAgIFBKMjIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIxOjE7ICAgICAgICAgICAgICAvKiAgIFBKMjEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIwOjE7ICAgICAgICAgICAgICAvKiAgIFBKMjAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzM6MTsgICAgICAgICAgICAgICAvKiAgIFBHMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzI6MTsgICAgICAgICAgICAgICAvKiAgIFBHMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUk6MTsgICAgICAgICAgICAgICAvKiAgIE5NSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSVENBUjoxOyAgICAgICAgICAgICAvKiAgIFJUQ0FSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE5OjE7ICAgICAgICAgICAgICAvKiAgIFBGMTkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE4OjE7ICAgICAgICAgICAgICAvKiAgIFBGMTggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE3OjE7ICAgICAgICAgICAgICAvKiAgIFBGMTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE2OjE7ICAgICAgICAgICAgICAvKiAgIFBGMTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzc6MTsgICAgICAgICAgICAgICAvKiAgIFBDNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzU6MTsgICAgICAgICAgICAgICAvKiAgIFBDNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1NTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0VTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIzRToxOyAgICAgICAgICAgICAvKiAgIFBKMjNFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIyRToxOyAgICAgICAgICAgICAvKiAgIFBKMjJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIxRToxOyAgICAgICAgICAgICAvKiAgIFBKMjFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIwRToxOyAgICAgICAgICAgICAvKiAgIFBKMjBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzNFOjE7ICAgICAgICAgICAgICAvKiAgIFBHM0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzJFOjE7ICAgICAgICAgICAgICAvKiAgIFBHMkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlFOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE5RToxOyAgICAgICAgICAgICAvKiAgIFBGMTlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE4RToxOyAgICAgICAgICAgICAvKiAgIFBGMThFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE3RToxOyAgICAgICAgICAgICAvKiAgIFBGMTdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE2RToxOyAgICAgICAgICAgICAvKiAgIFBGMTZFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzdFOjE7ICAgICAgICAgICAgICAvKiAgIFBDN0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzVFOjE7ICAgICAgICAgICAgICAvKiAgIFBDNUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0VTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0ZSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJT0tFRVA6MTsgICAgICAgICAgICAvKiAgIElPS0VFUCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIzRjoxOyAgICAgICAgICAgICAvKiAgIFBKMjNGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIyRjoxOyAgICAgICAgICAgICAvKiAgIFBKMjJGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIxRjoxOyAgICAgICAgICAgICAvKiAgIFBKMjFGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSjIwRjoxOyAgICAgICAgICAgICAvKiAgIFBKMjBGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzNGOjE7ICAgICAgICAgICAgICAvKiAgIFBHM0YgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRzJGOjE7ICAgICAgICAgICAgICAvKiAgIFBHMkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlGOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSVENBUkY6MTsgICAgICAgICAgICAvKiAgIFJUQ0FSRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE5RjoxOyAgICAgICAgICAgICAvKiAgIFBGMTlGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE4RjoxOyAgICAgICAgICAgICAvKiAgIFBGMThGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE3RjoxOyAgICAgICAgICAgICAvKiAgIFBGMTdGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRjE2RjoxOyAgICAgICAgICAgICAvKiAgIFBGMTZGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzdGOjE7ICAgICAgICAgICAgICAvKiAgIFBDN0YgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQzVGOjE7ICAgICAgICAgICAgICAvKiAgIFBDNUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0ZSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjBbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYVEFMQ1RSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBHQUlOOjE7ICAgICAgICAgICAgICAvKiAgIEdBSU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBYVEFMQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfaW50YyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSU5UQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IwICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlMOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlFOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlGOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlNOjE7ICAgICAgICAgICAgICAvKiAgIE5NSU0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE3MVM6MTsgICAgICAgICAgICAvKiAgIElSUTcxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE3MFM6MTsgICAgICAgICAgICAvKiAgIElSUTcwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE2MVM6MTsgICAgICAgICAgICAvKiAgIElSUTYxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE2MFM6MTsgICAgICAgICAgICAvKiAgIElSUTYwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE1MVM6MTsgICAgICAgICAgICAvKiAgIElSUTUxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE1MFM6MTsgICAgICAgICAgICAvKiAgIElSUTUwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE0MVM6MTsgICAgICAgICAgICAvKiAgIElSUTQxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE0MFM6MTsgICAgICAgICAgICAvKiAgIElSUTQwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEzMVM6MTsgICAgICAgICAgICAvKiAgIElSUTMxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEzMFM6MTsgICAgICAgICAgICAvKiAgIElSUTMwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEyMVM6MTsgICAgICAgICAgICAvKiAgIElSUTIxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEyMFM6MTsgICAgICAgICAgICAvKiAgIElSUTIwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlExMVM6MTsgICAgICAgICAgICAvKiAgIElSUTExUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlExMFM6MTsgICAgICAgICAgICAvKiAgIElSUTEwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEwMVM6MTsgICAgICAgICAgICAvKiAgIElSUTAxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEwMFM6MTsgICAgICAgICAgICAvKiAgIElSUTAwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IyICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UN1M6MTsgICAgICAgICAgICAvKiAgIFBJTlQ3UyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNlM6MTsgICAgICAgICAgICAvKiAgIFBJTlQ2UyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNVM6MTsgICAgICAgICAgICAvKiAgIFBJTlQ1UyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNFM6MTsgICAgICAgICAgICAvKiAgIFBJTlQ0UyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UM1M6MTsgICAgICAgICAgICAvKiAgIFBJTlQzUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMlM6MTsgICAgICAgICAgICAvKiAgIFBJTlQyUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMVM6MTsgICAgICAgICAgICAvKiAgIFBJTlQxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMFM6MTsgICAgICAgICAgICAvKiAgIFBJTlQwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUlFSUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE3RjoxOyAgICAgICAgICAgICAvKiAgIElSUTdGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE2RjoxOyAgICAgICAgICAgICAvKiAgIElSUTZGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE1RjoxOyAgICAgICAgICAgICAvKiAgIElSUTVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE0RjoxOyAgICAgICAgICAgICAvKiAgIElSUTRGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEzRjoxOyAgICAgICAgICAgICAvKiAgIElSUTNGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEyRjoxOyAgICAgICAgICAgICAvKiAgIElSUTJGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlExRjoxOyAgICAgICAgICAgICAvKiAgIElSUTFGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEwRjoxOyAgICAgICAgICAgICAvKiAgIElSUTBGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUlFSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSU5URVIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UN0U6MTsgICAgICAgICAgICAvKiAgIFBJTlQ3RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNkU6MTsgICAgICAgICAgICAvKiAgIFBJTlQ2RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNUU6MTsgICAgICAgICAgICAvKiAgIFBJTlQ1RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNEU6MTsgICAgICAgICAgICAvKiAgIFBJTlQ0RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UM0U6MTsgICAgICAgICAgICAvKiAgIFBJTlQzRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMkU6MTsgICAgICAgICAgICAvKiAgIFBJTlQyRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMUU6MTsgICAgICAgICAgICAvKiAgIFBJTlQxRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMEU6MTsgICAgICAgICAgICAvKiAgIFBJTlQwRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSU5URVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVJSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UN1I6MTsgICAgICAgICAgICAvKiAgIFBJTlQ3UiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNlI6MTsgICAgICAgICAgICAvKiAgIFBJTlQ2UiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNVI6MTsgICAgICAgICAgICAvKiAgIFBJTlQ1UiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UNFI6MTsgICAgICAgICAgICAvKiAgIFBJTlQ0UiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UM1I6MTsgICAgICAgICAgICAvKiAgIFBJTlQzUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMlI6MTsgICAgICAgICAgICAvKiAgIFBJTlQyUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMVI6MTsgICAgICAgICAgICAvKiAgIFBJTlQxUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5UMFI6MTsgICAgICAgICAgICAvKiAgIFBJTlQwUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQkNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTU6MTsgICAgICAgICAgICAgICAvKiAgIEUxNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTQ6MTsgICAgICAgICAgICAgICAvKiAgIEUxNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTM6MTsgICAgICAgICAgICAgICAvKiAgIEUxMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTI6MTsgICAgICAgICAgICAgICAvKiAgIEUxMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTE6MTsgICAgICAgICAgICAgICAvKiAgIEUxMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMTA6MTsgICAgICAgICAgICAgICAvKiAgIEUxMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFOToxOyAgICAgICAgICAgICAgICAvKiAgIEU5ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFODoxOyAgICAgICAgICAgICAgICAvKiAgIEU4ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFNzoxOyAgICAgICAgICAgICAgICAvKiAgIEU3ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFNjoxOyAgICAgICAgICAgICAgICAvKiAgIEU2ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFNToxOyAgICAgICAgICAgICAgICAvKiAgIEU1ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFNDoxOyAgICAgICAgICAgICAgICAvKiAgIEU0ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMzoxOyAgICAgICAgICAgICAgICAvKiAgIEUzICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMjoxOyAgICAgICAgICAgICAgICAvKiAgIEUyICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFMToxOyAgICAgICAgICAgICAgICAvKiAgIEUxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQk5SICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRToyOyAgICAgICAgICAgICAgICAvKiAgIEJFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCT1ZFOjE7ICAgICAgICAgICAgICAvKiAgIEJPVkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTjo0OyAgICAgICAgICAgICAgICAvKiAgIEJOICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQk5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRMDo0OyAgICAgICAgICAgICAvKiAgIF9JUlEwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRMTo0OyAgICAgICAgICAgICAvKiAgIF9JUlExICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRMjo0OyAgICAgICAgICAgICAvKiAgIF9JUlEyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRMzo0OyAgICAgICAgICAgICAvKiAgIF9JUlEzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRNDo0OyAgICAgICAgICAgICAvKiAgIF9JUlE0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRNTo0OyAgICAgICAgICAgICAvKiAgIF9JUlE1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRNjo0OyAgICAgICAgICAgICAvKiAgIF9JUlE2ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSVJRNzo0OyAgICAgICAgICAgICAvKiAgIF9JUlE3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUElOVDo0OyAgICAgICAgICAgICAvKiAgIFBJTlQ3LTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls5OTBdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzA6NDsgICAgICAgICAgICAvKiAgIF9ETUFDMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzE6NDsgICAgICAgICAgICAvKiAgIF9ETUFDMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzI6NDsgICAgICAgICAgICAvKiAgIF9ETUFDMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzM6NDsgICAgICAgICAgICAvKiAgIF9ETUFDMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzQ6NDsgICAgICAgICAgICAvKiAgIF9ETUFDNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzU6NDsgICAgICAgICAgICAvKiAgIF9ETUFDNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzY6NDsgICAgICAgICAgICAvKiAgIF9ETUFDNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzc6NDsgICAgICAgICAgICAvKiAgIF9ETUFDNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzg6NDsgICAgICAgICAgICAvKiAgIF9ETUFDOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzk6NDsgICAgICAgICAgICAvKiAgIF9ETUFDOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzEwOjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzExOjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwODsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIwOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzEyOjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzEzOjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzE0OjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRE1BQzE1OjQ7ICAgICAgICAgICAvKiAgIF9ETUFDMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIwOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfVVNCOjQ7ICAgICAgICAgICAgICAvKiAgIF9VU0IgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfVkRDNDA6NDsgICAgICAgICAgICAvKiAgIF9WREM0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfVkRDNDE6NDsgICAgICAgICAgICAvKiAgIF9WREM0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfVkRDNDI6NDsgICAgICAgICAgICAvKiAgIF9WREM0MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSU1STFM6NDsgICAgICAgICAgICAvKiAgICBJTVJMUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSkNVOjQ7ICAgICAgICAgICAgICAvKiAgICBKQ1UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRElTQ09NOjQ7ICAgICAgICAgICAvKiAgICBESVNDT00gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUkdQVkc6NDsgICAgICAgICAgICAvKiAgICBSR1BWRyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfQ01UMDo0OyAgICAgICAgICAgICAvKiAgIF9DTVQwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfQ01UMTo0OyAgICAgICAgICAgICAvKiAgIF9DTVQxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfQlNDOjQ7ICAgICAgICAgICAgICAvKiAgIF9CU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfV0RUOjQ7ICAgICAgICAgICAgICAvKiAgIF9XRFQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMDA6NDsgICAgICAgICAgICAvKiAgIF9NVFUwMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMDE6NDsgICAgICAgICAgICAvKiAgIF9NVFUwMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMTA6NDsgICAgICAgICAgICAvKiAgIF9NVFUxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMTE6NDsgICAgICAgICAgICAvKiAgIF9NVFUxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMjA6NDsgICAgICAgICAgICAvKiAgIF9NVFUyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMjE6NDsgICAgICAgICAgICAvKiAgIF9NVFUyMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMzA6NDsgICAgICAgICAgICAvKiAgIF9NVFUzMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVMzE6NDsgICAgICAgICAgICAvKiAgIF9NVFUzMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVNDA6NDsgICAgICAgICAgICAvKiAgIF9NVFU0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTVRVNDE6NDsgICAgICAgICAgICAvKiAgIF9NVFU0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUFdNMTo0OyAgICAgICAgICAgICAvKiAgIF9QV00xICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUFdNMjo0OyAgICAgICAgICAgICAvKiAgIF9QV00yICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RHMDo0OyAgICAgICAgICAgICAvKiAgIF9TREcwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RHMTo0OyAgICAgICAgICAgICAvKiAgIF9TREcxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RHMjo0OyAgICAgICAgICAgICAvKiAgIF9TREcyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RHMzo0OyAgICAgICAgICAgICAvKiAgIF9TREczICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfQURDOjQ7ICAgICAgICAgICAgICAvKiAgIF9BREMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJMDo0OyAgICAgICAgICAgICAvKiAgIF9TU0kwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJMTo0OyAgICAgICAgICAgICAvKiAgIF9TU0kxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJMjo0OyAgICAgICAgICAgICAvKiAgIF9TU0kyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJMzo0OyAgICAgICAgICAgICAvKiAgIF9TU0kzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJNDo0OyAgICAgICAgICAgICAvKiAgIF9TU0k0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1NJNTo0OyAgICAgICAgICAgICAvKiAgIF9TU0k1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1BESUY6NDsgICAgICAgICAgICAvKiAgIF9TUERJRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxODsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIxOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSUlDMzA6NDsgICAgICAgICAgICAvKiAgIF9JSUMzMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSUlDMzE6NDsgICAgICAgICAgICAvKiAgIF9JSUMzMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSUlDMzI6NDsgICAgICAgICAgICAvKiAgIF9JSUMzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSUlDMzM6NDsgICAgICAgICAgICAvKiAgIF9JSUMzMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIxOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjA6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjE6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjI6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjM6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjQ6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjU6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjY6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0NJRjc6NDsgICAgICAgICAgICAvKiAgIF9TQ0lGNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0lPRjo0OyAgICAgICAgICAgICAvKiAgIF9TSU9GICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUkNBTjA6NDsgICAgICAgICAgICAvKiAgIF9SQ0FOMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUkNBTjE6NDsgICAgICAgICAgICAvKiAgIF9SQ0FOMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUkNBTjI6NDsgICAgICAgICAgICAvKiAgIF9SQ0FOMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUlNQSTA6NDsgICAgICAgICAgICAvKiAgIF9SU1BJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUlNQSTE6NDsgICAgICAgICAgICAvKiAgIF9SU1BJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUlFTUEkwOjQ7ICAgICAgICAgICAvKiAgIF9SUVNQSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUlFTUEkxOjQ7ICAgICAgICAgICAvKiAgIF9SUVNQSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfSUVCOjQ7ICAgICAgICAgICAgICAvKiAgIF9JRUIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUk9NREVDOjQ7ICAgICAgICAgICAvKiAgIF9ST01ERUMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfRkxDVEw6NDsgICAgICAgICAgICAvKiAgIF9GTENUTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfTU1DOjQ7ICAgICAgICAgICAgICAvKiAgIF9NTUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RISTA6NDsgICAgICAgICAgICAvKiAgIF9TREhJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU0RISTE6NDsgICAgICAgICAgICAvKiAgIF9TREhJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfUlRDOjQ7ICAgICAgICAgICAgICAvKiAgIF9SVEMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFIyNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1JDMDo0OyAgICAgICAgICAgICAvKiAgIF9TUkMwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1JDMTo0OyAgICAgICAgICAgICAvKiAgIF9TUkMxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBfU1JDMjo0OyAgICAgICAgICAgICAvKiAgIF9TUkMyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUFIyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2VuZGlmDQotc3RydWN0IHN0X2NjbnQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IENDTlQgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0NSMSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRjoxOyAgICAgICAgICAgICAgLyogICBJQ0YgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRToxOyAgICAgICAgICAgICAgLyogICBJQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DRjoxOyAgICAgICAgICAgICAgLyogICBPQ0YgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdUOjE7ICAgICAgICAgICAgICAgLyogICBXVCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DRToxOyAgICAgICAgICAgICAgLyogICBPQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0NSMiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExFOjE7ICAgICAgICAgICAgICAgLyogICBMRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFczTE9BRDoxOyAgICAgICAgICAgLyogICBXM0xPQUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFczTE9DSzoxOyAgICAgICAgICAgLyogICBXM0xPQ0sgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFcyTE9BRDoxOyAgICAgICAgICAgLyogICBXMkxPQUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFcyTE9DSzoxOyAgICAgICAgICAgLyogICBXMkxPQ0sgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsNCi0JI2lmCTANCi11bmlvbiBDU25CQ1J7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDU25CQ1IgICAgICAgKi8NCi0gICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJV1c6MzsgICAgICAgICAgICAgICAgICAgICAvKiAgIElXVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJV1JXRDozOyAgICAgICAgICAgICAgICAgICAvKiAgIElXUldEICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJV1JXUzozOyAgICAgICAgICAgICAgICAgICAvKiAgIElXUldTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJV1JSRDozOyAgICAgICAgICAgICAgICAgICAvKiAgIElXUlJEICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJV1JSUzozOyAgICAgICAgICAgICAgICAgICAvKiAgIElXUlJTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWVBFOjM7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRZUEUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFTkRJQU46MTsgICAgICAgICAgICAgICAgICAvKiAgIEVORElBTiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCU1o6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIEJTWiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfYnNjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgQlNDICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTU5DUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIwOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkxPQ0s6MTsgICAgICAgICAgICAvKiAgIEJMT0NLICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFBSVFk6MjsgICAgICAgICAgICAvKiAgIERQUlRZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSVc6MzsgICAgICAgICAgICAvKiAgIERNQUlXICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSVdBOjE7ICAgICAgICAgICAvKiAgIERNQUlXQSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSElaTUVNOjE7ICAgICAgICAgICAvKiAgIEhJWk1FTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSElaQ05UOjE7ICAgICAgICAgICAvKiAgIEhJWkNOVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDTU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTMEJDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzBCQ1IgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTMUJDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzFCQ1IgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTMkJDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzJCQ1IgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTM0JDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzNCQ1IgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTNEJDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzRCQ1IgICAgICAgKi8NCi0gICAgICAgdW5pb24gQ1NuQkNSIENTNUJDUjsgICAgICAgICAgICAgICAgICAgICAvKiBDUzVCQ1IgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzBXQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzBXQ1IoTk9STUFMKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkFTOjE7ICAgICAgIC8qICAgQkFTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c6MjsgICAgICAgIC8qICAgU1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1I6NDsgICAgICAgIC8qICAgV1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSFc6MjsgICAgICAgIC8qICAgSFcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBOT1JNQUw7ICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMFdDUihCUk9NX0FTWSkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJTVDoyOyAgICAgICAvKiAgIEJTVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJXOjI7ICAgICAgICAvKiAgIEJXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFc6NDsgICAgICAgICAvKiAgIFcgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQlJPTV9BU1k7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzBXQ1IoQlJPTV9TWSkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNDsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJXOjI7ICAgICAgICAvKiAgIEJXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFc6NDsgICAgICAgICAvKiAgIFcgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQlJPTV9TWTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUzBXQ1I7DQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MxV0NSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdXOjM7ICAgICAgICAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MxV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzJXQ1IoU0RSQU0pICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBMkNMOjI7ICAgICAgLyogICBBMkNMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFNEUkFNOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MyV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzNXQ1IoU0RSQU0pICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJQOjI7ICAgICAgLyogICBXVFJQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJDRDoyOyAgICAgLyogICBXVFJDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBM0NMOjI7ICAgICAgLyogICBBM0NMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUldMOjI7ICAgICAgLyogICBUUldMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJDOjI7ICAgICAgLyogICBXVFJDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFNEUkFNOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MzV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSICAgICAgICovDQotICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdXOjM7ICAgICAgICAvKiAgIFdXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzRXQ1IoQlJPTV9BU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCU1Q6MjsgICAgICAgLyogICBCU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fQVNZOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1M0V0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1V0NSICAgICAgICovDQotICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1V0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNaU0VMOjE7ICAgICAvKiAgIFNaU0VMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1QWFdCQVM6MTsgICAvKiAgIE1QWFcvQkFTICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdXOjM7ICAgICAgICAvKiAgIFdXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzVXQ1IoUENNQ0lBKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEwOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0E6MjsgICAgICAgIC8qICAgU0EgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVEOjQ7ICAgICAgIC8qICAgVEVEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUENXOjQ7ICAgICAgIC8qICAgUENXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVIOjQ7ICAgICAgIC8qICAgVEVIICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBQQ01DSUE7ICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTNVdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNEQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBMlJPVzoyOyAgICAgICAgICAgIC8qICAgQTJST1cgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBMkNPTDoyOyAgICAgICAgICAgIC8qICAgQTJDT0wgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBERUVQOjE7ICAgICAgICAgICAgIC8qICAgREVFUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRlNIOjE7ICAgICAgICAgICAgIC8qICAgUkZTSCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSTU9ERToxOyAgICAgICAgICAgIC8qICAgUk1PREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQRE9XTjoxOyAgICAgICAgICAgIC8qICAgUERPV04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQUNUVjoxOyAgICAgICAgICAgIC8qICAgQkFDVFYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBM1JPVzoyOyAgICAgICAgICAgIC8qICAgQTNST1cgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBM0NPTDoyOyAgICAgICAgICAgIC8qICAgQTNDT0wgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNEQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJUQ1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUY6MTsgICAgICAgICAgICAgIC8qICAgQ01GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUlFOjE7ICAgICAgICAgICAgIC8qICAgQ01JRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDS1M6MzsgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSUkM6MzsgICAgICAgICAgICAgIC8qICAgUlJDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJUQ1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJUQ05UICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJUQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJUQ09SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJUQ09SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9kbWFjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBETUFDICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERPOjE7ICAgICAgICAgICAgICAgIC8qICAgRE8gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRMOjE7ICAgICAgICAgICAgICAgIC8qICAgVEwgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFNOjE7ICAgICAgICAgICAgICAgIC8qICAgQU0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFMOjE7ICAgICAgICAgICAgICAgIC8qICAgQUwgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERMOjE7ICAgICAgICAgICAgICAgIC8qICAgREwgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERTOjE7ICAgICAgICAgICAgICAgIC8qICAgRFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjMgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjMgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjQgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjQgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjUgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjUgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjYgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjYgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I2ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjcgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjcgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjcgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I3ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I3OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjggICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjggICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjggICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I4ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjkgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjkgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjkgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1I5ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjEwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjEwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjEwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjEwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjExICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjExICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjExICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjExOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjEyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjEyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjEyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjEyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjEzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjEzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjEzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjEzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjE0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjE0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjE0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjE0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUjE1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERBUjE1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERBUjE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVRDUjE1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVRDUjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENIQ1IxNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDOjE7ICAgICAgICAgICAgICAgIC8qICAgVEMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRFNBUjoxOyAgICAgICAgICAgIC8qICAgUkxEU0FSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJMRERBUjoxOyAgICAgICAgICAgIC8qICAgUkxEREFSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERBRjoxOyAgICAgICAgICAgICAgIC8qICAgREFGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNBRjoxOyAgICAgICAgICAgICAgIC8qICAgU0FGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTUFTSzoxOyAgICAgICAgICAgIC8qICAgVEVNQVNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhFOjE7ICAgICAgICAgICAgICAgIC8qICAgSEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJRToxOyAgICAgICAgICAgICAgIC8qICAgSElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERNOjI7ICAgICAgICAgICAgICAgIC8qICAgRE0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNNOjI7ICAgICAgICAgICAgICAgIC8qICAgU00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTOjQ7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjE7ICAgICAgICAgICAgICAgIC8qICAgVEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRTOjI7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFOjE7ICAgICAgICAgICAgICAgIC8qICAgREUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENIQ1IxNTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI2ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI2ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI3ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI3ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI4ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI4ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVI5ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVI5ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1I5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxMjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTQVIxNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTQVIxNTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVIxNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVIxNTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJETUFUQ1IxNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEOjMyOyAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJETUFUQ1IxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQU9SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNUzoyOyAgICAgICAgICAgICAgIC8qICAgQ01TICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBSOjI7ICAgICAgICAgICAgICAgIC8qICAgUFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFFOjE7ICAgICAgICAgICAgICAgIC8qICAgQUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSUY6MTsgICAgICAgICAgICAgIC8qICAgTk1JRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERNRToxOyAgICAgICAgICAgICAgIC8qICAgRE1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQU9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNlsyNTRdOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTo4OyAgICAgICAgICAgICAgIC8qICAgQ0gxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMDo4OyAgICAgICAgICAgICAgIC8qICAgQ0gwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMU1JRDo2OyAgICAgICAgICAgIC8qICAgQ0gxTUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMVJJRDoyOyAgICAgICAgICAgIC8qICAgQ0gxUklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIME1JRDo2OyAgICAgICAgICAgIC8qICAgQ0gwTUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMFJJRDoyOyAgICAgICAgICAgIC8qICAgQ0gwUklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxN1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMzo4OyAgICAgICAgICAgICAgIC8qICAgQ0gzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMjo4OyAgICAgICAgICAgICAgIC8qICAgQ0gyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIM01JRDo2OyAgICAgICAgICAgIC8qICAgQ0gzSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gzUklEOjI7ICAgICAgICAgICAgLyogICBDSDNSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gyTUlEOjY7ICAgICAgICAgICAgLyogICBDSDJNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gyUklEOjI7ICAgICAgICAgICAgLyogICBDSDJSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g1Ojg7ICAgICAgICAgICAgICAgLyogICBDSDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g0Ojg7ICAgICAgICAgICAgICAgLyogICBDSDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g1TUlEOjY7ICAgICAgICAgICAgLyogICBDSDVNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g1UklEOjI7ICAgICAgICAgICAgLyogICBDSDVSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g0TUlEOjY7ICAgICAgICAgICAgLyogICBDSDRNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g0UklEOjI7ICAgICAgICAgICAgLyogICBDSDRSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMzICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g3Ojg7ICAgICAgICAgICAgICAgLyogICBDSDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g2Ojg7ICAgICAgICAgICAgICAgLyogICBDSDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g3TUlEOjY7ICAgICAgICAgICAgLyogICBDSDdNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g3UklEOjI7ICAgICAgICAgICAgLyogICBDSDdSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g2TUlEOjY7ICAgICAgICAgICAgLyogICBDSDZNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g2UklEOjI7ICAgICAgICAgICAgLyogICBDSDZSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIwWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlM0ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g5Ojg7ICAgICAgICAgICAgICAgLyogICBDSDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g4Ojg7ICAgICAgICAgICAgICAgLyogICBDSDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g5TUlEOjY7ICAgICAgICAgICAgLyogICBDSDlNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g5UklEOjI7ICAgICAgICAgICAgLyogICBDSDlSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g4TUlEOjY7ICAgICAgICAgICAgLyogICBDSDhNSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g4UklEOjI7ICAgICAgICAgICAgLyogICBDSDhSSUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIxWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlM1ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMTo4OyAgICAgICAgICAgICAgLyogICBDSDExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMDo4OyAgICAgICAgICAgICAgLyogICBDSDEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMU1JRDo2OyAgICAgICAgICAgLyogICBDSDExTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMVJJRDoyOyAgICAgICAgICAgLyogICBDSDExUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxME1JRDo2OyAgICAgICAgICAgLyogICBDSDEwTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMFJJRDoyOyAgICAgICAgICAgLyogICBDSDEwUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIyWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlM2ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMzo4OyAgICAgICAgICAgICAgLyogICBDSDEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMjo4OyAgICAgICAgICAgICAgLyogICBDSDEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxM01JRDo2OyAgICAgICAgICAgLyogICBDSDEzTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxM1JJRDoyOyAgICAgICAgICAgLyogICBDSDEzUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMk1JRDo2OyAgICAgICAgICAgLyogICBDSDEyTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxMlJJRDoyOyAgICAgICAgICAgLyogICBDSDEyUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIzWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlM3ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNTo4OyAgICAgICAgICAgICAgLyogICBDSDE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNDo4OyAgICAgICAgICAgICAgLyogICBDSDE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNU1JRDo2OyAgICAgICAgICAgLyogICBDSDE1TUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNVJJRDoyOyAgICAgICAgICAgLyogICBDSDE1UklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNE1JRDo2OyAgICAgICAgICAgLyogICBDSDE0TUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0gxNFJJRDoyOyAgICAgICAgICAgLyogICBDSDE0UklEICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNlbmRpZg0KLSNpZiAwDQotc3RydWN0IHN0X210dTIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IE1UVTIgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjoyOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVU6MTsgICAgICAgICAgICAgLyogICBUQ0lFVSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSXzIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVToxOyAgICAgICAgICAgICAgLyogICBUQ0ZVICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRDoxOyAgICAgICAgICAgICAgLyogICBUR0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQzoxOyAgICAgICAgICAgICAgLyogICBUR0ZDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQjoxOyAgICAgICAgICAgICAgLyogICBUR0ZCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQToxOyAgICAgICAgICAgICAgLyogICBUR0ZBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQV8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbNTAwXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzMgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjozOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjozOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZCOjE7ICAgICAgICAgICAgICAgLyogICBCRkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZBOjE7ICAgICAgICAgICAgICAgLyogICBCRkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl80ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZCOjE7ICAgICAgICAgICAgICAgLyogICBCRkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZBOjE7ICAgICAgICAgICAgICAgLyogICBCRkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkhfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkhfMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkxfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9EOjQ7ICAgICAgICAgICAgICAgLyogICBJT0QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9DOjQ7ICAgICAgICAgICAgICAgLyogICBJT0MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkxfMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkhfNCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkhfNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkxfNCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9EOjQ7ICAgICAgICAgICAgICAgLyogICBJT0QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9DOjQ7ICAgICAgICAgICAgICAgLyogICBJT0MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkxfNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUQ6MTsgICAgICAgICAgICAgLyogICBUR0lFRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUM6MTsgICAgICAgICAgICAgLyogICBUR0lFQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl80ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRTI6MTsgICAgICAgICAgICAgLyogICBUVEdFMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUQ6MTsgICAgICAgICAgICAgLyogICBUR0lFRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUM6MTsgICAgICAgICAgICAgLyogICBUR0lFQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9FUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0RDoxOyAgICAgICAgICAgICAgLyogICBPRTREICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QzoxOyAgICAgICAgICAgICAgLyogICBPRTRDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0UzRDoxOyAgICAgICAgICAgICAgLyogICBPRTNEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QjoxOyAgICAgICAgICAgICAgLyogICBPRTRCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QToxOyAgICAgICAgICAgICAgLyogICBPRTRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0UzQjoxOyAgICAgICAgICAgICAgLyogICBPRTNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9FUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkRDOjE7ICAgICAgICAgICAgICAgLyogICBCREMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTjoxOyAgICAgICAgICAgICAgICAgLyogICBOICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUDoxOyAgICAgICAgICAgICAgICAgLyogICBQICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRkI6MTsgICAgICAgICAgICAgICAgLyogICBGQiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgV0Y6MTsgICAgICAgICAgICAgICAgLyogICBXRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVkY6MTsgICAgICAgICAgICAgICAgLyogICBWRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVUY6MTsgICAgICAgICAgICAgICAgLyogICBVRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9DUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUFNZRToxOyAgICAgICAgICAgICAgLyogICBQU1lFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9DTDoxOyAgICAgICAgICAgICAgLyogICBUT0NMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9DUzoxOyAgICAgICAgICAgICAgLyogICBUT0NTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTTjoxOyAgICAgICAgICAgICAgLyogICBPTFNOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTUDoxOyAgICAgICAgICAgICAgLyogICBPTFNQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9DUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9DUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkY6MjsgICAgICAgICAgICAgICAgLyogICBCRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM046MTsgICAgICAgICAgICAgLyogICBPTFMzTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM1A6MTsgICAgICAgICAgICAgLyogICBPTFMzUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMk46MTsgICAgICAgICAgICAgLyogICBPTFMyTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMlA6MTsgICAgICAgICAgICAgLyogICBPTFMyUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMU46MTsgICAgICAgICAgICAgLyogICBPTFMxTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMVA6MTsgICAgICAgICAgICAgLyogICBPTFMxUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9DUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8zICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF80ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENEUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ0RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBURERSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRERFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRTICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENCUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENCUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQ18zICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQ18zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSRF8zICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSRF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQ180ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQ180OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSRF80ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSRF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSXzMgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRDoxOyAgICAgICAgICAgICAgLyogICBUR0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQzoxOyAgICAgICAgICAgICAgLyogICBUR0ZDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQjoxOyAgICAgICAgICAgICAgLyogICBUR0ZCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQToxOyAgICAgICAgICAgICAgLyogICBUR0ZBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSXzQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRDoxOyAgICAgICAgICAgICAgLyogICBUR0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQzoxOyAgICAgICAgICAgICAgLyogICBUR0ZDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQjoxOyAgICAgICAgICAgICAgLyogICBUR0ZCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQToxOyAgICAgICAgICAgICAgLyogICBUR0ZBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElUQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVDNBRU46MTsgICAgICAgICAgICAgLyogICBUM0FFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzNBQ09SOjM7ICAgICAgICAgICAgLyogICBfM0FDT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVDRWRU46MTsgICAgICAgICAgICAgLyogICBUNFZFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzRWQ09SOjM7ICAgICAgICAgICAgLyogICBfNFZDT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElUQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElUQ05UICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzNBQ05UOjM7ICAgICAgICAgICAgLyogICBfM0FDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzRWQ05UOjM7ICAgICAgICAgICAgLyogICBfNFZDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElUQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEJURVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRFOjI7ICAgICAgICAgICAgICAgLyogICBCVEUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEJURVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVERFUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVERFUjoxOyAgICAgICAgICAgICAgLyogICBUREVSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVERFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9MQlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM046MTsgICAgICAgICAgICAgLyogICBPTFMzTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM1A6MTsgICAgICAgICAgICAgLyogICBPTFMzUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMk46MTsgICAgICAgICAgICAgLyogICBPTFMyTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMlA6MTsgICAgICAgICAgICAgLyogICBPTFMyUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMU46MTsgICAgICAgICAgICAgLyogICBPTFMxTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMVA6MTsgICAgICAgICAgICAgLyogICBPTFMxUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9MQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEJUTV8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQjoxOyAgICAgICAgICAgICAgLyogICBUVFNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQToxOyAgICAgICAgICAgICAgLyogICBUVFNBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEJUTV8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEJUTV80ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQjoxOyAgICAgICAgICAgICAgLyogICBUVFNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQToxOyAgICAgICAgICAgICAgLyogICBUVFNBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEJUTV80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEFEQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkY6MjsgICAgICAgICAgICAgICAgLyogICBCRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVQ0QUU6MTsgICAgICAgICAgICAgLyogICBVVDRBRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0QUU6MTsgICAgICAgICAgICAgLyogICBEVDRBRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVQ0QkU6MTsgICAgICAgICAgICAgLyogICBVVDRCRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0QkU6MTsgICAgICAgICAgICAgLyogICBEVDRCRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVRBM0FFOjE7ICAgICAgICAgICAgLyogICBJVEEzQUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVRBNFZFOjE7ICAgICAgICAgICAgLyogICBJVEE0VkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVRCM0FFOjE7ICAgICAgICAgICAgLyogICBJVEIzQUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVRCNFZFOjE7ICAgICAgICAgICAgLyogICBJVEI0VkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEFEQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEFEQ09SQV80ICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEFEQ09SQV80OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEFEQ09SQl80ICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEFEQ09SQl80OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEFEQ09CUkFfNCAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEFEQ09CUkFfNDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEFEQ09CUkJfNCAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEFEQ09CUkJfNDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMjBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFdDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NFOjE7ICAgICAgICAgICAgICAgLyogICBDQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgV1JFOjE7ICAgICAgICAgICAgICAgLyogICBXUkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzMxXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNUUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUNDoxOyAgICAgICAgICAgICAgLyogICBDU1Q0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUMzoxOyAgICAgICAgICAgICAgLyogICBDU1QzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUMjoxOyAgICAgICAgICAgICAgLyogICBDU1QyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUMToxOyAgICAgICAgICAgICAgLyogICBDU1QxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUMDoxOyAgICAgICAgICAgICAgLyogICBDU1QwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNZUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1lOQzQ6MTsgICAgICAgICAgICAgLyogICBTWU5DNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1lOQzM6MTsgICAgICAgICAgICAgLyogICBTWU5DMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1lOQzI6MTsgICAgICAgICAgICAgLyogICBTWU5DMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1lOQzE6MTsgICAgICAgICAgICAgLyogICBTWU5DMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1lOQzA6MTsgICAgICAgICAgICAgLyogICBTWU5DMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNZUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJXRVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUldFOjE7ICAgICAgICAgICAgICAgLyogICBSV0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFJXRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzEyM107ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjozOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZFOjE7ICAgICAgICAgICAgICAgLyogICBCRkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZCOjE7ICAgICAgICAgICAgICAgLyogICBCRkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZBOjE7ICAgICAgICAgICAgICAgLyogICBCRkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkhfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkhfMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkxfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9EOjQ7ICAgICAgICAgICAgICAgLyogICBJT0QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9DOjQ7ICAgICAgICAgICAgICAgLyogICBJT0MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkxfMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUQ6MTsgICAgICAgICAgICAgLyogICBUR0lFRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUM6MTsgICAgICAgICAgICAgLyogICBUR0lFQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSXzAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRDoxOyAgICAgICAgICAgICAgLyogICBUR0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQzoxOyAgICAgICAgICAgICAgLyogICBUR0ZDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQjoxOyAgICAgICAgICAgICAgLyogICBUR0ZCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQToxOyAgICAgICAgICAgICAgLyogICBUR0ZBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQV8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQV8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQ18wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQ18wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSRF8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSRF8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSRV8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSRV8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSRl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSRl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUjJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRTI6MTsgICAgICAgICAgICAgLyogICBUVEdFMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUY6MTsgICAgICAgICAgICAgLyogICBUR0lFRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUU6MTsgICAgICAgICAgICAgLyogICBUR0lFRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUjJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSMl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRjoxOyAgICAgICAgICAgICAgLyogICBUR0ZGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRToxOyAgICAgICAgICAgICAgLyogICBUR0ZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSMl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEJUTV8wICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTRToxOyAgICAgICAgICAgICAgLyogICBUVFNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQjoxOyAgICAgICAgICAgICAgLyogICBUVFNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRTQToxOyAgICAgICAgICAgICAgLyogICBUVFNBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEJUTV8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE0Wzg5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjoyOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl8xICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUl8xICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE1WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl8xICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVU6MTsgICAgICAgICAgICAgLyogICBUQ0lFVSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFNSXzEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVToxOyAgICAgICAgICAgICAgLyogICBUQ0ZVICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGRDoxOyAgICAgICAgICAgICAgLyogICBUR0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQzoxOyAgICAgICAgICAgICAgLyogICBUR0ZDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQjoxOyAgICAgICAgICAgICAgLyogICBUR0ZCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdGQToxOyAgICAgICAgICAgICAgLyogICBUR0ZBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8xICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQV8xICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQl8xICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElDQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSTJCRToxOyAgICAgICAgICAgICAgLyogICBJMkJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSTJBRToxOyAgICAgICAgICAgICAgLyogICBJMkFFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSTFCRToxOyAgICAgICAgICAgICAgLyogICBJMUJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSTFBRToxOyAgICAgICAgICAgICAgLyogICBJMUFFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElDQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotI2VuZGlmDQotDQotc3RydWN0IHN0X2NtdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IENNVCAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01TVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RSMToxOyAgICAgICAgICAgICAgLyogICBTVFIxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RSMDoxOyAgICAgICAgICAgICAgLyogICBTVFIwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01TVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DU1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01GOjE7ICAgICAgICAgICAgICAgLyogICBDTUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01JRToxOyAgICAgICAgICAgICAgLyogICBDTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjI7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DU1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DTlQwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DTlQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DU1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01GOjE7ICAgICAgICAgICAgICAgLyogICBDTUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01JRToxOyAgICAgICAgICAgICAgLyogICBDTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjI7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DU1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DTlQxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DTlQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01DT1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01DT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdW5pb24gdW5fd2R0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdW5pb24gV0RUICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVhZCAgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgLyogV1RDU1IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgLyogIEJpdCAgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPVkY6MTsgLyogICAgSU9WRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdUSVQ6MTsgLyogICAgV1QvSVQgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRNRToxOyAgLyogICAgVE1FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzozOyAgLyogICAgQ0tTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IFdUQ1NSOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgd2sxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgV1RDTlQ7ICAgICAgICAgICAgICAgLyogV1RDTlQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgd2syOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgLyogV1JDU1IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgLyogIEJpdCAgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdPVkY6MTsgLyogICAgV09WRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTVEU6MTsgLyogICAgUlNURSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTVFM6MTsgLyogICAgUlNUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IFdSQ1NSOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFJFQUQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV3JpdGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV1RDU1I7ICAgICAgICAgICAgICAgLyogV1RDU1IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV1RDTlQ7ICAgICAgICAgICAgICAgLyogV1RDTlQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV1JDU1I7ICAgICAgICAgICAgICAgLyogV1JDU1IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdSSVRFOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3J0YyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFJUQyAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUjY0Q05UICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzFIejoxOyAgICAgICAgICAgICAgLyogICBfMUh6ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzJIejoxOyAgICAgICAgICAgICAgLyogICBfMkh6ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzRIejoxOyAgICAgICAgICAgICAgLyogICBfNEh6ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzhIejoxOyAgICAgICAgICAgICAgLyogICBfOEh6ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzE2SHo6MTsgICAgICAgICAgICAgLyogICBfMTZIeiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzMySHo6MTsgICAgICAgICAgICAgLyogICBfMzJIeiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgXzY0SHo6MTsgICAgICAgICAgICAgLyogICBfNjRIeiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUjY0Q05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSU0VDQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlNFQ0NOVCAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSTUlOQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk1JTkNOVCAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSSFJDTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkhSQ05UICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSV0tDTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUldLQ05UICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSREFZQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkRBWUNOVCAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBSTU9OQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk1PTkNOVCAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBSWVJDTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUllSQ05UICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlNFQ0FSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlNFQ0FSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk1JTkFSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUk1JTkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkhSQVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkhSQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUldLQVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUldLQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkRBWUFSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkRBWUFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk1PTkFSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUk1PTkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkNSMSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0Y6MTsgICAgICAgICAgICAgICAgLyogICBDRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0lFOjE7ICAgICAgICAgICAgICAgLyogICBDSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQUlFOjE7ICAgICAgICAgICAgICAgLyogICBBSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQUY6MTsgICAgICAgICAgICAgICAgLyogICBBRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkNSMiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEVGOjE7ICAgICAgICAgICAgICAgLyogICBQRUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEVTOjM7ICAgICAgICAgICAgICAgLyogICBQRVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlRDRU46MTsgICAgICAgICAgICAgLyogICBSVENFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQURKOjE7ICAgICAgICAgICAgICAgLyogICBBREogICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkVTRVQ6MTsgICAgICAgICAgICAgLyogICBSRVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RBUlQ6MTsgICAgICAgICAgICAgLyogICBTVEFSVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBSWVJBUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUllSQVIgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE1WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkNSMyAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRU5COjE7ICAgICAgICAgICAgICAgLyogICBFTkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkNSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkNSNSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkNLU0VMOjI7ICAgICAgICAgICAgLyogICBSQ0tTRUwgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkNSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkZSSCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0VMNjQ6MTsgICAgICAgICAgICAgLyogICBTRUw2NCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTg6MTsgICAgICAgICAgICAgLyogICBSRkNbMThdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTc6MTsgICAgICAgICAgICAgLyogICBSRkNbMTddICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTY6MTsgICAgICAgICAgICAgLyogICBSRkNbMTZdICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkZSSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkZSTCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTU6MTsgICAgICAgICAgICAgLyogICBSRkNbMTVdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTQ6MTsgICAgICAgICAgICAgLyogICBSRkNbMTRdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTM6MTsgICAgICAgICAgICAgLyogICBSRkNbMTNdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTI6MTsgICAgICAgICAgICAgLyogICBSRkNbMTJdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTE6MTsgICAgICAgICAgICAgLyogICBSRkNbMTFdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMTA6MTsgICAgICAgICAgICAgLyogICBSRkNbMTBdICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDOToxOyAgICAgICAgICAgICAgLyogICBSRkNbOV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDODoxOyAgICAgICAgICAgICAgLyogICBSRkNbOF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDNzoxOyAgICAgICAgICAgICAgLyogICBSRkNbN10gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDNjoxOyAgICAgICAgICAgICAgLyogICBSRkNbNl0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDNToxOyAgICAgICAgICAgICAgLyogICBSRkNbNV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDNDoxOyAgICAgICAgICAgICAgLyogICBSRkNbNF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMzoxOyAgICAgICAgICAgICAgLyogICBSRkNbM10gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMjoxOyAgICAgICAgICAgICAgLyogICBSRkNbMl0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMToxOyAgICAgICAgICAgICAgLyogICBSRkNbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZDMDoxOyAgICAgICAgICAgICAgLyogICBSRkNbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkZSTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNpZgkwDQotc3RydWN0IHN0X3NjaWYwMjM0NiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNDSUYgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTTVJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0E6MTsgICAgICAgICAgICAgICAgLyogICBDL0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0hSOjE7ICAgICAgICAgICAgICAgLyogICBDSFIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEU6MTsgICAgICAgICAgICAgICAgLyogICBQRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0U6MTsgICAgICAgICAgICAgICAgLyogICBPL0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RPUDoxOyAgICAgICAgICAgICAgLyogICBTVE9QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjI7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NCUlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NCUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVElFOjE7ICAgICAgICAgICAgICAgLyogICBUSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUklFOjE7ICAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEU6MTsgICAgICAgICAgICAgICAgLyogICBURSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkU6MTsgICAgICAgICAgICAgICAgLyogICBSRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVJRToxOyAgICAgICAgICAgICAgLyogICBSRUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tFOjI7ICAgICAgICAgICAgICAgLyogICBDS0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGVERSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGVERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSTjo0OyAgICAgICAgICAgICAgLyogICBQRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSTjo0OyAgICAgICAgICAgICAgLyogICBGRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRVI6MTsgICAgICAgICAgICAgICAgLyogICBFUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVORDoxOyAgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERGRToxOyAgICAgICAgICAgICAgLyogICBUREZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJLOjE7ICAgICAgICAgICAgICAgLyogICBCUksgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSOjE7ICAgICAgICAgICAgICAgLyogICBGRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSOjE7ICAgICAgICAgICAgICAgLyogICBQRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRGOjE7ICAgICAgICAgICAgICAgLyogICBSREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFI6MTsgICAgICAgICAgICAgICAgLyogICBEUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGUkRSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGUkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNUUkc6MzsgICAgICAgICAgICAgLyogICBSU1RSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRSRzoyOyAgICAgICAgICAgICAgLyogICBSVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFRSRzoyOyAgICAgICAgICAgICAgLyogICBUVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNFOjE7ICAgICAgICAgICAgICAgLyogICBNQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZSU1Q6MTsgICAgICAgICAgICAgLyogICBURlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZSU1Q6MTsgICAgICAgICAgICAgLyogICBSRlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9PUDoxOyAgICAgICAgICAgICAgLyogICBMT09QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVDo1OyAgICAgICAgICAgICAgICAgLyogICBUICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUjo1OyAgICAgICAgICAgICAgICAgLyogICBSICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTUFRSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLSU86MTsgICAgICAgICAgICAgLyogICBTQ0tJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLRFQ6MTsgICAgICAgICAgICAgLyogICBTQ0tEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMklPOjE7ICAgICAgICAgICAgLyogICBTUEIySU8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMkRUOjE7ICAgICAgICAgICAgLyogICBTUEIyRFQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTUFRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1JFUjoxOyAgICAgICAgICAgICAgLyogICBPUkVSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NFTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkdETToxOyAgICAgICAgICAgICAgLyogICBCR0RNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUJDUzoxOyAgICAgICAgICAgICAgLyogICBBQkNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NFTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3NjaWYxNTcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNDSUYgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0E6MTsgICAgICAgICAgICAgICAgLyogICBDL0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0hSOjE7ICAgICAgICAgICAgICAgLyogICBDSFIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEU6MTsgICAgICAgICAgICAgICAgLyogICBQRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0U6MTsgICAgICAgICAgICAgICAgLyogICBPL0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RPUDoxOyAgICAgICAgICAgICAgLyogICBTVE9QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjI7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NCUlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NCUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVElFOjE7ICAgICAgICAgICAgICAgLyogICBUSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUklFOjE7ICAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEU6MTsgICAgICAgICAgICAgICAgLyogICBURSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkU6MTsgICAgICAgICAgICAgICAgLyogICBSRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVJRToxOyAgICAgICAgICAgICAgLyogICBSRUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tFOjI7ICAgICAgICAgICAgICAgLyogICBDS0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTQ1IgIDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGVERSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGVERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSTjo0OyAgICAgICAgICAgICAgLyogICBQRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSTjo0OyAgICAgICAgICAgICAgLyogICBGRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRVI6MTsgICAgICAgICAgICAgICAgLyogICBFUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVORDoxOyAgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERGRToxOyAgICAgICAgICAgICAgLyogICBUREZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJLOjE7ICAgICAgICAgICAgICAgLyogICBCUksgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSOjE7ICAgICAgICAgICAgICAgLyogICBGRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSOjE7ICAgICAgICAgICAgICAgLyogICBQRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRGOjE7ICAgICAgICAgICAgICAgLyogICBSREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFI6MTsgICAgICAgICAgICAgICAgLyogICBEUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGU1IgIDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGUkRSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGUkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNUUkc6MzsgICAgICAgICAgICAgLyogICBSU1RSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRSRzoyOyAgICAgICAgICAgICAgLyogICBSVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFRSRzoyOyAgICAgICAgICAgICAgLyogICBUVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNFOjE7ICAgICAgICAgICAgICAgLyogICBNQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZSU1Q6MTsgICAgICAgICAgICAgLyogICBURlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZSU1Q6MTsgICAgICAgICAgICAgLyogICBSRlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9PUDoxOyAgICAgICAgICAgICAgLyogICBMT09QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVDo1OyAgICAgICAgICAgICAgICAgLyogICBUICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUjo1OyAgICAgICAgICAgICAgICAgLyogICBSICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTUFRSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRTSU86MTsgICAgICAgICAgICAgLyogICBSVFNJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRTRFQ6MTsgICAgICAgICAgICAgLyogICBSVFNEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RTSU86MTsgICAgICAgICAgICAgLyogICBDVFNJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RTRFQ6MTsgICAgICAgICAgICAgLyogICBDVFNEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLSU86MTsgICAgICAgICAgICAgLyogICBTQ0tJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLRFQ6MTsgICAgICAgICAgICAgLyogICBTQ0tEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMklPOjE7ICAgICAgICAgICAgLyogICBTUEIySU8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMkRUOjE7ICAgICAgICAgICAgLyogICBTUEIyRFQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTUFRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1JFUjoxOyAgICAgICAgICAgICAgLyogICBPUkVSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NFTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkdETToxOyAgICAgICAgICAgICAgLyogICBCR0RNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUJDUzoxOyAgICAgICAgICAgICAgLyogICBBQkNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NFTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNlbmRpZg0KLXN0cnVjdCBzdF9yc3BpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBSU1BJICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQUklFOjE7ICAgICAgICAgICAgIC8qICAgU1BSSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQRToxOyAgICAgICAgICAgICAgIC8qICAgU1BFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQVElFOjE7ICAgICAgICAgICAgIC8qICAgU1BUSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQRUlFOjE7ICAgICAgICAgICAgIC8qICAgU1BFSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFI6MTsgICAgICAgICAgICAgIC8qICAgTVNUUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PREZFTjoxOyAgICAgICAgICAgIC8qICAgTU9ERkVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTFAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNTTDBQOjE7ICAgICAgICAgICAgIC8qICAgU1NMMFAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTFA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQUENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PSUZFOjE7ICAgICAgICAgICAgIC8qICAgTU9JRkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PSUZWOjE7ICAgICAgICAgICAgIC8qICAgTU9JRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQTFA6MTsgICAgICAgICAgICAgIC8qICAgU1BMUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQUENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQUkY6MTsgICAgICAgICAgICAgIC8qICAgU1BSRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQVEVGOjE7ICAgICAgICAgICAgIC8qICAgU1BURUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PREY6MTsgICAgICAgICAgICAgIC8qICAgTU9ERiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9WUkY6MTsgICAgICAgICAgICAgIC8qICAgT1ZSRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQRFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQU0xOOjI7ICAgICAgICAgICAgIC8qICAgU1BTTE4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQQ1A6MjsgICAgICAgICAgICAgIC8qICAgU1BDUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQlIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQUjo4OyAgICAgICAgICAgICAgIC8qICAgU1BSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRE1ZOjE7ICAgICAgICAgICAgIC8qICAgVFhETVkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQTFc6MjsgICAgICAgICAgICAgIC8qICAgU1BMVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ0tEICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNDS0RMOjM7ICAgICAgICAgICAgIC8qICAgU0NLREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ0tEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTE5EICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNMTkRMOjM7ICAgICAgICAgICAgIC8qICAgU0xOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTE5EOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQTkQgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQTkRMOjM7ICAgICAgICAgICAgIC8qICAgU1BOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQTkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMSA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMiA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMyA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQkZDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYUlNUOjE7ICAgICAgICAgICAgIC8qICAgVFhSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYUlNUOjE7ICAgICAgICAgICAgIC8qICAgUlhSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYVFJHOjI7ICAgICAgICAgICAgIC8qICAgVFhUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYVFJHOjM7ICAgICAgICAgICAgIC8qICAgUlhUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkZDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQkZEUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFQ6NCA7ICAgICAgICAgICAgICAgIC8qICAgVCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFI6NjsgICAgICAgICAgICAgICAgIC8qICAgUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkZEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjaWYJMA0KLXN0cnVjdCBzdF9paWMzIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBJSUMzICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElDRToxOyAgICAgICAgICAgICAgIC8qICAgSUNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJDVkQ6MTsgICAgICAgICAgICAgIC8qICAgUkNWRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVDoxOyAgICAgICAgICAgICAgIC8qICAgTVNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRSUzoxOyAgICAgICAgICAgICAgIC8qICAgVFJTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzo0OyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJCU1k6MTsgICAgICAgICAgICAgIC8qICAgQkJTWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNDUDoxOyAgICAgICAgICAgICAgIC8qICAgU0NQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNEQU86MTsgICAgICAgICAgICAgIC8qICAgU0RBTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNEQU9QOjE7ICAgICAgICAgICAgIC8qICAgU0RBT1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNDTE86MTsgICAgICAgICAgICAgIC8qICAgU0NMTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElJQ1JTVDoxOyAgICAgICAgICAgIC8qICAgSUlDUlNUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDTVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1MUzoxOyAgICAgICAgICAgICAgIC8qICAgTUxTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJDV1A6MTsgICAgICAgICAgICAgIC8qICAgQkNXUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJDOjM7ICAgICAgICAgICAgICAgIC8qICAgQkMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDSUVSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRJRToxOyAgICAgICAgICAgICAgIC8qICAgVElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFSUU6MTsgICAgICAgICAgICAgIC8qICAgVEVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJJRToxOyAgICAgICAgICAgICAgIC8qICAgUklFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE5BS0lFOjE7ICAgICAgICAgICAgIC8qICAgTkFLSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUSUU6MTsgICAgICAgICAgICAgIC8qICAgU1RJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFDS0U6MTsgICAgICAgICAgICAgIC8qICAgQUNLRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFDS0JSOjE7ICAgICAgICAgICAgIC8qICAgQUNLQlIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFDS0JUOjE7ICAgICAgICAgICAgIC8qICAgQUNLQlQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDSUVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDU1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFREUkU6MTsgICAgICAgICAgICAgIC8qICAgVERSRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJEUkY6MTsgICAgICAgICAgICAgIC8qICAgUkRSRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE5BQ0tGOjE7ICAgICAgICAgICAgIC8qICAgTkFDS0YgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUT1A6MTsgICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFMT1ZFOjE7ICAgICAgICAgICAgIC8qICAgQUwvT1ZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFBUzoxOyAgICAgICAgICAgICAgIC8qICAgQUFTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFEWjoxOyAgICAgICAgICAgICAgIC8qICAgQURaICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNBUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNWQTo3OyAgICAgICAgICAgICAgIC8qICAgU1ZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEZTOjE7ICAgICAgICAgICAgICAgIC8qICAgRlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNBUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSUNEUlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRFJUICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSUNEUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRFJSICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5GMkNZQyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzQ6MTsgICAgICAgICAgICAgIC8qICAgQ0tTNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBSUzoxOyAgICAgICAgICAgICAgIC8qICAgUFJTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE5GMkNZQzoxOyAgICAgICAgICAgIC8qICAgTkYyQ1lDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE5GMkNZQzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjZW5kaWYNCi1zdHJ1Y3Qgc3Rfc3NpZiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU1NJRiAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0tTOjE7ICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFVJRU46MTsgICAgICAgICAgICAvKiAgIFRVSUVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE9JRU46MTsgICAgICAgICAgICAvKiAgIFRPSUVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlVJRU46MTsgICAgICAgICAgICAvKiAgIFJVSUVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUk9JRU46MTsgICAgICAgICAgICAvKiAgIFJPSUVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUlFTjoxOyAgICAgICAgICAgICAvKiAgIElJRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0hOTDoyOyAgICAgICAgICAgICAvKiAgIENITkwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFdMOjM7ICAgICAgICAgICAgICAvKiAgIERXTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1dMOjM7ICAgICAgICAgICAgICAvKiAgIFNXTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NLRDoxOyAgICAgICAgICAgICAvKiAgIFNDS0QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1dTRDoxOyAgICAgICAgICAgICAvKiAgIFNXU0QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NLUDoxOyAgICAgICAgICAgICAvKiAgIFNDS1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1dTUDoxOyAgICAgICAgICAgICAvKiAgIFNXU1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BEUDoxOyAgICAgICAgICAgICAvKiAgIFNQRFAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RUQToxOyAgICAgICAgICAgICAvKiAgIFNEVEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUERUQToxOyAgICAgICAgICAgICAvKiAgIFBEVEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREVMOjE7ICAgICAgICAgICAgICAvKiAgIERFTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0tEVjo0OyAgICAgICAgICAgICAvKiAgIENLRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTVVFTjoxOyAgICAgICAgICAgICAvKiAgIE1VRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVOOjE7ICAgICAgICAgICAgICAvKiAgIFRFTiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVOOjE7ICAgICAgICAgICAgICAvKiAgIFJFTiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0lDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFVJUlE6MTsgICAgICAgICAgICAvKiAgIFRVSVJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE9JUlE6MTsgICAgICAgICAgICAvKiAgIFRPSVJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlVJUlE6MTsgICAgICAgICAgICAvKiAgIFJVSVJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUk9JUlE6MTsgICAgICAgICAgICAvKiAgIFJPSVJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUlSUToxOyAgICAgICAgICAgICAvKiAgIElJUlEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE4OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENITk86MjsgICAgICAgICAgICAvKiAgIFRDSE5PICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFNXTk86MTsgICAgICAgICAgICAvKiAgIFRTV05PICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkNITk86MjsgICAgICAgICAgICAvKiAgIFJDSE5PICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNXTk86MTsgICAgICAgICAgICAvKiAgIFJTV05PICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSURTVDoxOyAgICAgICAgICAgICAvKiAgIElEU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0lTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lGQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFRSRzoyOyAgICAgICAgICAgICAvKiAgIFRUUkcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlRSRzoyOyAgICAgICAgICAgICAvKiAgIFJUUkcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElFOjE7ICAgICAgICAgICAgICAvKiAgIFRJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUklFOjE7ICAgICAgICAgICAgICAvKiAgIFJJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEZSU1Q6MTsgICAgICAgICAgICAvKiAgIFRGUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkZSU1Q6MTsgICAgICAgICAgICAvKiAgIFJGUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0lGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lGU1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVERDOjQ7ICAgICAgICAgICAgICAvKiAgIFREQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVERFOjE7ICAgICAgICAgICAgICAvKiAgIFRERSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRDOjQ7ICAgICAgICAgICAgICAvKiAgIFJEQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRGOjE7ICAgICAgICAgICAgICAvKiAgIFJERiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0lGU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBTU0lGVERSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lGVERSICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBTU0lGUkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lGUkRSICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0lURE1SICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09OVDoxOyAgICAgICAgICAgICAvKiAgIENPTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVERNOjE7ICAgICAgICAgICAgICAvKiAgIFRETSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0lURE1SOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc2lvZiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU0lPRiAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSU1EUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUk1EOjI7ICAgICAgICAgICAgICAvKiAgIFRSTUQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DQVQ6MTsgICAgICAgICAgICAvKiAgIFNZTkNBVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRURHOjE7ICAgICAgICAgICAgICAvKiAgIFJFREcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGTDo0OyAgICAgICAgICAgICAgICAvKiAgIEZMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUWERJWjoxOyAgICAgICAgICAgICAvKiAgIFRYRElaICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DQUM6MTsgICAgICAgICAgICAvKiAgIFNZTkNBQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DREw6MTsgICAgICAgICAgICAvKiAgIFNZTkNETCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSU1EUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVNDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNU1NFTDoxOyAgICAgICAgICAgICAvKiAgIE1TU0VMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUlBTOjU7ICAgICAgICAgICAgICAvKiAgIEJSUFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRWOjM7ICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVNDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVREQVIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURExFOjE7ICAgICAgICAgICAgICAvKiAgIFRETEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURExBOjQ7ICAgICAgICAgICAgICAvKiAgIFRETEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURFJFOjE7ICAgICAgICAgICAgICAvKiAgIFREUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUTFJFUDoxOyAgICAgICAgICAgICAvKiAgIFRMUkVQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURFJBOjQ7ICAgICAgICAgICAgICAvKiAgIFREUkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVREQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVJEQVIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRExFOjE7ICAgICAgICAgICAgICAvKiAgIFJETEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRExBOjQ7ICAgICAgICAgICAgICAvKiAgIFJETEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRFJFOjE7ICAgICAgICAgICAgICAvKiAgIFJEUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRFJBOjQ7ICAgICAgICAgICAgICAvKiAgIFJEUkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVJEQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSUNUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tFOjE7ICAgICAgICAgICAgICAvKiAgIFNDS0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGU0U6MTsgICAgICAgICAgICAgICAvKiAgIEZTRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUWEU6MTsgICAgICAgICAgICAgICAvKiAgIFRYRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSWEU6MTsgICAgICAgICAgICAgICAvKiAgIFJYRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUWFJTVDoxOyAgICAgICAgICAgICAvKiAgIFRYUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSWFJTVDoxOyAgICAgICAgICAgICAvKiAgIFJYUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSUZDVFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURldNOjM7ICAgICAgICAgICAgICAvKiAgIFRGV00gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURlVBOjU7ICAgICAgICAgICAgICAvKiAgIFRGVUEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRldNOjM7ICAgICAgICAgICAgICAvKiAgIFJGV00gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRlVBOjU7ICAgICAgICAgICAgICAvKiAgIFJGVUEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSUZDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVNUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURkVNUDoxOyAgICAgICAgICAgICAvKiAgIFRGRU1QICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURFJFUToxOyAgICAgICAgICAgICAvKiAgIFREUkVRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRkZVTDoxIDsgICAgICAgICAgICAvKiAgIFJGRlVMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRFJFUToxOyAgICAgICAgICAgICAvKiAgIFJEUkVRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGU0VSUjoxOyAgICAgICAgICAgICAvKiAgIEZTRVJSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURk9WRjoxOyAgICAgICAgICAgICAvKiAgIFRGT1ZGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURlVERjoxOyAgICAgICAgICAgICAvKiAgIFRGVURGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRlVERjoxOyAgICAgICAgICAgICAvKiAgIFJGVURGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRk9WRjoxOyAgICAgICAgICAgICAvKiAgIFJGT1ZGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSUlFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURE1BRToxOyAgICAgICAgICAgICAvKiAgIFRETUFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURkVNUEU6MTsgICAgICAgICAgICAvKiAgIFRGRU1QRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURFJFUUU6MTsgICAgICAgICAgICAvKiAgIFREUkVRRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRE1BRToxOyAgICAgICAgICAgICAvKiAgIFJETUFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRkZVTEU6MTsgICAgICAgICAgICAvKiAgIFJGRlVMRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRFJFUUU6MTsgICAgICAgICAgICAvKiAgIFJEUkVRRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGU0VSUkU6MTsgICAgICAgICAgICAvKiAgIEZTRVJSRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURk9WRkU6MTsgICAgICAgICAgICAvKiAgIFRGT1ZGRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURlVERkU6MTsgICAgICAgICAgICAvKiAgIFRGVURGRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRlVERkU6MTsgICAgICAgICAgICAvKiAgIFJGVURGRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRk9WRkU6MTsgICAgICAgICAgICAvKiAgIFJGT1ZGRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSUlFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVREUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSVRETDoxNjsgICAgICAgICAgICAvKiAgIFNJVERMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSVREUjoxNjsgICAgICAgICAgICAvKiAgIFNJVERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVREUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSVJEUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSVJETDoxNjsgICAgICAgICAgICAvKiAgIFNJUkRMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSVJEUjoxNjsgICAgICAgICAgICAvKiAgIFNJUkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTSVJEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19Ow0KLXVuaW9uIHVuX21iMzExNnsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1CMzEtTUIxNiAgICAqLw0KLSAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIzMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIzMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIzMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIzMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyOToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyOSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyODoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyOCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyNzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyNjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyNToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyNDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyMzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyMjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxOToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxOSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxODoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxOCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxNzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxNjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxNiAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07DQotdW5pb24gdW5fbWIxNV8weyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTUIxNS1NQjAgICAgICovDQotICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE1OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjE1ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE0OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjE0ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEzOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEzICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEyOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjExOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjExICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEwOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjk6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjkgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjg6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjggICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjc6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjY6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjU6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjQ6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjM6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjI6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjA6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsNCi11bmlvbiB1bl9tYjE1XzF7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNQjE1LU1CMSAgICAgKi8NCi0gICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTQ6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTM6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTI6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1COToxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1COSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CODoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1COCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CNzoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CNjoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CNToxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CNDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMzoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMToxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19Ow0KLXN0cnVjdCBzdF9yY2FuIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBSQ0FOICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1DUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElEUiAgOjE7ICAgICAgICAgICAgIC8qICAgSURSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFIQk8gOjE7ICAgICAgICAgICAgIC8qICAgQUhCTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEICAgICAgOjM7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRTVCAgOjM7ICAgICAgICAgICAgIC8qICAgVFNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFXTSAgOjE7ICAgICAgICAgICAgIC8qICAgQVdNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhUQk8gOjE7ICAgICAgICAgICAgIC8qICAgSFRCTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMUE0gOjE7ICAgICAgICAgICAgIC8qICAgU0xQTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEICAgICAgOjI7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1UUCAgOjE7ICAgICAgICAgICAgIC8qICAgTVRQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhMVFJROjE7ICAgICAgICAgICAgIC8qICAgSExUUlEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVFJROjE7ICAgICAgICAgICAgIC8qICAgUlNUUlEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE1DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdTUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVQUzoxOyAgICAgICAgICAgICAgIC8qICAgRVBTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhTUzoxOyAgICAgICAgICAgICAgIC8qICAgSFNTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTOjE7ICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1UUEY6MTsgICAgICAgICAgICAgIC8qICAgTVRQRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSV0Y6MTsgICAgICAgICAgICAgIC8qICAgVFJXRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJPRjoxOyAgICAgICAgICAgICAgIC8qICAgQk9GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJDUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRTRzE6NDsgICAgICAgICAgICAgIC8qICAgVFNHMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRTRzI6MzsgICAgICAgICAgICAgIC8qICAgVFNHMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNKVzoyOyAgICAgICAgICAgICAgIC8qICAgU0pXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTUDoxOyAgICAgICAgICAgICAgIC8qICAgQlNQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJDUjAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSUDo4OyAgICAgICAgICAgICAgIC8qICAgQlJQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElSUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkxIDoxOyAgICAgICAgICAgIC8qICAgVENNSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkwIDoxOyAgICAgICAgICAgIC8qICAgVENNSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRPSSAgIDoxOyAgICAgICAgICAgIC8qICAgVE9JICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJBU01JRjoxOyAgICAgICAgICAgIC8qICAgQkFTTUlGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkyIDoxOyAgICAgICAgICAgIC8qICAgVENNSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNOU01JIDoxOyAgICAgICAgICAgIC8qICAgU05TTUkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1PT0lGIDoxOyAgICAgICAgICAgIC8qICAgTU9PSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CRUlGIDoxOyAgICAgICAgICAgIC8qICAgTUJFSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9MRiAgIDoxOyAgICAgICAgICAgIC8qICAgT0xGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJPRklGIDoxOyAgICAgICAgICAgIC8qICAgQk9GSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVQSUYgIDoxOyAgICAgICAgICAgIC8qICAgRVBJRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFQ1dJRjoxOyAgICAgICAgICAgIC8qICAgUkVDV0lGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFQ1dJRjoxOyAgICAgICAgICAgIC8qICAgVEVDV0lGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGUklGIDoxOyAgICAgICAgICAgIC8qICAgUkZSSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERGUklGIDoxOyAgICAgICAgICAgIC8qICAgREZSSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVElGIDoxOyAgICAgICAgICAgIC8qICAgUlNUSUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkxTToxOyAgICAgICAgICAgIC8qICAgVENNSTFNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkwTToxOyAgICAgICAgICAgIC8qICAgVENNSTBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRPSU0gIDoxOyAgICAgICAgICAgIC8qICAgVE9JTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJBU01JTToxOyAgICAgICAgICAgIC8qICAgQkFTTUlNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUkyTToxOyAgICAgICAgICAgIC8qICAgVENNSTJNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNOU01JTToxOyAgICAgICAgICAgIC8qICAgU05TTUlNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1PT0lNIDoxOyAgICAgICAgICAgIC8qICAgTU9PSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CRUlNIDoxOyAgICAgICAgICAgIC8qICAgTUJFSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9MRk0gIDoxOyAgICAgICAgICAgIC8qICAgT0xGTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJPRklNIDoxOyAgICAgICAgICAgIC8qICAgQk9GSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVQSU0gIDoxOyAgICAgICAgICAgIC8qICAgRVBJTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFQ1dJTToxOyAgICAgICAgICAgIC8qICAgUkVDV0lNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFQ1dJTToxOyAgICAgICAgICAgIC8qICAgVEVDV0lNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGUklNIDoxOyAgICAgICAgICAgIC8qICAgUkZSSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERGUklNIDoxOyAgICAgICAgICAgIC8qICAgREZSSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVElNIDoxOyAgICAgICAgICAgIC8qICAgUlNUSU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRFQ19SRUMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFQzo4OyAgICAgICAgICAgICAgIC8qICAgVEVDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFQzo4OyAgICAgICAgICAgICAgIC8qICAgUkVDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRFQ19SRUMgIDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzE4XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbnsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRYUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjMxOjE7ICAgICAgICAgICAgIC8qICAgTUIzMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjMwOjE7ICAgICAgICAgICAgIC8qICAgTUIzMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI5OjE7ICAgICAgICAgICAgIC8qICAgTUIyOSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI4OjE7ICAgICAgICAgICAgIC8qICAgTUIyOCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI3OjE7ICAgICAgICAgICAgIC8qICAgTUIyNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI2OjE7ICAgICAgICAgICAgIC8qICAgTUIyNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI1OjE7ICAgICAgICAgICAgIC8qICAgTUIyNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI0OjE7ICAgICAgICAgICAgIC8qICAgTUIyNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjIzOjE7ICAgICAgICAgICAgIC8qICAgTUIyMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjIyOjE7ICAgICAgICAgICAgIC8qICAgTUIyMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjIxOjE7ICAgICAgICAgICAgIC8qICAgTUIyMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjIwOjE7ICAgICAgICAgICAgIC8qICAgTUIyMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE5OjE7ICAgICAgICAgICAgIC8qICAgTUIxOSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE4OjE7ICAgICAgICAgICAgIC8qICAgTUIxOCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE3OjE7ICAgICAgICAgICAgIC8qICAgTUIxNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE2OjE7ICAgICAgICAgICAgIC8qICAgTUIxNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE1OjE7ICAgICAgICAgICAgIC8qICAgTUIxNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE0OjE7ICAgICAgICAgICAgIC8qICAgTUIxNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjEzOjE7ICAgICAgICAgICAgIC8qICAgTUIxMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjEyOjE7ICAgICAgICAgICAgIC8qICAgTUIxMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjExOjE7ICAgICAgICAgICAgIC8qICAgTUIxMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjEwOjE7ICAgICAgICAgICAgIC8qICAgTUIxMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjk6MTsgICAgICAgICAgICAgIC8qICAgTUI5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjg6MTsgICAgICAgICAgICAgIC8qICAgTUI4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjc6MTsgICAgICAgICAgICAgIC8qICAgTUI3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjY6MTsgICAgICAgICAgICAgIC8qICAgTUI2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjU6MTsgICAgICAgICAgICAgIC8qICAgTUI1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjQ6MTsgICAgICAgICAgICAgIC8qICAgTUI0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjM6MTsgICAgICAgICAgICAgIC8qICAgTUIzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjI6MTsgICAgICAgICAgICAgIC8qICAgTUIyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQjE6MTsgICAgICAgICAgICAgIC8qICAgTUIxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRYUFIwICA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgVFhDUjE7ICAgICAgICAgICAgICAgICAgIC8qIFRYQ1IxICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzEgVFhDUjA7ICAgICAgICAgICAgICAgICAgIC8qIFRYQ1IwICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgVFhBQ0sxOyAgICAgICAgICAgICAgICAgIC8qIFRYQUNLMSAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzEgVFhBQ0swOyAgICAgICAgICAgICAgICAgIC8qIFRYQUNLMCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgQUJBQ0sxOyAgICAgICAgICAgICAgICAgIC8qIEFCQUNLMSAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzEgQUJBQ0swOyAgICAgICAgICAgICAgICAgIC8qIEFCQUNLMCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgUlhQUjE7ICAgICAgICAgICAgICAgICAgIC8qIFJYUFIxICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzAgUlhQUjA7ICAgICAgICAgICAgICAgICAgIC8qIFJYUFIwICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgUkZQUjE7ICAgICAgICAgICAgICAgICAgIC8qIFJGUFIxICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzAgUkZQUjA7ICAgICAgICAgICAgICAgICAgIC8qIFJGUFIwICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgTUJJTVIxOyAgICAgICAgICAgICAgICAgIC8qIE1CSU1SMSAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzAgTUJJTVIwOyAgICAgICAgICAgICAgICAgIC8qIE1CSU1SMCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjMxMTYgVU1TUjE7ICAgICAgICAgICAgICAgICAgIC8qIFVNU1IxICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB1bl9tYjE1XzAgVU1TUjA7ICAgICAgICAgICAgICAgICAgIC8qIFVNU1IwICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzM2XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRUQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRTOjE7ICAgICAgICAgICAgICAgIC8qICAgVFMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENBTkMgOjE7ICAgICAgICAgICAgIC8qICAgQ0FOQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRTI6MTsgICAgICAgICAgICAgIC8qICAgQ01FMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRTE6MTsgICAgICAgICAgICAgIC8qICAgQ01FMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRTA6MTsgICAgICAgICAgICAgIC8qICAgQ01FMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDU0M6MTsgICAgICAgICAgICAgIC8qICAgVENTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRQU0MgOjY7ICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRUQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQVhfVEVXICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNQVg6MzsgICAgICAgICAgICAgIC8qICAgQ01BWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFVzo0IDsgICAgICAgICAgICAgIC8qICAgVEVXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQVhfVEVXOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUkZUUk9GRjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJGVFJPRkYgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNOU006MTsgICAgICAgICAgICAgIC8qICAgU05TTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUYyOjE7ICAgICAgICAgICAgIC8qICAgVENNRjIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUYxOjE7ICAgICAgICAgICAgIC8qICAgVENNRjEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDTUYwOjE7ICAgICAgICAgICAgIC8qICAgVENNRjAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRPX05HUl9NRToxOyAgICAgICAgIC8qICAgVE9fTkdSX01FICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgQ0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENDUiAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVENOVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRSICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgQ1lDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENZQ1RSICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUkZNSzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJGTUsgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVENNUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTVIwICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVENNUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTVIxICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVENNUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTVIyICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVFRUU0VMOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRUVFNFTCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNls5MF07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBzdHJ1Y3Qgew0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENPTlRST0wwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJREU6MTsgICAgICAgIC8qICAgSURFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSVFI6MTsgICAgICAgIC8qICAgUlRSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVERJRDoxMTsgICAgIC8qICAgU1RESUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFWFRJRDoxODsgICAgIC8qICAgRVhUSUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICB9IENPTlRST0wwOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExBRk0gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJREU6MTsgICAgICAgIC8qICAgSURFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVERJRF9MQUZNOjExOy8qICAgU1RESURfTEFGTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFWFRJRF9MQUZNOjE4Oy8qICAgRVhUSURfTEFGTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICB9IExBRk07ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgTVNHX0RBVEFbOF07ICAgICAgICAgICAgICAgIC8qIE1TR19EQVRBICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENPTlRST0wxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NQzoxOyAgICAgICAgIC8qICAgTk1DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUWDoxOyAgICAgICAgIC8qICAgQVRYICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERBUlQ6MTsgICAgICAgIC8qICAgREFSVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CQzozOyAgICAgICAgIC8qICAgTUJDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERMQzo0OyAgICAgICAgIC8qICAgRExDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICB9IENPTlRST0wxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgVElNRVNUQU1QOyAgICAgICAgICAgICAgICAgIC8qIFRJTUVTVEFNUCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgVFRUOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRUVCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRUQyAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRUVzoyOyAgICAgICAgIC8qICAgVFRXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9mZnNldDo2OyAgICAgIC8qICAgT2Zmc2V0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VXT1JEIHJlcF9mYWN0b3I6MzsgIC8qICAgcmVwX2ZhY3RvciAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICB9IFRUQzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgd2sxN1s4XTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIH0gTUJbMzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2llYiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IElFQiAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVDVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9MOjE7ICAgICAgICAgICAgICAgLyogICBJT0wgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgREVFOjE7ICAgICAgICAgICAgICAgLyogICBERUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkU6MTsgICAgICAgICAgICAgICAgLyogICBSRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVDTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ01EOjM7ICAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVDTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVNQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1M6MTsgICAgICAgICAgICAgICAgLyogICBTUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUk46MzsgICAgICAgICAgICAgICAgLyogICBSTiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1RMOjQ7ICAgICAgICAgICAgICAgLyogICBDVEwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVBUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUFSTDQ6NDsgICAgICAgICAgICAgLyogICBJQVJMNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU1EOjI7ICAgICAgICAgICAgICAgLyogICBJTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RFOjE7ICAgICAgICAgICAgICAgLyogICBTVEUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVBUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVBUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUFSVTg6ODsgICAgICAgICAgICAgLyogICBJQVJVOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVBUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVTQTEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVNBTDQ6NDsgICAgICAgICAgICAgLyogICBJU0FMNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVTQTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVTQTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVNBVTg6ODsgICAgICAgICAgICAgLyogICBJU0FVOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVTQTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBJRVRCRkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVUQkZMICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVNQTEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU1BTDQ6NDsgICAgICAgICAgICAgLyogICBJTUFMNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVNQTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVNQTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU1BVTg6ODsgICAgICAgICAgICAgLyogICBJTUFVOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVNQTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVSQ1RMICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkNUTDo0OyAgICAgICAgICAgICAgLyogICBSQ1RMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVSQ1RMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBJRVJCRkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVSQkZMICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVMQTEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUxBTDg6ODsgICAgICAgICAgICAgLyogICBJTEFMOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVMQTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVMQTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUxBVTQ6NDsgICAgICAgICAgICAgLyogICBJTEFVNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVMQTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVGTEcgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ01YOjE7ICAgICAgICAgICAgICAgLyogICBDTVggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVJROjE7ICAgICAgICAgICAgICAgLyogICBNUlEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1JROjE7ICAgICAgICAgICAgICAgLyogICBTUlEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1JFOjE7ICAgICAgICAgICAgICAgLyogICBTUkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTENLOjE7ICAgICAgICAgICAgICAgLyogICBMQ0sgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlNTOjE7ICAgICAgICAgICAgICAgLyogICBSU1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgR0c6MTsgICAgICAgICAgICAgICAgLyogICBHRyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVGTEc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVUU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhTOjE7ICAgICAgICAgICAgICAgLyogICBUWFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhGOjE7ICAgICAgICAgICAgICAgLyogICBUWEYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFQUw6MTsgICAgICAgICAgICAgLyogICBUWEVBTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFVFRNRToxOyAgICAgICAgICAgLyogICBUWEVUVE1FICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFUk86MTsgICAgICAgICAgICAgLyogICBUWEVSTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFQUNLOjE7ICAgICAgICAgICAgLyogICBUWEVBQ0sgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVUU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVJRVQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhTRToxOyAgICAgICAgICAgICAgLyogICBUWFNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhGRToxOyAgICAgICAgICAgICAgLyogICBUWEZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFQUxFOjE7ICAgICAgICAgICAgLyogICBUWEVBTEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFVFRNRUU6MTsgICAgICAgICAgLyogICBUWEVUVE1FRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFUk9FOjE7ICAgICAgICAgICAgLyogICBUWEVST0UgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhFQUNLRToxOyAgICAgICAgICAgLyogICBUWEVBQ0tFICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVJRVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVSU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhCU1k6MTsgICAgICAgICAgICAgLyogICBSWEJTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhTOjE7ICAgICAgICAgICAgICAgLyogICBSWFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhGOjE7ICAgICAgICAgICAgICAgLyogICBSWEYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFREU6MTsgICAgICAgICAgICAgLyogICBSWEVERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFT1ZFOjE7ICAgICAgICAgICAgLyogICBSWEVPVkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFUlRNRToxOyAgICAgICAgICAgLyogICBSWEVSVE1FICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFRExFOjE7ICAgICAgICAgICAgLyogICBSWEVETEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFUEU6MTsgICAgICAgICAgICAgLyogICBSWEVQRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVSU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVJRVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhCU1lFOjE7ICAgICAgICAgICAgLyogICBSWEJTWUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhTRToxOyAgICAgICAgICAgICAgLyogICBSWFNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhGRToxOyAgICAgICAgICAgICAgLyogICBSWEZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFREVFOjE7ICAgICAgICAgICAgLyogICBSWEVERUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFT1ZFRToxOyAgICAgICAgICAgLyogICBSWEVPVkVFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFUlRNRUU6MTsgICAgICAgICAgLyogICBSWEVSVE1FRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFRExFRToxOyAgICAgICAgICAgLyogICBSWEVETEVFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhFUEVFOjE7ICAgICAgICAgICAgLyogICBSWEVQRUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVJRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVDS1NSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tTMzoxOyAgICAgICAgICAgICAgLyogICBDS1MzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tTOjM7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVDS1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMjMxXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVUQjAwMS0xMjggICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEI6ODsgICAgICAgICAgICAgICAgLyogIFRCICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVUQlsxMjhdOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMTI4XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUVSQjAwMS0xMjggICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkI6ODsgICAgICAgICAgICAgICAgLyogIFJCICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUVSQlsxMjhdOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3NwZGlmIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNQRElGICovDQotICAgICAgIF9VRFdPUkQgVExDQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVExDQSAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgVFJDQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJDQSAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVExDUyAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMQUM6MjsgICAgICAgICAgICAgLyogICBDTEFDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZTOjQ7ICAgICAgICAgICAgICAgLyogICBGUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENITk86NDsgICAgICAgICAgICAgLyogICBDSE5PICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSQ05POjQ7ICAgICAgICAgICAgLyogICBTUkNOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENBVENEOjg7ICAgICAgICAgICAgLyogICBDQVRDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUTDo1OyAgICAgICAgICAgICAgLyogICBDVEwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVExDUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJDUyAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMQUM6MjsgICAgICAgICAgICAgLyogICBDTEFDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZTOjQ7ICAgICAgICAgICAgICAgLyogICBGUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENITk86NDsgICAgICAgICAgICAgLyogICBDSE5PICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSQ05POjQ7ICAgICAgICAgICAgLyogICBTUkNOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENBVENEOjg7ICAgICAgICAgICAgLyogICBDQVRDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUTDo1OyAgICAgICAgICAgICAgLyogICBDVEwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFJDUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgVFVJOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFVJICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgUkxDQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkxDQSAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgUlJDQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlJDQSAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkxDUyAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMQUM6MjsgICAgICAgICAgICAgLyogICBDTEFDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZTOjQ7ICAgICAgICAgICAgICAgLyogICBGUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENITk86NDsgICAgICAgICAgICAgLyogICBDSE5PICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSQ05POjQ7ICAgICAgICAgICAgLyogICBTUkNOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENBVENEOjg7ICAgICAgICAgICAgLyogICBDQVRDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUTDo1OyAgICAgICAgICAgICAgLyogICBDVEwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkxDUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlJDUyAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMQUM6MjsgICAgICAgICAgICAgLyogICBDTEFDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZTOjQ7ICAgICAgICAgICAgICAgLyogICBGUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENITk86NDsgICAgICAgICAgICAgLyogICBDSE5PICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSQ05POjQ7ICAgICAgICAgICAgLyogICBTUkNOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENBVENEOjg7ICAgICAgICAgICAgLyogICBDQVRDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUTDo1OyAgICAgICAgICAgICAgLyogICBDVEwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlJDUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgUlVJOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlVJICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1RSTCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLUzoxOyAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBCOjE7ICAgICAgICAgICAgICAgLyogICBQQiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJBU1M6MjsgICAgICAgICAgICAgLyogICBSQVNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRBU1M6MjsgICAgICAgICAgICAgLyogICBUQVNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJERToxOyAgICAgICAgICAgICAgLyogICBSREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRERToxOyAgICAgICAgICAgICAgLyogICBUREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5DU0k6MTsgICAgICAgICAgICAgLyogICBOQ1NJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFPUzoxOyAgICAgICAgICAgICAgLyogICBBT1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJNRToxOyAgICAgICAgICAgICAgLyogICBSTUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNRToxOyAgICAgICAgICAgICAgLyogICBUTUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFSUU6MTsgICAgICAgICAgICAgLyogICBSRUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSUU6MTsgICAgICAgICAgICAgLyogICBURUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVCT0k6MTsgICAgICAgICAgICAgLyogICBVQk9JICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVCVUk6MTsgICAgICAgICAgICAgLyogICBVQlVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSRUk6MTsgICAgICAgICAgICAgLyogICBDUkVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBBRUk6MTsgICAgICAgICAgICAgLyogICBQQUVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRUk6MTsgICAgICAgICAgICAgLyogICBQUkVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTRUk6MTsgICAgICAgICAgICAgLyogICBDU0VJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFCT0k6MTsgICAgICAgICAgICAgLyogICBBQk9JICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFCVUk6MTsgICAgICAgICAgICAgLyogICBBQlVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJVSUk6MTsgICAgICAgICAgICAgLyogICBSVUlJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRVSUk6MTsgICAgICAgICAgICAgLyogICBUVUlJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJDU0k6MTsgICAgICAgICAgICAgLyogICBSQ1NJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJDQkk6MTsgICAgICAgICAgICAgLyogICBSQ0JJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDU0k6MTsgICAgICAgICAgICAgLyogICBUQ1NJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDQkk6MTsgICAgICAgICAgICAgLyogICBUQ0JJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RBVCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDoxOyAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJUzoxOyAgICAgICAgICAgICAgLyogICBSSVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJUzoxOyAgICAgICAgICAgICAgLyogICBUSVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVCTzoxOyAgICAgICAgICAgICAgLyogICBVQk8gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVCVToxOyAgICAgICAgICAgICAgLyogICBVQlUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFOjE7ICAgICAgICAgICAgICAgLyogICBDRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBBUkU6MTsgICAgICAgICAgICAgLyogICBQQVJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRUU6MTsgICAgICAgICAgICAgLyogICBQUkVFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTRToxOyAgICAgICAgICAgICAgLyogICBDU0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFCTzoxOyAgICAgICAgICAgICAgLyogICBBQk8gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFCVToxOyAgICAgICAgICAgICAgLyogICBBQlUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJVSVI6MTsgICAgICAgICAgICAgLyogICBSVUlSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRVSVI6MTsgICAgICAgICAgICAgLyogICBUVUlSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTUlg6MTsgICAgICAgICAgICAgLyogICBDU1JYICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENCUlg6MTsgICAgICAgICAgICAgLyogICBDQlJYICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTVFg6MTsgICAgICAgICAgICAgLyogICBDU1RYICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENCVFg6MTsgICAgICAgICAgICAgLyogICBDQlRYICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RBVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgVERBRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVERBRCAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgUkRBRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkRBRCAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3JvbWRlYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFJPTURFQyAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01FTiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNVQkNfRU46MTsgICAgICAgICAgIC8qICAgU1VCQ19FTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENST01fRU46MTsgICAgICAgICAgIC8qICAgQ1JPTV9FTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENST01fU1RQOjE7ICAgICAgICAgIC8qICAgQ1JPTV9TVFAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01FTjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01TWTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZX0FVVDoxOyAgICAgICAgICAgIC8qICAgU1lfQVVUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZX0lFTjoxOyAgICAgICAgICAgIC8qICAgU1lfSUVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZX0RFTjoxOyAgICAgICAgICAgIC8qICAgU1lfREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01TWTA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01DVEwwICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX0RFU0M6MTsgICAgICAgICAgIC8qICAgTURfREVTQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX0FVVE86MTsgICAgICAgICAgIC8qICAgTURfQVVUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX0FVVE9TMToxOyAgICAgICAgIC8qICAgTURfQVVUT1MxICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX0FVVE9TMjoxOyAgICAgICAgIC8qICAgTURfQVVUT1MyICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX1NFQzozOyAgICAgICAgICAgIC8qICAgTURfU0VDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01DVEwwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01DVEwxICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE0yRjJFREM6MTsgICAgICAgICAgIC8qICAgTTJGMkVEQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX0RFQzozOyAgICAgICAgICAgIC8qICAgTURfREVDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EX1BRUkVQOjI7ICAgICAgICAgIC8qICAgTURfUFFSRVAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01DVEwxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01DVEwzICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUF9FQ0M6MTsgICAgICAgICAgIC8qICAgU1RQX0VDQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUF9FREM6MTsgICAgICAgICAgIC8qICAgU1RQX0VEQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUF9NRDoxOyAgICAgICAgICAgIC8qICAgU1RQX01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUF9NSU46MTsgICAgICAgICAgIC8qICAgU1RQX01JTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01DVEwzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01DVEw0ICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExJTktPRkY6MTsgICAgICAgICAgIC8qICAgTElOS09GRiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExJTksyOjE7ICAgICAgICAgICAgIC8qICAgTElOSzIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVST1NFTDoxOyAgICAgICAgICAgIC8qICAgRVJPU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE5PX0VDQzoxOyAgICAgICAgICAgIC8qICAgTk9fRUNDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01DVEw0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENST01DVEw1ICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TRl9MQkFfU0VMOjE7ICAgICAgIC8qICAgTVNGX0xCQV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQ1RMNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1QwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TWUlMOjE7ICAgICAgICAgICAvKiAgIFNUX1NZSUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TWU5POjE7ICAgICAgICAgICAvKiAgIFNUX1NZTk8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9CTEtTOjE7ICAgICAgICAgICAvKiAgIFNUX0JMS1MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9CTEtMOjE7ICAgICAgICAgICAvKiAgIFNUX0JMS0wgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TRUNTOjE7ICAgICAgICAgICAvKiAgIFNUX1NFQ1MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TRUNMOjE7ICAgICAgICAgICAvKiAgIFNUX1NFQ0wgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1QwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1QxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfSEVBRDA6MTsgICAgICAgICAvKiAgIEVSMl9IRUFEMCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfSEVBRDE6MTsgICAgICAgICAvKiAgIEVSMl9IRUFEMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfSEVBRDI6MTsgICAgICAgICAvKiAgIEVSMl9IRUFEMiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfSEVBRDM6MTsgICAgICAgICAvKiAgIEVSMl9IRUFEMyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1QxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1QzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQwOjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQxOjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQyOjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQzOjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQ0OjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQ1OjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQ2OjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUjJfU0hFQUQ3OjE7ICAgICAgICAvKiAgIEVSMl9TSEVBRDcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1QzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1Q0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRDoxOyAgICAgICAgICAgICAvKiAgIE5HX01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRENNUDE6MTsgICAgICAgICAvKiAgIE5HX01EQ01QMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRENNUDI6MTsgICAgICAgICAvKiAgIE5HX01EQ01QMiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRENNUDM6MTsgICAgICAgICAvKiAgIE5HX01EQ01QMyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRENNUDQ6MTsgICAgICAgICAvKiAgIE5HX01EQ01QNCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRERFRjoxOyAgICAgICAgICAvKiAgIE5HX01EREVGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRFRJTTE6MTsgICAgICAgICAvKiAgIE5HX01EVElNMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOR19NRFRJTTI6MTsgICAgICAgICAvKiAgIE5HX01EVElNMiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1Q0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1Q1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9BTUQ6MzsgICAgICAgICAgICAvKiAgIFNUX0FNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9NRFg6MTsgICAgICAgICAgICAvKiAgIFNUX01EWCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LX09OOjE7ICAgICAgICAgICAvKiAgIExJTktfT04gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LX0RFVDoxOyAgICAgICAgICAvKiAgIExJTktfREVUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LX1NERVQ6MTsgICAgICAgICAvKiAgIExJTktfU0RFVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LX09VVDE6MTsgICAgICAgICAvKiAgIExJTktfT1VUMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1Q1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1Q2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FUlI6MTsgICAgICAgICAgICAvKiAgIFNUX0VSUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FQ0NBQlQ6MTsgICAgICAgICAvKiAgIFNUX0VDQ0FCVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FQ0NORzoxOyAgICAgICAgICAvKiAgIFNUX0VDQ05HICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FQ0NQOjE7ICAgICAgICAgICAvKiAgIFNUX0VDQ1AgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FQ0NROjE7ICAgICAgICAgICAvKiAgIFNUX0VDQ1EgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FREMxOjE7ICAgICAgICAgICAvKiAgIFNUX0VEQzEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9FREMyOjE7ICAgICAgICAgICAvKiAgIFNUX0VEQzIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1Q2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls1XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGU1QwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfUkVGOjE7ICAgICAgICAgICAvKiAgIEJVRl9SRUYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfQUNUOjE7ICAgICAgICAgICAvKiAgIEJVRl9BQ1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDQlVGU1QwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGU1QxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfRUNDOjE7ICAgICAgICAgICAvKiAgIEJVRl9FQ0MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfRURDOjE7ICAgICAgICAgICAvKiAgIEJVRl9FREMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfTUQ6MTsgICAgICAgICAgICAvKiAgIEJVRl9NRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfTUlOOjE7ICAgICAgICAgICAvKiAgIEJVRl9NSU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDQlVGU1QxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGU1QyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZfTkc6MTsgICAgICAgICAgICAvKiAgIEJVRl9ORyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDQlVGU1QyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1sxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMDAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQwMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMDEgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQwMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMDIgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQwMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMDMgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDAwICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDAxICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDAyICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDAzICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDA0ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDA1ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDA2ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDA3ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMjAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMjEgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQyMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMjIgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEhFQUQyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIRUFEMjMgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDIwICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDIxICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDIyICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDIzICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDI0ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDI1ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDI2ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIFNIRUFEMjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTSEVBRDI3ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGQ1RMMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX0FVVDoxOyAgICAgICAgICAvKiAgIENCVUZfQVVUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX0VOOjE7ICAgICAgICAgICAvKiAgIENCVUZfRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX0xJTks6MTsgICAgICAgICAvKiAgIENCVUZfTElOSyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX01EOjI7ICAgICAgICAgICAvKiAgIENCVUZfTUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX1RTOjE7ICAgICAgICAgICAvKiAgIENCVUZfVFMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQlVGX1E6MTsgICAgICAgICAgICAvKiAgIENCVUZfUSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDQlVGQ1RMMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIENCVUZDVEwxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGQ1RMMSAgICAgKi8NCi0gICAgICAgX1VCWVRFIENCVUZDVEwyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGQ1RMMiAgICAgKi8NCi0gICAgICAgX1VCWVRFIENCVUZDVEwzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQlVGQ1RMMyAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1QwTSAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TWUlMTToxOyAgICAgICAgICAvKiAgIFNUX1NZSUxNICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TWU5PTToxOyAgICAgICAgICAvKiAgIFNUX1NZTk9NICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9CTEtTTToxOyAgICAgICAgICAvKiAgIFNUX0JMS1NNICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9CTEtMTToxOyAgICAgICAgICAvKiAgIFNUX0JMS0xNICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TRUNTTToxOyAgICAgICAgICAvKiAgIFNUX1NFQ1NNICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVF9TRUNMTToxOyAgICAgICAgICAvKiAgIFNUX1NFQ0xNICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1QwTTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsxODZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBST01ERUNSU1QgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMT0dJQ1JTVDoxOyAgICAgICAgICAvKiAgIExPR0lDUlNUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1SU1Q6MTsgICAgICAgICAgICAvKiAgIFJBTVJTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBST01ERUNSU1Q7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU1RTVEFUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1DTFJTVDoxOyAgICAgICAgICAvKiAgIFJBTUNMUlNUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU1RTVEFUOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0kgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCWVRFTkQ6MTsgICAgICAgICAgICAvKiAgIEJZVEVORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCSVRFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJVEVORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZFTkQwOjI7ICAgICAgICAgICAvKiAgIEJVRkVORDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVUZFTkQxOjI7ICAgICAgICAgICAvKiAgIEJVRkVORDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s1XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRIT0xEICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJU0VDOjE7ICAgICAgICAgICAgICAvKiAgIElTRUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJVEFSRzoxOyAgICAgICAgICAgICAvKiAgIElUQVJHICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJU1k6MTsgICAgICAgICAgICAgICAvKiAgIElTWSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRVJSOjE7ICAgICAgICAgICAgICAvKiAgIElFUlIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJQlVGOjE7ICAgICAgICAgICAgICAvKiAgIElCVUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJUkVBRFk6MTsgICAgICAgICAgICAvKiAgIElSRUFEWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRIT0xEOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTkhJTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJU0VDOjE7ICAgICAgICAgICAvKiAgIElOSElTRUMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJVEFSRzoxOyAgICAgICAgICAvKiAgIElOSElUQVJHICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJU1k6MTsgICAgICAgICAgICAvKiAgIElOSElTWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJRVJSOjE7ICAgICAgICAgICAvKiAgIElOSElFUlIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJQlVGOjE7ICAgICAgICAgICAvKiAgIElOSElCVUYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTkhJUkVBRFk6MTsgICAgICAgICAvKiAgIElOSElSRUFEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQUkVJTkhSRVFETToxOyAgICAgICAvKiAgIFBSRUlOSFJFUURNICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUFJFSU5ISVJFQURZOjE7ICAgICAgLyogICBQUkVJTkhJUkVBRFkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTkhJTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFsyNDZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBTVFJNRElOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJNRElOICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFNUUk1ET1VUOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJNRE9VVCAgICAgKi8NCi19Ow0KLQ0KLQ0KLSNpZiAwIC8qIJBWaW9kZWZpbmUuaILMQURDkuiLYILwl3CCooLpgr2C35Vzl3YgKi8NCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfYWRjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgQURDICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSRyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSRzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRERSSCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRERSSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRENTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREY6MTsgICAgICAgICAgICAgICAvKiAgIEFERiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBRElFOjE7ICAgICAgICAgICAgICAvKiAgIEFESUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBRFNUOjE7ICAgICAgICAgICAgICAvKiAgIEFEU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkdTOjQ7ICAgICAgICAgICAgICAvKiAgIFRSR1MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDS1M6MzsgICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNRFM6MzsgICAgICAgICAgICAgICAvKiAgIE1EUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDozOyAgICAgICAgICAgICAgICAvKiAgIENIICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRENTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0jZW5kaWYNCi0NCi0NCi0NCi1zdHJ1Y3Qgc3RfZmxjdGwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRkxDVEwgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTENNTkNSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEwOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJVU1lPTjoxOyAgICAgICAgICAgLyogICBCVVNZT04gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNOQU5EOjE7ICAgICAgICAgICAgLyogICBTTkFORCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFFUU0VMOjE7ICAgICAgICAgICAgLyogICBRVFNFTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDTToyOyAgICAgICAgICAgICAgLyogICBBQ00gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BTkRXRjoxOyAgICAgICAgICAgLyogICBOQU5EV0YgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFOjE7ICAgICAgICAgICAgICAgLyogICBDRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRkxDTU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxDTURDUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEUkNOVDI6MTsgICAgICAgICAgLyogICBBRFJDTlQyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVENOVF86NDsgICAgICAgICAgLyogICBTQ1RDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEUk1EOjE7ICAgICAgICAgICAgLyogICBBRFJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENEU1JDOjE7ICAgICAgICAgICAgLyogICBDRFNSQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPU1I6MTsgICAgICAgICAgICAgLyogICBET1NSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFTFJXOjE7ICAgICAgICAgICAgLyogICBTRUxSVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPQURSOjE7ICAgICAgICAgICAgLyogICBET0FEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEUkNOVDoyOyAgICAgICAgICAgLyogICBBRFJDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPQ01EMjoxOyAgICAgICAgICAgLyogICBET0NNRDIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPQ01EMToxOyAgICAgICAgICAgLyogICBET0NNRDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVENOVDoxNjsgICAgICAgICAgLyogICBTQ1RDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRkxDTURDUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxDTUNEUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDI6ODsgICAgICAgICAgICAgLyogICBDTUQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDE6ODsgICAgICAgICAgICAgLyogICBDTUQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRkxDTUNEUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgIEZMQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxBRFIgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgIEZMREFUQVI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxEQVRBUiAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxEVENOVFIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDRkxXOjg7ICAgICAgICAgICAgLyogICBFQ0ZMVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERURkxXOjg7ICAgICAgICAgICAgLyogICBEVEZMVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERUQ05UOjEyOyAgICAgICAgICAgLyogICBEVENOVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRkxEVENOVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxJTlRETUFDUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPVFJHOjI7ICAgICAgICAgIC8qICAgRklGT1RSRyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQzFDTFI6MTsgICAgICAgICAgIC8qICAgQUMxQ0xSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQzBDTFI6MTsgICAgICAgICAgIC8qICAgQUMwQ0xSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkVRMUVOOjE7ICAgICAgICAgIC8qICAgRFJFUTFFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkVRMEVOOjE7ICAgICAgICAgIC8qICAgRFJFUTBFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEVSQjoxOyAgICAgICAgICAgIC8qICAgU1RFUkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVE9FUkI6MTsgICAgICAgICAgIC8qICAgQlRPRVJCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUlJFUUYxOjE7ICAgICAgICAgIC8qICAgVFJSRVFGMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUlJFUUYwOjE7ICAgICAgICAgIC8qICAgVFJSRVFGMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEVSSU5URToxOyAgICAgICAgIC8qICAgU1RFUklOVEUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQkVSSU5URToxOyAgICAgICAgIC8qICAgUkJFUklOVEUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUlOVEU6MTsgICAgICAgICAgIC8qICAgVEVJTlRFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUklOVEUxOjE7ICAgICAgICAgIC8qICAgVFJJTlRFMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUklOVEUwOjE7ICAgICAgICAgIC8qICAgVFJJTlRFMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMSU5URE1BQ1I7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQlNZVE1SICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQlRNT1VUOjIwOyAgICAgICAgIC8qICAgUkJUTU9VVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMQlNZVE1SOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQlNZQ05UICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEFUOjg7ICAgICAgICAgICAgIC8qICAgU1RBVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQlRJTUNOVDoyMDsgICAgICAgIC8qICAgUkJUSU1DTlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMQlNZQ05UOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMVFJDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRSU1RBVDoxOyAgICAgICAgICAgIC8qICAgVFJTVEFUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRSRU5EOjE7ICAgICAgICAgICAgIC8qICAgVFJFTkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRSU1RSVDoxOyAgICAgICAgICAgIC8qICAgVFJTVFJUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMVFJDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzExXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMSE9MRENSICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIT0xERU46MTsgICAgICAgICAgIC8qICAgSE9MREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMSE9MRENSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIEZMQURSMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQURSMiAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIEZMRFRGSUZPOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMRFRGSUZPICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIEZMRUNGSUZPOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMRUNGSUZPICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjaWYJMA0KLXN0cnVjdCBzdF91c2IgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBVU0IgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NGRyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0U6MTsgICAgICAgICAgICAgIC8qICAgU0NLRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhTRToxOyAgICAgICAgICAgICAgIC8qICAgSFNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDRk06MTsgICAgICAgICAgICAgIC8qICAgRENGTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSUEQ6MTsgICAgICAgICAgICAgIC8qICAgRFJQRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERQUlBVOjE7ICAgICAgICAgICAgIC8qICAgRFBSUFUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVDS0ZTRUw6MTsgICAgICAgICAgIC8qICAgVUNLRlNFTCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVDS1BTRUw6MTsgICAgICAgICAgIC8qICAgVUNLUFNFTCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQTExFOjE7ICAgICAgICAgICAgIC8qICAgVVBMTEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JFOjE7ICAgICAgICAgICAgICAvKiAgIFVTQkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCVVNXQUlUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCV0FJVDo0OyAgICAgICAgICAgICAvKiAgIEJXQUlUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCVVNXQUlUOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMTlNUOjI7ICAgICAgICAgICAgICAvKiAgIExOU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNTVFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEVlNUQ1RSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBXS1VQOjE7ICAgICAgICAgICAgICAvKiAgIFdLVVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSV1VQRToxOyAgICAgICAgICAgICAvKiAgIFJXVVBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JSU1Q6MTsgICAgICAgICAgICAvKiAgIFVTQlJTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNVTUU6MTsgICAgICAgICAgICAvKiAgIFJFU1VNRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQUNUOjE7ICAgICAgICAgICAgICAvKiAgIFVBQ1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSSFNUOjM7ICAgICAgICAgICAgICAvKiAgIFJIU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEVlNUQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBURVNUTU9ERSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVVFNUOjQ7ICAgICAgICAgICAgICAvKiAgIFVUU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBURVNUTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZCQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURU5ERToxOyAgICAgICAgICAgICAvKiAgIFRFTkRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZCQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZCQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURU5ERToxOyAgICAgICAgICAgICAvKiAgIFRFTkRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZCQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGTyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGTzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk8gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk87ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk8gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk87ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGT1NFTCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU0VMOjE7ICAgICAgICAgICAgICAvKiAgIElTRUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGT1NFTDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGT0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGT0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9TRUwgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0xSTToxOyAgICAgICAgICAgICAvKiAgIERDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUkVRRToxOyAgICAgICAgICAgICAvKiAgIERSRVFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9TRUw7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9DVFIgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9DVFI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9TRUwgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0xSTToxOyAgICAgICAgICAgICAvKiAgIERDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUkVRRToxOyAgICAgICAgICAgICAvKiAgIERSRVFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9TRUw7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9DVFIgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9DVFI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRFTkIwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQlNFOjE7ICAgICAgICAgICAgICAvKiAgIFZCU0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU01FOjE7ICAgICAgICAgICAgICAvKiAgIFJTTUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTT0ZFOjE7ICAgICAgICAgICAgICAvKiAgIFNPRkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNFOjE7ICAgICAgICAgICAgICAvKiAgIERWU0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFJFOjE7ICAgICAgICAgICAgICAvKiAgIENUUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRU1QRToxOyAgICAgICAgICAgICAvKiAgIEJFTVBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUkRZRToxOyAgICAgICAgICAgICAvKiAgIE5SRFlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZRToxOyAgICAgICAgICAgICAvKiAgIEJSRFlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRFTkIwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRFTkIxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0hHRToxOyAgICAgICAgICAgICAvKiAgIEJDSEdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVENIRToxOyAgICAgICAgICAgICAvKiAgIERUQ0hFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFRDSEU6MTsgICAgICAgICAgICAvKiAgIEFUVENIRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFT0ZFUlJFOjE7ICAgICAgICAgICAvKiAgIEVPRkVSUkUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSUdORToxOyAgICAgICAgICAgICAvKiAgIFNJR05FICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQUNLRToxOyAgICAgICAgICAgICAvKiAgIFNBQ0tFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRFTkIxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkRZRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU5QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU4QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU3QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU2QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU1QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU0QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUzQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUyQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUxQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUwQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCUkRZRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOUkRZRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU5TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOE5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU4TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN05SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU3TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU2TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU1TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNE5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU0TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM05SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUzTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUyTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUxTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFME5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUwTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOUkRZRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCRU1QRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU5QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU4QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU3QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU2QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU1QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU0QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUzQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUyQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUxQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUwQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCRU1QRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTT0ZDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUk5FTlNFTDoxOyAgICAgICAgICAvKiAgIFRSTkVOU0VMICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZTToxOyAgICAgICAgICAgICAvKiAgIEJSRFlNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTT0ZDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRTVFMwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQklOVDoxOyAgICAgICAgICAgICAvKiAgIFZCSU5UICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNNOjE7ICAgICAgICAgICAgICAvKiAgIFJFU00gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTT0ZSOjE7ICAgICAgICAgICAgICAvKiAgIFNPRlIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNUOjE7ICAgICAgICAgICAgICAvKiAgIERWU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFJUOjE7ICAgICAgICAgICAgICAvKiAgIENUUlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRU1QOjE7ICAgICAgICAgICAgICAvKiAgIEJFTVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUkRZOjE7ICAgICAgICAgICAgICAvKiAgIE5SRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEJSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQlNUUzoxOyAgICAgICAgICAgICAvKiAgIFZCU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNROjM7ICAgICAgICAgICAgICAvKiAgIERWU1EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQUxJRDoxOyAgICAgICAgICAgICAvKiAgIFZBTElEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFNROjM7ICAgICAgICAgICAgICAvKiAgIENUU1EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRTVFMwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRTVFMxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0hHOjE7ICAgICAgICAgICAgICAvKiAgIEJDSEcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVENIOjE7ICAgICAgICAgICAgICAvKiAgIERUQ0ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFRDSDoxOyAgICAgICAgICAgICAvKiAgIEFUVENIICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFT0ZFUlI6MTsgICAgICAgICAgICAvKiAgIEVPRkVSUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSUdOOjE7ICAgICAgICAgICAgICAvKiAgIFNJR04gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQUNLOjE7ICAgICAgICAgICAgICAvKiAgIFNBQ0sgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRTVFMxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkRZU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU5QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU4QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JSRFk6MTsgICAgICAgICAvKiAgIFBJUEU3QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU2QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU1QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU0QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JSRFk6MTsgICAgICAgICAvKiAgIFBJUEUzQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUyQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUxQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUwQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCUkRZU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOUkRZU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU5TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOE5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU4TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN05SRFk6MTsgICAgICAgICAvKiAgIFBJUEU3TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU2TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU1TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNE5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU0TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM05SRFk6MTsgICAgICAgICAvKiAgIFBJUEUzTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUyTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUxTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFME5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUwTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOUkRZU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCRU1QU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU5QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU4QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JFTVA6MTsgICAgICAgICAvKiAgIFBJUEU3QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU2QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU1QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU0QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JFTVA6MTsgICAgICAgICAvKiAgIFBJUEUzQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUyQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUxQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUwQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCRU1QU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGUk1OVU0gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPVlJOOjE7ICAgICAgICAgICAgICAvKiAgIE9WUk4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUkNFOjE7ICAgICAgICAgICAgICAvKiAgIENSQ0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUk5NOjExOyAgICAgICAgICAgICAvKiAgIEZSTk0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGUk1OVU07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVRlJNTlVNICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVRlJOTTozOyAgICAgICAgICAgICAvKiAgIFVGUk5NICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVRlJNTlVNOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JBRERSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JBRERSOjc7ICAgICAgICAgICAvKiAgIFVTQkFERFIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVU0JBRERSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JSRVEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkVRVUVTVDo4OyAgICAgICAgICAvKiAgIEJSRVFVRVNUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTVJFUVVFU1RUWVBFOjg7ICAgICAvKiAgIEJNUkVRVUVTVFRZUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVU0JSRVE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQlZBTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JWQUwgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQklORFg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JJTkRYICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQkxFTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JMRU5HICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBESVI6MTsgICAgICAgICAgICAgICAvKiAgIERJUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BNQVhQICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVZTRUw6NDsgICAgICAgICAgICAvKiAgIERFVlNFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWFBTOjc7ICAgICAgICAgICAgICAvKiAgIE1YUFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BNQVhQOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDVFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVVJFUToxOyAgICAgICAgICAgICAvKiAgIFNVUkVRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVVJFUUNMUjoxOyAgICAgICAgICAvKiAgIFNVUkVRQ0xSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5HRToxOyAgICAgICAgICAgICAvKiAgIFBJTkdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1BMOjE7ICAgICAgICAgICAgICAvKiAgIENDUEwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFU0VMICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFU0VMOjQ7ICAgICAgICAgICAvKiAgIFBJUEVTRUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFU0VMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUWVBFOjI7ICAgICAgICAgICAgICAvKiAgIFRZUEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRlJFOjE7ICAgICAgICAgICAgICAvKiAgIEJGUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQkxCOjE7ICAgICAgICAgICAgICAvKiAgIERCTEIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTlRNRDoxOyAgICAgICAgICAgICAvKiAgIENOVE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFROQUs6MTsgICAgICAgICAgICAvKiAgIFNIVE5BSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBESVI6MTsgICAgICAgICAgICAgICAvKiAgIERJUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFUE5VTTo0OyAgICAgICAgICAgICAvKiAgIEVQTlVNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQlVGICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZTSVpFOjU7ICAgICAgICAgICAvKiAgIEJVRlNJWkUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZOTUI6NzsgICAgICAgICAgICAvKiAgIEJVRk5NQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQlVGOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFTUFYUCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVZTRUw6NDsgICAgICAgICAgICAvKiAgIERFVlNFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWFBTOjExOyAgICAgICAgICAgICAvKiAgIE1YUFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFTUFYUDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFUEVSSSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJRklTOjE7ICAgICAgICAgICAgICAvKiAgIElGSVMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJSVRWOjM7ICAgICAgICAgICAgICAvKiAgIElJVFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFUEVSSTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFM0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNENUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNENUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFN0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFN0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOENUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFOENUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFOUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbMTRdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUxVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMVRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMlRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMlRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUyVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMlRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM1RSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFM1RSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUzVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM1RSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNFRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNFRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEU0VFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNFRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEU1VFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNVRSTiAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbNDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ3ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBRERBICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBRERBOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2VuZGlmDQotc3RydWN0IHN0X3ZkYzQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBWREM0ICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlBfVVBEQVRFICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOUF9FWFRfVVBEQVRFOjE7ICAgICAgICAgIC8qICAgSU5QX0VYVF9VUERBVEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOUF9JTUdfVVBEQVRFOjE7ICAgICAgICAgIC8qICAgSU5QX0lNR19VUERBVEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5QX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlBfU0VMX0NOVCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1NFTDoxOyAgICAgICAgICAgICAgICAgIC8qICAgSU5QX1NFTCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0ZPUk1BVDozOyAgICAgICAgICAgICAgIC8qICAgSU5QX0ZPUk1BVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfUFhEX0VER0U6MTsgICAgICAgICAgICAgLyogICBJTlBfUFhEX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1ZTX0VER0U6MTsgICAgICAgICAgICAgIC8qICAgSU5QX1ZTX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0hTX0VER0U6MTsgICAgICAgICAgICAgIC8qICAgSU5QX0hTX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5QX1NFTF9DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlBfRVhUX1NZTkNfQ05UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9FTkRJQU5fT046MTsgICAgICAgICAgICAvKiAgIElOUF9FTkRJQU5fT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1NXQVBfT046MTsgICAgICAgICAgICAgIC8qICAgSU5QX1NXQVBfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1ZTX0lOVjoxOyAgICAgICAgICAgICAgIC8qICAgSU5QX1ZTX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfSFNfSU5WOjE7ICAgICAgICAgICAgICAgLyogICBJTlBfSFNfSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9IX0VER0VfU0VMOjE7ICAgICAgICAgICAvKiAgIElOUF9IX0VER0VfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9GNTI1XzYyNToxOyAgICAgICAgICAgICAvKiAgIElOUF9GNTI1XzYyNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfSF9QT1M6MjsgICAgICAgICAgICAgICAgLyogICBJTlBfSF9QT1MgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOUF9FWFRfU1lOQ19DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5QX1ZTWU5DX1BIX0FESiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfRkg1MDoxMDsgICAgICAgICAgICAgICAgLyogICBJTlBfRkg1MCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9GSDI1OjEwOyAgICAgICAgICAgICAgICAvKiAgIElOUF9GSDI1ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5QX1ZTWU5DX1BIX0FESjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlBfRExZX0FESiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1ZTX0RMWV9MOjM7ICAgICAgICAgICAgIC8qICAgSU5QX1ZTX0RMWV9MICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0ZMRF9ETFk6ODsgICAgICAgICAgICAgIC8qICAgSU5QX0ZMRF9ETFkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfVlNfRExZOjg7ICAgICAgICAgICAgICAgLyogICBJTlBfVlNfRExZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0hTX0RMWTo4OyAgICAgICAgICAgICAgIC8qICAgSU5QX0hTX0RMWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlBfRExZX0FESjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMTA4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfVVBEQVRFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTUdDTlRfVkVOOjE7ICAgICAgICAgICAgICAvKiAgIElNR0NOVF9WRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTlJfQ05UMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX01EOjE7ICAgICAgICAgICAgICAgICAgLyogICBOUjFEX01EICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SMURfT046MTsgICAgICAgICAgICAgICAgICAvKiAgIE5SMURfT04gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9ZX1RIOjc7ICAgICAgICAgICAgICAgIC8qICAgTlIxRF9ZX1RIICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX1lfVEFQOjI7ICAgICAgICAgICAgICAgLyogICBOUjFEX1lfVEFQICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SMURfWV9HQUlOOjI7ICAgICAgICAgICAgICAvKiAgIE5SMURfWV9HQUlOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9OUl9DTlQwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX05SX0NOVDEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DQl9USDo3OyAgICAgICAgICAgICAgIC8qICAgTlIxRF9DQl9USCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX0NCX1RBUDoyOyAgICAgICAgICAgICAgLyogICBOUjFEX0NCX1RBUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX0NCX0dBSU46MjsgICAgICAgICAgICAgLyogICBOUjFEX0NCX0dBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DUl9USDo3OyAgICAgICAgICAgICAgIC8qICAgTlIxRF9DUl9USCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX0NSX1RBUDoyOyAgICAgICAgICAgICAgLyogICBOUjFEX0NSX1RBUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX0NSX0dBSU46MjsgICAgICAgICAgICAgLyogICBOUjFEX0NSX0dBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX05SX0NOVDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX01UWF9NT0RFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTUdDTlRfTVRYX01EOjI7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9NT0RFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTVRYX1lHX0FESjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9ZRzo4OyAgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9ZRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX0dHOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX0dHICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9NVFhfWUdfQURKMDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX01UWF9ZR19BREoxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfR0I6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfR0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9HUjoxMTsgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9HUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTUdDTlRfTVRYX1lHX0FESjE7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNR0NOVF9NVFhfQ0JCX0FESjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9COjg7ICAgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9CICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfQkc6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfQkcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9DQkJfQURKMDsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTVRYX0NCQl9BREoxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfQkI6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfQkIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9CUjoxMTsgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9CUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTUdDTlRfTVRYX0NCQl9BREoxOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNR0NOVF9NVFhfQ1JSX0FESjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9SOjg7ICAgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9SICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfUkc6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfUkcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9DUlJfQURKMDsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTVRYX0NSUl9BREoxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfUkI6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfUkIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9SUjoxMTsgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9SUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTUdDTlRfTVRYX0NSUl9BREoxOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbNjhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX1VQREFURSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTDBfVkVOX0Q6MTsgICAgICAgICAgICAgIC8qICAgU0NMMF9WRU5fRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wwX1ZFTl9DOjE7ICAgICAgICAgICAgICAvKiAgIFNDTDBfVkVOX0MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTDBfVVBEQVRFOjE7ICAgICAgICAgICAgIC8qICAgU0NMMF9VUERBVEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTDBfVkVOX0I6MTsgICAgICAgICAgICAgIC8qICAgU0NMMF9WRU5fQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMMF9WRU5fQToxOyAgICAgICAgICAgICAgLyogICBTQ0wwX1ZFTl9BICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9GUkMxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZNQVNLOjE2OyAgICAgICAgICAgICAgIC8qICAgUkVTX1ZNQVNLICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVk1BU0tfT046MTsgICAgICAgICAgICAgLyogICBSRVNfVk1BU0tfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0ZSQzIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVkxBQ0s6MTY7ICAgICAgICAgICAgICAgLyogICBSRVNfVkxBQ0sgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19WTEFDS19PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19WTEFDS19PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1ZTX1NFTDoxOyAgICAgICAgICAgICAgLyogICBSRVNfVlNfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRlJDMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9GUkM0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GVjoxMTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19GViAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0ZIOjExOyAgICAgICAgICAgICAgICAgIC8qICAgUkVTX0ZIICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0ZMRF9ETFlfU0VMOjE7ICAgICAgICAgLyogICBSRVNfRkxEX0RMWV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1ZTRExZOjg7ICAgICAgICAgICAgICAgLyogICBSRVNfVlNETFkgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRlJDNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9GUkM2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GX1ZTOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19GX1ZTICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0ZfVlc6MTE7ICAgICAgICAgICAgICAgIC8qICAgUkVTX0ZfVlcgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDNyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRl9IUzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfRl9IUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GX0hXOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19GX0hXICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9GUkM5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfUVZMT0NLOjE7ICAgICAgICAgICAgICAvKiAgIFJFU19RVkxPQ0sgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19RVkxBQ0s6MTsgICAgICAgICAgICAgIC8qICAgUkVTX1FWTEFDSyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0RTMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19EU19WX09OOjE7ICAgICAgICAgICAgIC8qICAgUkVTX0RTX1ZfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19EU19IX09OOjE7ICAgICAgICAgICAgIC8qICAgUkVTX0RTX0hfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9EUzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0RTMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZTOjExOyAgICAgICAgICAgICAgICAgIC8qICAgUkVTX1ZTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVlc6MTE7ICAgICAgICAgICAgICAgICAgLyogICBSRVNfVlcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19IUzoxMTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19IUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0hXOjExOyAgICAgICAgICAgICAgICAgIC8qICAgUkVTX0hXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0RTMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRFM0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfUEZJTF9TRUw6MTsgICAgICAgICAgICAgLyogICBSRVNfUEZJTF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRFNfSF9JTlRFUlBPVFlQOjE7ICAgICAgLyogICBSRVNfRFNfSF9JTlRFUlBPVFlQICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19EU19IX1JBVElPOjE2OyAgICAgICAgICAvKiAgIFJFU19EU19IX1JBVElPICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19WX0lOVEVSUE9UWVA6MTsgICAgICAgICAvKiAgIFJFU19WX0lOVEVSUE9UWVAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVE9QX0lOSVBIQVNFOjEyOyAgICAgICAgLyogICBSRVNfVE9QX0lOSVBIQVNFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19CVE1fSU5JUEhBU0U6MTI7ICAgICAgICAvKiAgIFJFU19CVE1fSU5JUEhBU0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9EUzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0RTNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZfUkFUSU86MTY7ICAgICAgICAgICAgIC8qICAgUkVTX1ZfUkFUSU8gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9EUzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0RTNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX09VVF9WVzoxMTsgICAgICAgICAgICAgIC8qICAgUkVTX09VVF9WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfT1VUX0hXOjExOyAgICAgICAgICAgICAgLyogICBSRVNfT1VUX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfVVNfVl9PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19VU19WX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfVVNfSF9PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19VU19IX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19QX1ZTOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19QX1ZTICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1BfVlc6MTE7ICAgICAgICAgICAgICAgIC8qICAgUkVTX1BfVlcgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVMzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfUF9IUzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfUF9IUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19QX0hXOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19QX0hXICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9VUzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX1VTNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0lOX1ZXOjExOyAgICAgICAgICAgICAgIC8qICAgUkVTX0lOX1ZXICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfSU5fSFc6MTE7ICAgICAgICAgICAgICAgLyogICBSRVNfSU5fSFcgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19VU19IX1JBVElPOjE2OyAgICAgICAgICAvKiAgIFJFU19VU19IX1JBVElPICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19VU19IX0lOVEVSUE9UWVA6MTsgICAgICAvKiAgIFJFU19VU19IX0lOVEVSUE9UWVAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVVNfSFRfSU5JUEhBU0U6MTI7ICAgICAgLyogICBSRVNfVVNfSFRfSU5JUEhBU0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1VTX0hCX0lOSVBIQVNFOjEyOyAgICAgIC8qICAgUkVTX1VTX0hCX0lOSVBIQVNFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19IQ1VUOjg7ICAgICAgICAgICAgICAgICAvKiAgIFJFU19IQ1VUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVkNVVDo4OyAgICAgICAgICAgICAgICAgLyogICBSRVNfVkNVVCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfSUJVU19TWU5DX1NFTDoxOyAgICAgICAvKiAgIFJFU19JQlVTX1NZTkNfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRElTUF9PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19ESVNQX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfT1ZSMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfQktfQ09MX1I6ODsgICAgICAgICAgICAgLyogICBSRVNfQktfQ09MX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfQktfQ09MX0c6ODsgICAgICAgICAgICAgLyogICBSRVNfQktfQ09MX0cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfQktfQ09MX0I6ODsgICAgICAgICAgICAgLyogICBSRVNfQktfQ09MX0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9PVlIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9VUERBVEUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wxX1ZFTl9COjE7ICAgICAgICAgICAgICAvKiAgIFNDTDFfVkVOX0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTDFfVkVOX0E6MTsgICAgICAgICAgICAgIC8qICAgU0NMMV9WRU5fQSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wxX1dSMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19EU19XUl9NRDozOyAgICAgICAgICAgIC8qICAgUkVTX0RTX1dSX01EICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19NRDoyOyAgICAgICAgICAgICAgICAgIC8qICAgUkVTX01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfTE9PUDoxOyAgICAgICAgICAgICAgICAvKiAgIFJFU19MT09QICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0JTVF9NRDoxOyAgICAgICAgICAgICAgLyogICBSRVNfQlNUX01EICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDFfV1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9XUjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19CQVNFOjMyOyAgICAgICAgICAgICAgIC8qICAgUkVTX0JBU0UgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfV1IzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfTE5fT0ZGOjE1OyAgICAgICAgICAgICAgLyogICBSRVNfTE5fT0ZGICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GTE1fTlVNOjEwOyAgICAgICAgICAgICAvKiAgIFJFU19GTE1fTlVNICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDFfV1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9XUjQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRkxNX09GRjoyMzsgICAgICAgICAgICAvKiAgIFJFU19GTE1fT0ZGICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDFfV1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfV1I1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0lOVEVSOjE7ICAgICAgICAgICAgICAgLyogICBSRVNfSU5URVIgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRlNfUkFURToyOyAgICAgICAgICAgICAvKiAgIFJFU19GU19SQVRFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRkxEX1NFTDoxOyAgICAgICAgICAgICAvKiAgIFJFU19GTERfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfV0VOQjoxOyAgICAgICAgICAgICAgICAvKiAgIFJFU19XRU5CICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMV9XUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wxX1dSNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19EVEhfT046MTsgICAgICAgICAgICAgIC8qICAgUkVTX0RUSF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0JJVERFQ19PTjoxOyAgICAgICAgICAgLyogICBSRVNfQklUREVDX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDFfV1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9XUjcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19PVkVSRkxPVzoxOyAgICAgICAgICAgICAvKiAgIFJFU19PVkVSRkxPVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRkxNX0NOVDoxMDsgICAgICAgICAgICAgLyogICBSRVNfRkxNX0NOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbODhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfVVBEQVRFICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMV9QX1ZFTjoxOyAgICAgICAgICAgICAgIC8qICAgR1IxX1BfVkVOICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IxX0lCVVNfVkVOOjE7ICAgICAgICAgICAgLyogICBHUjFfSUJVU19WRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNX1JEICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMV9SX0VOQjoxOyAgICAgICAgICAgICAgIC8qICAgR1IxX1JfRU5CICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNX1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9GTE0xICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfTE5fT0ZGX0RJUjoxOyAgICAgICAgICAgLyogICBHUjFfTE5fT0ZGX0RJUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfRkxNX1NFTDoyOyAgICAgICAgICAgICAgLyogICBHUjFfRkxNX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfSU1SX0ZMTV9JTlY6MTsgICAgICAgICAgLyogICBHUjFfSU1SX0ZMTV9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0JTVF9NRDoxOyAgICAgICAgICAgICAgIC8qICAgR1IxX0JTVF9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9GTE0yICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjFfQkFTRTozMjsgICAgICAgICAgICAgICAvKiAgIEdSMV9CQVNFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0ZMTTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0xOX09GRjoxNTsgICAgICAgICAgICAgIC8qICAgR1IxX0xOX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfRkxNX05VTToxMDsgICAgICAgICAgICAgLyogICBHUjFfRkxNX05VTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9GTE00ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IxX0ZMTV9PRkY6MjM7ICAgICAgICAgICAgLyogICBHUjFfRkxNX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9GTE01ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfRkxNX0xOVU06MTA7ICAgICAgICAgICAgLyogICBHUjFfRkxNX0xOVU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ZMTV9MT09QOjEwOyAgICAgICAgICAgIC8qICAgR1IxX0ZMTV9MT09QICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9GTE01OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0ZMTTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ZPUk1BVDo0OyAgICAgICAgICAgICAgIC8qICAgR1IxX0ZPUk1BVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfSFc6MTA7ICAgICAgICAgICAgICAgICAgLyogICBHUjFfSFcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX1lDQ19TV0FQOjM7ICAgICAgICAgICAgIC8qICAgR1IxX1lDQ19TV0FQICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0VORElBTl9PTjoxOyAgICAgICAgICAgIC8qICAgR1IxX0VORElBTl9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ05WNDQ0X01EOjE7ICAgICAgICAgICAgLyogICBHUjFfQ05WNDQ0X01EICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9TVEFfUE9TOjY7ICAgICAgICAgICAgICAvKiAgIEdSMV9TVEFfUE9TICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9GTE02OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfR1JDX0RJU1BfT046MTsgICAgICAgICAgLyogICBHUjFfR1JDX0RJU1BfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0RJU1BfU0VMOjI7ICAgICAgICAgICAgIC8qICAgR1IxX0RJU1BfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9HUkNfVlM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMV9HUkNfVlMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0dSQ19WVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IxX0dSQ19WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfR1JDX0hTOjExOyAgICAgICAgICAgICAgLyogICBHUjFfR1JDX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9HUkNfSFc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMV9HUkNfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0FCMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMF8wWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCNyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0tfT046MTsgICAgICAgICAgICAgICAgLyogICBHUjFfQ0tfT04gICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCOCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX0tDTFVUOjg7ICAgICAgICAgICAgIC8qICAgR1IxX0NLX0tDTFVUICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX0tHOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX0tHICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19LQjo4OyAgICAgICAgICAgICAgICAvKiAgIEdSMV9DS19LQiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0tfS1I6ODsgICAgICAgICAgICAgICAgLyogICBHUjFfQ0tfS1IgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCOSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX0E6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX0EgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19HOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMV9DS19HICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0tfQjo4OyAgICAgICAgICAgICAgICAgLyogICBHUjFfQ0tfQiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX1I6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX1IgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjEwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9BMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMV9BMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfRzA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfRzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0IwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IxX0IwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9SMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMV9SMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0FCMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfQUIxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfQTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0cxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IxX0cxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9CMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMV9CMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfUjE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0JBU0UgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9CQVNFX0c6ODsgICAgICAgICAgICAgICAvKiAgIEdSMV9CQVNFX0cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQkFTRV9COjg7ICAgICAgICAgICAgICAgLyogICBHUjFfQkFTRV9CICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0JBU0VfUjo4OyAgICAgICAgICAgICAgIC8qICAgR1IxX0JBU0VfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQkFTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9DTFVUICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0xUX1NFTDoxOyAgICAgICAgICAgICAgLyogICBHUjFfQ0xUX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0NMVVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFs0NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX1VQREFURSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREpfVkVOOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFESl9WRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfQktTVFJfU0VUICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJLU1RSX09OOjE7ICAgICAgICAgICAgICAgICAvKiAgIEJLU1RSX09OICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCS1NUUl9TVDo0OyAgICAgICAgICAgICAgICAgLyogICBCS1NUUl9TVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQktTVFJfRDo0OyAgICAgICAgICAgICAgICAgIC8qICAgQktTVFJfRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCS1NUUl9UMTo1OyAgICAgICAgICAgICAgICAgLyogICBCS1NUUl9UMSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJLU1RSX1QyOjU7ICAgICAgICAgICAgICAgICAvKiAgIEJLU1RSX1QyICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0JLU1RSX1NFVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1RJTTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOSF9NRDoxOyAgICAgICAgICAgICAgICAgIC8qICAgRU5IX01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5IX0RJU1BfT046MTsgICAgICAgICAgICAgLyogICBFTkhfRElTUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1RJTTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfVElNMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFTkhfVlM6MTE7ICAgICAgICAgICAgICAgICAgLyogICBFTkhfVlMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVOSF9WVzoxMTsgICAgICAgICAgICAgICAgICAvKiAgIEVOSF9WVyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9USU0yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1RJTTMgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRU5IX0hTOjExOyAgICAgICAgICAgICAgICAgIC8qICAgRU5IX0hTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFTkhfSFc6MTE7ICAgICAgICAgICAgICAgICAgLyogICBFTkhfSFcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfVElNMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9TSFAxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IX09OOjE7ICAgICAgICAgICAgICAgICAvKiAgIFNIUF9IX09OICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gxX0NPUkU6NzsgICAgICAgICAgICAgIC8qICAgU0hQX0gxX0NPUkUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9TSFAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1NIUDIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDFfQ0xJUF9POjg7ICAgICAgICAgICAgLyogICBTSFBfSDFfQ0xJUF9PICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gxX0NMSVBfVTo4OyAgICAgICAgICAgIC8qICAgU0hQX0gxX0NMSVBfVSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMV9HQUlOX086ODsgICAgICAgICAgICAvKiAgIFNIUF9IMV9HQUlOX08gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDFfR0FJTl9VOjg7ICAgICAgICAgICAgLyogICBTSFBfSDFfR0FJTl9VICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfU0hQMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9TSFAzICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMl9MUEZfU0VMOjE7ICAgICAgICAgICAvKiAgIFNIUF9IMl9MUEZfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMl9DT1JFOjc7ICAgICAgICAgICAgICAvKiAgIFNIUF9IMl9DT1JFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfU0hQMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9TSFA0ICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gyX0NMSVBfTzo4OyAgICAgICAgICAgIC8qICAgU0hQX0gyX0NMSVBfTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMl9DTElQX1U6ODsgICAgICAgICAgICAvKiAgIFNIUF9IMl9DTElQX1UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDJfR0FJTl9POjg7ICAgICAgICAgICAgLyogICBTSFBfSDJfR0FJTl9PICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gyX0dBSU5fVTo4OyAgICAgICAgICAgIC8qICAgU0hQX0gyX0dBSU5fVSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1NIUDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfU0hQNSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0hQX0gzX0NPUkU6NzsgICAgICAgICAgICAgLyogICBTSFBfSDNfQ09SRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1NIUDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfU0hQNiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IM19DTElQX086ODsgICAgICAgICAgICAvKiAgIFNIUF9IM19DTElQX08gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDNfQ0xJUF9VOjg7ICAgICAgICAgICAgLyogICBTSFBfSDNfQ0xJUF9VICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gzX0dBSU5fTzo4OyAgICAgICAgICAgIC8qICAgU0hQX0gzX0dBSU5fTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IM19HQUlOX1U6ODsgICAgICAgICAgICAvKiAgIFNIUF9IM19HQUlOX1UgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9TSFA2OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX0xUSTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSF9PTjoxOyAgICAgICAgICAgICAgICAgLyogICBMVElfSF9PTiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExUSV9IMl9MUEZfU0VMOjE7ICAgICAgICAgICAvKiAgIExUSV9IMl9MUEZfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0gyX0lOQ19aRVJPOjg7ICAgICAgICAgIC8qICAgTFRJX0gyX0lOQ19aRVJPICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0gyX0dBSU46ODsgICAgICAgICAgICAgIC8qICAgTFRJX0gyX0dBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDJfQ09SRTo4OyAgICAgICAgICAgICAgLyogICBMVElfSDJfQ09SRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX0xUSTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfTFRJMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDRfTUVESUFOX1RBUF9TRUw6MTsgICAgLyogICBMVElfSDRfTUVESUFOX1RBUF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDRfSU5DX1pFUk86ODsgICAgICAgICAgLyogICBMVElfSDRfSU5DX1pFUk8gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDRfR0FJTjo4OyAgICAgICAgICAgICAgLyogICBMVElfSDRfR0FJTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExUSV9INF9DT1JFOjg7ICAgICAgICAgICAgICAvKiAgIExUSV9INF9DT1JFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfTFRJMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX01UWF9NT0RFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREpfTVRYX01EOjI7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX01UWF9NT0RFOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfTVRYX1lHX0FESjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9ZRzo4OyAgICAgICAgICAgICAgIC8qICAgQURKX01UWF9ZRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX0dHOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX0dHICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9NVFhfWUdfQURKMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX01UWF9ZR19BREoxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfR0I6MTE7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfR0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9HUjoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9HUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfTVRYX1lHX0FESjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9NVFhfQ0JCX0FESjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9COjg7ICAgICAgICAgICAgICAgIC8qICAgQURKX01UWF9CICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX0JHOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX0JHICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9NVFhfQ0JCX0FESjA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX01UWF9DQkJfQURKMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX0JCOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX0JCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfQlI6MTE7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfQlIgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX01UWF9DQkJfQURKMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfTVRYX0NSUl9BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfUjo4OyAgICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfUiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9SRzoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9SRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfTVRYX0NSUl9BREowOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9NVFhfQ1JSX0FESjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9SQjoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9SQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX1JSOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX1JSICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9NVFhfQ1JSX0FESjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbNDhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9VUERBVEUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX1BfVkVOOjE7ICAgICAgICAgICAgICAgLyogICBHUjJfUF9WRU4gICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfSUJVU19WRU46MTsgICAgICAgICAgICAvKiAgIEdSMl9JQlVTX1ZFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9GTE1fUkQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX1JfRU5COjE7ICAgICAgICAgICAgICAgLyogICBHUjJfUl9FTkIgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE1fUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0ZMTTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9MTl9PRkZfRElSOjE7ICAgICAgICAgICAvKiAgIEdSMl9MTl9PRkZfRElSICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9GTE1fU0VMOjI7ICAgICAgICAgICAgICAvKiAgIEdSMl9GTE1fU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9CU1RfTUQ6MTsgICAgICAgICAgICAgICAvKiAgIEdSMl9CU1RfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0ZMTTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfRkxNMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0JBU0U6MzI7ICAgICAgICAgICAgICAgLyogICBHUjJfQkFTRSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE0yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0ZMTTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9MTl9PRkY6MTU7ICAgICAgICAgICAgICAvKiAgIEdSMl9MTl9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0ZMTV9OVU06MTA7ICAgICAgICAgICAgIC8qICAgR1IyX0ZMTV9OVU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0ZMTTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfRkxNNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9GTE1fT0ZGOjIzOyAgICAgICAgICAgIC8qICAgR1IyX0ZMTV9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0ZMTTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfRkxNNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0ZMTV9MTlVNOjEwOyAgICAgICAgICAgIC8qICAgR1IyX0ZMTV9MTlVNICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9GTE1fTE9PUDoxMDsgICAgICAgICAgICAvKiAgIEdSMl9GTE1fTE9PUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfRkxNNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9GTE02ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9GT1JNQVQ6NDsgICAgICAgICAgICAgICAvKiAgIEdSMl9GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0hXOjEwOyAgICAgICAgICAgICAgICAgIC8qICAgR1IyX0hXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfRU5ESUFOX09OOjE7ICAgICAgICAgICAgLyogICBHUjJfRU5ESUFOX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9TVEFfUE9TOjY7ICAgICAgICAgICAgICAvKiAgIEdSMl9TVEFfUE9TICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE02OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfQVJDX09OOjE7ICAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9BUkNfRElTUF9PTjoxOyAgICAgICAgIC8qICAgR1IyX0FSQ19ESVNQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfR1JDX0RJU1BfT046MTsgICAgICAgICAvKiAgIEdSMl9HUkNfRElTUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0RJU1BfU0VMOjI7ICAgICAgICAgICAgLyogICBHUjJfRElTUF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUIyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0dSQ19WUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0dSQ19WUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfR1JDX1ZXOjExOyAgICAgICAgICAgICAgLyogICBHUjJfR1JDX1ZXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9HUkNfSFM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMl9HUkNfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0dSQ19IVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0dSQ19IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX1ZTOjExOyAgICAgICAgICAgICAgLyogICBHUjJfQVJDX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BUkNfVlc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUI1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0FSQ19IUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0FSQ19IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX0hXOjExOyAgICAgICAgICAgICAgLyogICBHUjJfQVJDX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCNiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BUkNfTU9ERToxOyAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfTU9ERSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BUkNfQ09FRjo4OyAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfQ09FRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX1JBVEU6ODsgICAgICAgICAgICAgLyogICBHUjJfQVJDX1JBVEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUI3ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0FSQ19ERUY6ODsgICAgICAgICAgICAgIC8qICAgR1IyX0FSQ19ERUYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NLX09OOjE7ICAgICAgICAgICAgICAgIC8qICAgR1IyX0NLX09OICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjggICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19LQ0xVVDo4OyAgICAgICAgICAgICAvKiAgIEdSMl9DS19LQ0xVVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19LRzo4OyAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19LRyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfS0I6ODsgICAgICAgICAgICAgICAgLyogICBHUjJfQ0tfS0IgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NLX0tSOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IyX0NLX0tSICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjkgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19BOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19BICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfRzo4OyAgICAgICAgICAgICAgICAgLyogICBHUjJfQ0tfRyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NLX0I6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IyX0NLX0IgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19SOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19SICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUIxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjJfQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0cwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX0cwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9CMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9CMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfUjA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjJfUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCMTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0ExOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX0ExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9HMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9HMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQjE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjJfQjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX1IxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX1IxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9CQVNFICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQkFTRV9HOjg7ICAgICAgICAgICAgICAgLyogICBHUjJfQkFTRV9HICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0JBU0VfQjo4OyAgICAgICAgICAgICAgIC8qICAgR1IyX0JBU0VfQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9CQVNFX1I6ODsgICAgICAgICAgICAgICAvKiAgIEdSMl9CQVNFX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0JBU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQ0xVVCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NMVF9TRUw6MTsgICAgICAgICAgICAgIC8qICAgR1IyX0NMVF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9DTFVUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX01PTiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfQVJDX1NUOjE7ICAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfU1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX01PTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMls0MF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX1VQREFURSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfUF9WRU46MTsgICAgICAgICAgICAgICAvKiAgIEdSM19QX1ZFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19JQlVTX1ZFTjoxOyAgICAgICAgICAgIC8qICAgR1IzX0lCVVNfVkVOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0ZMTV9SRCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfUl9FTkI6MTsgICAgICAgICAgICAgICAvKiAgIEdSM19SX0VOQiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTV9SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfRkxNMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0xOX09GRl9ESVI6MTsgICAgICAgICAgIC8qICAgR1IzX0xOX09GRl9ESVIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ZMTV9TRUw6MjsgICAgICAgICAgICAgIC8qICAgR1IzX0ZMTV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0JTVF9NRDoxOyAgICAgICAgICAgICAgIC8qICAgR1IzX0JTVF9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfRkxNMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19GTE0yICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfQkFTRTozMjsgICAgICAgICAgICAgICAvKiAgIEdSM19CQVNFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfRkxNMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0xOX09GRjoxNTsgICAgICAgICAgICAgIC8qICAgR1IzX0xOX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfRkxNX05VTToxMDsgICAgICAgICAgICAgLyogICBHUjNfRkxNX05VTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfRkxNMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19GTE00ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX0ZMTV9PRkY6MjM7ICAgICAgICAgICAgLyogICBHUjNfRkxNX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfRkxNNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19GTE01ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfRkxNX0xOVU06MTA7ICAgICAgICAgICAgLyogICBHUjNfRkxNX0xOVU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ZMTV9MT09QOjEwOyAgICAgICAgICAgIC8qICAgR1IzX0ZMTV9MT09QICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19GTE01OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0ZMTTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ZPUk1BVDo0OyAgICAgICAgICAgICAgIC8qICAgR1IzX0ZPUk1BVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfSFc6MTA7ICAgICAgICAgICAgICAgICAgLyogICBHUjNfSFcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19FTkRJQU5fT046MTsgICAgICAgICAgICAvKiAgIEdSM19FTkRJQU5fT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX1NUQV9QT1M6NjsgICAgICAgICAgICAgIC8qICAgR1IzX1NUQV9QT1MgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUIxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19BUkNfT046MTsgICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX0FSQ19ESVNQX09OOjE7ICAgICAgICAgLyogICBHUjNfQVJDX0RJU1BfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19HUkNfRElTUF9PTjoxOyAgICAgICAgIC8qICAgR1IzX0dSQ19ESVNQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfRElTUF9TRUw6MjsgICAgICAgICAgICAvKiAgIEdSM19ESVNQX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfR1JDX1ZTOjExOyAgICAgICAgICAgICAgLyogICBHUjNfR1JDX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19HUkNfVlc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSM19HUkNfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUIzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0dSQ19IUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IzX0dSQ19IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfR1JDX0hXOjExOyAgICAgICAgICAgICAgLyogICBHUjNfR1JDX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfVlM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSM19BUkNfVlMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0FSQ19WVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQVJDX0hTOjExOyAgICAgICAgICAgICAgLyogICBHUjNfQVJDX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfSFc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSM19BUkNfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUI2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0FSQ19NT0RFOjE7ICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19NT0RFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0FSQ19DT0VGOjg7ICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19DT0VGICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfUkFURTo4OyAgICAgICAgICAgICAvKiAgIEdSM19BUkNfUkFURSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjcgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQVJDX0RFRjo4OyAgICAgICAgICAgICAgLyogICBHUjNfQVJDX0RFRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0tfT046MTsgICAgICAgICAgICAgICAgLyogICBHUjNfQ0tfT04gICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCOCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX0tDTFVUOjg7ICAgICAgICAgICAgIC8qICAgR1IzX0NLX0tDTFVUICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX0tHOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX0tHICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19LQjo4OyAgICAgICAgICAgICAgICAvKiAgIEdSM19DS19LQiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0tfS1I6ODsgICAgICAgICAgICAgICAgLyogICBHUjNfQ0tfS1IgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCOSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX0E6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX0EgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19HOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSM19DS19HICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0tfQjo4OyAgICAgICAgICAgICAgICAgLyogICBHUjNfQ0tfQiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX1I6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX1IgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjEwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19BMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfRzA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfRzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0IwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX0IwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19SMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19SMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUIxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfQTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0cxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX0cxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19CMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19CMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfUjE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0JBU0UgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19CQVNFX0c6ODsgICAgICAgICAgICAgICAvKiAgIEdSM19CQVNFX0cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQkFTRV9COjg7ICAgICAgICAgICAgICAgLyogICBHUjNfQkFTRV9CICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0JBU0VfUjo4OyAgICAgICAgICAgICAgIC8qICAgR1IzX0JBU0VfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQkFTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19DTFVUX0lOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0xUX1NFTDoxOyAgICAgICAgICAgICAgLyogICBHUjNfQ0xUX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfTElORToxMTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19DTFVUX0lOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX01PTiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfQVJDX1NUOjE7ICAgICAgICAgICAgICAvKiAgIEdSM19BUkNfU1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX01PTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1s0MF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfVVBEQVRFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHQU1fR19WRU46MTsgICAgICAgICAgICAgICAvKiAgIEdBTV9HX1ZFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fU1cgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdBTV9PTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgR0FNX09OICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fU1c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzAwOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzAwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wMjoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzAzOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzAzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wNToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzA2OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzA2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQ1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wODoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzA5OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzA5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUNiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xMToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzEyOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzEyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQ4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xNDoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzE1OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzE1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUOSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xNzoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDEwICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzE4OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzE4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yMDoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzIxOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMTIgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yMzoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDEzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzI0OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzI0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxNCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yNjoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzI3OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzI3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMTUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yOToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDE2ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzMwOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzMwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMzE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19BUkVBMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzAzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzAzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTIgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzA2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzA2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfQVJFQTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19BUkVBMyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wODo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzA5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzA5ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19BUkVBMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0FSRUE0ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzEyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzEyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzE1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzE1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzE4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzE4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfQVJFQTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19BUkVBNiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzIxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzIxICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19BUkVBNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0FSRUE3ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzI0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzI0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzI3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzI3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTggICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzMwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzMwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMzE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfQVJFQTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFsyNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfVVBEQVRFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHQU1fQl9WRU46MTsgICAgICAgICAgICAgICAvKiAgIEdBTV9CX1ZFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wMToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzAyOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzAyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wNDoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzA1OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzA1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUNCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wNzoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzA4OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzA4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQ2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xMDoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzExOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzExICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUNyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xMzoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzE0OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzE0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQ5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xNjoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzE3OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzE3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMTAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xOToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDExICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzIwOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzIwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQxMiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yMjoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzIzOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzIzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMTMgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yNToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDE0ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzI2OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzI2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQxNSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yODoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzI5OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzI5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMTYgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMzA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8zMToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8zMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0FSRUExICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzAyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzAyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBMiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzA1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzA1ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9BUkVBMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0FSRUEzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzA4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzA4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzExOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzExICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0FSRUEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfQVJFQTQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzE0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzE0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBNSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzE3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzE3ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9BUkVBNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0FSRUE2ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzIwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzIwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzIzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzIzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0FSRUE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfQVJFQTcgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzI2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzI2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBOCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yODo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzI5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzI5ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMzA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8zMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8zMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9BUkVBODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzI0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9VUERBVEUgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdBTV9SX1ZFTjoxOyAgICAgICAgICAgICAgIC8qICAgR0FNX1JfVkVOICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE3WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wMDoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzAxOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzAxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wMzoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzA0OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzA0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQ0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wNjoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzA3OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzA3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUNSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wOToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzEwOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzEwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQ3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xMjoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzEzOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzEzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUOCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xNToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzE2OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzE2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxMCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xODoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzE5OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzE5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yMToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDEyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzIyOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzIyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxMyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yNDoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzI1OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzI1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMTQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yNzoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDE1ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzI4OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzI4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxNiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8zMDoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8zMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzMxOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfQVJFQTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzAxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzAxICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUEyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzA0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzA0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzA3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzA3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0FSRUEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfQVJFQTMgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzEwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzEwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfQVJFQTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9BUkVBNCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzEzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzEzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUE1ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzE2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzE2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xODo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzE5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzE5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0FSRUE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfQVJFQTYgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzIyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzIyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfQVJFQTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9BUkVBNyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzI1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzI1ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUE4ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzI4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzI4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8zMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8zMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzMxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0FSRUE4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMThbMjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVVBEQVRFICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9WRU46MTsgICAgICAgICAgICAgICAgLyogICBUQ09OX1ZFTiAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU0gICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fSEFMRjoxMTsgICAgICAgICAgICAgICAvKiAgIFRDT05fSEFMRiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9PRkZTRVQ6MTE7ICAgICAgICAgICAgIC8qICAgVENPTl9PRkZTRVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9TVFZBMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1NUVkFfVlM6MTE7ICAgICAgICAgICAgLyogICBUQ09OX1NUVkFfVlMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVFZBX1ZXOjExOyAgICAgICAgICAgIC8qICAgVENPTl9TVFZBX1ZXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1NUVkExOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fU1RWQTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RWQV9JTlY6MTsgICAgICAgICAgIC8qICAgVENPTl9TVFZBX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVFZBX1NFTDozOyAgICAgICAgICAgLyogICBUQ09OX1NUVkFfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1NUVkEyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fU1RWQjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVFZCX1ZTOjExOyAgICAgICAgICAgIC8qICAgVENPTl9TVFZCX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fU1RWQl9WVzoxMTsgICAgICAgICAgICAvKiAgIFRDT05fU1RWQl9WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVFZCMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUVkIyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUVkJfSU5WOjE7ICAgICAgICAgICAvKiAgIFRDT05fU1RWQl9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RWQl9TRUw6MzsgICAgICAgICAgIC8qICAgVENPTl9TVFZCX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVFZCMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUSDEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVEhfSFM6MTE7ICAgICAgICAgICAgIC8qICAgVENPTl9TVEhfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVEhfSFc6MTE7ICAgICAgICAgICAgIC8qICAgVENPTl9TVEhfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fU1RIMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9TVEgyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUSF9IU19TRUw6MTsgICAgICAgICAvKiAgIFRDT05fU1RIX0hTX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVEhfSU5WOjE7ICAgICAgICAgICAgLyogICBUQ09OX1NUSF9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RIX1NFTDozOyAgICAgICAgICAgIC8qICAgVENPTl9TVEhfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1NUSDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fU1RCMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1NUQl9IUzoxMTsgICAgICAgICAgICAgLyogICBUQ09OX1NUQl9IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1NUQl9IVzoxMTsgICAgICAgICAgICAgLyogICBUQ09OX1NUQl9IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUQjIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RCX0hTX1NFTDoxOyAgICAgICAgIC8qICAgVENPTl9TVEJfSFNfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUQl9JTlY6MTsgICAgICAgICAgICAvKiAgIFRDT05fU1RCX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVEJfU0VMOjM7ICAgICAgICAgICAgLyogICBUQ09OX1NUQl9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fU1RCMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9DUFYxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fQ1BWX0hTOjExOyAgICAgICAgICAgICAvKiAgIFRDT05fQ1BWX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fQ1BWX0hXOjExOyAgICAgICAgICAgICAvKiAgIFRDT05fQ1BWX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX0NQVjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fQ1BWMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9DUFZfSFNfU0VMOjE7ICAgICAgICAgLyogICBUQ09OX0NQVl9IU19TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fQ1BWX0lOVjoxOyAgICAgICAgICAgIC8qICAgVENPTl9DUFZfSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX0NQVl9TRUw6MzsgICAgICAgICAgICAvKiAgIFRDT05fQ1BWX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9DUFYyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1BPTEExICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fUE9MQV9IUzoxMTsgICAgICAgICAgICAvKiAgIFRDT05fUE9MQV9IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1BPTEFfSFc6MTE7ICAgICAgICAgICAgLyogICBUQ09OX1BPTEFfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fUE9MQTE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9QT0xBMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTg7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9QT0xBX01EOjI7ICAgICAgICAgICAgLyogICBUQ09OX1BPTEFfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQV9IU19TRUw6MTsgICAgICAgIC8qICAgVENPTl9QT0xBX0hTX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9QT0xBX0lOVjoxOyAgICAgICAgICAgLyogICBUQ09OX1BPTEFfSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1BPTEFfU0VMOjM7ICAgICAgICAgICAvKiAgIFRDT05fUE9MQV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fUE9MQTI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9QT0xCMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1BPTEJfSFM6MTE7ICAgICAgICAgICAgLyogICBUQ09OX1BPTEJfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9QT0xCX0hXOjExOyAgICAgICAgICAgIC8qICAgVENPTl9QT0xCX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1BPTEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fUE9MQjIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQl9NRDoyOyAgICAgICAgICAgIC8qICAgVENPTl9QT0xCX01EICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1BPTEJfSFNfU0VMOjE7ICAgICAgICAvKiAgIFRDT05fUE9MQl9IU19TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQl9JTlY6MTsgICAgICAgICAgIC8qICAgVENPTl9QT0xCX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9QT0xCX1NFTDozOyAgICAgICAgICAgLyogICBUQ09OX1BPTEJfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1BPTEIyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fREUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX0RFX0lOVjoxOyAgICAgICAgICAgICAvKiAgIFRDT05fREVfSU5WICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX0RFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTlbNjBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9VUERBVEUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX1ZFTjoxOyAgICAgICAgICAgICAgLyogICBPVVRDTlRfVkVOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9VVF9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT1VUX1NFVCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9FTkRJQU5fT046MTsgICAgICAgICAgICAvKiAgIE9VVF9FTkRJQU5fT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1VUX1NXQVBfT046MTsgICAgICAgICAgICAgIC8qICAgT1VUX1NXQVBfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9GT1JNQVQ6MjsgICAgICAgICAgICAgICAvKiAgIE9VVF9GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1VUX0ZSUV9TRUw6MjsgICAgICAgICAgICAgIC8qICAgT1VUX0ZSUV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1VUX0RJUl9TRUw6MTsgICAgICAgICAgICAgIC8qICAgT1VUX0RJUl9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1VUX1BIQVNFOjI7ICAgICAgICAgICAgICAgIC8qICAgT1VUX1BIQVNFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfU0VUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9CUklHSFQxICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEJSVF9HOjEwOyAgICAgICAgICAgICAgICAgLyogICBQQlJUX0cgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9VVF9CUklHSFQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT1VUX0JSSUdIVDIgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCUlRfQjoxMDsgICAgICAgICAgICAgICAgICAvKiAgIFBCUlRfQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJSVF9SOjEwOyAgICAgICAgICAgICAgICAgIC8qICAgUEJSVF9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfQlJJR0hUMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9DT05UUkFTVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDT05UX0c6ODsgICAgICAgICAgICAgICAgICAgLyogICBDT05UX0cgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ09OVF9COjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ09OVF9CICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENPTlRfUjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENPTlRfUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gT1VUX0NPTlRSQVNUOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVRfUERUSEEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUERUSF9TRUw6MjsgICAgICAgICAgICAgICAgIC8qICAgUERUSF9TRUwgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRFRIX0ZPUk1BVDoyOyAgICAgICAgICAgICAgLyogICBQRFRIX0ZPUk1BVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRFRIX1BBOjI7ICAgICAgICAgICAgICAgICAgLyogICBQRFRIX1BBICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBEVEhfUEI6MjsgICAgICAgICAgICAgICAgICAvKiAgIFBEVEhfUEIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUERUSF9QQzoyOyAgICAgICAgICAgICAgICAgIC8qICAgUERUSF9QQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRFRIX1BEOjI7ICAgICAgICAgICAgICAgICAgLyogICBQRFRIX1BEICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9VVF9QRFRIQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjBbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9DTEtfUEhBU0UgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9GUk9OVF9HQU06MTsgICAgICAgIC8qICAgT1VUQ05UX0ZST05UX0dBTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX0xDRF9FREdFOjE7ICAgICAgICAgLyogICBPVVRDTlRfTENEX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9TVFZBX0VER0U6MTsgICAgICAgIC8qICAgT1VUQ05UX1NUVkFfRURHRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPVVRDTlRfU1RWQl9FREdFOjE7ICAgICAgICAvKiAgIE9VVENOVF9TVFZCX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX1NUSF9FREdFOjE7ICAgICAgICAgLyogICBPVVRDTlRfU1RIX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX1NUQl9FREdFOjE7ICAgICAgICAgLyogICBPVVRDTlRfU1RCX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX0NQVl9FREdFOjE7ICAgICAgICAgLyogICBPVVRDTlRfQ1BWX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX1BPTEFfRURHRToxOyAgICAgICAgLyogICBPVVRDTlRfUE9MQV9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9QT0xCX0VER0U6MTsgICAgICAgIC8qICAgT1VUQ05UX1BPTEJfRURHRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfQ0xLX1BIQVNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIxWzg4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfSU5UMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9TVEE4OjE7ICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTggICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDTlRfSU5UMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NOVF9JTlQyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBNzoxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBNyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9TVEE2OjE7ICAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEE2ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX1NUQTU6MTsgICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBNDoxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBNCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9TVEEzOjE7ICAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEEzICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX1NUQTI6MTsgICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBMToxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBMSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9TVEEwOjE7ICAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEEwICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX0lOVDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfSU5UMyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9PVVQ4X09OOjE7ICAgICAgICAgICAgIC8qICAgSU5UX09VVDhfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX0lOVDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfSU5UNCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDdfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDdfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDZfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDZfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDVfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDVfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDRfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDRfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDNfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDNfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDJfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDJfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDFfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDFfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX09VVDBfT046MTsgICAgICAgICAgICAgIC8qICAgSU5UX09VVDBfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX0lOVDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfUEFORUxfQ0xLICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEFORUxfSUNLU0VMOjI7ICAgICAgICAgICAgIC8qICAgUEFORUxfSUNLU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBBTkVMX0lDS0VOOjE7ICAgICAgICAgICAgICAvKiAgIFBBTkVMX0lDS0VOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBBTkVMX0RDRFI6NjsgICAgICAgICAgICAgICAvKiAgIFBBTkVMX0RDRFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX1BBTkVMX0NMSzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfQ0xVVCAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0xUX1NFTF9TVDoxOyAgICAgICAgICAgLyogICBHUjNfQ0xUX1NFTF9TVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0xUX1NFTF9TVDoxOyAgICAgICAgICAgLyogICBHUjJfQ0xUX1NFTF9TVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0xUX1NFTF9TVDoxOyAgICAgICAgICAgLyogICBHUjFfQ0xUX1NFTF9TVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDTlRfQ0xVVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zcmMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTUkMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDSUQgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDT0QgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDT0Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDSURDVFJMICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUVEOjE7ICAgICAgICAgICAgICAgLyogICBJRUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUVOOjE7ICAgICAgICAgICAgICAgLyogICBJRU4gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUZUUkc6MjsgICAgICAgICAgICAgLyogICBJRlRSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDSURDVFJMOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDT0RDVFJMICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0NIOjE7ICAgICAgICAgICAgICAgLyogICBPQ0ggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0VEOjE7ICAgICAgICAgICAgICAgLyogICBPRUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0VOOjE7ICAgICAgICAgICAgICAgLyogICBPRU4gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0ZUUkc6MjsgICAgICAgICAgICAgLyogICBPRlRSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDT0RDVFJMOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDQ1RSTCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0VFTjoxOyAgICAgICAgICAgICAgLyogICBDRUVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1JDRU46MTsgICAgICAgICAgICAgLyogICBTUkNFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVURFTjoxOyAgICAgICAgICAgICAgLyogICBVREVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1ZFTjoxOyAgICAgICAgICAgICAgLyogICBPVkVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkw6MTsgICAgICAgICAgICAgICAgLyogICBGTCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0w6MTsgICAgICAgICAgICAgICAgLyogICBDTCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUZTOjQ7ICAgICAgICAgICAgICAgLyogICBJRlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0ZTOjM7ICAgICAgICAgICAgICAgLyogICBPRlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDU1RBVCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0ZETjo1OyAgICAgICAgICAgICAgLyogICBPRkROICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUZETjo0OyAgICAgICAgICAgICAgLyogICBJRkROICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0VGOjE7ICAgICAgICAgICAgICAgLyogICBDRUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkxGOjE7ICAgICAgICAgICAgICAgLyogICBGTEYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVURGOjE7ICAgICAgICAgICAgICAgLyogICBVREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1ZGOjE7ICAgICAgICAgICAgICAgLyogICBPVkYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUlOVDoxOyAgICAgICAgICAgICAgLyogICBJSU5UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0lOVDoxOyAgICAgICAgICAgICAgLyogICBPSU5UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDU1RBVDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNpZgkwDQotc3RydWN0IHN0X2dwaW8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEdQSU8gICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEFJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEExSU9SOjE7ICAgICAgICAgICAgLyogICBQQTFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEEwSU9SOjE7ICAgICAgICAgICAgLyogICBQQTBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEFJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEFEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEExRFI6MTsgICAgICAgICAgICAgLyogICBQQTFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEEwRFI6MTsgICAgICAgICAgICAgLyogICBQQTBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEFEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEFQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEExUFI6MTsgICAgICAgICAgICAgLyogICBQQTFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEEwUFI6MTsgICAgICAgICAgICAgLyogICBQQTBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEFQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMk1EOjM7ICAgICAgICAgICAgLyogICBQQjIyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMU1EOjI7ICAgICAgICAgICAgLyogICBQQjIxTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyME1EOjM7ICAgICAgICAgICAgLyogICBQQjIwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOU1EOjM7ICAgICAgICAgICAgLyogICBQQjE5TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOE1EOjM7ICAgICAgICAgICAgLyogICBQQjE4TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxN01EOjM7ICAgICAgICAgICAgLyogICBQQjE3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNk1EOjM7ICAgICAgICAgICAgLyogICBQQjE2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNU1EOjM7ICAgICAgICAgICAgLyogICBQQjE1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNE1EOjM7ICAgICAgICAgICAgLyogICBQQjE0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxM01EOjM7ICAgICAgICAgICAgLyogICBQQjEzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMk1EOjI7ICAgICAgICAgICAgLyogICBQQjEyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMU1EOjI7ICAgICAgICAgICAgLyogICBQQjExTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxME1EOjI7ICAgICAgICAgICAgLyogICBQQjEwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI5TUQ6MjsgICAgICAgICAgICAgLyogICBQQjlNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI4TUQ6MjsgICAgICAgICAgICAgLyogICBQQjhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI3TUQ6MjsgICAgICAgICAgICAgLyogICBQQjdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI2TUQ6MjsgICAgICAgICAgICAgLyogICBQQjZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI1TUQ6MjsgICAgICAgICAgICAgLyogICBQQjVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI0TUQ6MjsgICAgICAgICAgICAgLyogICBQQjRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIzTUQ6MjsgICAgICAgICAgICAgLyogICBQQjNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyTUQ6MjsgICAgICAgICAgICAgLyogICBQQjJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxTUQ6MjsgICAgICAgICAgICAgLyogICBQQjFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJJT1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMklPUjoxOyAgICAgICAgICAgLyogICBQQjIySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMUlPUjoxOyAgICAgICAgICAgLyogICBQQjIxSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMElPUjoxOyAgICAgICAgICAgLyogICBQQjIwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOUlPUjoxOyAgICAgICAgICAgLyogICBQQjE5SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOElPUjoxOyAgICAgICAgICAgLyogICBQQjE4SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxN0lPUjoxOyAgICAgICAgICAgLyogICBQQjE3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNklPUjoxOyAgICAgICAgICAgLyogICBQQjE2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJJT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNUlPUjoxOyAgICAgICAgICAgLyogICBQQjE1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNElPUjoxOyAgICAgICAgICAgLyogICBQQjE0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxM0lPUjoxOyAgICAgICAgICAgLyogICBQQjEzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMklPUjoxOyAgICAgICAgICAgLyogICBQQjEySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMUlPUjoxOyAgICAgICAgICAgLyogICBQQjExSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMElPUjoxOyAgICAgICAgICAgLyogICBQQjEwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI5SU9SOjE7ICAgICAgICAgICAgLyogICBQQjlJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI4SU9SOjE7ICAgICAgICAgICAgLyogICBQQjhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI3SU9SOjE7ICAgICAgICAgICAgLyogICBQQjdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI2SU9SOjE7ICAgICAgICAgICAgLyogICBQQjZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI1SU9SOjE7ICAgICAgICAgICAgLyogICBQQjVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI0SU9SOjE7ICAgICAgICAgICAgLyogICBQQjRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIzSU9SOjE7ICAgICAgICAgICAgLyogICBQQjNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIySU9SOjE7ICAgICAgICAgICAgLyogICBQQjJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxSU9SOjE7ICAgICAgICAgICAgLyogICBQQjFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJEUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMkRSOjE7ICAgICAgICAgICAgLyogICBQQjIyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMURSOjE7ICAgICAgICAgICAgLyogICBQQjIxRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMERSOjE7ICAgICAgICAgICAgLyogICBQQjIwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOURSOjE7ICAgICAgICAgICAgLyogICBQQjE5RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOERSOjE7ICAgICAgICAgICAgLyogICBQQjE4RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxN0RSOjE7ICAgICAgICAgICAgLyogICBQQjE3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNkRSOjE7ICAgICAgICAgICAgLyogICBQQjE2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJEUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNURSOjE7ICAgICAgICAgICAgLyogICBQQjE1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNERSOjE7ICAgICAgICAgICAgLyogICBQQjE0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxM0RSOjE7ICAgICAgICAgICAgLyogICBQQjEzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMkRSOjE7ICAgICAgICAgICAgLyogICBQQjEyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMURSOjE7ICAgICAgICAgICAgLyogICBQQjExRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMERSOjE7ICAgICAgICAgICAgLyogICBQQjEwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI5RFI6MTsgICAgICAgICAgICAgLyogICBQQjlEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI4RFI6MTsgICAgICAgICAgICAgLyogICBQQjhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI3RFI6MTsgICAgICAgICAgICAgLyogICBQQjdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI2RFI6MTsgICAgICAgICAgICAgLyogICBQQjZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI1RFI6MTsgICAgICAgICAgICAgLyogICBQQjVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI0RFI6MTsgICAgICAgICAgICAgLyogICBQQjREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIzRFI6MTsgICAgICAgICAgICAgLyogICBQQjNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyRFI6MTsgICAgICAgICAgICAgLyogICBQQjJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxRFI6MTsgICAgICAgICAgICAgLyogICBQQjFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJQUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMlBSOjE7ICAgICAgICAgICAgLyogICBQQjIyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMVBSOjE7ICAgICAgICAgICAgLyogICBQQjIxUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyMFBSOjE7ICAgICAgICAgICAgLyogICBQQjIwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOVBSOjE7ICAgICAgICAgICAgLyogICBQQjE5UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxOFBSOjE7ICAgICAgICAgICAgLyogICBQQjE4UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxN1BSOjE7ICAgICAgICAgICAgLyogICBQQjE3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNlBSOjE7ICAgICAgICAgICAgLyogICBQQjE2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJQUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNVBSOjE7ICAgICAgICAgICAgLyogICBQQjE1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxNFBSOjE7ICAgICAgICAgICAgLyogICBQQjE0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxM1BSOjE7ICAgICAgICAgICAgLyogICBQQjEzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMlBSOjE7ICAgICAgICAgICAgLyogICBQQjEyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMVBSOjE7ICAgICAgICAgICAgLyogICBQQjExUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxMFBSOjE7ICAgICAgICAgICAgLyogICBQQjEwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI5UFI6MTsgICAgICAgICAgICAgLyogICBQQjlQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI4UFI6MTsgICAgICAgICAgICAgLyogICBQQjhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI3UFI6MTsgICAgICAgICAgICAgLyogICBQQjdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI2UFI6MTsgICAgICAgICAgICAgLyogICBQQjZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI1UFI6MTsgICAgICAgICAgICAgLyogICBQQjVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEI0UFI6MTsgICAgICAgICAgICAgLyogICBQQjRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIzUFI6MTsgICAgICAgICAgICAgLyogICBQQjNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIyUFI6MTsgICAgICAgICAgICAgLyogICBQQjJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEIxUFI6MTsgICAgICAgICAgICAgLyogICBQQjFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMTRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM4TUQ6MzsgICAgICAgICAgICAgLyogICBQQzhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM3TUQ6MzsgICAgICAgICAgICAgLyogICBQQzdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM2TUQ6MzsgICAgICAgICAgICAgLyogICBQQzZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM1TUQ6MzsgICAgICAgICAgICAgLyogICBQQzVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM0TUQ6MjsgICAgICAgICAgICAgLyogICBQQzRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMzTUQ6MjsgICAgICAgICAgICAgLyogICBQQzNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMyTUQ6MjsgICAgICAgICAgICAgLyogICBQQzJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMxTUQ6MTsgICAgICAgICAgICAgLyogICBQQzFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMwTUQ6MTsgICAgICAgICAgICAgLyogICBQQzBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM4SU9SOjE7ICAgICAgICAgICAgLyogICBQQzhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM3SU9SOjE7ICAgICAgICAgICAgLyogICBQQzdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM2SU9SOjE7ICAgICAgICAgICAgLyogICBQQzZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM1SU9SOjE7ICAgICAgICAgICAgLyogICBQQzVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM0SU9SOjE7ICAgICAgICAgICAgLyogICBQQzRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMzSU9SOjE7ICAgICAgICAgICAgLyogICBQQzNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMySU9SOjE7ICAgICAgICAgICAgLyogICBQQzJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMxSU9SOjE7ICAgICAgICAgICAgLyogICBQQzFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMwSU9SOjE7ICAgICAgICAgICAgLyogICBQQzBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM4RFI6MTsgICAgICAgICAgICAgLyogICBQQzhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM3RFI6MTsgICAgICAgICAgICAgLyogICBQQzdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM2RFI6MTsgICAgICAgICAgICAgLyogICBQQzZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM1RFI6MTsgICAgICAgICAgICAgLyogICBQQzVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM0RFI6MTsgICAgICAgICAgICAgLyogICBQQzREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMzRFI6MTsgICAgICAgICAgICAgLyogICBQQzNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMyRFI6MTsgICAgICAgICAgICAgLyogICBQQzJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMxRFI6MTsgICAgICAgICAgICAgLyogICBQQzFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMwRFI6MTsgICAgICAgICAgICAgLyogICBQQzBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUENQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM4UFI6MTsgICAgICAgICAgICAgLyogICBQQzhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM3UFI6MTsgICAgICAgICAgICAgLyogICBQQzdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM2UFI6MTsgICAgICAgICAgICAgLyogICBQQzZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM1UFI6MTsgICAgICAgICAgICAgLyogICBQQzVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEM0UFI6MTsgICAgICAgICAgICAgLyogICBQQzRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMzUFI6MTsgICAgICAgICAgICAgLyogICBQQzNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMyUFI6MTsgICAgICAgICAgICAgLyogICBQQzJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMxUFI6MTsgICAgICAgICAgICAgLyogICBQQzFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEMwUFI6MTsgICAgICAgICAgICAgLyogICBQQzBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUENQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNU1EOjI7ICAgICAgICAgICAgLyogICBQRDE1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNE1EOjI7ICAgICAgICAgICAgLyogICBQRDE0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxM01EOjI7ICAgICAgICAgICAgLyogICBQRDEzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMk1EOjI7ICAgICAgICAgICAgLyogICBQRDEyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMU1EOjI7ICAgICAgICAgICAgLyogICBQRDExTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxME1EOjI7ICAgICAgICAgICAgLyogICBQRDEwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ5TUQ6MjsgICAgICAgICAgICAgLyogICBQRDlNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ4TUQ6MjsgICAgICAgICAgICAgLyogICBQRDhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ3TUQ6MjsgICAgICAgICAgICAgLyogICBQRDdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ2TUQ6MjsgICAgICAgICAgICAgLyogICBQRDZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ1TUQ6MjsgICAgICAgICAgICAgLyogICBQRDVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ0TUQ6MjsgICAgICAgICAgICAgLyogICBQRDRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQzTUQ6MjsgICAgICAgICAgICAgLyogICBQRDNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQyTUQ6MjsgICAgICAgICAgICAgLyogICBQRDJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxTUQ6MjsgICAgICAgICAgICAgLyogICBQRDFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQwTUQ6MjsgICAgICAgICAgICAgLyogICBQRDBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNUlPUjoxOyAgICAgICAgICAgLyogICBQRDE1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNElPUjoxOyAgICAgICAgICAgLyogICBQRDE0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxM0lPUjoxOyAgICAgICAgICAgLyogICBQRDEzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMklPUjoxOyAgICAgICAgICAgLyogICBQRDEySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMUlPUjoxOyAgICAgICAgICAgLyogICBQRDExSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMElPUjoxOyAgICAgICAgICAgLyogICBQRDEwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ5SU9SOjE7ICAgICAgICAgICAgLyogICBQRDlJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ4SU9SOjE7ICAgICAgICAgICAgLyogICBQRDhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ3SU9SOjE7ICAgICAgICAgICAgLyogICBQRDdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ2SU9SOjE7ICAgICAgICAgICAgLyogICBQRDZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ1SU9SOjE7ICAgICAgICAgICAgLyogICBQRDVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ0SU9SOjE7ICAgICAgICAgICAgLyogICBQRDRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQzSU9SOjE7ICAgICAgICAgICAgLyogICBQRDNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQySU9SOjE7ICAgICAgICAgICAgLyogICBQRDJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxSU9SOjE7ICAgICAgICAgICAgLyogICBQRDFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQwSU9SOjE7ICAgICAgICAgICAgLyogICBQRDBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEREUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNURSOjE7ICAgICAgICAgICAgLyogICBQRDE1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNERSOjE7ICAgICAgICAgICAgLyogICBQRDE0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxM0RSOjE7ICAgICAgICAgICAgLyogICBQRDEzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMkRSOjE7ICAgICAgICAgICAgLyogICBQRDEyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMURSOjE7ICAgICAgICAgICAgLyogICBQRDExRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMERSOjE7ICAgICAgICAgICAgLyogICBQRDEwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ5RFI6MTsgICAgICAgICAgICAgLyogICBQRDlEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ4RFI6MTsgICAgICAgICAgICAgLyogICBQRDhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ3RFI6MTsgICAgICAgICAgICAgLyogICBQRDdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ2RFI6MTsgICAgICAgICAgICAgLyogICBQRDZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ1RFI6MTsgICAgICAgICAgICAgLyogICBQRDVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ0RFI6MTsgICAgICAgICAgICAgLyogICBQRDREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQzRFI6MTsgICAgICAgICAgICAgLyogICBQRDNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQyRFI6MTsgICAgICAgICAgICAgLyogICBQRDJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxRFI6MTsgICAgICAgICAgICAgLyogICBQRDFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQwRFI6MTsgICAgICAgICAgICAgLyogICBQRDBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEREUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUERQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNVBSOjE7ICAgICAgICAgICAgLyogICBQRDE1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxNFBSOjE7ICAgICAgICAgICAgLyogICBQRDE0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxM1BSOjE7ICAgICAgICAgICAgLyogICBQRDEzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMlBSOjE7ICAgICAgICAgICAgLyogICBQRDEyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMVBSOjE7ICAgICAgICAgICAgLyogICBQRDExUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxMFBSOjE7ICAgICAgICAgICAgLyogICBQRDEwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ5UFI6MTsgICAgICAgICAgICAgLyogICBQRDlQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ4UFI6MTsgICAgICAgICAgICAgLyogICBQRDhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ3UFI6MTsgICAgICAgICAgICAgLyogICBQRDdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ2UFI6MTsgICAgICAgICAgICAgLyogICBQRDZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ1UFI6MTsgICAgICAgICAgICAgLyogICBQRDVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQ0UFI6MTsgICAgICAgICAgICAgLyogICBQRDRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQzUFI6MTsgICAgICAgICAgICAgLyogICBQRDNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQyUFI6MTsgICAgICAgICAgICAgLyogICBQRDJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQxUFI6MTsgICAgICAgICAgICAgLyogICBQRDFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEQwUFI6MTsgICAgICAgICAgICAgLyogICBQRDBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUERQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEVDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU3TUQ6MjsgICAgICAgICAgICAgLyogICBQRTdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU2TUQ6MjsgICAgICAgICAgICAgLyogICBQRTZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU1TUQ6MjsgICAgICAgICAgICAgLyogICBQRTVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU0TUQ6MjsgICAgICAgICAgICAgLyogICBQRTRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEVDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEVDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUzTUQ6MzsgICAgICAgICAgICAgLyogICBQRTNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUyTUQ6MzsgICAgICAgICAgICAgLyogICBQRTJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUxTUQ6MzsgICAgICAgICAgICAgLyogICBQRTFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUwTUQ6MjsgICAgICAgICAgICAgLyogICBQRTBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEVDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEVJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU3SU9SOjE7ICAgICAgICAgICAgLyogICBQRTdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU2SU9SOjE7ICAgICAgICAgICAgLyogICBQRTZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU1SU9SOjE7ICAgICAgICAgICAgLyogICBQRTVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU0SU9SOjE7ICAgICAgICAgICAgLyogICBQRTRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUzSU9SOjE7ICAgICAgICAgICAgLyogICBQRTNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUySU9SOjE7ICAgICAgICAgICAgLyogICBQRTJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUxSU9SOjE7ICAgICAgICAgICAgLyogICBQRTFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUwSU9SOjE7ICAgICAgICAgICAgLyogICBQRTBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEVJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE0WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEVEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU3RFI6MTsgICAgICAgICAgICAgLyogICBQRTdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU2RFI6MTsgICAgICAgICAgICAgLyogICBQRTZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU1RFI6MTsgICAgICAgICAgICAgLyogICBQRTVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU0RFI6MTsgICAgICAgICAgICAgLyogICBQRTREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUzRFI6MTsgICAgICAgICAgICAgLyogICBQRTNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUyRFI6MTsgICAgICAgICAgICAgLyogICBQRTJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUxRFI6MTsgICAgICAgICAgICAgLyogICBQRTFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUwRFI6MTsgICAgICAgICAgICAgLyogICBQRTBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEVEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE1WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEVQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU3UFI6MTsgICAgICAgICAgICAgLyogICBQRTdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU2UFI6MTsgICAgICAgICAgICAgLyogICBQRTZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU1UFI6MTsgICAgICAgICAgICAgLyogICBQRTVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEU0UFI6MTsgICAgICAgICAgICAgLyogICBQRTRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUzUFI6MTsgICAgICAgICAgICAgLyogICBQRTNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUyUFI6MTsgICAgICAgICAgICAgLyogICBQRTJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUxUFI6MTsgICAgICAgICAgICAgLyogICBQRTFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEUwUFI6MTsgICAgICAgICAgICAgLyogICBQRTBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEVQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyM01EIDozOyAgICAgICAgICAgLyogICBQRjIzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMk1EIDozOyAgICAgICAgICAgLyogICBQRjIyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMU1EIDozOyAgICAgICAgICAgLyogICBQRjIxTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyME1EIDozOyAgICAgICAgICAgLyogICBQRjIwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOU1EIDozOyAgICAgICAgICAgLyogICBQRjE5TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOE1EIDozOyAgICAgICAgICAgLyogICBQRjE4TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxN01EIDozOyAgICAgICAgICAgLyogICBQRjE3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNk1EIDozOyAgICAgICAgICAgLyogICBQRjE2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogUmVhZC9Xcml0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgfSBQRkNSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXcml0aW5nIEgnNUEgaW4gdGhlIHVwcGVyIGJ5dGUgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE0TUQ6MzsgICAgICAgICAgICAvKiAgIFBGMTRNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEzTUQ6MzsgICAgICAgICAgICAvKiAgIFBGMTNNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEyTUQ6MzsgICAgICAgICAgICAvKiAgIFBGMTJNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjExTUQ6MzsgICAgICAgICAgICAvKiAgIFBGMTFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEwTUQ6MzsgICAgICAgICAgICAvKiAgIFBGMTBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjlNRDozOyAgICAgICAgICAgICAvKiAgIFBGOU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjhNRDozOyAgICAgICAgICAgICAvKiAgIFBGOE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjdNRDozOyAgICAgICAgICAgICAvKiAgIFBGN01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjZNRDozOyAgICAgICAgICAgICAvKiAgIFBGNk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjVNRDozOyAgICAgICAgICAgICAvKiAgIFBGNU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjRNRDozOyAgICAgICAgICAgICAvKiAgIFBGNE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjNNRDozOyAgICAgICAgICAgICAvKiAgIFBGM01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjJNRDozOyAgICAgICAgICAgICAvKiAgIFBGMk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjFNRDozOyAgICAgICAgICAgICAvKiAgIFBGMU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjBNRDozOyAgICAgICAgICAgICAvKiAgIFBGME1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRklPUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIzSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMjNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIySU9SOjE7ICAgICAgICAgICAvKiAgIFBGMjJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIxSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMjFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIwSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMjBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE5SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTlJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE4SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMThJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE3SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTdJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE2SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTZJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRklPUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRklPUjAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE1SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTVJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE0SU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTRJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEzSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEySU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjExSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEwSU9SOjE7ICAgICAgICAgICAvKiAgIFBGMTBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjlJT1I6MTsgICAgICAgICAgICAvKiAgIFBGOUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjhJT1I6MTsgICAgICAgICAgICAvKiAgIFBGOElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjdJT1I6MTsgICAgICAgICAgICAvKiAgIFBGN0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjZJT1I6MTsgICAgICAgICAgICAvKiAgIFBGNklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjVJT1I6MTsgICAgICAgICAgICAvKiAgIFBGNUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjRJT1I6MTsgICAgICAgICAgICAvKiAgIFBGNElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjNJT1I6MTsgICAgICAgICAgICAvKiAgIFBGM0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjJJT1I6MTsgICAgICAgICAgICAvKiAgIFBGMklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjFJT1I6MTsgICAgICAgICAgICAvKiAgIFBGMUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjBJT1I6MTsgICAgICAgICAgICAvKiAgIFBGMElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRklPUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkRSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIzRFI6MTsgICAgICAgICAgICAvKiAgIFBGMjNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIyRFI6MTsgICAgICAgICAgICAvKiAgIFBGMjJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIxRFI6MTsgICAgICAgICAgICAvKiAgIFBGMjFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIwRFI6MTsgICAgICAgICAgICAvKiAgIFBGMjBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE5RFI6MTsgICAgICAgICAgICAvKiAgIFBGMTlEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE4RFI6MTsgICAgICAgICAgICAvKiAgIFBGMThEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE3RFI6MTsgICAgICAgICAgICAvKiAgIFBGMTdEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE2RFI6MTsgICAgICAgICAgICAvKiAgIFBGMTZEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkRSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkRSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE1RFI6MTsgICAgICAgICAgICAvKiAgIFBGMTVEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE0RFI6MTsgICAgICAgICAgICAvKiAgIFBGMTREUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEzRFI6MTsgICAgICAgICAgICAvKiAgIFBGMTNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEyRFI6MTsgICAgICAgICAgICAvKiAgIFBGMTJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjExRFI6MTsgICAgICAgICAgICAvKiAgIFBGMTFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEwRFI6MTsgICAgICAgICAgICAvKiAgIFBGMTBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjlEUjoxOyAgICAgICAgICAgICAvKiAgIFBGOURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjhEUjoxOyAgICAgICAgICAgICAvKiAgIFBGOERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjdEUjoxOyAgICAgICAgICAgICAvKiAgIFBGN0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjZEUjoxOyAgICAgICAgICAgICAvKiAgIFBGNkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjVEUjoxOyAgICAgICAgICAgICAvKiAgIFBGNURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjREUjoxOyAgICAgICAgICAgICAvKiAgIFBGNERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjNEUjoxOyAgICAgICAgICAgICAvKiAgIFBGM0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjJEUjoxOyAgICAgICAgICAgICAvKiAgIFBGMkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjFEUjoxOyAgICAgICAgICAgICAvKiAgIFBGMURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjBEUjoxOyAgICAgICAgICAgICAvKiAgIFBGMERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkRSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRlBSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIzUFI6MTsgICAgICAgICAgICAvKiAgIFBGMjNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIyUFI6MTsgICAgICAgICAgICAvKiAgIFBGMjJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIxUFI6MTsgICAgICAgICAgICAvKiAgIFBGMjFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjIwUFI6MTsgICAgICAgICAgICAvKiAgIFBGMjBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE5UFI6MTsgICAgICAgICAgICAvKiAgIFBGMTlQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE4UFI6MTsgICAgICAgICAgICAvKiAgIFBGMThQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE3UFI6MTsgICAgICAgICAgICAvKiAgIFBGMTdQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE2UFI6MTsgICAgICAgICAgICAvKiAgIFBGMTZQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRlBSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRlBSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE1UFI6MTsgICAgICAgICAgICAvKiAgIFBGMTVQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjE0UFI6MTsgICAgICAgICAgICAvKiAgIFBGMTRQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEzUFI6MTsgICAgICAgICAgICAvKiAgIFBGMTNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEyUFI6MTsgICAgICAgICAgICAvKiAgIFBGMTJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjExUFI6MTsgICAgICAgICAgICAvKiAgIFBGMTFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjEwUFI6MTsgICAgICAgICAgICAvKiAgIFBGMTBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjlQUjoxOyAgICAgICAgICAgICAvKiAgIFBGOVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjhQUjoxOyAgICAgICAgICAgICAvKiAgIFBGOFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjdQUjoxOyAgICAgICAgICAgICAvKiAgIFBGN1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjZQUjoxOyAgICAgICAgICAgICAvKiAgIFBGNlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjVQUjoxOyAgICAgICAgICAgICAvKiAgIFBGNVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjRQUjoxOyAgICAgICAgICAgICAvKiAgIFBGNFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjNQUjoxOyAgICAgICAgICAgICAvKiAgIFBGM1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjJQUjoxOyAgICAgICAgICAgICAvKiAgIFBGMlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjFQUjoxOyAgICAgICAgICAgICAvKiAgIFBGMVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRjBQUjoxOyAgICAgICAgICAgICAvKiAgIFBGMFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRlBSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTdbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI3TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMjdNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI2TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMjZNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI1TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMjVNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI0TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMjRNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIzTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMjNNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIyTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMjJNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIxTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMjFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIwTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMjBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE5TUQ6MzsgICAgICAgICAgICAvKiAgIFBHMTlNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE4TUQ6MzsgICAgICAgICAgICAvKiAgIFBHMThNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE3TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTdNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE2TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTZNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE1TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTVNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE0TUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTRNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEzTUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTNNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEyTUQ6MjsgICAgICAgICAgICAvKiAgIFBHMTJNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzExTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMTFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEwTUQ6MzsgICAgICAgICAgICAvKiAgIFBHMTBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzlNRDozOyAgICAgICAgICAgICAvKiAgIFBHOU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzhNRDozOyAgICAgICAgICAgICAvKiAgIFBHOE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzdNRDozOyAgICAgICAgICAgICAvKiAgIFBHN01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzZNRDozOyAgICAgICAgICAgICAvKiAgIFBHNk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzVNRDozOyAgICAgICAgICAgICAvKiAgIFBHNU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzRNRDozOyAgICAgICAgICAgICAvKiAgIFBHNE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0NSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzNNRDozOyAgICAgICAgICAgICAvKiAgIFBHM01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzJNRDozOyAgICAgICAgICAgICAvKiAgIFBHMk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzFNRDozOyAgICAgICAgICAgICAvKiAgIFBHMU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzBNRDozOyAgICAgICAgICAgICAvKiAgIFBHME1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0NSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0lPUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI3SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjdJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI2SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjZJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI1SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjVJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI0SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjRJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIzSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIySU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIxSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIwSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMjBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE5SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTlJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE4SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMThJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE3SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTdJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE2SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTZJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0lPUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0lPUjAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE1SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTVJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE0SU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTRJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEzSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEySU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzExSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEwSU9SOjE7ICAgICAgICAgICAvKiAgIFBHMTBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzlJT1I6MTsgICAgICAgICAgICAvKiAgIFBHOUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzhJT1I6MTsgICAgICAgICAgICAvKiAgIFBHOElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzdJT1I6MTsgICAgICAgICAgICAvKiAgIFBHN0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzZJT1I6MTsgICAgICAgICAgICAvKiAgIFBHNklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzVJT1I6MTsgICAgICAgICAgICAvKiAgIFBHNUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzRJT1I6MTsgICAgICAgICAgICAvKiAgIFBHNElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzNJT1I6MTsgICAgICAgICAgICAvKiAgIFBHM0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzJJT1I6MTsgICAgICAgICAgICAvKiAgIFBHMklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzFJT1I6MTsgICAgICAgICAgICAvKiAgIFBHMUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzBJT1I6MTsgICAgICAgICAgICAvKiAgIFBHMElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0lPUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0RSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI3RFI6MTsgICAgICAgICAgICAvKiAgIFBHMjdEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI2RFI6MTsgICAgICAgICAgICAvKiAgIFBHMjZEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI1RFI6MTsgICAgICAgICAgICAvKiAgIFBHMjVEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI0RFI6MTsgICAgICAgICAgICAvKiAgIFBHMjREUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIzRFI6MTsgICAgICAgICAgICAvKiAgIFBHMjNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIyRFI6MTsgICAgICAgICAgICAvKiAgIFBHMjJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIxRFI6MTsgICAgICAgICAgICAvKiAgIFBHMjFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIwRFI6MTsgICAgICAgICAgICAvKiAgIFBHMjBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE5RFI6MTsgICAgICAgICAgICAvKiAgIFBHMTlEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE4RFI6MTsgICAgICAgICAgICAvKiAgIFBHMThEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE3RFI6MTsgICAgICAgICAgICAvKiAgIFBHMTdEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE2RFI6MTsgICAgICAgICAgICAvKiAgIFBHMTZEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0RSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0RSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE1RFI6MTsgICAgICAgICAgICAvKiAgIFBHMTVEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE0RFI6MTsgICAgICAgICAgICAvKiAgIFBHMTREUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEzRFI6MTsgICAgICAgICAgICAvKiAgIFBHMTNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEyRFI6MTsgICAgICAgICAgICAvKiAgIFBHMTJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzExRFI6MTsgICAgICAgICAgICAvKiAgIFBHMTFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEwRFI6MTsgICAgICAgICAgICAvKiAgIFBHMTBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzlEUjoxOyAgICAgICAgICAgICAvKiAgIFBHOURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzhEUjoxOyAgICAgICAgICAgICAvKiAgIFBHOERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzdEUjoxOyAgICAgICAgICAgICAvKiAgIFBHN0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzZEUjoxOyAgICAgICAgICAgICAvKiAgIFBHNkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzVEUjoxOyAgICAgICAgICAgICAvKiAgIFBHNURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzREUjoxOyAgICAgICAgICAgICAvKiAgIFBHNERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzNEUjoxOyAgICAgICAgICAgICAvKiAgIFBHM0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzJEUjoxOyAgICAgICAgICAgICAvKiAgIFBHMkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzFEUjoxOyAgICAgICAgICAgICAvKiAgIFBHMURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzBEUjoxOyAgICAgICAgICAgICAvKiAgIFBHMERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0RSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR1BSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI3UFI6MTsgICAgICAgICAgICAvKiAgIFBHMjdQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI2UFI6MTsgICAgICAgICAgICAvKiAgIFBHMjZQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI1UFI6MTsgICAgICAgICAgICAvKiAgIFBHMjVQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzI0UFI6MTsgICAgICAgICAgICAvKiAgIFBHMjRQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIzUFI6MTsgICAgICAgICAgICAvKiAgIFBHMjNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIyUFI6MTsgICAgICAgICAgICAvKiAgIFBHMjJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIxUFI6MTsgICAgICAgICAgICAvKiAgIFBHMjFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzIwUFI6MTsgICAgICAgICAgICAvKiAgIFBHMjBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE5UFI6MTsgICAgICAgICAgICAvKiAgIFBHMTlQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE4UFI6MTsgICAgICAgICAgICAvKiAgIFBHMThQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE3UFI6MTsgICAgICAgICAgICAvKiAgIFBHMTdQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE2UFI6MTsgICAgICAgICAgICAvKiAgIFBHMTZQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR1BSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR1BSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE1UFI6MTsgICAgICAgICAgICAvKiAgIFBHMTVQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzE0UFI6MTsgICAgICAgICAgICAvKiAgIFBHMTRQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEzUFI6MTsgICAgICAgICAgICAvKiAgIFBHMTNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEyUFI6MTsgICAgICAgICAgICAvKiAgIFBHMTJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzExUFI6MTsgICAgICAgICAgICAvKiAgIFBHMTFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzEwUFI6MTsgICAgICAgICAgICAvKiAgIFBHMTBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzlQUjoxOyAgICAgICAgICAgICAvKiAgIFBHOVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzhQUjoxOyAgICAgICAgICAgICAvKiAgIFBHOFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzdQUjoxOyAgICAgICAgICAgICAvKiAgIFBHN1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzZQUjoxOyAgICAgICAgICAgICAvKiAgIFBHNlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzVQUjoxOyAgICAgICAgICAgICAvKiAgIFBHNVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzRQUjoxOyAgICAgICAgICAgICAvKiAgIFBHNFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzNQUjoxOyAgICAgICAgICAgICAvKiAgIFBHM1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzJQUjoxOyAgICAgICAgICAgICAvKiAgIFBHMlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzFQUjoxOyAgICAgICAgICAgICAvKiAgIFBHMVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQRzBQUjoxOyAgICAgICAgICAgICAvKiAgIFBHMFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR1BSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMThbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSENSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDdNRDoyOyAgICAgICAgICAgICAvKiAgIFBIN01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDZNRDoyOyAgICAgICAgICAgICAvKiAgIFBINk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDVNRDoyOyAgICAgICAgICAgICAvKiAgIFBINU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDRNRDoyOyAgICAgICAgICAgICAvKiAgIFBINE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSENSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSENSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDNNRDoyOyAgICAgICAgICAgICAvKiAgIFBIM01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDJNRDoyOyAgICAgICAgICAgICAvKiAgIFBIMk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDFNRDoyOyAgICAgICAgICAgICAvKiAgIFBIMU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDBNRDoyOyAgICAgICAgICAgICAvKiAgIFBIME1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSENSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTlbMTBdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSFBSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDdQUjoxOyAgICAgICAgICAgICAvKiAgIFBIN1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDZQUjoxOyAgICAgICAgICAgICAvKiAgIFBINlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDVQUjoxOyAgICAgICAgICAgICAvKiAgIFBINVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDRQUjoxOyAgICAgICAgICAgICAvKiAgIFBINFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDNQUjoxOyAgICAgICAgICAgICAvKiAgIFBIM1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDJQUjoxOyAgICAgICAgICAgICAvKiAgIFBIMlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDFQUjoxOyAgICAgICAgICAgICAvKiAgIFBIMVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSDBQUjoxOyAgICAgICAgICAgICAvKiAgIFBIMFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSFBSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMxTUQ6MTsgICAgICAgICAgICAvKiAgIFBKMzFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMwTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMzBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI5TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjlNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI4TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjhNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI3TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjdNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI2TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjZNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI1TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjVNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI0TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjRNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIzTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjNNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIyTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjJNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIxTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIwTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMjBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE5TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTlNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE4TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMThNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE3TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTdNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE2TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTZNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE1TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTVNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE0TUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTRNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEzTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTNNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEyTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTJNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjExTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTFNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEwTUQ6MzsgICAgICAgICAgICAvKiAgIFBKMTBNRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjlNRDozOyAgICAgICAgICAgICAvKiAgIFBKOU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjhNRDozOyAgICAgICAgICAgICAvKiAgIFBKOE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjdNRDozOyAgICAgICAgICAgICAvKiAgIFBKN01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjZNRDozOyAgICAgICAgICAgICAvKiAgIFBKNk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjVNRDozOyAgICAgICAgICAgICAvKiAgIFBKNU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjRNRDozOyAgICAgICAgICAgICAvKiAgIFBKNE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkNSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjNNRDozOyAgICAgICAgICAgICAvKiAgIFBKM01EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjJNRDozOyAgICAgICAgICAgICAvKiAgIFBKMk1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjFNRDozOyAgICAgICAgICAgICAvKiAgIFBKMU1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjBNRDozOyAgICAgICAgICAgICAvKiAgIFBKME1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkNSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSklPUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMxSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMzFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMwSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMzBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI5SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjlJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI4SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjhJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI3SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjdJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI2SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjZJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI1SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjVJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI0SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjRJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIzSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIySU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIxSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIwSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMjBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE5SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTlJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE4SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMThJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE3SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTdJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE2SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTZJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSklPUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSklPUjAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE1SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTVJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE0SU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTRJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEzSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTNJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEySU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTJJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjExSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTFJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEwSU9SOjE7ICAgICAgICAgICAvKiAgIFBKMTBJT1IgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjlJT1I6MTsgICAgICAgICAgICAvKiAgIFBKOUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjhJT1I6MTsgICAgICAgICAgICAvKiAgIFBKOElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjdJT1I6MTsgICAgICAgICAgICAvKiAgIFBKN0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjZJT1I6MTsgICAgICAgICAgICAvKiAgIFBKNklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjVJT1I6MTsgICAgICAgICAgICAvKiAgIFBKNUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjRJT1I6MTsgICAgICAgICAgICAvKiAgIFBKNElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjNJT1I6MTsgICAgICAgICAgICAvKiAgIFBKM0lPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjJJT1I6MTsgICAgICAgICAgICAvKiAgIFBKMklPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjFJT1I6MTsgICAgICAgICAgICAvKiAgIFBKMUlPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjBJT1I6MTsgICAgICAgICAgICAvKiAgIFBKMElPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSklPUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkRSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMxRFI6MTsgICAgICAgICAgICAvKiAgIFBKMzFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMwRFI6MTsgICAgICAgICAgICAvKiAgIFBKMzBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI5RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjlEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI4RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjhEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI3RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjdEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI2RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjZEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI1RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjVEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI0RFI6MTsgICAgICAgICAgICAvKiAgIFBKMjREUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIzRFI6MTsgICAgICAgICAgICAvKiAgIFBKMjNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIyRFI6MTsgICAgICAgICAgICAvKiAgIFBKMjJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIxRFI6MTsgICAgICAgICAgICAvKiAgIFBKMjFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIwRFI6MTsgICAgICAgICAgICAvKiAgIFBKMjBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE5RFI6MTsgICAgICAgICAgICAvKiAgIFBKMTlEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE4RFI6MTsgICAgICAgICAgICAvKiAgIFBKMThEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE3RFI6MTsgICAgICAgICAgICAvKiAgIFBKMTdEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE2RFI6MTsgICAgICAgICAgICAvKiAgIFBKMTZEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkRSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSkRSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE1RFI6MTsgICAgICAgICAgICAvKiAgIFBKMTVEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE0RFI6MTsgICAgICAgICAgICAvKiAgIFBKMTREUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEzRFI6MTsgICAgICAgICAgICAvKiAgIFBKMTNEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEyRFI6MTsgICAgICAgICAgICAvKiAgIFBKMTJEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjExRFI6MTsgICAgICAgICAgICAvKiAgIFBKMTFEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEwRFI6MTsgICAgICAgICAgICAvKiAgIFBKMTBEUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjlEUjoxOyAgICAgICAgICAgICAvKiAgIFBKOURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjhEUjoxOyAgICAgICAgICAgICAvKiAgIFBKOERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjdEUjoxOyAgICAgICAgICAgICAvKiAgIFBKN0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjZEUjoxOyAgICAgICAgICAgICAvKiAgIFBKNkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjVEUjoxOyAgICAgICAgICAgICAvKiAgIFBKNURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjREUjoxOyAgICAgICAgICAgICAvKiAgIFBKNERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjNEUjoxOyAgICAgICAgICAgICAvKiAgIFBKM0RSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjJEUjoxOyAgICAgICAgICAgICAvKiAgIFBKMkRSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjFEUjoxOyAgICAgICAgICAgICAvKiAgIFBKMURSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjBEUjoxOyAgICAgICAgICAgICAvKiAgIFBKMERSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSkRSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSlBSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMxUFI6MTsgICAgICAgICAgICAvKiAgIFBKMzFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjMwUFI6MTsgICAgICAgICAgICAvKiAgIFBKMzBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI5UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjlQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI4UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjhQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI3UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjdQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI2UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjZQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI1UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjVQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjI0UFI6MTsgICAgICAgICAgICAvKiAgIFBKMjRQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIzUFI6MTsgICAgICAgICAgICAvKiAgIFBKMjNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIyUFI6MTsgICAgICAgICAgICAvKiAgIFBKMjJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIxUFI6MTsgICAgICAgICAgICAvKiAgIFBKMjFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjIwUFI6MTsgICAgICAgICAgICAvKiAgIFBKMjBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE5UFI6MTsgICAgICAgICAgICAvKiAgIFBKMTlQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE4UFI6MTsgICAgICAgICAgICAvKiAgIFBKMThQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE3UFI6MTsgICAgICAgICAgICAvKiAgIFBKMTdQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE2UFI6MTsgICAgICAgICAgICAvKiAgIFBKMTZQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSlBSMTsNCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSlBSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE1UFI6MTsgICAgICAgICAgICAvKiAgIFBKMTVQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjE0UFI6MTsgICAgICAgICAgICAvKiAgIFBKMTRQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEzUFI6MTsgICAgICAgICAgICAvKiAgIFBKMTNQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEyUFI6MTsgICAgICAgICAgICAvKiAgIFBKMTJQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjExUFI6MTsgICAgICAgICAgICAvKiAgIFBKMTFQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjEwUFI6MTsgICAgICAgICAgICAvKiAgIFBKMTBQUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjlQUjoxOyAgICAgICAgICAgICAvKiAgIFBKOVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjhQUjoxOyAgICAgICAgICAgICAvKiAgIFBKOFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjdQUjoxOyAgICAgICAgICAgICAvKiAgIFBKN1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjZQUjoxOyAgICAgICAgICAgICAvKiAgIFBKNlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjVQUjoxOyAgICAgICAgICAgICAvKiAgIFBKNVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjRQUjoxOyAgICAgICAgICAgICAvKiAgIFBKNFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjNQUjoxOyAgICAgICAgICAgICAvKiAgIFBKM1BSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjJQUjoxOyAgICAgICAgICAgICAvKiAgIFBKMlBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjFQUjoxOyAgICAgICAgICAgICAvKiAgIFBKMVBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQSjBQUjoxOyAgICAgICAgICAgICAvKiAgIFBKMFBSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSlBSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjFbMzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTkNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0k1TkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTVOQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0k0TkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTROQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0kzTkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTNOQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0kyTkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTJOQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0kxTkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTFOQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0kwTkNFOjE7ICAgICAgICAgICAvKiAgIFNTSTBOQ0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfVNOQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2VuZGlmDQotc3RydWN0IHN0X2h1ZGkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEhVREkgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0RJUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEk6ODsgICAgICAgICAgICAgICAgLyogICBUSSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0RJUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3B3bSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFBXTSAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCVENSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMkc6MTsgICAgICAgICAgICAgLyogICBCVEMyRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMkU6MTsgICAgICAgICAgICAgLyogICBCVEMyRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMkM6MTsgICAgICAgICAgICAgLyogICBCVEMyQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMkE6MTsgICAgICAgICAgICAgLyogICBCVEMyQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMUc6MTsgICAgICAgICAgICAgLyogICBCVEMxRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMUU6MTsgICAgICAgICAgICAgLyogICBCVEMxRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMUM6MTsgICAgICAgICAgICAgLyogICBCVEMxQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlRDMUE6MTsgICAgICAgICAgICAgLyogICBCVEMxQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCVENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMjE3XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUU6MTsgICAgICAgICAgICAgICAgLyogICBJRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ01GOjE7ICAgICAgICAgICAgICAgLyogICBDTUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUOjE7ICAgICAgICAgICAgICAgLyogICBDU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tTOjM7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdQUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUg6MTsgICAgICAgICAgICAgLyogICBPUFMxSCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUc6MTsgICAgICAgICAgICAgLyogICBPUFMxRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUY6MTsgICAgICAgICAgICAgLyogICBPUFMxRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUU6MTsgICAgICAgICAgICAgLyogICBPUFMxRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUQ6MTsgICAgICAgICAgICAgLyogICBPUFMxRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUM6MTsgICAgICAgICAgICAgLyogICBPUFMxQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUI6MTsgICAgICAgICAgICAgLyogICBPUFMxQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMUE6MTsgICAgICAgICAgICAgLyogICBPUFMxQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdQUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdDWVIxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE1OjE7ICAgICAgICAgICAgLyogICBQV0NZMTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE0OjE7ICAgICAgICAgICAgLyogICBQV0NZMTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEzOjE7ICAgICAgICAgICAgLyogICBQV0NZMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEyOjE7ICAgICAgICAgICAgLyogICBQV0NZMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTExOjE7ICAgICAgICAgICAgLyogICBQV0NZMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEwOjE7ICAgICAgICAgICAgLyogICBQV0NZMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTk6MTsgICAgICAgICAgICAgLyogICBQV0NZOSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTg6MTsgICAgICAgICAgICAgLyogICBQV0NZOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTc6MTsgICAgICAgICAgICAgLyogICBQV0NZNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTY6MTsgICAgICAgICAgICAgLyogICBQV0NZNiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTU6MTsgICAgICAgICAgICAgLyogICBQV0NZNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTQ6MTsgICAgICAgICAgICAgLyogICBQV0NZNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTM6MTsgICAgICAgICAgICAgLyogICBQV0NZMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTI6MTsgICAgICAgICAgICAgLyogICBQV0NZMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE6MTsgICAgICAgICAgICAgLyogICBQV0NZMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTA6MTsgICAgICAgICAgICAgLyogICBQV0NZMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdDWVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIxQSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIxQTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIxQyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIxQzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIxRSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIxRTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIxRyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIxRzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUU6MTsgICAgICAgICAgICAgICAgLyogICBJRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ01GOjE7ICAgICAgICAgICAgICAgLyogICBDTUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ1NUOjE7ICAgICAgICAgICAgICAgLyogICBDU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tTOjM7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdQUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkg6MTsgICAgICAgICAgICAgLyogICBPUFMySCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkc6MTsgICAgICAgICAgICAgLyogICBPUFMyRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkY6MTsgICAgICAgICAgICAgLyogICBPUFMyRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkU6MTsgICAgICAgICAgICAgLyogICBPUFMyRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkQ6MTsgICAgICAgICAgICAgLyogICBPUFMyRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkM6MTsgICAgICAgICAgICAgLyogICBPUFMyQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkI6MTsgICAgICAgICAgICAgLyogICBPUFMyQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT1BTMkE6MTsgICAgICAgICAgICAgLyogICBPUFMyQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdQUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdDWVIyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE1OjE7ICAgICAgICAgICAgLyogICBQV0NZMTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE0OjE7ICAgICAgICAgICAgLyogICBQV0NZMTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEzOjE7ICAgICAgICAgICAgLyogICBQV0NZMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEyOjE7ICAgICAgICAgICAgLyogICBQV0NZMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTExOjE7ICAgICAgICAgICAgLyogICBQV0NZMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTEwOjE7ICAgICAgICAgICAgLyogICBQV0NZMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTk6MTsgICAgICAgICAgICAgLyogICBQV0NZOSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTg6MTsgICAgICAgICAgICAgLyogICBQV0NZOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTc6MTsgICAgICAgICAgICAgLyogICBQV0NZNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTY6MTsgICAgICAgICAgICAgLyogICBQV0NZNiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTU6MTsgICAgICAgICAgICAgLyogICBQV0NZNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTQ6MTsgICAgICAgICAgICAgLyogICBQV0NZNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTM6MTsgICAgICAgICAgICAgLyogICBQV0NZMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTI6MTsgICAgICAgICAgICAgLyogICBQV0NZMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTE6MTsgICAgICAgICAgICAgLyogICBQV0NZMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFdDWTA6MTsgICAgICAgICAgICAgLyogICBQV0NZMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdDWVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIyQSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIyQTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIyQyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIyQzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIyRSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIyRTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFdCRlIyRyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1RTOjE7ICAgICAgICAgICAgICAgLyogICBPVFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ5OjE7ICAgICAgICAgICAgICAgLyogICBEVDkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ4OjE7ICAgICAgICAgICAgICAgLyogICBEVDggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ3OjE7ICAgICAgICAgICAgICAgLyogICBEVDcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ2OjE7ICAgICAgICAgICAgICAgLyogICBEVDYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ1OjE7ICAgICAgICAgICAgICAgLyogICBEVDUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQ0OjE7ICAgICAgICAgICAgICAgLyogICBEVDQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQzOjE7ICAgICAgICAgICAgICAgLyogICBEVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQyOjE7ICAgICAgICAgICAgICAgLyogICBEVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQxOjE7ICAgICAgICAgICAgICAgLyogICBEVDEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFQwOjE7ICAgICAgICAgICAgICAgLyogICBEVDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFdCRlIyRzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3Jxc3BpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFJRU1BJICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BSSUU6MTsgICAgICAgICAgICAgLyogICBTUFJJRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BFOjE7ICAgICAgICAgICAgICAgLyogICBTUEUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BUSUU6MTsgICAgICAgICAgICAgLyogICBTUFRJRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NMUCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NMUDoxOyAgICAgICAgICAgICAgLyogICBTU0xQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NMUDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BQQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTU9JRkU6MTsgICAgICAgICAgICAgLyogICBNT0lGRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTU9JRlY6MTsgICAgICAgICAgICAgLyogICBNT0lGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU8zRlY6MTsgICAgICAgICAgICAgLyogICBJTzNGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU8yRlY6MTsgICAgICAgICAgICAgLyogICBJTzJGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BMUDoxOyAgICAgICAgICAgICAgLyogICBTUExQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BQQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BTUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BSRkY6MTsgICAgICAgICAgICAgLyogICBTUFJGRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEVORDoxOyAgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BURUY6MTsgICAgICAgICAgICAgLyogICBTUFRFRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BEUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gU1BEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BTQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BTQzoyOyAgICAgICAgICAgICAgLyogICBTUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BTQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BTU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BTUzoyOyAgICAgICAgICAgICAgLyogICBTUFNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BTU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BCUjo4OyAgICAgICAgICAgICAgLyogICBTUEJSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BCUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BEQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhETVk6MTsgICAgICAgICAgICAgLyogICBUWERNWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BEQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDS0QgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0NLREw6MzsgICAgICAgICAgICAgLyogICBTQ0tETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDS0Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NMTkQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0xOREw6MzsgICAgICAgICAgICAgLyogICBTTE5ETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NMTkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BORCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1BOREw6MzsgICAgICAgICAgICAgLyogICBTUE5ETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BORDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDTUQwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLREVOOjE7ICAgICAgICAgICAgLyogICBTQ0tERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0xOREVOOjE7ICAgICAgICAgICAgLyogICBTTE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BOREVOOjE7ICAgICAgICAgICAgLyogICBTUE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFNCRjoxOyAgICAgICAgICAgICAgLyogICBMU0JGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCOjQ7ICAgICAgICAgICAgICAgLyogICBTUEIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1NMS1A6MTsgICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BJTU9EOjI7ICAgICAgICAgICAgLyogICBTUElNT0QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BSVzoxOyAgICAgICAgICAgICAgLyogICBTUFJXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEVjoyOyAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BPTDoxOyAgICAgICAgICAgICAgLyogICBDUE9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BIQToxOyAgICAgICAgICAgICAgLyogICBDUEhBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDTUQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDTUQxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLREVOOjE7ICAgICAgICAgICAgLyogICBTQ0tERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0xOREVOOjE7ICAgICAgICAgICAgLyogICBTTE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BOREVOOjE7ICAgICAgICAgICAgLyogICBTUE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFNCRjoxOyAgICAgICAgICAgICAgLyogICBMU0JGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCOjQ7ICAgICAgICAgICAgICAgLyogICBTUEIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1NMS1A6MTsgICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BJTU9EOjI7ICAgICAgICAgICAgLyogICBTUElNT0QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BSVzoxOyAgICAgICAgICAgICAgLyogICBTUFJXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEVjoyOyAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BPTDoxOyAgICAgICAgICAgICAgLyogICBDUE9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BIQToxOyAgICAgICAgICAgICAgLyogICBDUEhBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDTUQxIDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDTUQyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLREVOOjE7ICAgICAgICAgICAgLyogICBTQ0tERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0xOREVOOjE7ICAgICAgICAgICAgLyogICBTTE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BOREVOOjE7ICAgICAgICAgICAgLyogICBTUE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFNCRjoxOyAgICAgICAgICAgICAgLyogICBMU0JGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCOjQ7ICAgICAgICAgICAgICAgLyogICBTUEIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1NMS1A6MTsgICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BJTU9EOjI7ICAgICAgICAgICAgLyogICBTUElNT0QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BSVzoxOyAgICAgICAgICAgICAgLyogICBTUFJXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEVjoyOyAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BPTDoxOyAgICAgICAgICAgICAgLyogICBDUE9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BIQToxOyAgICAgICAgICAgICAgLyogICBDUEhBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDTUQyIDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BDTUQzICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLREVOOjE7ICAgICAgICAgICAgLyogICBTQ0tERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0xOREVOOjE7ICAgICAgICAgICAgLyogICBTTE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BOREVOOjE7ICAgICAgICAgICAgLyogICBTUE5ERU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFNCRjoxOyAgICAgICAgICAgICAgLyogICBMU0JGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCOjQ7ICAgICAgICAgICAgICAgLyogICBTUEIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1NMS1A6MTsgICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BJTU9EOjI7ICAgICAgICAgICAgLyogICBTUElNT0QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BSVzoxOyAgICAgICAgICAgICAgLyogICBTUFJXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEVjoyOyAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BPTDoxOyAgICAgICAgICAgICAgLyogICBDUE9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1BIQToxOyAgICAgICAgICAgICAgLyogICBDUEhBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BDTUQzIDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCRkNSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhSU1Q6MTsgICAgICAgICAgICAgLyogICBUWFJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhSU1Q6MTsgICAgICAgICAgICAgLyogICBSWFJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFhUUkc6MjsgICAgICAgICAgICAgLyogICBUWFRSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlhUUkc6MzsgICAgICAgICAgICAgLyogICBSWFRSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BCRkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCRENSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFhCQzo2IDsgICAgICAgICAgICAgLyogICBUWEJDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlhCQzo2OyAgICAgICAgICAgICAgLyogICBSWEJDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BCRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCTVVMMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gU1BCTVVMMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCTVVMMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gU1BCTVVMMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCTVVMMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gU1BCTVVMMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCTVVMMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gU1BCTVVMMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2ltcmxzIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBJTVJMUyAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUiAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1dSU1Q6MTsgICAgICAgICAgICAgICAgICAgLyogICBTV1JTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNVTUU6MTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU1VNRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RPUDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTVE9QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTRkU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNGRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVJTOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBBUlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEU0E6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIERTQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUUDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFUjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSUVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUkE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRSQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUkNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RQQ0xSOjE7ICAgICAgICAgICAgICAgICAgLyogICBTVFBDTFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRDTFI6MTsgICAgICAgICAgICAgICAgICAvKiAgIElOVENMUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVSQ0xSOjE7ICAgICAgICAgICAgICAgICAgLyogICBJRVJDTFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRSQUNMUjoxOyAgICAgICAgICAgICAgICAgIC8qICAgVFJBQ0xSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVFBFTkI6MTsgICAgICAgICAgICAgICAgICAvKiAgIFNUUEVOQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVEVOQjoxOyAgICAgICAgICAgICAgICAgIC8qICAgSU5URU5CICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVJFTkI6MTsgICAgICAgICAgICAgICAgICAvKiAgIElFUkVOQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJBRU5COjE7ICAgICAgICAgICAgICAgICAgLyogICBUUkFFTkIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1SICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5NOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTk0gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSUVNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUkFNOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRSQU0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRExQUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRExQOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBETFAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERMUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERMU0FSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERMU0E6MzI7ICAgICAgICAgICAgICAgICAgIC8qICAgRExTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETFNBUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTQVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERTQVI6MzI7ICAgICAgICAgICAgICAgICAgIC8qICAgRFNBUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0FSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFNUUjoxMzsgICAgICAgICAgICAgICAgICAgLyogICBEU1RSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERTVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTQVIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERTQVIyOjMyOyAgICAgICAgICAgICAgICAgIC8qICAgRFNBUjIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0FSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERMU0FSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERMU0EyOjMyOyAgICAgICAgICAgICAgICAgIC8qICAgRExTQTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETFNBUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUUklNUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENNOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBUQ00gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERVRFZNOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRFVEVk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEWERZTToxOyAgICAgICAgICAgICAgICAgICAvKiAgIERYRFlNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVVUT1NHOjE7ICAgICAgICAgICAgICAgICAgLyogICBBVVRPU0cgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFVVE9ERzoxOyAgICAgICAgICAgICAgICAgIC8qICAgQVVUT0RHICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCRkU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEJGRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1FOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBUTUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSSU1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJJTVNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDTVM6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgVENNUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEVURWTVM6MTsgICAgICAgICAgICAgICAgICAvKiAgIERVRFZNUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFhEWU1TOjE7ICAgICAgICAgICAgICAgICAgLyogICBEWERZTVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFVVE9TR1M6MTsgICAgICAgICAgICAgICAgIC8qICAgQVVUT1NHUyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBVVRPREdTOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFVVE9ER1MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkZFUzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBCRkVTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNRVM6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgVE1FUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUUklNU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSSU1DUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ01DOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRDTUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFVEVk1DOjE7ICAgICAgICAgICAgICAgICAgLyogICBEVURWTUMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERYRFlNQzoxOyAgICAgICAgICAgICAgICAgIC8qICAgRFhEWU1DICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBVVRPU0dDOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFVVE9TR0MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVVUT0RHQzoxOyAgICAgICAgICAgICAgICAgLyogICBBVVRPREdDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJGRUM6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQkZFQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTUVDOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRNRUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFJJTUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUUklDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENWOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUQ1YgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDVTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENVICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ1k6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRDWSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFJJQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVVkRQT1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRERQOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBERFAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVVkRQTzozOyAgICAgICAgICAgICAgICAgICAvKiAgIFVWRFBPICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVVZEUE9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVVNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VXOjEwOyAgICAgICAgICAgICAgICAgICAgLyogICBTVVcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVlc6MTA7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNWVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1VTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVlNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1ZTUjoxMDsgICAgICAgICAgICAgICAgICAgLyogICBTVlNSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNWU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhNSU5SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYTUlOOjEyOyAgICAgICAgICAgICAgICAgICAvKiAgIFhNSU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWE1JTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZTUlOUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWU1JTjoxMjsgICAgICAgICAgICAgICAgICAgLyogICBZTUlOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlNSU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWE1BWFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIwOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFhNQVg6MTI7ICAgICAgICAgICAgICAgICAgIC8qICAgWE1BWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBYTUFYUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlNQVhSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBZTUFYOjEyOyAgICAgICAgICAgICAgICAgICAvKiAgIFlNQVggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWU1BWFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBTVhTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQU1YUzoxMDsgICAgICAgICAgICAgICAgICAgLyogICBBTVhTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFNWFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQU1ZU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFNWVM6MTA7ICAgICAgICAgICAgICAgICAgIC8qICAgQU1ZUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBTVlTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFNWE9SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTVhPOjEwOyAgICAgICAgICAgICAgICAgICAvKiAgIEFNWE8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQU1YT1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBTVlPUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQU1ZTzoxMDsgICAgICAgICAgICAgICAgICAgLyogICBBTVlPICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFNWU9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTUFDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUVdTV1BJOjE7ICAgICAgICAgICAgICAgICAgLyogICBRV1NXUEkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFFXU1dQQzoxOyAgICAgICAgICAgICAgICAgIC8qICAgUVdTV1BDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU1BTToxOyAgICAgICAgICAgICAgICAgICAgLyogICBFTUFNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMV1NXQVA6MTsgICAgICAgICAgICAgICAgICAvKiAgIExXU1dBUCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE1BQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsyMzk2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExTUFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMU1BSOjEwOyAgICAgICAgICAgICAgICAgICAvKiAgIExTUFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTFNQUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMRVBSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTEVQUjoxMDsgICAgICAgICAgICAgICAgICAgLyogICBMRVBSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IExFUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTE1TUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExNU1I6MzsgICAgICAgICAgICAgICAgICAgIC8qICAgTE1TUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBMTVNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zZGcwIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU0RHMCAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjFfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR1NUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR1NUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RQTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RQTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0NLOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR0NLICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFBGOjM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRFBGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NSMV8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1NSXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dJRToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHREVGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1NSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0VORDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0VORCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENIRzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENIRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0xSXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExEOjg7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExEICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dMUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR1RGUl8wICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUT05FOjc7ICAgICAgICAgICAgICAgICAgICAgLyogICBUT05FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHVEZSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dTRlJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTRlM6ODsgICAgICAgICAgICAgICAgICAgICAgLyogICBTRlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHU0ZSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3NkZzEgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTREcxICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NSMV8xICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHU1Q6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBNOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVFBNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHQ0s6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHQ0sgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEUEY6MzsgICAgICAgICAgICAgICAgICAgICAgLyogICBEUEYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1IxXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDU1JfMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0lFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR0lFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dERUY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0dERUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDU1JfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NSMl8xICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHRU5EOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNHRU5EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0hHOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBUQ0hHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NSMl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHTFJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEQ6ODsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTEQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0xSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHVEZSXzEgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPTkU6NzsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRPTkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dURlJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR1NGUl8xICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNGUzo4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNGUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dTRlJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc2RnMiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNERzIgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IxXzIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dTVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUE06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUUE0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dDSzoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dDSyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERQRjozOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERQRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NTUl8yICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHSUU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0RFRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NTUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IyXzIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dFTkQ6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0dFTkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSEc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRDSEcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1IyXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dMUl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMRDo4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICBMRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHTFJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dURlJfMiAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9ORTo3OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVE9ORSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1RGUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHU0ZSXzIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0ZTOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0ZTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1NGUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zZGczIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU0RHMyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjFfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR1NUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR1NUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RQTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RQTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0NLOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR0NLICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFBGOjM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRFBGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NSMV8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1NSXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dJRToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHREVGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1NSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjJfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0VORDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0VORCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENIRzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENIRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0xSXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExEOjg7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExEICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dMUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR1RGUl8zICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUT05FOjc7ICAgICAgICAgICAgICAgICAgICAgLyogICBUT05FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHVEZSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dTRlJfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTRlM6ODsgICAgICAgICAgICAgICAgICAgICAgLyogICBTRlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHU0ZSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X21tYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBNTUMgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9DTURfU0VUICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQk9PVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQk9PVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRDo2OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIENNRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSVFlQOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBSVFlQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkJTWToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkJTWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENDU0VOOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIENDU0VOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBXREFUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBXREFUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFdFTjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgRFdFTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNTFRFOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIENNTFRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUQxMkVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBDTUQxMkVOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUklEWEM6MjsgICAgICAgICAgICAgICAgICAgIC8qICAgUklEWEMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJDUkM3QzoyOyAgICAgICAgICAgICAgICAgICAvKiAgIFJDUkM3QyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDMTZDOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDMTZDICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJPT1RBQ0s6MTsgICAgICAgICAgICAgICAgICAvKiAgIEJPT1RBQ0sgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUkNTVEU6MTsgICAgICAgICAgICAgICAgICAgLyogICBDUkNTVEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEJJVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVEJJVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9QRE06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRE0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1NIOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBDQ1NIICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERBVFc6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIERBVFcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQ01EX1NFVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfQVJHICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFSRzozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgQVJHICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9BUkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0FSR19DTUQxMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDMTJBUkc6MzI7ICAgICAgICAgICAgICAgICAvKiAgIEMxMkFSRyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQVJHX0NNRDEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9DTURfQ1RSTCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMwOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENDU0Q6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ0NTRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkVBSzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEJSRUFLICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQ01EX0NUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9CTE9DS19TRVQgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTEtDTlQ6MTY7ICAgICAgICAgICAgICAgICAgLyogICBCTEtDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkxLU0laOjE2OyAgICAgICAgICAgICAgICAgIC8qICAgQkxLU0laICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9CTE9DS19TRVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0NMS19DVFJMICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xLRU46MTsgICAgICAgICAgICAgICAgICAgLyogICBDTEtFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTEtESVY6NDsgICAgICAgICAgICAgICAgICAvKiAgIENMS0RJViAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSU1BUTzoyOyAgICAgICAgICAgICAgICAgIC8qICAgU1JTUFRPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUkJTWVRPOjQ7ICAgICAgICAgICAgICAgICAvKiAgIFNSQlNZVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1JXRFRPOjQ7ICAgICAgICAgICAgICAgICAgLyogICBTUldEVE8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDQ1NUTzo0OyAgICAgICAgICAgICAgICAgIC8qICAgU0NDU1RPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9DTEtfQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0JVRl9BQ0MgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBETUFXRU46MTsgICAgICAgICAgICAgICAgICAgLyogICBETUFXRU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRE1BUkVOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRE1BUkVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVVNXOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBCVVNXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRZUDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQVRZUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQlVGX0FDQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9SRVNQMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNQOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBSU1AgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX1JFU1AzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfUkVTUDIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTUDozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgUlNQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9SRVNQMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX1JFU1AxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSU1A6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJTUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfUkVTUDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9SRVNQMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNQOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBSU1AgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX1JFU1AwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfUkVTUF9DTUQxMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSU1AxMjozMjsgICAgICAgICAgICAgICAgICAvKiAgIFJTUDEyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfUkVTUF9DTUQxMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9EQVRBICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREFUQTozMjsgICAgICAgICAgICAgICAgICAgLyogICBEQVRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0RBVEE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0lOVCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1NERToxOyAgICAgICAgICAgICAgICAgICAgLyogICBDQ1NERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRDEyRFJFOjE7ICAgICAgICAgICAgICAgICAvKiAgIENNRDEyRFJFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUQxMlJCRToxOyAgICAgICAgICAgICAgICAgLyogICBDTUQxMlJCRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01EMTJDUkU6MTsgICAgICAgICAgICAgICAgIC8qICAgQ01EMTJDUkUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUUkFORToxOyAgICAgICAgICAgICAgICAgICAvKiAgIERUUkFORSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZSRToxOyAgICAgICAgICAgICAgICAgICAgLyogICBCVUZSRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlVGV0VOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQlVGV0VOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJVRlJFTjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEJVRlJFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1NSQ1Y6MTsgICAgICAgICAgICAgICAgICAgLyogICBDQ1NSQ1YgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJCU1lFOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJCU1lFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUlNQRToxOyAgICAgICAgICAgICAgICAgICAgLyogICBDUlNQRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01EVklPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ01EVklPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJVRlZJTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEJVRlZJTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV0RBVEVSUjoxOyAgICAgICAgICAgICAgICAgIC8qICAgV0RBVEVSUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJEQVRFUlI6MTsgICAgICAgICAgICAgICAgICAvKiAgIFJEQVRFUlIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSSURYRVJSOjE7ICAgICAgICAgICAgICAgICAgLyogICBSSURYRVJSICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQRVJSOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUlNQRVJSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1NUTzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBDQ1NUTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDU1RPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDU1RPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdEQVRUTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIFdEQVRUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSREFUVE86MTsgICAgICAgICAgICAgICAgICAgLyogICBSREFUVE8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkJTWVRPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUkJTWVRPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTUFRPOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJTUFRPICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfSU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9JTlRfRU4gICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNDU0RFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTUNDU0RFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQ01EMTJEUkU6MTsgICAgICAgICAgICAgICAgLyogICBNQ01EMTJEUkUgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNNRDEyUkJFOjE7ICAgICAgICAgICAgICAgIC8qICAgTUNNRDEyUkJFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DTUQxMkNSRToxOyAgICAgICAgICAgICAgICAvKiAgIE1DTUQxMkNSRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNRFRSQU5FOjE7ICAgICAgICAgICAgICAgICAgLyogICBNRFRSQU5FICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJVRlJFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTUJVRlJFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CVUZXRU46MTsgICAgICAgICAgICAgICAgICAvKiAgIE1CVUZXRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlVGUkVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBNQlVGUkVOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNDU1JDVjoxOyAgICAgICAgICAgICAgICAgIC8qICAgTUNDU1JDViAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNUkJTWUU6MTsgICAgICAgICAgICAgICAgICAgLyogICBNUkJTWUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNSU1BFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTUNSU1BFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DTURWSU86MTsgICAgICAgICAgICAgICAgICAvKiAgIE1DTURWSU8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlVGVklPOjE7ICAgICAgICAgICAgICAgICAgLyogICBNQlVGVklPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1XREFURVJSOjE7ICAgICAgICAgICAgICAgICAvKiAgIE1XREFURVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNUkRBVEVSUjoxOyAgICAgICAgICAgICAgICAgLyogICBNUkRBVEVSUiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVJJRFhFUlI6MTsgICAgICAgICAgICAgICAgIC8qICAgTVJJRFhFUlIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1SU1BFUlI6MTsgICAgICAgICAgICAgICAgICAvKiAgIE1SU1BFUlIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNDU1RPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTUNDU1RPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DUkNTVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIE1DUkNTVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNV0RBVFRPOjE7ICAgICAgICAgICAgICAgICAgLyogICBNV0RBVFRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVJEQVRUTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgTVJEQVRUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1SQlNZVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIE1SQlNZVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNUlNQVE86MTsgICAgICAgICAgICAgICAgICAgLyogICBNUlNQVE8gICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0lOVF9FTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfSE9TVF9TVFMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01EU0VROjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ01EU0VRICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRFNJRzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNRFNJRyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1BJRFg6NjsgICAgICAgICAgICAgICAgICAgLyogICBSU1BJRFggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREFUU0lHOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgREFUU0lHICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJDVkJMSzoxNjsgICAgICAgICAgICAgICAgICAvKiAgIFJDVkJMSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfSE9TVF9TVFMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9IT1NUX1NUUzIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUkNTVEU6MTsgICAgICAgICAgICAgICAgICAgLyogICBDUkNTVEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDMTZFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDMTZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDMTJDUkNFOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFDMTJDUkNFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1BDUkM3RToxOyAgICAgICAgICAgICAgICAgLyogICBSU1BDUkM3RSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDU1RFQkU6MTsgICAgICAgICAgICAgICAgIC8qICAgQ1JDU1RFQkUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJEQVRFQkU6MTsgICAgICAgICAgICAgICAgICAvKiAgIFJEQVRFQkUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQzEyUkVCRToxOyAgICAgICAgICAgICAgICAgLyogICBBQzEyUkVCRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQRUJFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUlNQRUJFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDMTJJRFhFOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFDMTJJRFhFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1BJRFhFOjE7ICAgICAgICAgICAgICAgICAgLyogICBSU1BJRFhFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlRBQ0tQQVRFOjE7ICAgICAgICAgICAgICAgIC8qICAgQlRBQ0tQQVRFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJUQUNLRUJFOjE7ICAgICAgICAgICAgICAgICAvKiAgIEJUQUNLRUJFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDU1Q6MzsgICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUQ0NTVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIFNUQ0NTVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVFJEQVRUTzoxOyAgICAgICAgICAgICAgICAgLyogICBTVFJEQVRUTyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREFUQlNZVE86MTsgICAgICAgICAgICAgICAgIC8qICAgREFUQlNZVE8gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQ1NUVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIENSQ1NUVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQzEyQlNZVE86MTsgICAgICAgICAgICAgICAgLyogICBBQzEyQlNZVE8gICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQQlNZVE86MTsgICAgICAgICAgICAgICAgIC8qICAgUlNQQlNZVE8gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDMTJSU1BUTzoxOyAgICAgICAgICAgICAgICAvKiAgIEFDMTJSU1BUTyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVFJTUFRPOjE7ICAgICAgICAgICAgICAgICAgLyogICBTVFJTUFRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlRBQ0tUTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgQlRBQ0tUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZTVEJUREFUVE86MTsgICAgICAgICAgICAgICAvKiAgIEZTVEJUREFUVE8gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVERBVFRPOjE7ICAgICAgICAgICAgICAgICAgLyogICBCVERBVFRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9IT1NUX1NUUzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJfMFsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9ETUFfTU9ERSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQVNFTDoxOyAgICAgICAgICAgICAgICAgIC8qICAgRE1BU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9ETUFfTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJfMVsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9ERVRFQ1QgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENEU0lHOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0RTSUcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRFJJU0U6MTsgICAgICAgICAgICAgICAgICAvKiAgIENEUklTRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RGQUxMOjE7ICAgICAgICAgICAgICAgICAgLyogICBDREZBTEwgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNQ0RSSVNFOjE7ICAgICAgICAgICAgICAgICAvKiAgIE1DRFJJU0UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUNERkFMTDoxOyAgICAgICAgICAgICAgICAgLyogICBNQ0RGQUxMICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9ERVRFQ1Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0FERF9NT0RFICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xLTUFJTjoxOyAgICAgICAgICAgICAgICAgLyogICBDTEtNQUlOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9BRERfTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9WRVJTSU9OICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTV1JTVDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTV1JTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZFUlNJT046MTY7ICAgICAgICAgICAgICAgICAvKiAgIFZFUlNJT04gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfVkVSU0lPTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfZHZkZWMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERWREVDICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFEQ0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ01PREU6MTsgICAgICAgICAgICAgICAgICAvKiAgIEFHQ01PREUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFEQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNSQ0xFRlQ6OTsgICAgICAgICAgICAgICAgICAvKiAgIFNSQ0xFRlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR0NSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNSQ1RPUDo2OyAgICAgICAgICAgICAgICAgICAvKiAgIFNSQ1RPUCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUkNIRUlHSFQ6MTA7ICAgICAgICAgICAgICAgLyogICBTUkNIRUlHSFQgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1JDV0lEVEg6MTE7ICAgICAgICAgICAgICAgIC8qICAgU1JDV0lEVEggICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWU5TQ1IxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExQRlZTWU5DOjM7ICAgICAgICAgICAgICAgICAvKiAgIExQRlZTWU5DICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMUEZIU1lOQzozOyAgICAgICAgICAgICAgICAgLyogICBMUEZIU1lOQyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZFTE9DSVRZU0hJRlRfSDo0OyAgICAgICAgICAvKiAgIFZFTE9DSVRZU0hJRlRfSCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMSUNFUk1PREVfSDoyOyAgICAgICAgICAgICAvKiAgIFNMSUNFUk1PREVfSCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMSUNFUk1PREVfVjoyOyAgICAgICAgICAgICAvKiAgIFNMSUNFUk1PREVfViAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5TQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZTlNDUjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNZTkNNQVhEVVRZX0g6NjsgICAgICAgICAgICAvKiAgIFNZTkNNQVhEVVRZX0ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DTUlORFVUWV9IOjY7ICAgICAgICAgICAgLyogICBTWU5DTUlORFVUWV9IICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZTlNDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lOU0NSMyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1NDTElQU0VMOjQ7ICAgICAgICAgICAgICAgIC8qICAgU1NDTElQU0VMICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTWU5DU0xJQ0VfSDoxMDsgICAgICAgICAgICAvKiAgIENTWU5DU0xJQ0VfSCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5TQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZTlNDUjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNZTkNNQVhEVVRZX1Y6NjsgICAgICAgICAgICAvKiAgIFNZTkNNQVhEVVRZX1YgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DTUlORFVUWV9WOjY7ICAgICAgICAgICAgLyogICBTWU5DTUlORFVUWV9WICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZTlNDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lOU0NSNSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWU1lOQ0RFTEFZOjE7ICAgICAgICAgICAgICAgLyogICBWU1lOQ0RFTEFZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVlNZTkNTTElDRTo1OyAgICAgICAgICAgICAgIC8qICAgVlNZTkNTTElDRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTWU5DU0xJQ0VfVjoxMDsgICAgICAgICAgICAvKiAgIENTWU5DU0xJQ0VfViAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5TQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhBRkNDUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSEFGQ0dBSU46NDsgICAgICAgICAgICAgICAgIC8qICAgSEFGQ0dBSU4gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDRlJFRVJVTjoxOyAgICAgICAgICAgICAgLyogICBIQUZDRlJFRVJVTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNUWVA6MTA7ICAgICAgICAgICAgICAgICAvKiAgIEhBRkNUWVAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSEFGQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQUZDQ1IyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNTVEFSVDo0OyAgICAgICAgICAgICAgICAvKiAgIEhBRkNTVEFSVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1gySE9TQzoxOyAgICAgICAgICAgICAgICAgLyogICBOT1gySE9TQyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRE9YMkhPU0M6MTsgICAgICAgICAgICAgICAgIC8qICAgRE9YMkhPU0MgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNNQVg6MTA7ICAgICAgICAgICAgICAgICAvKiAgIEhBRkNNQVggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSEFGQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQUZDQ1IzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNFTkQ6NDsgICAgICAgICAgICAgICAgICAvKiAgIEhBRkNFTkQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDTU9ERToyOyAgICAgICAgICAgICAgICAgLyogICBIQUZDTU9ERSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSEFGQ01JTjoxMDsgICAgICAgICAgICAgICAgIC8qICAgSEFGQ01JTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBIQUZDQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZDRFdDUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkNERlJFRVJVTjoxOyAgICAgICAgICAgICAgIC8qICAgVkNERlJFRVJVTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PVkNENTA6MTsgICAgICAgICAgICAgICAgICAvKiAgIE5PVkNENTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1ZDRDYwOjE7ICAgICAgICAgICAgICAgICAgLyogICBOT1ZDRDYwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkNEREVGQVVMVDoyOyAgICAgICAgICAgICAgIC8qICAgVkNEREVGQVVMVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZDRFdJTkRPVzo2OyAgICAgICAgICAgICAgICAvKiAgIFZDRFdJTkRPVyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQ0RPRkZTRVQ6NTsgICAgICAgICAgICAgICAgLyogICBWQ0RPRkZTRVQgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFZDRFdDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQTU9ERV9ZOjE7ICAgICAgICAgICAgICAgIC8qICAgRENQTU9ERV9ZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ1BDSEVDSzoxOyAgICAgICAgICAgICAgICAgLyogICBEQ1BDSEVDSyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJMQU5LTEVWRUxfWToxMDsgICAgICAgICAgICAvKiAgIEJMQU5LTEVWRUxfWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQTU9ERV9DOjE7ICAgICAgICAgICAgICAgIC8qICAgRENQTU9ERV9DICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTEFOS0xFVkVMX0NCOjY7ICAgICAgICAgICAgLyogICBCTEFOS0xFVkVMX0NCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkxBTktMRVZFTF9DUjo2OyAgICAgICAgICAgIC8qICAgQkxBTktMRVZFTF9DUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUFJFU1BPTlNFOjM7ICAgICAgICAgICAgICAvKiAgIERDUFJFU1BPTlNFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQU1RBUlQ6NjsgICAgICAgICAgICAgICAgIC8qICAgRENQU1RBUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUEVORDo2OyAgICAgICAgICAgICAgICAgICAvKiAgIERDUEVORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ1I2ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQV0lEVEg6NzsgICAgICAgICAgICAgICAgIC8qICAgRENQV0lEVEggICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUFBPU19ZOjg7ICAgICAgICAgICAgICAgICAvKiAgIERDUFBPU19ZICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ1I4ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ1BQT1NfQzo4OyAgICAgICAgICAgICAgICAgLyogICBEQ1BQT1NfQyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5TRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDRklOUFVUOjI7ICAgICAgICAgICAgICAgICAvKiAgIEFDRklOUFVUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNGTEFHVElNRTo1OyAgICAgICAgICAgICAgIC8qICAgQUNGTEFHVElNRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0ZGSUxURVI6MjsgICAgICAgICAgICAgICAgLyogICBBQ0ZGSUxURVIgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE5TRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlRMQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMT0NLUkFOR0U6MjsgICAgICAgICAgICAgICAgLyogICBMT0NLUkFOR0UgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9PUEdBSU46MjsgICAgICAgICAgICAgICAgIC8qICAgTE9PUEdBSU4gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPQ0tMSU1JVDoyOyAgICAgICAgICAgICAgICAvKiAgIExPQ0tMSU1JVCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ09GUkVFUlVOOjE7ICAgICAgICAgICAgICAgLyogICBCQ09GUkVFUlVOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFRkFVTFRTWVM6MjsgICAgICAgICAgICAgICAvKiAgIERFRkFVTFRTWVMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT05UU0MzNTg6MTsgICAgICAgICAgICAgICAgLyogICBOT05UU0MzNTggICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9OVFNDNDQzOjE7ICAgICAgICAgICAgICAgIC8qICAgTk9OVFNDNDQzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PUEFMTToxOyAgICAgICAgICAgICAgICAgICAvKiAgIE5PUEFMTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1BBTE46MTsgICAgICAgICAgICAgICAgICAgLyogICBOT1BBTE4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9QQUw0NDM6MTsgICAgICAgICAgICAgICAgIC8qICAgTk9QQUw0NDMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PU0VDQU06MTsgICAgICAgICAgICAgICAgICAvKiAgIE5PU0VDQU0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlRMQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCVEdQQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJHUENIRUNLOjE7ICAgICAgICAgICAgICAgICAvKiAgIEJHUENIRUNLICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCR1BXSURUSDo3OyAgICAgICAgICAgICAgICAgLyogICBCR1BXSURUSCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkdQU1RBUlQ6ODsgICAgICAgICAgICAgICAgIC8qICAgQkdQU1RBUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCVEdQQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFDQ0NSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgS0lMTEVST0ZGU0VUOjQ7ICAgICAgICAgICAgIC8qICAgS0lMTEVST0ZGU0VUICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNDTU9ERToxOyAgICAgICAgICAgICAgICAgIC8qICAgQUNDTU9ERSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDQ01BWEdBSU46MjsgICAgICAgICAgICAgICAvKiAgIEFDQ01BWEdBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0NMRVZFTDo5OyAgICAgICAgICAgICAgICAgLyogICBBQ0NMRVZFTCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFDQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUNDQ1IyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0hST01BU1VCR0FJTjoyOyAgICAgICAgICAgIC8qICAgQ0hST01BU1VCR0FJTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUk9NQU1BSU5HQUlOOjk7ICAgICAgICAgICAvKiAgIENIUk9NQU1BSU5HQUlOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFDQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUNDQ1IzICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0NSRVNQT05TRToyOyAgICAgICAgICAgICAgLyogICBBQ0NSRVNQT05TRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDQ1BSRUNJUzo2OyAgICAgICAgICAgICAgICAvKiAgIEFDQ1BSRUNJUyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLSUxMRVJNT0RFOjE7ICAgICAgICAgICAgICAgLyogICBLSUxMRVJNT0RFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgS0lMTEVSTEVWRUw6NjsgICAgICAgICAgICAgIC8qICAgS0lMTEVSTEVWRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFDQ0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElOVENSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUSU5UU1VCOjY7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UU1VCICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVElOVE1BSU46MTA7ICAgICAgICAgICAgICAgIC8qICAgVElOVE1BSU4gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSU5UQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExVTUFERUxBWTo1OyAgICAgICAgICAgICAgICAvKiAgIExVTUFERUxBWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0hST01BTFBGOjE7ICAgICAgICAgICAgICAgIC8qICAgQ0hST01BTFBGICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFTU9ETU9ERToyOyAgICAgICAgICAgICAgICAvKiAgIERFTU9ETU9ERSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNEQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBR0NDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBET1JFRFVDRToxOyAgICAgICAgICAgICAgICAgLyogICBET1JFRFVDRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9SRURVQ0U6MTsgICAgICAgICAgICAgICAgIC8qICAgTk9SRURVQ0UgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ1JFU1BPTlNFOjM7ICAgICAgICAgICAgICAvKiAgIEFHQ1JFU1BPTlNFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUdDTEVWRUw6OTsgICAgICAgICAgICAgICAgIC8qICAgQUdDTEVWRUwgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBR0NDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFHQ0NSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ1BSRUNJUzo2OyAgICAgICAgICAgICAgICAvKiAgIEFHQ1BSRUNJUyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFHQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEtMSU1JVENSICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRUFLTEVWRUw6MjsgICAgICAgICAgICAgICAgLyogICBQRUFLTEVWRUwgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVBS0FUVEFDSzoyOyAgICAgICAgICAgICAgIC8qICAgUEVBS0FUVEFDSyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFQUtSRUxFQVNFOjI7ICAgICAgICAgICAgICAvKiAgIFBFQUtSRUxFQVNFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVBS1JBVElPOjI7ICAgICAgICAgICAgICAgIC8qICAgUEVBS1JBVElPICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1BWFBFQUtTQU1QTEVTOjg7ICAgICAgICAgICAvKiAgIE1BWFBFQUtTQU1QTEVTICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBLTElNSVRDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdPUkNSMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkFESl9PX0xFVkVMMDoxMDsgICAgICAgICAgIC8qICAgUkFESl9PX0xFVkVMMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSR09SQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHT1JDUjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJBREpfVV9MRVZFTDA6MTA7ICAgICAgICAgICAvKiAgIFJBREpfVV9MRVZFTDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkdPUkNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSR09SQ1IzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQURKX09fTEVWRUwxOjEwOyAgICAgICAgICAgLyogICBSQURKX09fTEVWRUwxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJHT1JDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdPUkNSNCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkFESl9VX0xFVkVMMToxMDsgICAgICAgICAgIC8qICAgUkFESl9VX0xFVkVMMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSR09SQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHT1JDUjUgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJBREpfT19MRVZFTDI6MTA7ICAgICAgICAgICAvKiAgIFJBREpfT19MRVZFTDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkdPUkNSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSR09SQ1I2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQURKX1VfTEVWRUwyOjEwOyAgICAgICAgICAgLyogICBSQURKX1VfTEVWRUwyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJHT1JDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdPUkNSNyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVTVF9NT05JOjM7ICAgICAgICAgICAgICAgIC8qICAgVEVTVF9NT05JICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJBREpfTUlYX0tfRklYOjM7ICAgICAgICAgICAvKiAgIFJBREpfTUlYX0tfRklYICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVDTVBfU1c6MTsgICAgICAgICAgICAgICAgICAvKiAgIFVDTVBfU1cgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ01QX1NXOjE7ICAgICAgICAgICAgICAgICAgLyogICBEQ01QX1NXICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFdJREVfU1c6MTsgICAgICAgICAgICAgICAgIC8qICAgSFdJREVfU1cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSR09SQ1I3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRkNQRkNSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSERFVF9GSVg6MTsgICAgICAgICAgICAgICAgLyogICBQSERFVF9GSVggICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBIREVUX0RJVjozOyAgICAgICAgICAgICAgICAvKiAgIFBIREVUX0RJViAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUZDUEZDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVVBEQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5FV1NFVFRJTkc6MTsgICAgICAgICAgICAgICAvKiAgIE5FV1NFVFRJTkcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJVUERDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVlNZTkNTUiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSENPVU5UX0w6MTsgICAgICAgICAgICAgICAgLyogICBGSENPVU5UX0wgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkhMT0NLOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRkhMT0NLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElTTk9JU1k6MTsgICAgICAgICAgICAgICAgICAvKiAgIElTTk9JU1kgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSE1PREU6MTsgICAgICAgICAgICAgICAgICAgLyogICBGSE1PREUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9TSUdOQUw6MTsgICAgICAgICAgICAgICAgIC8qICAgTk9TSUdOQUwgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZWTE9DSzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEZWTE9DSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGVk1PREU6MTsgICAgICAgICAgICAgICAgICAgLyogICBGVk1PREUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5URVJMQUNFRDoxOyAgICAgICAgICAgICAgIC8qICAgSU5URVJMQUNFRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZWQ09VTlQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIEZWQ09VTlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVlNZTkNTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIU1lOQ1NSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZIQ09VTlRfSDoxNjsgICAgICAgICAgICAgICAvKiAgIEZIQ09VTlRfSCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSFNZTkNTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BTUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENMQU1QTEVWRUxfQ0I6NjsgICAgICAgICAgICAvKiAgIENMQU1QTEVWRUxfQ0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTEFNUExFVkVMX1k6MTA7ICAgICAgICAgICAgLyogICBDTEFNUExFVkVMX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQU1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BTUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENMQU1QTEVWRUxfQ1I6NjsgICAgICAgICAgICAvKiAgIENMQU1QTEVWRUxfQ1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUFNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5TRFNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNGU1RSRU5HVEg6MTY7ICAgICAgICAgICAgIC8qICAgQUNGU1RSRU5HVEggKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTlNEU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQVNSMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENPTE9SU1lTOjI7ICAgICAgICAgICAgICAgICAvKiAgIENPTE9SU1lTICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGU0NNT0RFOjE7ICAgICAgICAgICAgICAgICAgLyogICBGU0NNT0RFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlNDTE9DSzoxOyAgICAgICAgICAgICAgICAgIC8qICAgRlNDTE9DSyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PQlVSU1Q6MTsgICAgICAgICAgICAgICAgICAvKiAgIE5PQlVSU1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0NTVUJHQUlOOjI7ICAgICAgICAgICAgICAgLyogICBBQ0NTVUJHQUlOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNDTUFJTkdBSU46OTsgICAgICAgICAgICAgIC8qICAgQUNDTUFJTkdBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTUFTUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQVNSMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU1NFQ0FNOjE7ICAgICAgICAgICAgICAgICAgLyogICBJU1NFQ0FNICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVNQQUw6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVNQQUwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElTTlRTQzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElTTlRTQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9DS0xFVkVMOjg7ICAgICAgICAgICAgICAgIC8qICAgTE9DS0xFVkVMICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQVNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZTkNTU1IgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElTUkVEVUNFRDoxOyAgICAgICAgICAgICAgICAvKiAgIElTUkVEVUNFRCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ0RFUFRIOjEwOyAgICAgICAgICAgICAgIC8qICAgU1lOQ0RFUFRIICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5DU1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFHQ0NTUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSElHSFNBTVBMRVM6ODsgICAgICAgICAgICAgIC8qICAgSElHSFNBTVBMRVMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRUFLU0FNUExFUzo4OyAgICAgICAgICAgICAgLyogICBQRUFLU0FNUExFUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBR0NDU1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFHQ0NTUjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ0NPTlZFUkdFOjE7ICAgICAgICAgICAgICAvKiAgIEFHQ0NPTlZFUkdFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUdDR0FJTjo4OyAgICAgICAgICAgICAgICAgIC8qICAgQUdDR0FJTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBR0NDU1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMTRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzkwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDU0NSMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzE1OjQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgSzE1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsxMzo2OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIEsxMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMTE6NjsgICAgICAgICAgICAgICAgICAgICAgLyogICBLMTEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1I0ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMTY6NDsgICAgICAgICAgICAgICAgICAgICAgLyogICBLMTYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzE0OjY7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgSzE0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsxMjo2OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIEsxMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNTQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsyMkE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEsyMkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzIxQTo2OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSzIxQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDU0NSNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzIyQjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSzIyQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMjFCOjY7ICAgICAgICAgICAgICAgICAgICAgLyogICBLMjFCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1I3ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMjNCOjQ7ICAgICAgICAgICAgICAgICAgICAgLyogICBLMjNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzIzQTo0OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSzIzQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMjQ6NTsgICAgICAgICAgICAgICAgICAgICAgLyogICBLMjQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1I4ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQlBGX05BUlJPVzoxOyAgICAgICAgICAgICAgLyogICBIQlBGX05BUlJPVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhWQlBGX05BUlJPVzoxOyAgICAgICAgICAgICAvKiAgIEhWQlBGX05BUlJPVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhCUEYxXzlUQVBfT046MTsgICAgICAgICAgICAvKiAgIEhCUEYxXzlUQVBfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVkJQRjFfOVRBUF9PTjoxOyAgICAgICAgICAgLyogICBIVkJQRjFfOVRBUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhGSUxfVEFQX1NFTDoxOyAgICAgICAgICAgICAvKiAgIEhGSUxfVEFQX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNTQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFVDJfT046MTsgICAgICAgICAgICAgICAgICAvKiAgIERFVDJfT04gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFNFTF9NSVhfWTo0OyAgICAgICAgICAgICAgIC8qICAgSFNFTF9NSVhfWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZTRUxfTUlYX1k6NDsgICAgICAgICAgICAgICAvKiAgIFZTRUxfTUlYX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVlNFTF9NSVhfWTo0OyAgICAgICAgICAgICAgLyogICBIVlNFTF9NSVhfWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjExICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWX1lfTEVWRUw6OTsgICAgICAgICAgICAgICAgLyogICBWX1lfTEVWRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNTQ1IxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjEyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFVDJfTUlYX0M6NDsgICAgICAgICAgICAgICAvKiAgIERFVDJfTUlYX0MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVQyX01JWF9ZOjQ7ICAgICAgICAgICAgICAgLyogICBERVQyX01JWF9ZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl9NT0RFXzJEOjI7ICAgICAgICAgICAgIC8qICAgRklMMl9NT0RFXzJEICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfTkFSUk9XXzJEOjE7ICAgICAgICAgICAvKiAgIEZJTDJfTkFSUk9XXzJEICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsxMDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSOSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENMUF9IT0xEX09OX1k6MTsgICAgICAgICAgICAvKiAgIENMUF9IT0xEX09OX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTFBfSE9MRF9PTl9DQjoxOyAgICAgICAgICAgLyogICBDTFBfSE9MRF9PTl9DQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENMUF9IT0xEX09OX0NSOjE7ICAgICAgICAgICAvKiAgIENMUF9IT0xEX09OX0NSICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GMDoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0YxICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjE6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0YyOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0YyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0YyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjMgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GMzoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0Y0ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjQ6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0Y1OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0Y1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0Y1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjYgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GNjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0Y3ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjc6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0Y4OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0Y4ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0Y4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GMDoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0YxICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjE6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0YyOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0YyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0YyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjMgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GMzoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0Y0ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjQ6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0Y1OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0Y1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0Y1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjYgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GNjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0Y3ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjc6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0Y4OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0Y4ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0Y4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GMDoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0YxICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjE6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0YyOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0YyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0YyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjMgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GMzoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0Y0ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjQ6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0Y1OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0Y1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0Y1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjYgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GNjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0Y3ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjc6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0Y4OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0Y4ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0Y4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GMDoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0YxICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjE6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0YyOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0YyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0YyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjMgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GMzoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0Y0ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjQ6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0Y1OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0Y1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0Y1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjYgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GNjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0Y3ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjc6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0Y4OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0Y4ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0Y4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbMzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlHQUlOQ1IgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFlfR0FJTjI6MTA7ICAgICAgICAgICAgICAgICAvKiAgIFlfR0FJTjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUdBSU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQkdBSU5DUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQl9HQUlOMjoxMDsgICAgICAgICAgICAgICAgLyogICBDQl9HQUlOMiAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENCR0FJTkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JHQUlOQ1IgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JfR0FJTjI6MTA7ICAgICAgICAgICAgICAgIC8qICAgQ1JfR0FJTjIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUkdBSU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzEyMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQR0FfVVBEQVRFICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQR0FfVkVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBQR0FfVkVOICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBHQV9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdBQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEdBX0dBSU5fU0VMOjE7ICAgICAgICAgICAgIC8qICAgUEdBX0dBSU5fU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEdBX0dBSU46NTsgICAgICAgICAgICAgICAgIC8qICAgUEdBX0dBSU4gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdBQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRENDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBRENfVklOU0VMOjE7ICAgICAgICAgICAgICAgLyogICBBRENfVklOU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFEQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3ViYyB7CQkJCQkJCQkvKiBzdHJ1Y3QgVUJDICAgKi8NCi0JdW5pb24gewkJCQkJCQkJCS8qIEJBUjAgICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCQTBfOjMyOwkJCQkvKiAgIEJBMF8gICAgICAgKi8NCi0JCX0gQklUOwkJCQkJCQkJLyogICAgICAgICAgICAgICovDQotCX0gQkFSMDsJCQkJCQkJCQkvKiAgICAgICAgICAgICAgKi8NCi0JdW5pb24gewkJCQkJCQkJCS8qIEJBTVIwICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCQU0wXzozMjsJCQkJLyogICBCQU0wXyAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCQU1SMDsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJEUjAgICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCRDBfOjMyOwkJCQkvKiAgIEJEMF8gICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJEUjA7DQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCRE1SMCAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkRNMF86MzI7CQkJCS8qICAgQkRNMF8gICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQkRNUjA7DQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCQVIxICAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkExXzozMjsJCQkJLyogICBCQTFfICAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCQVIxOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkFNUjEgICAgICAgICovDQotCQlfVURXT1JEIExPTkc7CQkJCQkJLyogIExvbmcgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVURXT1JEIEJBTTFfOjMyOwkJCQkvKiAgIEJBTTFfICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJBTVIxOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkRSMSAgICAgICAgICovDQotCQlfVURXT1JEIExPTkc7CQkJCQkJLyogIExvbmcgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVURXT1JEIEJEMV86MzI7CQkJCS8qICAgQkQxXyAgICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQkRSMTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJETVIxICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCRE0xXzozMjsJCQkJLyogICBCRE0xXyAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCRE1SMTsNCi0JX1VCWVRFIHdrMFsxMjhdOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkJSMCAgICAgICAgICovDQotCQlfVVdPUkQgV09SRDsJCQkJCQkvKiAgV29yZCBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VV09SRCA6MjsNCi0JCQlfVVdPUkQgVUJJRDA6MTsJCQkJCS8qICAgVUJJRDAgICAgICAqLw0KLQkJCV9VV09SRCBEQkUwOjE7CQkJCQkvKiAgIERCRTAgICAgICAgKi8NCi0JCQlfVVdPUkQgOjI7CQkJCQkJLyogICAgICAgICAgICAgICovDQotCQkJX1VXT1JEIENQMF86MjsJCQkJCS8qICAgQ1AwXyAgICAgICAqLw0KLQkJCV9VV09SRCBDRDBfOjI7CQkJCQkvKiAgIENEMF8gICAgICAgKi8NCi0JCQlfVVdPUkQgSUQwXzoyOwkJCQkJLyogICBJRDBfICAgICAgICovDQotCQkJX1VXT1JEIFJXMF86MjsJCQkJCS8qICAgUlcwXyAgICAgICAqLw0KLQkJCV9VV09SRCBTWjBfOjI7CQkJCQkvKiAgIFNaMF8gICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJCUjA7DQotCV9VQllURSB3azFbMTRdOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkJSMSAgICAgICAgICovDQotCQlfVVdPUkQgV09SRDsJCQkJCQkvKiAgV29yZCBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VV09SRCA6MjsJCQkJCQkvKiAgICAgICAgICAgICAgKi8NCi0JCQlfVVdPUkQgVUJJRDE6MTsJCQkJCS8qICAgVUJJRDEgICAgICAqLw0KLQkJCV9VV09SRCBEQkUxOjE7CQkJCQkvKiAgIERCRTEgICAgICAgKi8NCi0JCQlfVVdPUkQgOjI7CQkJCQkJLyogICAgICAgICAgICAgICovDQotCQkJX1VXT1JEIENQMV86MjsJCQkJCS8qICAgQ1AxXyAgICAgICAqLw0KLQkJCV9VV09SRCBDRDFfOjI7CQkJCQkvKiAgIENEMV8gICAgICAgKi8NCi0JCQlfVVdPUkQgSUQxXzoyOwkJCQkJLyogICBJRDFfICAgICAgICovDQotCQkJX1VXT1JEIFJXMV86MjsJCQkJCS8qICAgUlcxXyAgICAgICAqLw0KLQkJCV9VV09SRCBTWjFfOjI7CQkJCQkvKiAgIFNaMV8gICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJCUjE7DQotCV9VQllURSB3azJbMTRdOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQlJDUiAgICAgICAgICovDQotCQlfVURXT1JEIExPTkc7CQkJCQkJLyogIExvbmcgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVURXT1JEIDoxMjsJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQkJCV9VRFdPUkQgVVRPRDE6MTsJCQkJLyogICBVVE9EMSAgICAgICAqLw0KLQkJCV9VRFdPUkQgVVRPRDA6MTsJCQkJLyogICBVVE9EMCAgICAgICAqLw0KLQkJCV9VRFdPUkQgQ0tTOjI7CQkJCQkvKiAgIENLUyAgICAgICAgKi8NCi0JCQlfVURXT1JEIFNDTUZDMDoxOwkJCQkvKiAgIFNDTUZDMCAgICAgKi8NCi0JCQlfVURXT1JEIFNDTUZDMToxOwkJCQkvKiAgIFNDTUZDMSAgICAgKi8NCi0JCQlfVURXT1JEIFNDTUZEMDoxOwkJCQkvKiAgIFNDTUZEMCAgICAgKi8NCi0JCQlfVURXT1JEIFNDTUZEMToxOwkJCQkvKiAgIFNDTUZEMSAgICAgKi8NCi0JCQlfVURXT1JEIDo1OwkJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQkJCV9VRFdPUkQgUENCMToxOwkJCQkJLyogICBQQ0IxICAgICAgICovDQotCQkJX1VEV09SRCBQQ0IwOjE7CQkJCQkvKiAgIFBDQjAgICAgICAgKi8NCi0JCQlfVURXT1JEIDo1OwkJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQlJDUjsNCi19Ow0KLXN0cnVjdCBzdF9kaXNjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRElTQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTUNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFJVOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ01QUlUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QUjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBDTVBSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTVNUUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFNUOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ01QU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNU1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01DTFNUUiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBDTFNUOjE7ICAgICAgICAgICAgICAgICAvKiAgIENNUENMU1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTUNMU1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNSUVOUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QSUVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBDTVBJRU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01JRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01QTVIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBCVDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNUEJUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QREZBOjg7ICAgICAgICAgICAgICAgICAgLyogICBDTVBERkEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUERBVUY6MTsgICAgICAgICAgICAgICAgIC8qICAgQ01QREFVRiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QU0VMUDo0OyAgICAgICAgICAgICAgICAgLyogICBDTVBTRUxQICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01QTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTUVDUkNSICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QRUNSQzozMjsgICAgICAgICAgICAgICAgLyogICBDTVBFQ1JDICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01FQ1JDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTUNDUkNSICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QQ0NSQzozMjsgICAgICAgICAgICAgICAgLyogICBDTVBDQ1JDICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01DQ1JDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTVNQWFIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFNQWDoxMTsgICAgICAgICAgICAgICAgIC8qICAgQ01QU1BYICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNU1BYUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01TUFlSICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBTUFk6MTE7ICAgICAgICAgICAgICAgICAvKiAgIENNUFNQWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTVNQWVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNU1pYUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QU1pYOjExOyAgICAgICAgICAgICAgICAgLyogICBDTVBTWlggICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01TWlhSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTVNaWVIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFNaWToxMTsgICAgICAgICAgICAgICAgIC8qICAgQ01QU1pZICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNU1pZUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01DUkNJUiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSQ0lOSTozMjsgICAgICAgICAgICAgICAgIC8qICAgQ1JDSU5JICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNQ1JDSVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9qY3UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSkNVICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNNT0QgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFNQOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRFNQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJFRFU6MzsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJFRFUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNNT0Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0NNRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJSU1Q6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSkVORDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSkVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEpSU1Q6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEpSU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBKU1JUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBKU1JUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpDQ01EOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMF8wWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDUVROICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFFUMzoyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFFUMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBRVDI6MjsgICAgICAgICAgICAgICAgICAgICAgLyogICBRVDIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUVQxOjI7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUVQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ1FUTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFROICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhUQTM6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhUQTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIVEQzOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBIVEQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFRBMjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFRBMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhURDI6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhURDIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIVEExOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBIVEExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFREMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFREMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0hUTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDRFJJVSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFJJVTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgRFJJVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RSSVU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDRFJJRCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFJJRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgRFJJRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RSSUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDVlNaVSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlNaVTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVlNaVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ1ZTWlU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDVlNaRCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlNaRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVlNaRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ1ZTWkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFNaVSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFNaVTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFNaVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0hTWlU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFNaRCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFNaRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFNaRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0hTWkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDRFRDVSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRENVOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRENVICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RUQ1U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDRFRDTSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRENNOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRENNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RUQ007ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDRFRDRCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRENEOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRENEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RUQ0Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJTlRFMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5UNzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOVDY6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTlQ1OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQ1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOVDM6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJTlRFMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklOVFMwICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5TNjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5TNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOUzU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOUzUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5TMzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5TMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklOVFMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RFUlIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUlI6NDsgICAgICAgICAgICAgICAgICAgICAgLyogICBFUlIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpDREVSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNSU1QgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlNUOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ1JTVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbNDZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZFQ05UICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSk9VVFJJTkk6MTsgICAgICAgICAgICAgICAgLyogICBKT1VUUklOSSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpPVVRSQ01EOjE7ICAgICAgICAgICAgICAgIC8qICAgSk9VVFJDTUQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKT1VUQzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEpPVVRDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpPVVRTV0FQOjM7ICAgICAgICAgICAgICAgIC8qICAgSk9VVFNXQVAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElOUklOSToxOyAgICAgICAgICAgICAgICAgLyogICBESU5SSU5JICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJTlJDTUQ6MTsgICAgICAgICAgICAgICAgIC8qICAgRElOUkNNRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBESU5MQzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIERJTkxDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJTlNXQVA6MzsgICAgICAgICAgICAgICAgIC8qICAgRElOU1dBUCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZFQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkVTQSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVTQTozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgRVNBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZFU0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkVTT0ZTVCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFU01XOjE1OyAgICAgICAgICAgICAgICAgICAvKiAgIEVTTVcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRVNPRlNUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZFREEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFREE6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVEQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRURBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZFU0xDICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElORVM6MTY7ICAgICAgICAgICAgICAgICAgLyogICBMSU5FUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkVTTEM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRUREQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpEQVRBUzoxNjsgICAgICAgICAgICAgICAgIC8qICAgSkRBVEFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZFRERDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkRDTlQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWSU5URVI6MjsgICAgICAgICAgICAgICAgICAvKiAgIFZJTlRFUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSElOVEVSOjI7ICAgICAgICAgICAgICAgICAgLyogICBISU5URVIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRjoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgT1BGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSklOUklOSToxOyAgICAgICAgICAgICAgICAgLyogICBKSU5SSU5JICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpJTlJDTUQ6MTsgICAgICAgICAgICAgICAgIC8qICAgSklOUkNNRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKSU5DOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIEpJTkMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpJTlNXQVA6MzsgICAgICAgICAgICAgICAgIC8qICAgSklOU1dBUCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE9VVFJJTkk6MTsgICAgICAgICAgICAgICAgLyogICBET1VUUklOSSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPVVRSQ01EOjE7ICAgICAgICAgICAgICAgIC8qICAgRE9VVFJDTUQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1VUTEM6MTsgICAgICAgICAgICAgICAgICAvKiAgIERPVVRMQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPVVRTV0FQOjM7ICAgICAgICAgICAgICAgIC8qICAgRE9VVFNXQVAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZEQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERTQTozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgRFNBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZEU0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkRET0ZTVCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBERE1XOjE1OyAgICAgICAgICAgICAgICAgICAvKiAgIERETVcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRERPRlNUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZEREEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEREE6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIEREQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRERBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZEU0RDICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkRBVEFTOjE2OyAgICAgICAgICAgICAgICAgLyogICBKREFUQVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkRTREM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRERMQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkVTOjE2OyAgICAgICAgICAgICAgICAgIC8qICAgTElORVMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZERExDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkRBRFQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTFBIQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEFMUEhBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGREFEVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzI0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklOVEUxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENCVEVOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0JURU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBESU5MRU46MTsgICAgICAgICAgICAgICAgICAvKiAgIERJTkxFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSk9VVEVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBKT1VURU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEQlRFTjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIERCVEVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSklORU46MTsgICAgICAgICAgICAgICAgICAgLyogICBKSU5FTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPVVRMRU46MTsgICAgICAgICAgICAgICAgIC8qICAgRE9VVExFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSU5URTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJTlRTMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQlRGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIENCVEYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElOTEY6MTsgICAgICAgICAgICAgICAgICAgLyogICBESU5MRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpPVVRGOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSk9VVEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREJURjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBEQlRGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpJTkY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSklORiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1VUTEY6MTsgICAgICAgICAgICAgICAgICAvKiAgIERPVVRMRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklOVFMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzEwOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEpDUVRCTDBbNjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNRVEJMMCAgICAgICovDQotICAgICAgIF9VQllURSBKQ1FUQkwxWzY0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDUVRCTDEgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSkNRVEJMMls2NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ1FUQkwyICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEpDUVRCTDNbNjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNRVEJMMyAgICAgICovDQotICAgICAgIF9VQllURSBKQ0hUQkQwWzI4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFRCRDAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEpDSFRCQTBbMTc4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNIVEJBMCAgICAgICovDQotICAgICAgIF9VQllURSB3azhbNDZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSkNIVEJEMVsyOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hUQkQxICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBKQ0hUQkExWzE3OF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFRCQTEgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc3BpYnNjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNQSUJTQyAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTU5DUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNRDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1EICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMzoyOyAgICAgICAgICAgICAgICAgIC8qICAgTU9JSU8zICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzI6MjsgICAgICAgICAgICAgICAgICAvKiAgIE1PSUlPMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU9JSU8xOjI7ICAgICAgICAgICAgICAgICAgLyogICBNT0lJTzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMDoyOyAgICAgICAgICAgICAgICAgIC8qICAgTU9JSU8wICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTzNGVjoyOyAgICAgICAgICAgICAgICAgICAvKiAgIElPM0ZWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU8yRlY6MjsgICAgICAgICAgICAgICAgICAgLyogICBJTzJGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTzBGVjoyOyAgICAgICAgICAgICAgICAgICAvKiAgIElPMEZWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQSEFUOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1BIQVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUEhBUjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENQSEFSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NMUDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTU0xQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQT0w6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlNaOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBCU1ogICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNTkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NMRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEzOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQTkRMOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0xOREw6MzsgICAgICAgICAgICAgICAgICAgLyogICBTTE5ETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0tETDozOyAgICAgICAgICAgICAgICAgICAvKiAgIFNDS0RMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NMRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUEJDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BCUjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEJSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkRWOjI7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEUkNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkJVUlNUOjQ7ICAgICAgICAgICAgICAgICAgLyogICBSQlVSU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQ0Y6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJDRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkJFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBSQkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xFOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNTTEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEUkNNUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01EOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ01EOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9DTUQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJDTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEUkVBUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUFWOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBFQVYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQUM6MzsgICAgICAgICAgICAgICAgICAgICAvKiAgIEVBQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJFQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEUk9QUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRDMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJPUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEUkVOUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREI6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIENEQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0NEQjoyOyAgICAgICAgICAgICAgICAgICAgLyogICBPQ0RCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREI6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFEQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREI6MjsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJEQjoyOyAgICAgICAgICAgICAgICAgICAgLyogICBEUkRCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIENERSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREU6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgT0NERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREU6NDsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFERSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BERTo0OyAgICAgICAgICAgICAgICAgICAgLyogICBPUERFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEUkVOUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xLUDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIFNTTEtQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSVJFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BJUkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElXRToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFNQSVdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJRToxOyAgICAgICAgICAgICAgICAgICAgLyogICBTUElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01DTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0NNRDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPQ01EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01BRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURSOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBBRFIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01PUFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNT1BSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01FTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RCOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBDREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREI6MjsgICAgICAgICAgICAgICAgICAgIC8qICAgT0NEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURCOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBBREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERCOjI7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QREIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSURCOjI7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BJREIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBDREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RFOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9DREUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURFOjQ7ICAgICAgICAgICAgICAgICAgICAgLyogICBBREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREU6NDsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElERTo0OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQSURFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01FTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01SRFIwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEQVRBMDozMjsgICAgICAgICAgICAgICAgIC8qICAgUkRBVEEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTVJEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNUkRSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSREFUQTE6MzI7ICAgICAgICAgICAgICAgICAvKiAgIFJEQVRBMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01SRFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTVdEUjAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV0RBVEEwOjMyOyAgICAgICAgICAgICAgICAgLyogICBXREFUQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNV0RSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01XRFIxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdEQVRBMTozMjsgICAgICAgICAgICAgICAgIC8qICAgV0RBVEExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTVdEUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNTlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNTTEYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVORDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNTlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotCSNpZgkwDQotI2RlZmluZSBDUEcgKCoodm9sYXRpbGUgc3RydWN0IHN0X2NwZyAqKTB4RkZGRTAwMTApICAgIC8qIENQRyBBZGRyZXNzICAqLw0KLSNkZWZpbmUgSU5UQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaW50YyAqKTB4RkZGRTA4MDApICAvKiBJTlRDIEFkZHJlc3MgKi8NCi0JI2VuZGlmDQotI2RlZmluZSBDQ05UICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9jY250ICopMHhGRkZDMTAwMCkgIC8qIENDTlQgQWRkcmVzcyAqLw0KLQkjaWYJMA0KLSNkZWZpbmUgQlNDICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9ic2MgKikweEZGRkMwMDAwKSAgICAvKiBCU0MgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIERNQUMgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWMgKikweEZGRkUxMDAwKSAgLyogRE1BQyBBZGRyZXNzICovDQotCSNlbmRpZg0KLQkjaWYJMA0KLSNkZWZpbmUgTVRVMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfbXR1MiAqKTB4RkZGRTQwMDApICAvKiBNVFUyIEFkZHJlc3MgKi8NCi0JI2VuZGlmDQotI2RlZmluZSBDTVQgKCoodm9sYXRpbGUgc3RydWN0IHN0X2NtdCAqKTB4RkZGRUMwMDApICAgIC8qIENNVCBBZGRyZXNzICAqLw0KLSNkZWZpbmUgV0RUICgqKHZvbGF0aWxlIHVuaW9uICB1bl93ZHQgKikweEZGRkUwMDAwKSAgICAvKiBXRFQgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIFJUQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcnRjICopMHhGRkZFNjAwMCkgICAgLyogUlRDIEFkZHJlc3MgICovDQotCSNpZgkwDQotI2RlZmluZSBTQ0lGMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZjAyMzQ2ICopMHhFODAwNzAwMCkvKiBTQ0lGMCBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZjE1NyAqKTB4RTgwMDc4MDApLyogU0NJRjEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjIgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYwMjM0NiAqKTB4RTgwMDgwMDApLyogU0NJRjIgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYwMjM0NiAqKTB4RTgwMDg4MDApLyogU0NJRjMgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjQgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYwMjM0NiAqKTB4RTgwMDkwMDApLyogU0NJRjQgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjUgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYxNTcgKikweEU4MDA5ODAwKS8qIFNDSUY1IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY2ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMDIzNDYgKikweEU4MDBBMDAwKS8qIFNDSUY2IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY3ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMTU3ICopMHhFODAwQTgwMCkvKiBTQ0lGNyBBZGRyZXNzICovDQotCSNlbmRpZg0KLSNkZWZpbmUgUlNQSTAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JzcGkgKikweEU4MDBFMDAwKSAgLyogUlNQSTAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUlNQSTEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JzcGkgKikweEU4MDBFODAwKSAgLyogUlNQSTEgQWRkcmVzcyAqLw0KLQkjaWYJMA0KLSNkZWZpbmUgSUlDM18wICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9paWMzICopMHhGRkZFRTAwMCkvKiBJSUMzXzAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSUlDM18xICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9paWMzICopMHhGRkZFRTQwMCkvKiBJSUMzXzEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSUlDM18yICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9paWMzICopMHhGRkZFRTgwMCkvKiBJSUMzXzIgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSUlDM18zICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9paWMzICopMHhGRkZFRUMwMCkvKiBJSUMzXzMgQWRkcmVzcyAqLw0KLQkjZW5kaWYNCi0jZGVmaW5lIFNTSUYwICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zc2lmICopMHhGRkZGMDAwMCkvKiBTU0lGMCBBZGRyZXNzICovDQotI2RlZmluZSBTU0lGMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3NpZiAqKTB4RkZGRjA4MDApLyogU1NJRjEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1NJRjIgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NzaWYgKikweEZGRkYxMDAwKS8qIFNTSUYyIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNTSUYzICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zc2lmICopMHhGRkZGMTgwMCkvKiBTU0lGMyBBZGRyZXNzICovDQotI2RlZmluZSBTU0lGNCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3NpZiAqKTB4RkZGRjIwMDApLyogU1NJRjQgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1NJRjUgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NzaWYgKikweEZGRkYyODAwKS8qIFNTSUY1IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNJT0YgKCoodm9sYXRpbGUgc3RydWN0IHN0X3Npb2YgKikweEZGRkY0ODAwKSAgLyogU0lPRiBBZGRyZXNzICovDQotI2RlZmluZSBSQ0FOMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmNhbiAqKTB4RkZGRTUwMDApIC8qIFJDQU4wIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJDQU4xICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yY2FuICopMHhGRkZFNTgwMCkgLyogUkNBTjEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUkNBTjIgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JjYW4gKikweEZGRkVEODAwKSAvKiBSQ0FOMiBBZGRyZXNzICovDQotI2RlZmluZSBJRUIgKCoodm9sYXRpbGUgc3RydWN0IHN0X2llYiAqKTB4RkZGRUYwMDApICAgIC8qIElFQiBBZGRyZXNzICAqLw0KLSNkZWZpbmUgU1BESUYgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NwZGlmICopMHhFODAxMjAwMCkvKiBTUERJRiBBZGRyZXNzICovDQotI2RlZmluZSBST01ERUMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JvbWRlYyAqKTB4RTgwMDUwMDApLyogUk9NREVDIEFkZHJlc3MgKi8NCi0JI2lmIDAgLyogT2xkIEFEQyBpb2RlZmluZSAqLw0KLSNkZWZpbmUgQURDICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9hZGMgKikweEU4MDA1ODAwKSAgICAvKiBBREMgQWRkcmVzcyAgKi8NCi0JI2VuZGlmLyogT2xkIEFEQyBpb2RlZmluZSAqLw0KLSNkZWZpbmUgRkxDVEwgKCoodm9sYXRpbGUgc3RydWN0IHN0X2ZsY3RsICopMHhGRkZGNDAwMCkvKiBGTENUTCBBZGRyZXNzICovDQotCSNpZgkwDQotI2RlZmluZSBVU0IgKCoodm9sYXRpbGUgc3RydWN0IHN0X3VzYiAqKTB4RTgwMTAwMDApICAgIC8qIFVTQiBBZGRyZXNzICAqLw0KLQkjZW5kaWYNCi0jZGVmaW5lIFZEQzQgKCoodm9sYXRpbGUgc3RydWN0IHN0X3ZkYzQgKikweEZGRkY3NDAwKSAgLyogVkRDNCBBZGRyZXNzICovDQotI2RlZmluZSBTUkMwICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcmMgKikweEZGRkU3MDAwKSAgLyogU1JDMCBBZGRyZXNzICovDQotI2RlZmluZSBTUkMxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcmMgKikweEZGRkU3ODAwKSAgLyogU1JDMSBBZGRyZXNzICovDQotI2RlZmluZSBTUkMyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcmMgKikweEZGRkU4MDAwKSAgLyogU1JDMiBBZGRyZXNzICovDQotCSNpZgkwDQotI2RlZmluZSBQT1JUICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9ncGlvICopMHhGRkZFMzgxMCkgIC8qIEdQSU8gQWRkcmVzcyAqLw0KLQkjZW5kaWYNCi0jZGVmaW5lIEhVREkgKCoodm9sYXRpbGUgc3RydWN0IHN0X2h1ZGkgKikweEZGRkUyMDAwKSAgLyogSFVESSBBZGRyZXNzICovDQotI2RlZmluZSBQV00gKCoodm9sYXRpbGUgc3RydWN0IHN0X3B3bSAqKTB4RkZGRUY0MDYpICAgIC8qIFBXTSBBZGRyZXNzICAqLw0KLSNkZWZpbmUgUVNQSTAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3Jxc3BpICopMHhFODAzMzgwMCkgIC8qIFJRU1BJMCBBZGRyZXNzICovDQotI2RlZmluZSBRU1BJMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcnFzcGkgKikweEU4MDM0MDAwKSAgLyogUlFTUEkxIEFkZHJlc3MgKi8NCi0jZGVmaW5lIElNUkxTICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9pbXJscyAqKTB4RkZGRjMwMDgpLyogSU1STFMgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0RHMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2RnMCAqKTB4RkZGRUM4MDApICAvKiBTREcwIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNERzEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NkZzEgKikweEZGRkVDQTAwKSAgLyogU0RHMSBBZGRyZXNzICovDQotI2RlZmluZSBTREcyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zZGcyICopMHhGRkZFQ0MwMCkgIC8qIFNERzIgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0RHMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2RnMyAqKTB4RkZGRUNFMDApICAvKiBTREczIEFkZHJlc3MgKi8NCi0jZGVmaW5lIE1NQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfbW1jICopMHhFODAzMDgwMCkgICAgLyogTU1DIEFkZHJlc3MgICovDQotI2RlZmluZSBEVkRFQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZHZkZWMgKikweEZGRkZBMDA4KS8qIERWREVDIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFVCQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfdWJjICopMHhGRkZDMDQwMCkgICAgLyogVUJDIEFkZHJlc3MgICovDQotI2RlZmluZSBESVNDICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kaXNjICopMHhGRkZGQTgwMCkgIC8qIERJU0MgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSkNVICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9qY3UgKikweEU4MDE3MDAwKSAgICAvKiBKQ1UgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIFNQSUJTQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3BpYnNjICopMHhGRkZDMUMwMCkvKiBTUElCU0MgQWRkcmVzcyAqLw0KLQ0KLQ0KLS8qID09PT0gaW5jbHVkZXMgZWFjaCBpb2RlZmluZSA9PT09ICovDQotI2luY2x1ZGUgInVzYl9pb2RlZmluZS5oIgkJCS8qIGZvciBVU0IgbW9kdWxlICovDQotI2luY2x1ZGUgInNjaWZfaW9kZWZpbmUuaCIJCQkvKiBmb3IgU0NJRiBtb2R1bGUgKi8NCi0jaW5jbHVkZSAicGZjX2lvZGVmaW5lLmgiCQkJLyogZm9yIFBGQyBtb2R1bGUgKi8NCi0jaW5jbHVkZSAiYnNjX2lvZGVmaW5lLmgiCQkJLyogZm9yIEJTQyBtb2R1bGUgKi8NCi0jaW5jbHVkZSAiY3BnX2lvZGVmaW5lLmgiCQkJLyogZm9yIENQRyBtb2R1bGUgKi8NCi0vLyNpbmNsdWRlICJkbWFjX2lvZGVmaW5lLmgiCQkJLyogZm9yIERNQUMgbW9kdWxlICovDQotI2luY2x1ZGUgImludGNfaW9kZWZpbmUuaCIJCQkvKiBmb3IgSU5UQyBtb2R1bGUgKi8NCi0jaW5jbHVkZSAib3N0bV9pb2RlZmluZS5oIgkJCS8qIGZvciBPU1RNIG1vZHVsZSAqLw0KLSNpbmNsdWRlICJyaWljX2lvZGVmaW5lLmgiCQkJLyogZm9yIFJJSUMgbW9kdWxlICovDQotI2luY2x1ZGUgInBycl9pb2RlZmluZS5oIgkJCS8qIGZvciCQu5Vpg2+BW4NXg4eDk4OMg1eDWINeICovDQotI2luY2x1ZGUgInNwaWJzY19pb2RlZmluZS5oIgkJLyogZm9yIFNQSUJTQyBtb2R1bGUgKi8NCi0jaW5jbHVkZSAibXR1Ml9pb2RlZmluZS5oIgkJCS8qIGZvciBNVFUyIG1vZHVsZSAqLw0KLQ0KLSNlbmRpZiAvKiBfSU9ERUZJTkVfSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2JzY19pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9ic2NfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzZWFlMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2JzY19pb2RlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICAgOiBic2NfaW9kZWZpbmUuaA0KLSogVmVyc2lvbiAgICAgICA6IDAuMDENCi0qIERldmljZShzKSAgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotKiAgICAgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSB2ZWNvdHIucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi0qICAgICAgICAgOiAyNy4wNy4yMDEyIDAuMDEJCY5RjWyOkZe/gUZzZWMwOF9CU0NfMjAxMjA2MTUuZG9jICEhIVRPU0NPUm6CyY5kl2yPkYLJgsiCooNyg2KDZ5a8gqCC6CEhIQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX0JTQ19JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fQlNDX0lPREVGSU5FX0hfXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1NuQkNSICAgICAgICovDQotICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlNaOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBCU1ogICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFlQRTozOyAgICAgICAgICAgICAgICAgICAgLyogICBUWVBFICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSUlM6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JSUyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSUkQ6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JSRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSV1M6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JXUyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSV0Q6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JXRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdXOjM7ICAgICAgICAgICAgICAgICAgICAgLyogICBJV1cgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBDU25CQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SbiAgICAgICovDQotICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgeHh4OjE2OyAgICAgICAgICAgICAgICAgICAgLyogICB4eHggICAgICAgICovCS8qICEhIYNyg2KDZ5a8jIiS6I6fkeaBQZLoi2CCt4LpISEhICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBUT1NDT1JuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2JzYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEJTQyAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01OQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJWkNOVDoxOyAgICAgICAgICAgLyogICBISVpDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJWk1FTToxOyAgICAgICAgICAgLyogICBISVpNRU0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERQUlRZOjI7ICAgICAgICAgICAgLyogICBEUFJUWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMMDoxOyAgICAgICAgICAgICAgLyogICBBTDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRMMDoxOyAgICAgICAgICAgICAgLyogICBUTDAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01OQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzBCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwQkNSICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzFCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MxQkNSICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzJCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyQkNSICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzNCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzQkNSICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzRCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0QkNSICAgICAgICovDQotICAgICAgIENTbkJDUiBDUzVCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1QkNSICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzBXQ1IoQlJPTV9BU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCU1Q6MjsgICAgICAgLyogICBCU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fQVNZOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSKEJST01fU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTQ7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fU1k7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MwV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MxV0NSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MxV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzJXQ1IoU0RSQU0pICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBMkNMOjI7ICAgICAgLyogICBBMkNMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFNEUkFNOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MyV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzNXQ1IoU0RSQU0pICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJDOjI7ICAgICAgLyogICBXVFJDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUldMOjI7ICAgICAgLyogICBUUldMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBM0NMOjI7ICAgICAgLyogICBBM0NMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJDRDoyOyAgICAgLyogICBXVFJDRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVFJQOjI7ICAgICAgLyogICBXVFJQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFNEUkFNOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MzV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdXOjM7ICAgICAgICAvKiAgIFdXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzRXQ1IoQlJPTV9BU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCU1Q6MjsgICAgICAgLyogICBCU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fQVNZOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1M0V0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1V0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1V0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdXOjM7ICAgICAgICAvKiAgIFdXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1QWFdCQVM6MTsgICAvKiAgIE1QWFcvQkFTICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNaU0VMOjE7ICAgICAvKiAgIFNaU0VMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUzVXQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTRENSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNDT0w6MjsgICAgICAgICAgICAvKiAgIEEzQ09MICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNST1c6MjsgICAgICAgICAgICAvKiAgIEEzUk9XICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkFDVFY6MTsgICAgICAgICAgICAvKiAgIEJBQ1RWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUERPV046MTsgICAgICAgICAgICAvKiAgIFBET1dOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUk1PREU6MTsgICAgICAgICAgICAvKiAgIFJNT0RFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkZTSDoxOyAgICAgICAgICAgICAvKiAgIFJGU0ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREVFUDoxOyAgICAgICAgICAgICAvKiAgIERFRVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJDT0w6MjsgICAgICAgICAgICAvKiAgIEEyQ09MICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJST1c6MjsgICAgICAgICAgICAvKiAgIEEyUk9XICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlJDOjM7ICAgICAgICAgICAgICAvKiAgIFJSQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0tTOjM7ICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JRToxOyAgICAgICAgICAgICAvKiAgIENNSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01GOjE7ICAgICAgICAgICAgICAvKiAgIENNRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENOVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENPUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1IwICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1IxICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1IyICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1IzICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1I0ICAgICAgKi8NCi0gICAgICAgVE9TQ09SbiBUT1NDT1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NDT1I1ICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT1NUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MwVE9TVEY6MTsgICAgICAgICAvKiAgIENTMFRPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MxVE9TVEY6MTsgICAgICAgICAvKiAgIENTMVRPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MyVE9TVEY6MTsgICAgICAgICAvKiAgIENTMlRPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MzVE9TVEY6MTsgICAgICAgICAvKiAgIENTM1RPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1M0VE9TVEY6MTsgICAgICAgICAvKiAgIENTNFRPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1M1VE9TVEY6MTsgICAgICAgICAvKiAgIENTNVRPU1RGICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI2OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUT1NUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0VOUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MwVE9FTjoxOyAgICAgICAgICAvKiAgIENTMFRPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MxVE9FTjoxOyAgICAgICAgICAvKiAgIENTMVRPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MyVE9FTjoxOyAgICAgICAgICAvKiAgIENTMlRPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1MzVE9FTjoxOyAgICAgICAgICAvKiAgIENTM1RPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1M0VE9FTjoxOyAgICAgICAgICAvKiAgIENTNFRPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1M1VE9FTjoxOyAgICAgICAgICAvKiAgIENTNVRPRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI2OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUT0VOUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lCUJTQwkJKCoodm9sYXRpbGUgc3RydWN0IHN0X2JzYyAqKTB4M0ZGRkMwMDApICAgLyogQlNDIEFkZHJlc3MgKi8NCi0NCi0NCi0jZW5kaWYgLyogX19CU0NfSU9ERUZJTkVfSF9fICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2NwZ19pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9jcGdfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM0MDM2Mi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2NwZ19pb2RlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICAgOiBjcGdfaW9kZWZpbmUuaA0KLSogVmVyc2lvbiAgICAgICA6IDAuMDENCi0qIERldmljZShzKSAgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotKiAgICAgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSB2ZWNvdHIucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi0qICAgICAgICAgOiAyNy4wNy4yMDEyIDAuMDEJCY5RjWyOkZe/gUZSWl9BMUhfMDVKXzEyMTAxMF8xMS5wZGYNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19DUEdfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX0NQR19JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF9jcGcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBDUEcgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZSUUNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElGQzoyOyAgICAgICAgICAgICAgIC8qICAgSUZDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLT0VOOjI7ICAgICAgICAgICAgIC8qICAgQ0tPRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLT0VOMjoxOyAgICAgICAgICAgIC8qICAgQ0tPRU4yICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZSUUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZSUUNSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdGQzoyOyAgICAgICAgICAgICAgIC8qICAgR0ZDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZSUUNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENQVVNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElTQlVTWTA6MTsgICAgICAgICAgIC8qICAgSVNCVVNZMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENQVVNUUzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFRVA6MTsgICAgICAgICAgICAgIC8qICAgREVFUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlk6MTsgICAgICAgICAgICAgIC8qICAgU1RCWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAyMDoxOyAgICAgICAgICAgIC8qICAgTVNUUDIwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhJWjoxOyAgICAgICAgICAgICAgIC8qICAgSElaICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzExXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQlJFUTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMTA6MTsgICAgICAgICAgIC8qICAgU1RCUlExMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMTM6MTsgICAgICAgICAgIC8qICAgU1RCUlExMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMTU6MTsgICAgICAgICAgIC8qICAgU1RCUlExNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQlJFUTE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQlJFUTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjA6MTsgICAgICAgICAgIC8qICAgU1RCUlEyMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjE6MTsgICAgICAgICAgIC8qICAgU1RCUlEyMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjI6MTsgICAgICAgICAgIC8qICAgU1RCUlEyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjM6MTsgICAgICAgICAgIC8qICAgU1RCUlEyMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjQ6MTsgICAgICAgICAgIC8qICAgU1RCUlEyNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjU6MTsgICAgICAgICAgIC8qICAgU1RCUlEyNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjY6MTsgICAgICAgICAgIC8qICAgU1RCUlEyNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQlJRMjc6MTsgICAgICAgICAgIC8qICAgU1RCUlEyNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQlJFUTI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzExXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkFDSzEgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMTA6MTsgICAgICAgICAgIC8qICAgU1RCQUsxMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMTM6MTsgICAgICAgICAgIC8qICAgU1RCQUsxMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMTU6MTsgICAgICAgICAgIC8qICAgU1RCQUsxNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkFDSzE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkFDSzIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjA6MTsgICAgICAgICAgIC8qICAgU1RCQUsyMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjE6MTsgICAgICAgICAgIC8qICAgU1RCQUsyMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjI6MTsgICAgICAgICAgIC8qICAgU1RCQUsyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjM6MTsgICAgICAgICAgIC8qICAgU1RCQUsyMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjQ6MTsgICAgICAgICAgIC8qICAgU1RCQUsyNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjU6MTsgICAgICAgICAgIC8qICAgU1RCQUsyNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjY6MTsgICAgICAgICAgIC8qICAgU1RCQUsyNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQkFLMjc6MTsgICAgICAgICAgIC8qICAgU1RCQUsyNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkFDSzI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4Wzk1NV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1FMDoxOyAgICAgICAgICAgIC8qICAgVlJBTUUwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1FMToxOyAgICAgICAgICAgIC8qICAgVlJBTUUxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1FMjoxOyAgICAgICAgICAgIC8qICAgVlJBTUUyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1FMzoxOyAgICAgICAgICAgIC8qICAgVlJBTUUzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1FNDoxOyAgICAgICAgICAgIC8qICAgVlJBTUU0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1XRTA6MTsgICAgICAgICAgIC8qICAgVlJBTVdFMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1XRTE6MTsgICAgICAgICAgIC8qICAgVlJBTVdFMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1XRTI6MTsgICAgICAgICAgIC8qICAgVlJBTVdFMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1XRTM6MTsgICAgICAgICAgIC8qICAgVlJBTVdFMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZSQU1XRTQ6MTsgICAgICAgICAgIC8qICAgVlJBTVdFNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NSMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1XRTA6MTsgICAgICAgICAgIC8qICAgUlJBTVdFMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1XRTE6MTsgICAgICAgICAgIC8qICAgUlJBTVdFMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1XRTI6MTsgICAgICAgICAgIC8qICAgUlJBTVdFMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1XRTM6MTsgICAgICAgICAgIC8qICAgUlJBTVdFMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyM107ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzMDoxOyAgICAgICAgICAgIC8qICAgTVNUUDMwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzMjoxOyAgICAgICAgICAgIC8qICAgTVNUUDMyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzMzoxOyAgICAgICAgICAgIC8qICAgTVNUUDMzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzNDoxOyAgICAgICAgICAgIC8qICAgTVNUUDM0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzNToxOyAgICAgICAgICAgIC8qICAgTVNUUDM1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzNjoxOyAgICAgICAgICAgIC8qICAgTVNUUDM2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAzNzoxOyAgICAgICAgICAgIC8qICAgTVNUUDM3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0MDoxOyAgICAgICAgICAgIC8qICAgTVNUUDQwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0MToxOyAgICAgICAgICAgIC8qICAgTVNUUDQxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0MjoxOyAgICAgICAgICAgIC8qICAgTVNUUDQyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDQzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDQ0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0NToxOyAgICAgICAgICAgIC8qICAgTVNUUDQ1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDQ2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA0NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDQ3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1MDoxOyAgICAgICAgICAgIC8qICAgTVNUUDUwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1MToxOyAgICAgICAgICAgIC8qICAgTVNUUDUxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1MjoxOyAgICAgICAgICAgIC8qICAgTVNUUDUyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDUzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDU0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1NToxOyAgICAgICAgICAgIC8qICAgTVNUUDU1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDU2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA1NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDU3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSNTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2MDoxOyAgICAgICAgICAgIC8qICAgTVNUUDYwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2MToxOyAgICAgICAgICAgIC8qICAgTVNUUDYxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2MjoxOyAgICAgICAgICAgIC8qICAgTVNUUDYyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDYzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDY0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2NToxOyAgICAgICAgICAgIC8qICAgTVNUUDY1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDY2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA2NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDY3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSNjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3MDoxOyAgICAgICAgICAgIC8qICAgTVNUUDcwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3MToxOyAgICAgICAgICAgIC8qICAgTVNUUDcxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDczICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDc0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDc2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA3NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDc3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSNzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSOCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4MToxOyAgICAgICAgICAgIC8qICAgTVNUUDgxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDgzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDg0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4NToxOyAgICAgICAgICAgIC8qICAgTVNUUDg1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDg2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA4NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDg3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSODsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxN1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSOSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5MDoxOyAgICAgICAgICAgIC8qICAgTVNUUDYwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5MToxOyAgICAgICAgICAgIC8qICAgTVNUUDYxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5MjoxOyAgICAgICAgICAgIC8qICAgTVNUUDYyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5MzoxOyAgICAgICAgICAgIC8qICAgTVNUUDYzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5NDoxOyAgICAgICAgICAgIC8qICAgTVNUUDY0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5NToxOyAgICAgICAgICAgIC8qICAgTVNUUDY1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5NjoxOyAgICAgICAgICAgIC8qICAgTVNUUDY2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFA5NzoxOyAgICAgICAgICAgIC8qICAgTVNUUDY3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSOTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDA6MTsgICAgICAgICAgIC8qICAgTVNUUDEwMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDE6MTsgICAgICAgICAgIC8qICAgTVNUUDEwMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDI6MTsgICAgICAgICAgIC8qICAgTVNUUDEwMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDM6MTsgICAgICAgICAgIC8qICAgTVNUUDEwMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDQ6MTsgICAgICAgICAgIC8qICAgTVNUUDEwNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDU6MTsgICAgICAgICAgIC8qICAgTVNUUDEwNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDY6MTsgICAgICAgICAgIC8qICAgTVNUUDEwNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMDc6MTsgICAgICAgICAgIC8qICAgTVNUUDEwNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTA6MTsgICAgICAgICAgIC8qICAgTVNUUDExMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTE6MTsgICAgICAgICAgIC8qICAgTVNUUDExMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTI6MTsgICAgICAgICAgIC8qICAgTVNUUDExMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTM6MTsgICAgICAgICAgIC8qICAgTVNUUDExMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTQ6MTsgICAgICAgICAgIC8qICAgTVNUUDExNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMTU6MTsgICAgICAgICAgIC8qICAgTVNUUDExNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQkNSMTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMjA6MTsgICAgICAgICAgIC8qICAgTVNUUDEyMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMjE6MTsgICAgICAgICAgIC8qICAgTVNUUDEyMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMjI6MTsgICAgICAgICAgIC8qICAgTVNUUDEyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1TVFAxMjM6MTsgICAgICAgICAgIC8qICAgTVNUUDEyMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQkNSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMVsyN107ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNXUlNUQ1IxICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxMToxOyAgICAgICAgICAgIC8qICAgU1JTVDExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxMjoxOyAgICAgICAgICAgIC8qICAgU1JTVDEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxMzoxOyAgICAgICAgICAgIC8qICAgU1JTVDEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxNDoxOyAgICAgICAgICAgIC8qICAgU1JTVDE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxNToxOyAgICAgICAgICAgIC8qICAgU1JTVDE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QxNjoxOyAgICAgICAgICAgIC8qICAgU1JTVDE2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFYVEFMRToxOyAgICAgICAgICAgIC8qICAgQVhUQUxFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNXUlNUQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNXUlNUQ1IyICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyMToxOyAgICAgICAgICAgIC8qICAgU1JTVDIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyMjoxOyAgICAgICAgICAgIC8qICAgU1JTVDIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyMzoxOyAgICAgICAgICAgIC8qICAgU1JTVDIzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyNDoxOyAgICAgICAgICAgIC8qICAgU1JTVDI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyNToxOyAgICAgICAgICAgIC8qICAgU1JTVDI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyNjoxOyAgICAgICAgICAgIC8qICAgU1JTVDI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QyNzoxOyAgICAgICAgICAgIC8qICAgU1JTVDI3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNXUlNUQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syM1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNXUlNUQ1IzICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzMToxOyAgICAgICAgICAgIC8qICAgU1JTVDMxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzMjoxOyAgICAgICAgICAgIC8qICAgU1JTVDMyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzMzoxOyAgICAgICAgICAgIC8qICAgU1JTVDMzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzNDoxOyAgICAgICAgICAgIC8qICAgU1JTVDM0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzNToxOyAgICAgICAgICAgIC8qICAgU1JTVDM1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1QzNjoxOyAgICAgICAgICAgIC8qICAgU1JTVDM2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNXUlNUQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syNFszXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNXUlNUQ1I0ICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1Q0MDoxOyAgICAgICAgICAgIC8qICAgU1JTVDQwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSU1Q0MToxOyAgICAgICAgICAgIC8qICAgU1JTVDQxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNXUlNUQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syNVs3MDU0N107ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJSQU1LUCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1LUDA6MTsgICAgICAgICAgIC8qICAgUlJBTUtQMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1LUDE6MTsgICAgICAgICAgIC8qICAgUlJBTUtQMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1LUDI6MTsgICAgICAgICAgIC8qICAgUlJBTUtQMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJSQU1LUDM6MTsgICAgICAgICAgIC8qICAgUlJBTUtQMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJSQU1LUDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syNlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTQ1RSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJBTUJPT1Q6MTsgICAgICAgICAgIC8qICAgUkFNQk9PVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVCVVNLRUVQRToxOyAgICAgICAgIC8qICAgRUJVU0tFRVBFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERTQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syN1sxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTU1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4XzI6MTsgICAgICAgICAgICAgIC8qICAgUDhfMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA5XzE6MTsgICAgICAgICAgICAgIC8qICAgUDlfMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzE1OjE7ICAgICAgICAgICAgIC8qICAgUDJfMTUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA3Xzg6MTsgICAgICAgICAgICAgIC8qICAgUDdfOCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA1Xzk6MTsgICAgICAgICAgICAgIC8qICAgUDVfOSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzQ6MTsgICAgICAgICAgICAgIC8qICAgUDZfNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUQ0FSOjE7ICAgICAgICAgICAgIC8qICAgUlRDQVIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSToxOyAgICAgICAgICAgICAgIC8qICAgTk1JICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzM6MTsgICAgICAgICAgICAgIC8qICAgUDNfMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4Xzc6MTsgICAgICAgICAgICAgIC8qICAgUDhfNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzEyOjE7ICAgICAgICAgICAgIC8qICAgUDJfMTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzE6MTsgICAgICAgICAgICAgIC8qICAgUDNfMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzk6MTsgICAgICAgICAgICAgIC8qICAgUDNfOSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzI6MTsgICAgICAgICAgICAgIC8qICAgUDZfMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERTU1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTRVNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4XzJFOjE7ICAgICAgICAgICAgIC8qICAgUDhfMkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA5XzFFOjE7ICAgICAgICAgICAgIC8qICAgUDlfMUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzE1RToxOyAgICAgICAgICAgIC8qICAgUDJfMTVFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA3XzhFOjE7ICAgICAgICAgICAgIC8qICAgUDdfOEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA1XzlFOjE7ICAgICAgICAgICAgIC8qICAgUDVfOUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzRFOjE7ICAgICAgICAgICAgIC8qICAgUDZfNEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSUU6MTsgICAgICAgICAgICAgIC8qICAgTk1JRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzNFOjE7ICAgICAgICAgICAgIC8qICAgUDNfM0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4XzdFOjE7ICAgICAgICAgICAgIC8qICAgUDhfN0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzEyRToxOyAgICAgICAgICAgIC8qICAgUDJfMTJFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzFFOjE7ICAgICAgICAgICAgIC8qICAgUDNfMUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzlFOjE7ICAgICAgICAgICAgIC8qICAgUDNfOUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzJFOjE7ICAgICAgICAgICAgIC8qICAgUDZfMkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERTRVNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERTRlIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4XzJGOjE7ICAgICAgICAgICAgIC8qICAgUDhfMkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA5XzFGOjE7ICAgICAgICAgICAgIC8qICAgUDlfMUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzE1RjoxOyAgICAgICAgICAgIC8qICAgUDJfMTVGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA3XzhGOjE7ICAgICAgICAgICAgIC8qICAgUDdfOEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA1XzlGOjE7ICAgICAgICAgICAgIC8qICAgUDVfOUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzRGOjE7ICAgICAgICAgICAgIC8qICAgUDZfNEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUQ0FSRjoxOyAgICAgICAgICAgIC8qICAgUlRDQVJGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSUY6MTsgICAgICAgICAgICAgIC8qICAgTk1JRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzNGOjE7ICAgICAgICAgICAgIC8qICAgUDNfM0YgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA4XzdGOjE7ICAgICAgICAgICAgIC8qICAgUDhfN0YgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAyXzEyRjoxOyAgICAgICAgICAgIC8qICAgUDJfMTJGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzFGOjE7ICAgICAgICAgICAgIC8qICAgUDNfMUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFAzXzlGOjE7ICAgICAgICAgICAgIC8qICAgUDNfOUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFA2XzJGOjE7ICAgICAgICAgICAgIC8qICAgUDZfMkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElPS0VFUDoxOyAgICAgICAgICAgIC8qICAgSU9LRUVQICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERTRlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syOFs2XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhUQUxDVFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEdBSU4wOjE7ICAgICAgICAgICAgIC8qICAgR0FJTjAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEdBSU4xOjE7ICAgICAgICAgICAgIC8qICAgR0FJTjEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFhUQUxDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUgQ1BHICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9jcGcgKikweEZDRkUwMDEwKSAgICAvKiBDUEcgQWRkcmVzcyAgKi8NCi0NCi0NCi0jZW5kaWYgLyogX19DUEdfSU9ERUZJTkVfSF9fICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2RtYWNfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvZG1hY19pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjA1MGUzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvZG1hY19pb2RlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgRElTQ0xBSU1FUg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5IA0KLSogICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4NCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyIA0KLSogICBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKg0KLSogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyANCi0qICAgUkVHQVJESU5HIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIA0KLSogICBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIA0KLSogICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgDQotKiAgIERJU0NMQUlNRUQuDQotKg0KLSogICBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTIA0KLSogICBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUgDQotKiAgIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgDQotKiAgIEZPUiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUw0KLSogICBBRkZJTElBVEVTIEhBVkUgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKg0KLSogICBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIA0KLSogICBzb2Z0d2FyZSBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLg0KLSogICBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLCB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIA0KLSogICBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUgZm9sbG93aW5nIGxpbms6IA0KLSogICBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRlY2huaWNhbCByZWZlcmVuY2UgZGF0YSAqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBTeXN0ZW0gTmFtZSA6IA0KLSogICBGaWxlIE5hbWUgICA6IGRtYWNfaW9kZWZpbmUuaA0KLSogICBBYnN0cmFjdCAgICA6IA0KLSogICBWZXJzaW9uICAgICA6IDEuMDAuMDANCi0qICAgRGV2aWNlICAgICAgOiBBUk0NCi0qICAgVG9vbC1DaGFpbiAgOiANCi0qICAgT1MgICAgICAgICAgOiBOb25lDQotKiAgIEgvVyBQbGF0Zm9ybTogDQotKiAgIERlc2NyaXB0aW9uIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgSGlzdG9yeSAgICAgOiBNYXIuMDYsMjAxMiBWZXIuMS4wMC4wMA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX0RNQUNfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX0RNQUNfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfZG1hY19uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMFNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0E6MzI7ICAgICAgICAgICAgICAvKiAgIFNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMFNBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMERBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREE6MzI7ICAgICAgICAgICAgICAvKiAgIERBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMERBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEI6MzI7ICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMFRCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMVNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0E6MzI7ICAgICAgICAgICAgICAvKiAgIFNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMVNBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMURBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREE6MzI7ICAgICAgICAgICAgICAvKiAgIERBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMURBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOMVRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEI6MzI7ICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOMVRCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUlNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1JTQTozMjsgICAgICAgICAgICAvKiAgIENSU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUlNBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUkRBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1JEQTozMjsgICAgICAgICAgICAvKiAgIENSREEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUkRBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUlRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1JUQjozMjsgICAgICAgICAgICAvKiAgIENSVEIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUlRCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSFNUQVQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU46MTsgICAgICAgICAgICAgICAvKiAgIEVOICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlFTVDoxOyAgICAgICAgICAgICAvKiAgIFJRU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEFDVDoxOyAgICAgICAgICAgICAvKiAgIFRBQ1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTOjE7ICAgICAgICAgICAgICAvKiAgIFNVUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI6MTsgICAgICAgICAgICAgICAvKiAgIEVSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EOjE7ICAgICAgICAgICAgICAvKiAgIEVORCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM6MTsgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1I6MTsgICAgICAgICAgICAgICAvKiAgIFNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREw6MTsgICAgICAgICAgICAgICAvKiAgIERMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFc6MTsgICAgICAgICAgICAgICAvKiAgIERXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREVSOjE7ICAgICAgICAgICAgICAvKiAgIERFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU9ERToxOyAgICAgICAgICAgICAvKiAgIE1PREUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UTVNLOjE7ICAgICAgICAgICAvKiAgIElOVE1TSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSFNUQVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENUUkwgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VURU46MTsgICAgICAgICAgICAvKiAgIFNFVEVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSRU46MTsgICAgICAgICAgICAvKiAgIENMUkVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RHOjE7ICAgICAgICAgICAgICAvKiAgIFNURyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1dSU1Q6MTsgICAgICAgICAgICAvKiAgIFNXUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSUlE6MTsgICAgICAgICAgICAvKiAgIENMUlJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSRU5EOjE7ICAgICAgICAgICAvKiAgIENMUkVORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSVEM6MTsgICAgICAgICAgICAvKiAgIENMUlRDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VUU1VTOjE7ICAgICAgICAgICAvKiAgIFNFVFNVUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSU1VTOjE7ICAgICAgICAgICAvKiAgIENMUlNVUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VUSU5UTVNLOjE7ICAgICAgICAvKiAgIFNFVElOVE1TSyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xSSU5UTVNLOjE7ICAgICAgICAvKiAgIENMUklOVE1TSyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENGRyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VMOjM7ICAgICAgICAgICAgICAvKiAgIFNFTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVRRDoxOyAgICAgICAgICAgICAvKiAgIFJFUUQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9FTjoxOyAgICAgICAgICAgICAvKiAgIExPRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSElFTjoxOyAgICAgICAgICAgICAvKiAgIEhJRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFZMOjE7ICAgICAgICAgICAgICAvKiAgIExWTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQU06MzsgICAgICAgICAgICAgICAvKiAgIEFNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RTOjQ7ICAgICAgICAgICAgICAvKiAgIFNEUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRERTOjQ7ICAgICAgICAgICAgICAvKiAgIEREUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FEOjE7ICAgICAgICAgICAgICAvKiAgIFNBRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREFEOjE7ICAgICAgICAgICAgICAvKiAgIERBRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE06MTsgICAgICAgICAgICAgICAvKiAgIFRNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREVNOjE7ICAgICAgICAgICAgICAvKiAgIERFTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENNOjE7ICAgICAgICAgICAgICAvKiAgIFRDTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0JFOjE7ICAgICAgICAgICAgICAvKiAgIFNCRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNFTDoxOyAgICAgICAgICAgICAvKiAgIFJTRUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNXOjE7ICAgICAgICAgICAgICAvKiAgIFJTVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVOOjE7ICAgICAgICAgICAgICAvKiAgIFJFTiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1TOjE7ICAgICAgICAgICAgICAvKiAgIERNUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENGRzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSElUVkwgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRWTDoxNjsgICAgICAgICAgICAvKiAgIElUVkwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSElUVkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSEVYVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NBOjQ7ICAgICAgICAgICAgICAvKiAgIFNDQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRENBOjQ7ICAgICAgICAgICAgICAvKiAgIERDQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQ0hFWFQ7ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSEVYVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOWExBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTlhMQTozMjsgICAgICAgICAgICAvKiAgIE5YTEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOWExBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUkxBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1JMQTozMjsgICAgICAgICAgICAvKiAgIENSTEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUkxBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18wNyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1RSTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFI6MTsgICAgICAgICAgICAgICAvKiAgIFBSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFZJTlQ6MTsgICAgICAgICAgICAvKiAgIExWSU5UICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTERDQTo0OyAgICAgICAgICAgICAvKiAgIExEQ0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFdDQTo0OyAgICAgICAgICAgICAvKiAgIExXQ0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FTiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4wOjE7ICAgICAgICAgICAgICAvKiAgIEVOMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xOjE7ICAgICAgICAgICAgICAvKiAgIEVOMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4yOjE7ICAgICAgICAgICAgICAvKiAgIEVOMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4zOjE7ICAgICAgICAgICAgICAvKiAgIEVOMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU40OjE7ICAgICAgICAgICAgICAvKiAgIEVONCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU41OjE7ICAgICAgICAgICAgICAvKiAgIEVONSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU42OjE7ICAgICAgICAgICAgICAvKiAgIEVONiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU43OjE7ICAgICAgICAgICAgICAvKiAgIEVONyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FTjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIwOjE7ICAgICAgICAgICAgICAvKiAgIEVSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxOjE7ICAgICAgICAgICAgICAvKiAgIEVSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIyOjE7ICAgICAgICAgICAgICAvKiAgIEVSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIzOjE7ICAgICAgICAgICAgICAvKiAgIEVSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI0OjE7ICAgICAgICAgICAgICAvKiAgIEVSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI1OjE7ICAgICAgICAgICAgICAvKiAgIEVSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI2OjE7ICAgICAgICAgICAgICAvKiAgIEVSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI3OjE7ICAgICAgICAgICAgICAvKiAgIEVSNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FTkQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMDoxOyAgICAgICAgICAgICAvKiAgIEVORDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMToxOyAgICAgICAgICAgICAvKiAgIEVORDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMjoxOyAgICAgICAgICAgICAvKiAgIEVORDIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMzoxOyAgICAgICAgICAgICAvKiAgIEVORDMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5ENDoxOyAgICAgICAgICAgICAvKiAgIEVORDQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5ENToxOyAgICAgICAgICAgICAvKiAgIEVORDUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5ENjoxOyAgICAgICAgICAgICAvKiAgIEVORDYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5ENzoxOyAgICAgICAgICAgICAvKiAgIEVORDcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FTkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9UQyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMwOjE7ICAgICAgICAgICAgICAvKiAgIFRDMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxOjE7ICAgICAgICAgICAgICAvKiAgIFRDMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMyOjE7ICAgICAgICAgICAgICAvKiAgIFRDMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMzOjE7ICAgICAgICAgICAgICAvKiAgIFRDMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM0OjE7ICAgICAgICAgICAgICAvKiAgIFRDNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM1OjE7ICAgICAgICAgICAgICAvKiAgIFRDNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM2OjE7ICAgICAgICAgICAgICAvKiAgIFRDNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM3OjE7ICAgICAgICAgICAgICAvKiAgIFRDNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9UQzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9TVVMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMDoxOyAgICAgICAgICAgICAvKiAgIFNVUzAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMToxOyAgICAgICAgICAgICAvKiAgIFNVUzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMjoxOyAgICAgICAgICAgICAvKiAgIFNVUzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMzoxOyAgICAgICAgICAgICAvKiAgIFNVUzMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTNDoxOyAgICAgICAgICAgICAvKiAgIFNVUzQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTNToxOyAgICAgICAgICAgICAvKiAgIFNVUzUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTNjoxOyAgICAgICAgICAgICAvKiAgIFNVUzYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTNzoxOyAgICAgICAgICAgICAvKiAgIFNVUzcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9TVVM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY184MTUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1RSTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFI6MTsgICAgICAgICAgICAgICAvKiAgIFBSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFZJTlQ6MTsgICAgICAgICAgICAvKiAgIExWSU5UICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTERDQTo0OyAgICAgICAgICAgICAvKiAgIExEQ0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFdDQTo0OyAgICAgICAgICAgICAvKiAgIExXQ0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FTiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU44OjE7ICAgICAgICAgICAgICAvKiAgIEVOOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU45OjE7ICAgICAgICAgICAgICAvKiAgIEVOOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xMDoxOyAgICAgICAgICAgICAvKiAgIEVOMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xMToxOyAgICAgICAgICAgICAvKiAgIEVOMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xMjoxOyAgICAgICAgICAgICAvKiAgIEVOMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xMzoxOyAgICAgICAgICAgICAvKiAgIEVOMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xNDoxOyAgICAgICAgICAgICAvKiAgIEVOMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU4xNToxOyAgICAgICAgICAgICAvKiAgIEVOMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FTjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI4OjE7ICAgICAgICAgICAgICAvKiAgIEVSOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVI5OjE7ICAgICAgICAgICAgICAvKiAgIEVSOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxMDoxOyAgICAgICAgICAgICAvKiAgIEVSMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxMToxOyAgICAgICAgICAgICAvKiAgIEVSMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxMjoxOyAgICAgICAgICAgICAvKiAgIEVSMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxMzoxOyAgICAgICAgICAgICAvKiAgIEVSMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxNDoxOyAgICAgICAgICAgICAvKiAgIEVSMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVIxNToxOyAgICAgICAgICAgICAvKiAgIEVSMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9FTkQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EODoxOyAgICAgICAgICAgICAvKiAgIEVORDggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EOToxOyAgICAgICAgICAgICAvKiAgIEVORDkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTA6MTsgICAgICAgICAgICAvKiAgIEVORDEwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTE6MTsgICAgICAgICAgICAvKiAgIEVORDExICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTI6MTsgICAgICAgICAgICAvKiAgIEVORDEyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTM6MTsgICAgICAgICAgICAvKiAgIEVORDEzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTQ6MTsgICAgICAgICAgICAvKiAgIEVORDE0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5EMTU6MTsgICAgICAgICAgICAvKiAgIEVORDE1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9FTkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9UQyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM4OjE7ICAgICAgICAgICAgICAvKiAgIFRDOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEM5OjE7ICAgICAgICAgICAgICAvKiAgIFRDOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxMDoxOyAgICAgICAgICAgICAvKiAgIFRDMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxMToxOyAgICAgICAgICAgICAvKiAgIFRDMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxMjoxOyAgICAgICAgICAgICAvKiAgIFRDMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxMzoxOyAgICAgICAgICAgICAvKiAgIFRDMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxNDoxOyAgICAgICAgICAgICAvKiAgIFRDMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEMxNToxOyAgICAgICAgICAgICAvKiAgIFRDMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9UQzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1RBVF9TVVMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTODoxOyAgICAgICAgICAgICAvKiAgIFNVUzggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTOToxOyAgICAgICAgICAgICAvKiAgIFNVUzkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTA6MTsgICAgICAgICAgICAvKiAgIFNVUzEwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTE6MTsgICAgICAgICAgICAvKiAgIFNVUzExICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTI6MTsgICAgICAgICAgICAvKiAgIFNVUzEyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTM6MTsgICAgICAgICAgICAvKiAgIFNVUzEzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTQ6MTsgICAgICAgICAgICAvKiAgIFNVUzE0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1VTMTU6MTsgICAgICAgICAgICAvKiAgIFNVUzE1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RBVF9TVVM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18wMSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gwX1JJRDoyOyAgICAgICAgICAvKiAgIENIMF9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gwX01JRDo3OyAgICAgICAgICAvKiAgIENIMF9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxX1JJRDoyOyAgICAgICAgICAvKiAgIENIMV9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxX01JRDo3OyAgICAgICAgICAvKiAgIENIMV9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18yMyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gyX1JJRDoyOyAgICAgICAgICAvKiAgIENIMl9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gyX01JRDo3OyAgICAgICAgICAvKiAgIENIMl9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gzX1JJRDoyOyAgICAgICAgICAvKiAgIENIM19SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gzX01JRDo3OyAgICAgICAgICAvKiAgIENIM19NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY180NSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g0X1JJRDoyOyAgICAgICAgICAvKiAgIENINF9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g0X01JRDo3OyAgICAgICAgICAvKiAgIENINF9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g1X1JJRDoyOyAgICAgICAgICAvKiAgIENINV9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g1X01JRDo3OyAgICAgICAgICAvKiAgIENINV9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY182NyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g2X1JJRDoyOyAgICAgICAgICAvKiAgIENINl9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g2X01JRDo3OyAgICAgICAgICAvKiAgIENINl9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g3X1JJRDoyOyAgICAgICAgICAvKiAgIENIN19SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g3X01JRDo3OyAgICAgICAgICAvKiAgIENIN19NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY184OSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g4X1JJRDoyOyAgICAgICAgICAvKiAgIENIOF9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g4X01JRDo3OyAgICAgICAgICAvKiAgIENIOF9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g5X1JJRDoyOyAgICAgICAgICAvKiAgIENIOV9SSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0g5X01JRDo3OyAgICAgICAgICAvKiAgIENIOV9NSUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18xMDExIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMF9SSUQ6MjsgICAgICAgICAvKiAgIENIMTBfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMF9NSUQ6NzsgICAgICAgICAvKiAgIENIMTBfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMV9SSUQ6MjsgICAgICAgICAvKiAgIENIMTFfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMV9NSUQ6NzsgICAgICAgICAvKiAgIENIMTFfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18xMjEzIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMl9SSUQ6MjsgICAgICAgICAvKiAgIENIMTJfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxMl9NSUQ6NzsgICAgICAgICAvKiAgIENIMTJfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxM19SSUQ6MjsgICAgICAgICAvKiAgIENIMTNfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxM19NSUQ6NzsgICAgICAgICAvKiAgIENIMTNfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfZG1hY18xNDE1IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxNF9SSUQ6MjsgICAgICAgICAvKiAgIENIMTRfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxNF9NSUQ6NzsgICAgICAgICAvKiAgIENIMTRfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxNV9SSUQ6MjsgICAgICAgICAvKiAgIENIMTVfUklEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0gxNV9NSUQ6NzsgICAgICAgICAvKiAgIENIMTVfTUlEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIERNQUMwICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDAwMCkJLyogRE1BQzAgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDA0MCkJLyogRE1BQzEgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMyICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDA4MCkJLyogRE1BQzIgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMzICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDBDMCkJLyogRE1BQzMgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM0ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDEwMCkJLyogRE1BQzQgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM1ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDE0MCkJLyogRE1BQzUgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM2ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDE4MCkJLyogRE1BQzYgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM3ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDFDMCkJLyogRE1BQzcgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM4ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDQwMCkJLyogRE1BQzggIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM5ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDQ0MCkJLyogRE1BQzkgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDQ4MCkJLyogRE1BQzEwIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDRDMCkJLyogRE1BQzExIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDUwMCkJLyogRE1BQzEyIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDU0MCkJLyogRE1BQzEzIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxNCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDU4MCkJLyogRE1BQzE0IEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxNSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY19uICopMHhFODIwMDVDMCkJLyogRE1BQzE1IEFkZHJlc3MgKi8NCi0NCi0jZGVmaW5lIERNQUMwNyAgICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzA3ICAgKikweEU4MjAwMzAwKQkvKiBETUFDMC03ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDODE1ICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY184MTUgICopMHhFODIwMDcwMCkJLyogRE1BQzgtMTUgQWRkcmVzcyAqLw0KLQ0KLSNkZWZpbmUgRE1BQzAxICAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfMDEgICAqKTB4RkNGRTEwMDApCS8qIERNQUMwLTEgICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMjMgICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY18yMyAgICopMHhGQ0ZFMTAwNCkJLyogRE1BQzItMyAgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM0NSAgICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzQ1ICAgKikweEZDRkUxMDA4KQkvKiBETUFDNC01ICAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzY3ICAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfNjcgICAqKTB4RkNGRTEwMEMpCS8qIERNQUM2LTcgICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDODkgICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY184OSAgICopMHhGQ0ZFMTAxMCkJLyogRE1BQzgtOSAgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMDExICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzEwMTEgKikweEZDRkUxMDE0KQkvKiBETUFDMTAtMTEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzEyMTMgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfMTIxMyAqKTB4RkNGRTEwMTgpCS8qIERNQUMxMi0xMyBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTQxNSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY18xNDE1ICopMHhGQ0ZFMTAxQykJLyogRE1BQzE0LTE1IEFkZHJlc3MgKi8NCi0NCi0jZW5kaWYgLyogX19ETUFDX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9pbnRjX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2ludGNfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU2MTUxYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2ludGNfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2MzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgICA6IGludGNfaW9kZWZpbmUuaA0KLSogVmVyc2lvbiAgICAgICA6IDAuMDENCi0qIERldmljZShzKSAgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjEzDQotKiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLSogICAgICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gdmVjb3RyLnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fSU5UQ19JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fSU5UQ19JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgwICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzEgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzQgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1c1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzcgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1c4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c4ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXOToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzEwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzEwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cxMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzEzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzEzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cxNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBQTVVJUlEwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBQTVVJUlEwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVJYMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ09NTVJYMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENPTU1UWDA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENPTU1UWDAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVElJUlEwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVElJUlEwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDEgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJRMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUlEyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUlEyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJRMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUlE1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUlE1ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJRNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBQTDMxMEVSUjoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBQTDMxMEVSUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDc6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UOToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEwOjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEwICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMToxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTI6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEzOjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNDoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxNCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTU6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUVSUjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUVSUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MiAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVVNCSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFVTQkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFVTQkkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMF9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMF9MT19WU1lOQzAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMF9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUwOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBHUjNfVkxJTkUwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUzBfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWMV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWM19WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWNV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWNl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFMwX1dMSU5FMCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMV9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMV9MT19WU1lOQzAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBTMV9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQwOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTMV9WRklFTEQwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVYyX1ZCVUZFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVYyX1ZCVUZFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVY0X1ZCVUZFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVY0X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfV0xJTkUwOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUzFfV0xJTkUwICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzA6MTsgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgLyogICBPSVJfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZTWU5DRVJSMDoxOyAgICAgICAgICAgICAgICAgIC8qICAgT0lSX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQwOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9WRklFTEQwICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MyAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjdfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjhfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUwOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBPSVJfV0xJTkUwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfVklfVlNZTkMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfVlNZTkNFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX1ZMSU5FMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFMwX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjFfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjNfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjVfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjZfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTE6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBTMF9XTElORTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVklfVlNZTkMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVlNZTkNFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWMl9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWNF9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMToxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFMxX1dMSU5FMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMxOjE7ICAgICAgICAgICAgICAgICAgLyogICBPSVJfVklfVlNZTkMxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgIC8qICAgT0lSX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9WTElORTE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9WTElORTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMToxOyAgICAgICAgICAgICAgICAgICAgLyogICBPSVJfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWN19WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWOF9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9XTElORTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTVJESToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJTVJESSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSU1SMkkwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElNUjJJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElNUjJJMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBKRURJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBKRURJICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSkRUSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSkRUSSAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDQgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ01QMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01QMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENNUDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENNUDEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTlQwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElOVDI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTlQzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgT1NUTUkwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE9TVE1JMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDTUk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDTUkgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgV1RPVVQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgV1RPVVQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElUSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElUSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kwQToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTBDOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBDICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kwRDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMFY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMFYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTBFOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBFICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kwRjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMUEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTFCOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFCICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kxVjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kxViAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMVUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTJBOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJBICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kyQjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kyQiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMlYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTJVOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJVICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kzQToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0I6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0IgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTNDOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNDICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kzRDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kzRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJM1Y6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM1YgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTRBOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRBICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHg0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHg1ICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTRCOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRCICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0k0QzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTRWOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRWICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDTUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDTUkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ01JMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNHREVJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTR0RFSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNHREVJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBBREk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBBREkgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQURXQVI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQURXQVIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSUkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lSVEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lSVEkyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lUWEkzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVJUSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVJUSTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lJNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lJNSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJNToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUERJRkk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUERJRkkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEVJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSTAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4NiAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUEkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1RJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE5BS0kwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBBTEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBBTEkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRFSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSSTEgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEFMSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUTU9JMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEVJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNUSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBOQUtJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQUxJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRNT0kyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBURUkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBURUkzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUkkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUEkzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1RJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE5BS0kzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBBTEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBBTEkzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDcgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkkyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEkyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlJJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEkzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkk0ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkk1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkk1ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEk1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEk1ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlJJNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEk2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEk2ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkk3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkk3ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBHRVJJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBHRVJJICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUkZJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUkZJICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENGUlhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMCAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHg3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHg4ICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFUkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVFhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVFhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFUkkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVFhJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFUkkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVFhJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEk0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFUkk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFUkk0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDVFhJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDVFhJNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQUkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFRJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFRJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQUkkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFRJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQUkkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFRJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQUkk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkk0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFRJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFRJNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlREOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlREICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElFQkJURVJSOjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElFQkJURVJSICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRUJCVFNUQToxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRUJCVFNUQSAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4OSAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRUJCVFY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRUJCVFYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVNZOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVNZICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElFUlI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElFUlIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVEFSRzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJVEFSRyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVNFQzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVNFQyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElCVUY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElCVUYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUkVBRFk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUkVBRFkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRkxTVEU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRkxTVEUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEZMVEVOREk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEZMVEVOREkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBGTFRSRVEwSToxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBGTFRSRVEwSSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMUk6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRkxUUkVRMUkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE1NQzA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1NQzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBNTUMxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBNTUMxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTU1DMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTREhJMF8wOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTREhJMF8wICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0RISTBfMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTREhJMV8wOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTREhJMV8wICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEFSTToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEFSTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBQUkQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBQUkQgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1VQOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1VQICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUFJMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMiAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDEwICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBNTEJDSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBNTEJDSSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTUxCU0k6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUxCU0kgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERSQzA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERSQzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBEUkMxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBEUkMxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9UOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1I6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX1IgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfUzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfUyAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9NOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9NICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1Q6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1QgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfUiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9TOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9TICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX006MTsgICAgICAgICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX00gKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEVJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxMSAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEVJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFVEhFUkk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFVEhFUkkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENFVUk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENFVUkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVI6MTsgICAgICAgICAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJFOjE7ICAgICAgICAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVJFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElDOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSU5UX0NTSUgxVElDICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElKQzoxOyAgICAgICAgICAgICAgICAgIC8qICAgSU5UX0NTSUgxVElKQyAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEgyWE1MQl9FUlJJTlQ6MTsgICAgICAgICAgICAgICAgICAvKiAgIEgyWE1MQl9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBIMlhJQzFfRVJSSU5UOjE7ICAgICAgICAgICAgICAgICAgLyogICBIMlhJQzFfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTFfRVJSSU5UOjE7ICAgICAgICAgICAgICAgIC8qICAgWDJIUEVSSTFfRVJSSU5UICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTIgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMl9FUlJJTlQ6MTsgICAgICAgICAgICAgICAgLyogICBYMkhQRVJJMl9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMzRfRVJSSU5UOjE7ICAgICAgICAgICAgICAgLyogICBYMkhQRVJJMzRfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTVfRVJSSU5UOjE7ICAgICAgICAgICAgICAgIC8qICAgWDJIUEVSSTVfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTY3X0VSUklOVDoxOyAgICAgICAgICAgICAgIC8qICAgWDJIUEVSSTY3X0VSUklOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFgySERCR1JfRVJSSU5UOjE7ICAgICAgICAgICAgICAgICAvKiAgIFgySERCR1JfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUFJSSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUFJSSSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElGRUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElGRUkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPRkZJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBPRkZJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElGRUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElGRUkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPRkZJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBPRkZJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxMyAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDggICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzEgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTQgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0OToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0OSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1ODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYzICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDE1ICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2ODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDczOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDczICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4OToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4OSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NSAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxNiAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5OSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDg6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjY6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI3ICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTcgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzY6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzODoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzOCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDg6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1OToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1OSAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDE4ICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDE4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotDQotc3RydWN0IHN0X2ludGMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBJTlRDICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0REQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFbmFibGU6MTsgICAgICAgICAgICAgICAgICAvKiAgIEVuYWJsZSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRERDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNUUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRMaW5lc051bWJlcjo1OyAgICAgICAgICAgLyogICBJVExpbmVzTnVtYmVyICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQVU51bWJlcjozOyAgICAgICAgICAgICAgIC8qICAgQ1BVTnVtYmVyICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU2VjdXJpdHlFeHRuOjE7ICAgICAgICAgICAgLyogICBTZWN1cml0eUV4dG4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFNQSTo1OyAgICAgICAgICAgICAgICAgICAgLyogICBMU1BJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElJRFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEltcGxlbWVudGVyOjEyOyAgICAgICAgICAgIC8qICAgSW1wbGVtZW50ZXIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUmV2aXNpb246NDsgICAgICAgICAgICAgICAgLyogICBSZXZpc2lvbiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZhcmlhbnQ6NDsgICAgICAgICAgICAgICAgIC8qICAgVmFyaWFudCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUHJvZHVjdElEOjg7ICAgICAgICAgICAgICAgLyogICBQcm9kdWN0SUQgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElJRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElTUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkdbMTldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIElDRElTUm4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgwICBJQ0RJU1IwOyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MSAgSUNESVNSMTsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDIgIElDRElTUjI7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgzICBJQ0RJU1IzOyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NCAgSUNESVNSNDsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1I0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDUgIElDRElTUjU7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg2ICBJQ0RJU1I2OyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NyAgSUNESVNSNzsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1I3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDggIElDRElTUjg7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg5ICBJQ0RJU1I5OyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTAgSUNESVNSMTA7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDExIElDRElTUjExOyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMiBJQ0RJU1IxMjsgICAgICAgICAgICAgICAgIC8qIElDRElTUjEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTMgSUNESVNSMTM7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE0IElDRElTUjE0OyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNSBJQ0RJU1IxNTsgICAgICAgICAgICAgICAgIC8qIElDRElTUjE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTYgSUNESVNSMTY7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE3IElDRElTUjE3OyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxOCBJQ0RJU1IxODsgICAgICAgICAgICAgICAgIC8qIElDRElTUjE4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbNTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HWzE5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBJQ0RJU0VSbiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MCAgSUNESVNFUjA7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEgIElDRElTRVIxOyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgyICBJQ0RJU0VSMjsgICAgICAgICAgICAgICAgIC8qIElDRElTRVIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MyAgSUNESVNFUjM7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDQgIElDRElTRVI0OyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg1ICBJQ0RJU0VSNTsgICAgICAgICAgICAgICAgIC8qIElDRElTRVI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NiAgSUNESVNFUjY7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDcgIElDRElTRVI3OyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg4ICBJQ0RJU0VSODsgICAgICAgICAgICAgICAgIC8qIElDRElTRVI4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OSAgSUNESVNFUjk7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEwIElDRElTRVIxMDsgICAgICAgICAgICAgICAgLyogSUNESVNFUjEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMSBJQ0RJU0VSMTE7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTIgSUNESVNFUjEyOyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEzIElDRElTRVIxMzsgICAgICAgICAgICAgICAgLyogSUNESVNFUjEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNCBJQ0RJU0VSMTQ7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTUgSUNESVNFUjE1OyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE2IElDRElTRVIxNjsgICAgICAgICAgICAgICAgLyogSUNESVNFUjE2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNyBJQ0RJU0VSMTc7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTggSUNESVNFUjE4OyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVNFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzUyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNFUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9OR1sxOV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgSUNESUNFUm4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDAgIElDRElDRVIwOyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxICBJQ0RJQ0VSMTsgICAgICAgICAgICAgICAgIC8qIElDRElDRVIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MiAgSUNESUNFUjI7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDMgIElDRElDRVIzOyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg0ICBJQ0RJQ0VSNDsgICAgICAgICAgICAgICAgIC8qIElDRElDRVI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NSAgSUNESUNFUjU7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDYgIElDRElDRVI2OyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg3ICBJQ0RJQ0VSNzsgICAgICAgICAgICAgICAgIC8qIElDRElDRVI3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OCAgSUNESUNFUjg7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDkgIElDRElDRVI5OyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMCBJQ0RJQ0VSMTA7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTEgSUNESUNFUjExOyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEyIElDRElDRVIxMjsgICAgICAgICAgICAgICAgLyogSUNESUNFUjEyICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMyBJQ0RJQ0VSMTM7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTQgSUNESUNFUjE0OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE1IElDRElDRVIxNTsgICAgICAgICAgICAgICAgLyogSUNESUNFUjE1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNiBJQ0RJQ0VSMTY7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTcgSUNESUNFUjE3OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE4IElDRElDRVIxODsgICAgICAgICAgICAgICAgLyogSUNESUNFUjE4ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElDRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s1Ml07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElTUFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkdbMTldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIElDRElTUFJuICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgwICBJQ0RJU1BSMDsgICAgICAgICAgICAgICAgIC8qIElDRElTUFIwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MSAgSUNESVNQUjE7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDIgIElDRElTUFIyOyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgzICBJQ0RJU1BSMzsgICAgICAgICAgICAgICAgIC8qIElDRElTUFIzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NCAgSUNESVNQUjQ7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDUgIElDRElTUFI1OyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg2ICBJQ0RJU1BSNjsgICAgICAgICAgICAgICAgIC8qIElDRElTUFI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NyAgSUNESVNQUjc7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDggIElDRElTUFI4OyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjggICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg5ICBJQ0RJU1BSOTsgICAgICAgICAgICAgICAgIC8qIElDRElTUFI5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTAgSUNESVNQUjEwOyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDExIElDRElTUFIxMTsgICAgICAgICAgICAgICAgLyogSUNESVNQUjExICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMiBJQ0RJU1BSMTI7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTMgSUNESVNQUjEzOyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE0IElDRElTUFIxNDsgICAgICAgICAgICAgICAgLyogSUNESVNQUjE0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNSBJQ0RJU1BSMTU7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTYgSUNESVNQUjE2OyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE3IElDRElTUFIxNzsgICAgICAgICAgICAgICAgLyogSUNESVNQUjE3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxOCBJQ0RJU1BSMTg7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJU1BSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbNTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HWzE5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBJQ0RJQ1BSbiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MCAgSUNESUNQUjA7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEgIElDRElDUFIxOyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgyICBJQ0RJQ1BSMjsgICAgICAgICAgICAgICAgIC8qIElDRElDUFIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MyAgSUNESUNQUjM7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDQgIElDRElDUFI0OyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg1ICBJQ0RJQ1BSNTsgICAgICAgICAgICAgICAgIC8qIElDRElDUFI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NiAgSUNESUNQUjY7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDcgIElDRElDUFI3OyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg4ICBJQ0RJQ1BSODsgICAgICAgICAgICAgICAgIC8qIElDRElDUFI4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OSAgSUNESUNQUjk7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEwIElDRElDUFIxMDsgICAgICAgICAgICAgICAgLyogSUNESUNQUjEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMSBJQ0RJQ1BSMTE7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTIgSUNESUNQUjEyOyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEzIElDRElDUFIxMzsgICAgICAgICAgICAgICAgLyogSUNESUNQUjEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNCBJQ0RJQ1BSMTQ7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTUgSUNESUNQUjE1OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE2IElDRElDUFIxNjsgICAgICAgICAgICAgICAgLyogSUNESUNQUjE2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNyBJQ0RJQ1BSMTc7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTggSUNESUNQUjE4OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESUNQUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzUyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEQUJSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9OR1sxOV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgSUNEQUJSbiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDAgIElDREFCUjA7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxICBJQ0RBQlIxOyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MiAgSUNEQUJSMjsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDMgIElDREFCUjM7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg0ICBJQ0RBQlI0OyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NSAgSUNEQUJSNTsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlI1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDYgIElDREFCUjY7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSNiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg3ICBJQ0RBQlI3OyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OCAgSUNEQUJSODsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlI4ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDkgIElDREFCUjk7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSOSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMCBJQ0RBQlIxMDsgICAgICAgICAgICAgICAgIC8qIElDREFCUjEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTEgSUNEQUJSMTE7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEyIElDREFCUjEyOyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMyBJQ0RBQlIxMzsgICAgICAgICAgICAgICAgIC8qIElDREFCUjEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTQgSUNEQUJSMTQ7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE1IElDREFCUjE1OyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNiBJQ0RBQlIxNjsgICAgICAgICAgICAgICAgIC8qIElDREFCUjE2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTcgSUNEQUJSMTc7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE4IElDREFCUjE4OyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTggICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDREFCUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsxODBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cyOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1czICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzU6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c2Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXODo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNVUlSUTA6ODsgICAgICAgICAgICAgICAgIC8qICAgUE1VSVJRMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDT01NUlgwOjg7ICAgICAgICAgICAgICAgICAvKiAgIENPTU1SWDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVRYMDo4OyAgICAgICAgICAgICAgICAgLyogICBDT01NVFgwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUSUlSUTA6ODsgICAgICAgICAgICAgICAgIC8qICAgQ1RJSVJRMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTDMxMEVSUjo4OyAgICAgICAgICAgICAgICAvKiAgIFBMMzEwRVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMDo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQyOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQzOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNDo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDU6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UODo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDk6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMDo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEwICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMTo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDExICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTI6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEzOjg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNDo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDE0ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNTo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDE1ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BRVJSOjg7ICAgICAgICAgICAgICAgICAgLyogICBETUFFUlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBVU0JJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVVNCSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMwX1ZJX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIxODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjE5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMDo4OyAgICAgICAgICAgIC8qICAgUzBfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMDo4OyAgICAgICAgICAgIC8qICAgUzBfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTA6ODsgICAgICAgICAgICAgIC8qICAgR1IzX1ZMSU5FMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQwOjg7ICAgICAgICAgICAgICAvKiAgIFMwX1ZGSUVMRDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWMV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWM19WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjIxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMDo4OyAgICAgICAgICAgICAgIC8qICAgUzBfV0xJTkUwICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMxX1ZJX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMxX0xPX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjA6ODsgICAgICAgICAgICAvKiAgIFMxX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjIyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDA6ODsgICAgICAgICAgICAgIC8qICAgUzFfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWMl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNF9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTA6ODsgICAgICAgICAgICAgICAvKiAgIFMxX1dMSU5FMCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMwOjg7ICAgICAgICAgICAvKiAgIE9JUl9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMDo4OyAgICAgICAgICAgLyogICBPSVJfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WU1lOQ0VSUjA6ODsgICAgICAgICAgIC8qICAgT0lSX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMDo4OyAgICAgICAgICAgICAvKiAgIE9JUl9WRklFTEQwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjdfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjhfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMDo4OyAgICAgICAgICAgICAgLyogICBPSVJfV0xJTkUwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzBfVklfVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMxOjg7ICAgICAgICAgICAgLyogICBTMF9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIxOjg7ICAgICAgICAgICAgLyogICBTMF9WU1lOQ0VSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMTo4OyAgICAgICAgICAgICAgLyogICBHUjNfVkxJTkUxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDE6ODsgICAgICAgICAgICAgIC8qICAgUzBfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYxX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYzX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY1X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY2X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUxOjg7ICAgICAgICAgICAgICAgLyogICBTMF9XTElORTEgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzFfVklfVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzFfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMTo4OyAgICAgICAgICAgIC8qICAgUzFfVlNZTkNFUlIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMTo4OyAgICAgICAgICAgICAgLyogICBTMV9WRklFTEQxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYyX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY0X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMTo4OyAgICAgICAgICAgICAgIC8qICAgUzFfV0xJTkUxICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzE6ODsgICAgICAgICAgIC8qICAgT0lSX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMxOjg7ICAgICAgICAgICAvKiAgIE9JUl9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZMSU5FMTo4OyAgICAgICAgICAgICAgLyogICBPSVJfVkxJTkUxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQxOjg7ICAgICAgICAgICAgIC8qICAgT0lSX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIzMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWN19WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWOF9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUxOjg7ICAgICAgICAgICAgICAvKiAgIE9JUl9XTElORTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SREk6ODsgICAgICAgICAgICAgICAgICAgLyogICBJTVJESSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBJTVIySTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgSU1SMkkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRURJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEpFREkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkRUSTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBKRFRJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTVAwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01QMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIE9TVE1JMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBPU1RNSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBDTUkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdUT1VUOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgV1RPVVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVEk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIElUSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBDOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMFY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBGOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFVOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJVOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMlUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0I6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0M6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNEOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzVjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjM5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRDOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0RDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTREICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNFY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0ViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTUkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkyOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFESSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURXQVI6ODsgICAgICAgICAgICAgICAgICAgLyogICBBRFdBUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSVEkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJNDo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSVEk0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk1Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEk1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJNTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lUWEk1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BESUZJOjg7ICAgICAgICAgICAgICAgICAgLyogICBTUERJRkkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkwOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNDkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkxOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjUwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTI6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkyOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjUyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTM6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkzOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjUzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNTkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjU5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjYwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjYxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjYyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdFUkk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgR0VSSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRkk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJGSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjYzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkzOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEk0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNjkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjY5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjcwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURDo4OyAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlREICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVEVSUjo4OyAgICAgICAgICAgICAgICAvKiAgIElFQkJURVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRTVEE6ODsgICAgICAgICAgICAgICAgLyogICBJRUJCVFNUQSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjcxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRWOjg7ICAgICAgICAgICAgICAgICAgLyogICBJRUJCVFYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElTWTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSVNZICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVJSOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElFUlIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRBUkc6ODsgICAgICAgICAgICAgICAgICAgLyogICBJVEFSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjcyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNFQzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJU0VDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElCVUY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSUJVRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUkVBRFk6ODsgICAgICAgICAgICAgICAgICAvKiAgIElSRUFEWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxTVEU6ODsgICAgICAgICAgICAgICAgICAgLyogICBGTFNURSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjczOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxURU5ESTo4OyAgICAgICAgICAgICAgICAgLyogICBGTFRFTkRJICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTBJOjg7ICAgICAgICAgICAgICAgIC8qICAgRkxUUkVRMEkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRSRVExSTo4OyAgICAgICAgICAgICAgICAvKiAgIEZMVFJFUTFJICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBNTUMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBNTUMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8zOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMDo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMF8wICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMTo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMF8xICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8wOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMTo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMV8xICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVJNOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBBUk0gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUFJEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVVA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIENVUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSNzkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjc5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQkNJOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTUxCQ0kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJTSTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE1MQlNJICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBEUkMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBEUkMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfVDo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1I6ODsgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfUzo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9TICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9NOjg7ICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX00gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1Q6ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjg0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9SOjg7ICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1M6ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfTTo4OyAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9NICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI4NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjg2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjg3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjg4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEVSSTo4OyAgICAgICAgICAgICAgICAgIC8qICAgRVRIRVJJICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI5MSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENFVUkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSOjg7ICAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSRTo4OyAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVJFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJQzo4OyAgICAgICAgICAgIC8qICAgSU5UX0NTSUgxVElDICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjkxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElKQzo4OyAgICAgICAgICAgLyogICBJTlRfQ1NJSDFUSUpDICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMDo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjkyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTExOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYxOjg7ICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEyOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjkzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIyOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjI6ODsgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIzOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjk0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMzo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWE1MQl9FUlJJTlQ6ODsgICAgICAgICAgIC8qICAgSDJYTUxCX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIMlhJQzFfRVJSSU5UOjg7ICAgICAgICAgICAvKiAgIEgyWElDMV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTFfRVJSSU5UOjg7ICAgICAgICAgLyogICBYMkhQRVJJMV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSOTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI5NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMl9FUlJJTlQ6ODsgICAgICAgICAvKiAgIFgySFBFUkkyX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMzRfRVJSSU5UOjg7ICAgICAgICAvKiAgIFgySFBFUkkzNF9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTVfRVJSSU5UOjg7ICAgICAgICAgLyogICBYMkhQRVJJNV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTY3X0VSUklOVDo4OyAgICAgICAgLyogICBYMkhQRVJJNjdfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjk2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIREJHUl9FUlJJTlQ6ODsgICAgICAgICAgLyogICBYMkhEQkdSX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUlJJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFBSUkkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUZFSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBJRkVJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgT0ZGSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjk4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIElGRUkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBPRkZJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMDkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTA5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMTkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTE5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDczOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMjkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTExOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxMzkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTM5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNDAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNDEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNDIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Mzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNDMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Nzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1OCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxNDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMls0NDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cwOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzI6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1czOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c0Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzY6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c3Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c4Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1VSVJRMDo4OyAgICAgICAgICAgICAgICAgLyogICBQTVVJUlEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTU1SWDA6ODsgICAgICAgICAgICAgICAgIC8qICAgQ09NTVJYMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDT01NVFgwOjg7ICAgICAgICAgICAgICAgICAvKiAgIENPTU1UWDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RJSVJRMDo4OyAgICAgICAgICAgICAgICAgLyogICBDVElJUlEwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlExOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBMMzEwRVJSOjg7ICAgICAgICAgICAgICAgIC8qICAgUEwzMTBFUlIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQwOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDI6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDM6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNTo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDY6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDc6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UOTo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEwOjg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDExOjg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTEgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMjo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEyICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTM6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE0Ojg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE1Ojg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFFUlI6ODsgICAgICAgICAgICAgICAgICAvKiAgIERNQUVSUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxOCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVU0JJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFVTQkkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBVU0JJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMDo4OyAgICAgICAgICAgIC8qICAgUzBfVklfVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIxODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjE5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMwOjg7ICAgICAgICAgICAgLyogICBTMF9MT19WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIwOjg7ICAgICAgICAgICAgLyogICBTMF9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMDo4OyAgICAgICAgICAgICAgLyogICBHUjNfVkxJTkUwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDA6ODsgICAgICAgICAgICAgIC8qICAgUzBfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVYxX1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVYzX1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVY1X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVY2X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjIxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUwOjg7ICAgICAgICAgICAgICAgLyogICBTMF9XTElORTAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMDo4OyAgICAgICAgICAgIC8qICAgUzFfVklfVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMDo4OyAgICAgICAgICAgIC8qICAgUzFfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMDo4OyAgICAgICAgICAgIC8qICAgUzFfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjIyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMDo4OyAgICAgICAgICAgICAgLyogICBTMV9WRklFTEQwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVYyX1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVY0X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMDo4OyAgICAgICAgICAgICAgIC8qICAgUzFfV0xJTkUwICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzA6ODsgICAgICAgICAgIC8qICAgT0lSX1ZJX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMwOjg7ICAgICAgICAgICAvKiAgIE9JUl9MT19WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZTWU5DRVJSMDo4OyAgICAgICAgICAgLyogICBPSVJfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQwOjg7ICAgICAgICAgICAgIC8qICAgT0lSX1ZGSUVMRDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWN19WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWOF9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUwOjg7ICAgICAgICAgICAgICAvKiAgIE9JUl9XTElORTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMxOjg7ICAgICAgICAgICAgLyogICBTMF9WSV9WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzE6ODsgICAgICAgICAgICAvKiAgIFMwX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjE6ODsgICAgICAgICAgICAvKiAgIFMwX1ZTWU5DRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUxOjg7ICAgICAgICAgICAgICAvKiAgIEdSM19WTElORTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMTo4OyAgICAgICAgICAgICAgLyogICBTMF9WRklFTEQxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYxX1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjFfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYzX1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjNfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY1X1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjVfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY2X1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjZfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTE6ODsgICAgICAgICAgICAgICAvKiAgIFMwX1dMSU5FMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMxOjg7ICAgICAgICAgICAgLyogICBTMV9WSV9WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMxOjg7ICAgICAgICAgICAgLyogICBTMV9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIxOjg7ICAgICAgICAgICAgLyogICBTMV9WU1lOQ0VSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQxOjg7ICAgICAgICAgICAgICAvKiAgIFMxX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYyX1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjJfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY0X1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjRfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfV0xJTkUxOjg7ICAgICAgICAgICAgICAgLyogICBTMV9XTElORTEgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMTo4OyAgICAgICAgICAgLyogICBPSVJfVklfVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzE6ODsgICAgICAgICAgIC8qICAgT0lSX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkxJTkUxOjg7ICAgICAgICAgICAgICAvKiAgIE9JUl9WTElORTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZGSUVMRDE6ODsgICAgICAgICAgICAgLyogICBPSVJfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIzMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY3X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY4X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTE6ODsgICAgICAgICAgICAgIC8qICAgT0lSX1dMSU5FMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJESTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIElNUkRJICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIySTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIElNUjJJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBJTVIySTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpFREk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSkVESSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRFRJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEpEVEkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVAwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENNUDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTVAxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgT1NUTUkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIE9TVE1JMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIENNSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RPVVQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBXVE9VVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUSTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSVRJICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEM6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBEOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwVjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFBOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxQjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxVjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxVSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJBOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMkEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyVjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyVSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNBOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0EgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0Q6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNWOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM1YgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0QTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjM5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Qjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEM6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTREOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Vjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENNSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTUkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkzOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFESTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQURJICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFdBUjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEFEV0FSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMDo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lUWEkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSVEkyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJUSTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSVEk0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJUSTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTU6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTU6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEk1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUERJRkk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNQRElGSSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNDkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjUwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTI6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjUyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTM6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjUzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNTkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjU5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjYwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjYxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBCUkk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjYyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0VSSTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBHRVJJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJGSTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkZJICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjYzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkyOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNjkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjY5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjcwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlREOjg7ICAgICAgICAgICAgICAgICAgLyogICBJRUJCVEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURVJSOjg7ICAgICAgICAgICAgICAgIC8qICAgSUVCQlRFUlIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVFNUQTo4OyAgICAgICAgICAgICAgICAvKiAgIElFQkJUU1RBICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjcxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVFY6ODsgICAgICAgICAgICAgICAgICAvKiAgIElFQkJUViAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNZOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBJU1kgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFUlI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSUVSUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVEFSRzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIElUQVJHICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjcyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJU0VDOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElTRUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUJVRjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJQlVGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSRUFEWTo4OyAgICAgICAgICAgICAgICAgIC8qICAgSVJFQURZICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFNURTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEZMU1RFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjczOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRFTkRJOjg7ICAgICAgICAgICAgICAgICAvKiAgIEZMVEVOREkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMEk6ODsgICAgICAgICAgICAgICAgLyogICBGTFRSRVEwSSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTFJOjg7ICAgICAgICAgICAgICAgIC8qICAgRkxUUkVRMUkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE1NQzAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE1NQzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBNTUMyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTBfMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8wOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8xOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMzo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMV8zICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8xOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBUk06ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFSTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFJEOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBQUkQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENVUDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1VQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNDVUFJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNDVUFJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMDo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSNzkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMDo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjc5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMDo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUxCQ0k6ODsgICAgICAgICAgICAgICAgICAgLyogICBNTEJDSSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQlNJOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTUxCU0kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkMwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIERSQzAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkMxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIERSQzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9UOjg7ICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfUjo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9SICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9TOjg7ICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX1MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX006ODsgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfVDo4OyAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjg0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1I6ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUzo4OyAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9TICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9NOjg7ICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX00gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI4NiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjg2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjg3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjg4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIRVJJOjg7ICAgICAgICAgICAgICAgICAgLyogICBFVEhFUkkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI5MSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVUk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ0VVSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVI6ODsgICAgICAgICAgICAvKiAgIElOVF9DU0lIMFRJUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJFOjg7ICAgICAgICAgICAvKiAgIElOVF9DU0lIMFRJUkUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElDOjg7ICAgICAgICAgICAgLyogICBJTlRfQ1NJSDFUSUMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjkxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDFUSUpDOjg7ICAgICAgICAgICAvKiAgIElOVF9DU0lIMVRJSkMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEwOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYwOjg7ICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjkyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIxOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjE6ODsgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjkzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjI6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UyMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMjo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjM6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UyMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjk0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYzOjg7ICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSDJYTUxCX0VSUklOVDo4OyAgICAgICAgICAgLyogICBIMlhNTEJfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWElDMV9FUlJJTlQ6ODsgICAgICAgICAgIC8qICAgSDJYSUMxX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMV9FUlJJTlQ6ODsgICAgICAgICAvKiAgIFgySFBFUkkxX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSOTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI5NiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkyX0VSUklOVDo4OyAgICAgICAgIC8qICAgWDJIUEVSSTJfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkzNF9FUlJJTlQ6ODsgICAgICAgIC8qICAgWDJIUEVSSTM0X0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNV9FUlJJTlQ6ODsgICAgICAgICAvKiAgIFgySFBFUkk1X0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNjdfRVJSSU5UOjg7ICAgICAgICAvKiAgIFgySFBFUkk2N19FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjk2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhEQkdSX0VSUklOVDo4OyAgICAgICAgICAvKiAgIFgySERCR1JfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSUkk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUFJSSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIElGRUkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBPRkZJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjk4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBQRlZFSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElGRUkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgSUZFSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPRkZJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE9GRkkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBQRlZFSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTdbMjBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxOTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMDkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTA5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMTkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTE5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMjkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxMzkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Mjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTM5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNDAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Njo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNDEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0OCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNDIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNDMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1ODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1OSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxNDQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2Mjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzQ0NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HWzM2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBJQ0RJQ0ZSbiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cwXzA6MTsgICAgICAvKiAgIFNXMFswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMF8xOjE7ICAgICAgLyogICBTVzBbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzFfMDoxOyAgICAgIC8qICAgU1cxWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxXzE6MTsgICAgICAvKiAgIFNXMVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMl8wOjE7ICAgICAgLyogICBTVzJbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzJfMToxOyAgICAgIC8qICAgU1cyWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1czXzA6MTsgICAgICAvKiAgIFNXM1swXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXM18xOjE7ICAgICAgLyogICBTVzNbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzRfMDoxOyAgICAgIC8qICAgU1c0WzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c0XzE6MTsgICAgICAvKiAgIFNXNFsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNV8wOjE7ICAgICAgLyogICBTVzVbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzVfMToxOyAgICAgIC8qICAgU1c1WzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c2XzA6MTsgICAgICAvKiAgIFNXNlswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNl8xOjE7ICAgICAgLyogICBTVzZbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzdfMDoxOyAgICAgIC8qICAgU1c3WzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c3XzE6MTsgICAgICAvKiAgIFNXN1sxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOF8wOjE7ICAgICAgLyogICBTVzhbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzhfMToxOyAgICAgIC8qICAgU1c4WzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c5XzA6MTsgICAgICAvKiAgIFNXOVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOV8xOjE7ICAgICAgLyogICBTVzlbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEwXzA6MTsgICAgIC8qICAgU1cxMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMF8xOjE7ICAgICAvKiAgIFNXMTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTFfMDoxOyAgICAgLyogICBTVzExWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzExXzE6MTsgICAgIC8qICAgU1cxMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMl8wOjE7ICAgICAvKiAgIFNXMTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTJfMToxOyAgICAgLyogICBTVzEyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEzXzA6MTsgICAgIC8qICAgU1cxM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxM18xOjE7ICAgICAvKiAgIFNXMTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTRfMDoxOyAgICAgLyogICBTVzE0WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE0XzE6MTsgICAgIC8qICAgU1cxNFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxNV8wOjE7ICAgICAvKiAgIFNXMTVbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTVfMToxOyAgICAgLyogICBTVzE1WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNVUlSUTBfMDoxOyAgLyogICBQTVVJUlEwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVVJUlEwXzE6MTsgIC8qICAgUE1VSVJRMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVJYMF8wOjE7ICAvKiAgIENPTU1SWDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTU1SWDBfMToxOyAgLyogICBDT01NUlgwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDT01NVFgwXzA6MTsgIC8qICAgQ09NTVRYMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVRYMF8xOjE7ICAvKiAgIENPTU1UWDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUSUlSUTBfMDoxOyAgLyogICBDVElJUlEwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVElJUlEwXzE6MTsgIC8qICAgQ1RJSVJRMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMF8wOjE7ICAgICAvKiAgIElSUTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTBfMToxOyAgICAgLyogICBJUlEwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlExXzA6MTsgICAgIC8qICAgSVJRMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMV8xOjE7ICAgICAvKiAgIElSUTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTJfMDoxOyAgICAgLyogICBJUlEyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEyXzE6MTsgICAgIC8qICAgSVJRMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRM18wOjE7ICAgICAvKiAgIElSUTNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTNfMToxOyAgICAgLyogICBJUlEzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE0XzA6MTsgICAgIC8qICAgSVJRNFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNF8xOjE7ICAgICAvKiAgIElSUTRbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTVfMDoxOyAgICAgLyogICBJUlE1WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE1XzE6MTsgICAgIC8qICAgSVJRNVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNl8wOjE7ICAgICAvKiAgIElSUTZbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTZfMToxOyAgICAgLyogICBJUlE2WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE3XzA6MTsgICAgIC8qICAgSVJRN1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRN18xOjE7ICAgICAvKiAgIElSUTdbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBMMzEwRVJSXzA6MTsgLyogICBQTDMxMEVSUlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEwzMTBFUlJfMToxOyAvKiAgIFBMMzEwRVJSWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQwXzA6MTsgIC8qICAgRE1BSU5UMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMF8xOjE7ICAvKiAgIERNQUlOVDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDFfMDoxOyAgLyogICBETUFJTlQxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxXzE6MTsgIC8qICAgRE1BSU5UMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMl8wOjE7ICAvKiAgIERNQUlOVDJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDJfMToxOyAgLyogICBETUFJTlQyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQzXzA6MTsgIC8qICAgRE1BSU5UM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UM18xOjE7ICAvKiAgIERNQUlOVDNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDRfMDoxOyAgLyogICBETUFJTlQ0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ0XzE6MTsgIC8qICAgRE1BSU5UNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNV8wOjE7ICAvKiAgIERNQUlOVDVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDVfMToxOyAgLyogICBETUFJTlQ1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ2XzA6MTsgIC8qICAgRE1BSU5UNlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNl8xOjE7ICAvKiAgIERNQUlOVDZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UN18wOjE7ICAvKiAgIERNQUlOVDdbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDdfMToxOyAgLyogICBETUFJTlQ3WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ4XzA6MTsgIC8qICAgRE1BSU5UOFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UOF8xOjE7ICAvKiAgIERNQUlOVDhbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDlfMDoxOyAgLyogICBETUFJTlQ5WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ5XzE6MTsgIC8qICAgRE1BSU5UOVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTBfMDoxOyAvKiAgIERNQUlOVDEwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMF8xOjE7IC8qICAgRE1BSU5UMTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDExXzA6MTsgLyogICBETUFJTlQxMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTFfMToxOyAvKiAgIERNQUlOVDExWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMl8wOjE7IC8qICAgRE1BSU5UMTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEyXzE6MTsgLyogICBETUFJTlQxMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTNfMDoxOyAvKiAgIERNQUlOVDEzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxM18xOjE7IC8qICAgRE1BSU5UMTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE0XzA6MTsgLyogICBETUFJTlQxNFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTRfMToxOyAvKiAgIERNQUlOVDE0WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNV8wOjE7IC8qICAgRE1BSU5UMTVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE1XzE6MTsgLyogICBETUFJTlQxNVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BRVJSXzA6MTsgICAvKiAgIERNQUVSUlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUVSUl8xOjE7ICAgLyogICBETUFFUlJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTg7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTBfMDoxOyAgICAvKiAgIFVTQkkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkwXzE6MTsgICAgLyogICBVU0JJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVU0JJMV8wOjE7ICAgIC8qICAgVVNCSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTFfMToxOyAgICAvKiAgIFVTQkkxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMF8wOjE7LyogICBTMF9WSV9WU1lOQzBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMF8xOjE7LyogICBTMF9WSV9WU1lOQzBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMF8wOjE7LyogICBTMF9MT19WU1lOQzBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMF8xOjE7LyogICBTMF9MT19WU1lOQzBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMF8wOjE7LyogICBTMF9WU1lOQ0VSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMF8xOjE7LyogICBTMF9WU1lOQ0VSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTBfMDoxOy8qICAgR1IzX1ZMSU5FMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMF8xOjE7LyogICBHUjNfVkxJTkUwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQwXzA6MTsvKiAgIFMwX1ZGSUVMRDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDBfMToxOy8qICAgUzBfVkZJRUxEMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjBfMDoxOy8qICAgSVYxX1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjBfMToxOy8qICAgSVYxX1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjBfMDoxOy8qICAgSVYzX1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjBfMToxOy8qICAgSVYzX1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjBfMDoxOy8qICAgSVY1X1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjBfMToxOy8qICAgSVY1X1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjBfMDoxOy8qICAgSVY2X1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjBfMToxOy8qICAgSVY2X1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTBfMDoxOy8qICAgUzBfV0xJTkUwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTBfMToxOy8qICAgUzBfV0xJTkUwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzBfMDoxOy8qICAgUzFfVklfVlNZTkMwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzBfMToxOy8qICAgUzFfVklfVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzBfMDoxOy8qICAgUzFfTE9fVlNZTkMwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzBfMToxOy8qICAgUzFfTE9fVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjBfMDoxOy8qICAgUzFfVlNZTkNFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjBfMToxOy8qICAgUzFfVlNZTkNFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQwXzA6MTsvKiAgIFMxX1ZGSUVMRDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDBfMToxOy8qICAgUzFfVkZJRUxEMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYyX1ZCVUZFUlIwXzA6MTsvKiAgIElWMl9WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYyX1ZCVUZFUlIwXzE6MTsvKiAgIElWMl9WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY0X1ZCVUZFUlIwXzA6MTsvKiAgIElWNF9WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY0X1ZCVUZFUlIwXzE6MTsvKiAgIElWNF9WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfV0xJTkUwXzA6MTsvKiAgIFMxX1dMSU5FMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfV0xJTkUwXzE6MTsvKiAgIFMxX1dMSU5FMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMF8wOjE7LyogICBPSVJfVklfVlNZTkMwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMwXzE6MTsvKiAgIE9JUl9WSV9WU1lOQzBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzBfMDoxOy8qICAgT0lSX0xPX1ZTWU5DMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMF8xOjE7LyogICBPSVJfTE9fVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVlNZTkNFUlIwXzA6MTsvKiAgIE9JUl9WU1lOQ0VSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WU1lOQ0VSUjBfMToxOy8qICAgT0lSX1ZTWU5DRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZGSUVMRDBfMDoxOy8qICAgT0lSX1ZGSUVMRDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQwXzE6MTsvKiAgIE9JUl9WRklFTEQwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSNTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMF8wOjE7LyogICBJVjdfVkJVRkVSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMF8xOjE7LyogICBJVjdfVkJVRkVSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMF8wOjE7LyogICBJVjhfVkJVRkVSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMF8xOjE7LyogICBJVjhfVkJVRkVSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTBfMDoxOy8qICAgT0lSX1dMSU5FMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMF8xOjE7LyogICBPSVJfV0xJTkUwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzFfMDoxOy8qICAgUzBfVklfVlNZTkMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzFfMToxOy8qICAgUzBfVklfVlNZTkMxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzFfMDoxOy8qICAgUzBfTE9fVlNZTkMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzFfMToxOy8qICAgUzBfTE9fVlNZTkMxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjFfMDoxOy8qICAgUzBfVlNZTkNFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjFfMToxOy8qICAgUzBfVlNZTkNFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUxXzA6MTsvKiAgIEdSM19WTElORTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTFfMToxOy8qICAgR1IzX1ZMSU5FMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMV8wOjE7LyogICBTMF9WRklFTEQxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQxXzE6MTsvKiAgIFMwX1ZGSUVMRDFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMV8wOjE7LyogICBJVjFfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMV8xOjE7LyogICBJVjFfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMV8wOjE7LyogICBJVjNfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMV8xOjE7LyogICBJVjNfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMV8wOjE7LyogICBJVjVfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMV8xOjE7LyogICBJVjVfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMV8wOjE7LyogICBJVjZfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMV8xOjE7LyogICBJVjZfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMV8wOjE7LyogICBTMF9XTElORTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMV8xOjE7LyogICBTMF9XTElORTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMV8wOjE7LyogICBTMV9WSV9WU1lOQzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMV8xOjE7LyogICBTMV9WSV9WU1lOQzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMV8wOjE7LyogICBTMV9MT19WU1lOQzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMV8xOjE7LyogICBTMV9MT19WU1lOQzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMV8wOjE7LyogICBTMV9WU1lOQ0VSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMV8xOjE7LyogICBTMV9WU1lOQ0VSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlI2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMV8wOjE7LyogICBTMV9WRklFTEQxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQxXzE6MTsvKiAgIFMxX1ZGSUVMRDFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMV8wOjE7LyogICBJVjJfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMV8xOjE7LyogICBJVjJfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMV8wOjE7LyogICBJVjRfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMV8xOjE7LyogICBJVjRfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMV8wOjE7LyogICBTMV9XTElORTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMV8xOjE7LyogICBTMV9XTElORTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzFfMDoxOy8qICAgT0lSX1ZJX1ZTWU5DMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMV8xOjE7LyogICBPSVJfVklfVlNZTkMxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMxXzA6MTsvKiAgIE9JUl9MT19WU1lOQzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzFfMToxOy8qICAgT0lSX0xPX1ZTWU5DMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZMSU5FMV8wOjE7LyogICBPSVJfVkxJTkUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkxJTkUxXzE6MTsvKiAgIE9JUl9WTElORTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQxXzA6MTsvKiAgIE9JUl9WRklFTEQxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMV8xOjE7LyogICBPSVJfVkZJRUxEMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIxXzA6MTsvKiAgIElWN19WQlVGRVJSMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIxXzE6MTsvKiAgIElWN19WQlVGRVJSMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIxXzA6MTsvKiAgIElWOF9WQlVGRVJSMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIxXzE6MTsvKiAgIElWOF9WQlVGRVJSMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMV8wOjE7LyogICBPSVJfV0xJTkUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUxXzE6MTsvKiAgIE9JUl9XTElORTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRJXzA6MTsgICAgLyogICBJTVJESVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJESV8xOjE7ICAgIC8qICAgSU1SRElbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkwXzA6MTsgICAvKiAgIElNUjJJMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMF8xOjE7ICAgLyogICBJTVIySTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIySTFfMDoxOyAgIC8qICAgSU1SMkkxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkxXzE6MTsgICAvKiAgIElNUjJJMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpFRElfMDoxOyAgICAgLyogICBKRURJWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRURJXzE6MTsgICAgIC8qICAgSkVESVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkRUSV8wOjE7ICAgICAvKiAgIEpEVElbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpEVElfMToxOyAgICAgLyogICBKRFRJWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSNzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjggICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDBfMDoxOyAgICAgLyogICBDTVAwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVAwXzE6MTsgICAgIC8qICAgQ01QMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QMV8wOjE7ICAgICAvKiAgIENNUDFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDFfMToxOyAgICAgLyogICBDTVAxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQwXzA6MTsgICAgIC8qICAgSU5UMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMF8xOjE7ICAgICAvKiAgIElOVDBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDFfMDoxOyAgICAgLyogICBJTlQxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQxXzE6MTsgICAgIC8qICAgSU5UMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMl8wOjE7ICAgICAvKiAgIElOVDJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDJfMToxOyAgICAgLyogICBJTlQyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQzXzA6MTsgICAgIC8qICAgSU5UM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UM18xOjE7ICAgICAvKiAgIElOVDNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMF8wOjE7ICAgLyogICBPU1RNSTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTBfMToxOyAgIC8qICAgT1NUTUkwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkxXzA6MTsgICAvKiAgIE9TVE1JMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMV8xOjE7ICAgLyogICBPU1RNSTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUlfMDoxOyAgICAgIC8qICAgQ01JWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JXzE6MTsgICAgICAvKiAgIENNSVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdUT1VUXzA6MTsgICAgLyogICBXVE9VVFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVE9VVF8xOjE7ICAgIC8qICAgV1RPVVRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRJXzA6MTsgICAgICAvKiAgIElUSVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUSV8xOjE7ICAgICAgLyogICBJVElbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQV8wOjE7ICAgIC8qICAgVEdJMEFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEFfMToxOyAgICAvKiAgIFRHSTBBWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBCXzA6MTsgICAgLyogICBUR0kwQlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQl8xOjE7ICAgIC8qICAgVEdJMEJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMENfMDoxOyAgICAvKiAgIFRHSTBDWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBDXzE6MTsgICAgLyogICBUR0kwQ1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRF8wOjE7ICAgIC8qICAgVEdJMERbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMERfMToxOyAgICAvKiAgIFRHSTBEWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBWXzA6MTsgICAgLyogICBUR0kwVlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwVl8xOjE7ICAgIC8qICAgVEdJMFZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlI5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRV8wOjE7ICAgIC8qICAgVEdJMEVbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEVfMToxOyAgICAvKiAgIFRHSTBFWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBGXzA6MTsgICAgLyogICBUR0kwRlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRl8xOjE7ICAgIC8qICAgVEdJMEZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUFfMDoxOyAgICAvKiAgIFRHSTFBWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFBXzE6MTsgICAgLyogICBUR0kxQVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxQl8wOjE7ICAgIC8qICAgVEdJMUJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUJfMToxOyAgICAvKiAgIFRHSTFCWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFWXzA6MTsgICAgLyogICBUR0kxVlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxVl8xOjE7ICAgIC8qICAgVEdJMVZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVVfMDoxOyAgICAvKiAgIFRHSTFVWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFVXzE6MTsgICAgLyogICBUR0kxVVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQV8wOjE7ICAgIC8qICAgVEdJMkFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkFfMToxOyAgICAvKiAgIFRHSTJBWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJCXzA6MTsgICAgLyogICBUR0kyQlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQl8xOjE7ICAgIC8qICAgVEdJMkJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlZfMDoxOyAgICAvKiAgIFRHSTJWWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJWXzE6MTsgICAgLyogICBUR0kyVlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyVV8wOjE7ICAgIC8qICAgVEdJMlVbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlVfMToxOyAgICAvKiAgIFRHSTJVWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNBXzA6MTsgICAgLyogICBUR0kzQVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQV8xOjE7ICAgIC8qICAgVEdJM0FbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0JfMDoxOyAgICAvKiAgIFRHSTNCWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNCXzE6MTsgICAgLyogICBUR0kzQlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQ18wOjE7ICAgIC8qICAgVEdJM0NbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0NfMToxOyAgICAvKiAgIFRHSTNDWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNEXzA6MTsgICAgLyogICBUR0kzRFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzRF8xOjE7ICAgIC8qICAgVEdJM0RbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM1ZfMDoxOyAgICAvKiAgIFRHSTNWWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNWXzE6MTsgICAgLyogICBUR0kzVlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0QV8wOjE7ICAgIC8qICAgVEdJNEFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEFfMToxOyAgICAvKiAgIFRHSTRBWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlI5OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEJfMDoxOyAgICAvKiAgIFRHSTRCWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRCXzE6MTsgICAgLyogICBUR0k0QlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Q18wOjE7ICAgIC8qICAgVEdJNENbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNENfMToxOyAgICAvKiAgIFRHSTRDWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTREXzA6MTsgICAgLyogICBUR0k0RFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0RF8xOjE7ICAgIC8qICAgVEdJNERbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNFZfMDoxOyAgICAvKiAgIFRHSTRWWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRWXzE6MTsgICAgLyogICBUR0k0VlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUkxXzA6MTsgICAgIC8qICAgQ01JMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMV8xOjE7ICAgICAvKiAgIENNSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTJfMDoxOyAgICAgLyogICBDTUkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUkyXzE6MTsgICAgIC8qICAgQ01JMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkwXzA6MTsgICAvKiAgIFNHREVJMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMF8xOjE7ICAgLyogICBTR0RFSTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTFfMDoxOyAgIC8qICAgU0dERUkxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkxXzE6MTsgICAvKiAgIFNHREVJMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMl8wOjE7ICAgLyogICBTR0RFSTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTJfMToxOyAgIC8qICAgU0dERUkyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkzXzA6MTsgICAvKiAgIFNHREVJM1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJM18xOjE7ICAgLyogICBTR0RFSTNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRElfMDoxOyAgICAgIC8qICAgQURJWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURJXzE6MTsgICAgICAvKiAgIEFESVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEV0FSXzA6MTsgICAgLyogICBBRFdBUlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFdBUl8xOjE7ICAgIC8qICAgQURXQVJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTBfMDoxOyAgICAvKiAgIFNTSUkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkwXzE6MTsgICAgLyogICBTU0lJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkwXzA6MTsgIC8qICAgU1NJUlhJMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMF8xOjE7ICAvKiAgIFNTSVJYSTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTBfMDoxOyAgLyogICBTU0lUWEkwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkwXzE6MTsgIC8qICAgU1NJVFhJMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTFfMDoxOyAgICAvKiAgIFNTSUkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkxXzE6MTsgICAgLyogICBTU0lJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjExICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTFfMDoxOyAgLyogICBTU0lSWEkxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkxXzE6MTsgIC8qICAgU1NJUlhJMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMV8wOjE7ICAvKiAgIFNTSVRYSTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTFfMToxOyAgLyogICBTU0lUWEkxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMl8wOjE7ICAgIC8qICAgU1NJSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTJfMToxOyAgICAvKiAgIFNTSUkyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJUSTJfMDoxOyAgLyogICBTU0lSVEkyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSVEkyXzE6MTsgIC8qICAgU1NJUlRJMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTNfMDoxOyAgICAvKiAgIFNTSUkzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkzXzE6MTsgICAgLyogICBTU0lJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkzXzA6MTsgIC8qICAgU1NJUlhJM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJM18xOjE7ICAvKiAgIFNTSVJYSTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTNfMDoxOyAgLyogICBTU0lUWEkzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkzXzE6MTsgIC8qICAgU1NJVFhJM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTRfMDoxOyAgICAvKiAgIFNTSUk0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk0XzE6MTsgICAgLyogICBTU0lJNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSVEk0XzA6MTsgIC8qICAgU1NJUlRJNFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJNF8xOjE7ICAvKiAgIFNTSVJUSTRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk1XzA6MTsgICAgLyogICBTU0lJNVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJNV8xOjE7ICAgIC8qICAgU1NJSTVbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJNV8wOjE7ICAvKiAgIFNTSVJYSTVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTVfMToxOyAgLyogICBTU0lSWEk1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEk1XzA6MTsgIC8qICAgU1NJVFhJNVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJNV8xOjE7ICAvKiAgIFNTSVRYSTVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRElGSV8wOjE7ICAgLyogICBTUERJRklbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUERJRklfMToxOyAgIC8qICAgU1BESUZJWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMF8wOjE7ICAgICAvKiAgIFRFSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTBfMToxOyAgICAgLyogICBURUkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTBfMDoxOyAgICAgIC8qICAgUkkwWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkwXzE6MTsgICAgICAvKiAgIFJJMFsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMF8wOjE7ICAgICAgLyogICBUSTBbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTBfMToxOyAgICAgIC8qICAgVEkwWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjExOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkwXzA6MTsgICAgIC8qICAgU1BJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMF8xOjE7ICAgICAvKiAgIFNQSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTBfMDoxOyAgICAgLyogICBTVEkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkwXzE6MTsgICAgIC8qICAgU1RJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTBfMDoxOyAgICAvKiAgIE5BS0kwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kwXzE6MTsgICAgLyogICBOQUtJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkwXzA6MTsgICAgIC8qICAgQUxJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMF8xOjE7ICAgICAvKiAgIEFMSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kwXzA6MTsgICAgLyogICBUTU9JMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMF8xOjE7ICAgIC8qICAgVE1PSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMV8wOjE7ICAgICAvKiAgIFRFSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTFfMToxOyAgICAgLyogICBURUkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTFfMDoxOyAgICAgIC8qICAgUkkxWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkxXzE6MTsgICAgICAvKiAgIFJJMVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMV8wOjE7ICAgICAgLyogICBUSTFbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTFfMToxOyAgICAgIC8qICAgVEkxWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMV8wOjE7ICAgICAvKiAgIFNQSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTFfMToxOyAgICAgLyogICBTUEkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkxXzA6MTsgICAgIC8qICAgU1RJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMV8xOjE7ICAgICAvKiAgIFNUSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kxXzA6MTsgICAgLyogICBOQUtJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMV8xOjE7ICAgIC8qICAgTkFLSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMV8wOjE7ICAgICAvKiAgIEFMSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTFfMToxOyAgICAgLyogICBBTEkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMV8wOjE7ICAgIC8qICAgVE1PSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTFfMToxOyAgICAvKiAgIFRNT0kxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTJfMDoxOyAgICAgLyogICBURUkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkyXzE6MTsgICAgIC8qICAgVEVJMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkyXzA6MTsgICAgICAvKiAgIFJJMlswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMl8xOjE7ICAgICAgLyogICBSSTJbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTJfMDoxOyAgICAgIC8qICAgVEkyWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkyXzE6MTsgICAgICAvKiAgIFRJMlsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMl8wOjE7ICAgICAvKiAgIFNQSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTJfMToxOyAgICAgLyogICBTUEkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkyXzA6MTsgICAgIC8qICAgU1RJMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMl8xOjE7ICAgICAvKiAgIFNUSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kyXzA6MTsgICAgLyogICBOQUtJMlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMl8xOjE7ICAgIC8qICAgTkFLSTJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMl8wOjE7ICAgICAvKiAgIEFMSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTJfMToxOyAgICAgLyogICBBTEkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMl8wOjE7ICAgIC8qICAgVE1PSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTJfMToxOyAgICAvKiAgIFRNT0kyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTNfMDoxOyAgICAgLyogICBURUkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkzXzE6MTsgICAgIC8qICAgVEVJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkzXzA6MTsgICAgICAvKiAgIFJJM1swXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJM18xOjE7ICAgICAgLyogICBSSTNbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTNfMDoxOyAgICAgIC8qICAgVEkzWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkzXzE6MTsgICAgICAvKiAgIFRJM1sxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTNfMDoxOyAgICAgLyogICBTUEkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkzXzE6MTsgICAgIC8qICAgU1BJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJM18wOjE7ICAgICAvKiAgIFNUSTNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTNfMToxOyAgICAgLyogICBTVEkzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJM18wOjE7ICAgIC8qICAgTkFLSTNbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTNfMToxOyAgICAvKiAgIE5BS0kzWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTNfMDoxOyAgICAgLyogICBBTEkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkzXzE6MTsgICAgIC8qICAgQUxJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTNfMDoxOyAgICAvKiAgIFRNT0kzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kzXzE6MTsgICAgLyogICBUTU9JM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkwXzA6MTsgICAgIC8qICAgQlJJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMF8xOjE7ICAgICAvKiAgIEJSSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTBfMDoxOyAgICAgLyogICBFUkkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwXzE6MTsgICAgIC8qICAgRVJJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMF8wOjE7ICAgICAvKiAgIFJYSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTBfMToxOyAgICAgLyogICBSWEkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjE0ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTBfMDoxOyAgICAgLyogICBUWEkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkwXzE6MTsgICAgIC8qICAgVFhJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMV8wOjE7ICAgICAvKiAgIEJSSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTFfMToxOyAgICAgLyogICBCUkkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxXzA6MTsgICAgIC8qICAgRVJJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMV8xOjE7ICAgICAvKiAgIEVSSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTFfMDoxOyAgICAgLyogICBSWEkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkxXzE6MTsgICAgIC8qICAgUlhJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMV8wOjE7ICAgICAvKiAgIFRYSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTFfMToxOyAgICAgLyogICBUWEkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkyXzA6MTsgICAgIC8qICAgQlJJMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMl8xOjE7ICAgICAvKiAgIEJSSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTJfMDoxOyAgICAgLyogICBFUkkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkyXzE6MTsgICAgIC8qICAgRVJJMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMl8wOjE7ICAgICAvKiAgIFJYSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTJfMToxOyAgICAgLyogICBSWEkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkyXzA6MTsgICAgIC8qICAgVFhJMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMl8xOjE7ICAgICAvKiAgIFRYSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTNfMDoxOyAgICAgLyogICBCUkkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkzXzE6MTsgICAgIC8qICAgQlJJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJM18wOjE7ICAgICAvKiAgIEVSSTNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTNfMToxOyAgICAgLyogICBFUkkzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkzXzA6MTsgICAgIC8qICAgUlhJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJM18xOjE7ICAgICAvKiAgIFJYSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTNfMDoxOyAgICAgLyogICBUWEkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkzXzE6MTsgICAgIC8qICAgVFhJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNF8wOjE7ICAgICAvKiAgIEJSSTRbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTRfMToxOyAgICAgLyogICBCUkk0WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk0XzA6MTsgICAgIC8qICAgRVJJNFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNF8xOjE7ICAgICAvKiAgIEVSSTRbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTRfMDoxOyAgICAgLyogICBSWEk0WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk0XzE6MTsgICAgIC8qICAgUlhJNFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjE0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk0XzA6MTsgICAgIC8qICAgVFhJNFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNF8xOjE7ICAgICAvKiAgIFRYSTRbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTVfMDoxOyAgICAgLyogICBCUkk1WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk1XzE6MTsgICAgIC8qICAgQlJJNVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNV8wOjE7ICAgICAvKiAgIEVSSTVbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTVfMToxOyAgICAgLyogICBFUkk1WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk1XzA6MTsgICAgIC8qICAgUlhJNVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNV8xOjE7ICAgICAvKiAgIFJYSTVbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTVfMDoxOyAgICAgLyogICBUWEk1WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk1XzE6MTsgICAgIC8qICAgVFhJNVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNl8wOjE7ICAgICAvKiAgIEJSSTZbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTZfMToxOyAgICAgLyogICBCUkk2WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk2XzA6MTsgICAgIC8qICAgRVJJNlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNl8xOjE7ICAgICAvKiAgIEVSSTZbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTZfMDoxOyAgICAgLyogICBSWEk2WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk2XzE6MTsgICAgIC8qICAgUlhJNlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNl8wOjE7ICAgICAvKiAgIFRYSTZbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTZfMToxOyAgICAgLyogICBUWEk2WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk3XzA6MTsgICAgIC8qICAgQlJJN1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJN18xOjE7ICAgICAvKiAgIEJSSTdbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTdfMDoxOyAgICAgLyogICBFUkk3WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk3XzE6MTsgICAgIC8qICAgRVJJN1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJN18wOjE7ICAgICAvKiAgIFJYSTdbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTdfMToxOyAgICAgLyogICBSWEk3WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk3XzA6MTsgICAgIC8qICAgVFhJN1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJN18xOjE7ICAgICAvKiAgIFRYSTdbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdFUklfMDoxOyAgICAgLyogICBHRVJJWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHRVJJXzE6MTsgICAgIC8qICAgR0VSSVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkZJXzA6MTsgICAgICAvKiAgIFJGSVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJGSV8xOjE7ICAgICAgLyogICBSRklbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTBfMDoxOyAgIC8qICAgQ0ZSWEkwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkwXzE6MTsgICAvKiAgIENGUlhJMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxNTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTBfMDoxOyAgICAvKiAgIENFUkkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkwXzE6MTsgICAgLyogICBDRVJJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMF8wOjE7ICAgIC8qICAgQ1RYSTBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTBfMToxOyAgICAvKiAgIENUWEkwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMV8wOjE7ICAgLyogICBDRlJYSTFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTFfMToxOyAgIC8qICAgQ0ZSWEkxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTFfMDoxOyAgICAvKiAgIENFUkkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkxXzE6MTsgICAgLyogICBDRVJJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMV8wOjE7ICAgIC8qICAgQ1RYSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTFfMToxOyAgICAvKiAgIENUWEkxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMl8wOjE7ICAgLyogICBDRlJYSTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTJfMToxOyAgIC8qICAgQ0ZSWEkyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTJfMDoxOyAgICAvKiAgIENFUkkyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkyXzE6MTsgICAgLyogICBDRVJJMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMl8wOjE7ICAgIC8qICAgQ1RYSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTJfMToxOyAgICAvKiAgIENUWEkyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJM18wOjE7ICAgLyogICBDRlJYSTNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTNfMToxOyAgIC8qICAgQ0ZSWEkzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTNfMDoxOyAgICAvKiAgIENFUkkzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkzXzE6MTsgICAgLyogICBDRVJJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJM18wOjE7ICAgIC8qICAgQ1RYSTNbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTNfMToxOyAgICAvKiAgIENUWEkzWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJNF8wOjE7ICAgLyogICBDRlJYSTRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTRfMToxOyAgIC8qICAgQ0ZSWEk0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTRfMDoxOyAgICAvKiAgIENFUkk0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkk0XzE6MTsgICAgLyogICBDRVJJNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJNF8wOjE7ICAgIC8qICAgQ1RYSTRbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTRfMToxOyAgICAvKiAgIENUWEk0WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkwXzA6MTsgICAgLyogICBTUEVJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMF8xOjE7ICAgIC8qICAgU1BFSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTBfMDoxOyAgICAvKiAgIFNQUkkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkwXzE6MTsgICAgLyogICBTUFJJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTY7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjE3ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkwXzA6MTsgICAgLyogICBTUFRJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMF8xOjE7ICAgIC8qICAgU1BUSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTFfMDoxOyAgICAvKiAgIFNQRUkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkxXzE6MTsgICAgLyogICBTUEVJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMV8wOjE7ICAgIC8qICAgU1BSSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTFfMToxOyAgICAvKiAgIFNQUkkxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkxXzA6MTsgICAgLyogICBTUFRJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMV8xOjE7ICAgIC8qICAgU1BUSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTJfMDoxOyAgICAvKiAgIFNQRUkyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkyXzE6MTsgICAgLyogICBTUEVJMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMl8wOjE7ICAgIC8qICAgU1BSSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTJfMToxOyAgICAvKiAgIFNQUkkyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkyXzA6MTsgICAgLyogICBTUFRJMlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMl8xOjE7ICAgIC8qICAgU1BUSTJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTNfMDoxOyAgICAvKiAgIFNQRUkzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkzXzE6MTsgICAgLyogICBTUEVJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJM18wOjE7ICAgIC8qICAgU1BSSTNbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTNfMToxOyAgICAvKiAgIFNQUkkzWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkzXzA6MTsgICAgLyogICBTUFRJM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJM18xOjE7ICAgIC8qICAgU1BUSTNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTRfMDoxOyAgICAvKiAgIFNQRUk0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUk0XzE6MTsgICAgLyogICBTUEVJNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJNF8wOjE7ICAgIC8qICAgU1BSSTRbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTRfMToxOyAgICAvKiAgIFNQUkk0WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEk0XzA6MTsgICAgLyogICBTUFRJNFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJNF8xOjE7ICAgIC8qICAgU1BUSTRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlREXzA6MTsgICAvKiAgIElFQkJURFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURF8xOjE7ICAgLyogICBJRUJCVERbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVEVSUl8wOjE7IC8qICAgSUVCQlRFUlJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURVJSXzE6MTsgLyogICBJRUJCVEVSUlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRTVEFfMDoxOyAvKiAgIElFQkJUU1RBWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVFNUQV8xOjE7IC8qICAgSUVCQlRTVEFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxNzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRWXzA6MTsgICAvKiAgIElFQkJUVlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJUVl8xOjE7ICAgLyogICBJRUJCVFZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJU1lfMDoxOyAgICAgIC8qICAgSVNZWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNZXzE6MTsgICAgICAvKiAgIElTWVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFUlJfMDoxOyAgICAgLyogICBJRVJSWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVJSXzE6MTsgICAgIC8qICAgSUVSUlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRBUkdfMDoxOyAgICAvKiAgIElUQVJHWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUQVJHXzE6MTsgICAgLyogICBJVEFSR1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJU0VDXzA6MTsgICAgIC8qICAgSVNFQ1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNFQ18xOjE7ICAgICAvKiAgIElTRUNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElCVUZfMDoxOyAgICAgLyogICBJQlVGWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJQlVGXzE6MTsgICAgIC8qICAgSUJVRlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJFQURZXzA6MTsgICAvKiAgIElSRUFEWVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSRUFEWV8xOjE7ICAgLyogICBJUkVBRFlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFNURV8wOjE7ICAgIC8qICAgRkxTVEVbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxTVEVfMToxOyAgICAvKiAgIEZMU1RFWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVEVORElfMDoxOyAgLyogICBGTFRFTkRJWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRFTkRJXzE6MTsgIC8qICAgRkxURU5ESVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMElfMDoxOyAvKiAgIEZMVFJFUTBJWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRSRVEwSV8xOjE7IC8qICAgRkxUUkVRMElbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTFJXzA6MTsgLyogICBGTFRSRVExSVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMUlfMToxOyAvKiAgIEZMVFJFUTFJWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMwXzA6MTsgICAgIC8qICAgTU1DMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMF8xOjE7ICAgICAvKiAgIE1NQzBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzFfMDoxOyAgICAgLyogICBNTUMxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMxXzE6MTsgICAgIC8qICAgTU1DMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMl8wOjE7ICAgICAvKiAgIE1NQzJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzJfMToxOyAgICAgLyogICBNTUMyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8zXzA6MTsgIC8qICAgU0RISTBfM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfM18xOjE7ICAvKiAgIFNESEkwXzNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzBfMDoxOyAgLyogICBTREhJMF8wWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8wXzE6MTsgIC8qICAgU0RISTBfMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjE4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8xXzA6MTsgIC8qICAgU0RISTBfMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMV8xOjE7ICAvKiAgIFNESEkwXzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzNfMDoxOyAgLyogICBTREhJMV8zWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8zXzE6MTsgIC8qICAgU0RISTFfM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMF8wOjE7ICAvKiAgIFNESEkxXzBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzBfMToxOyAgLyogICBTREhJMV8wWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8xXzA6MTsgIC8qICAgU0RISTFfMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMV8xOjE7ICAvKiAgIFNESEkxXzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFSTV8wOjE7ICAgICAgLyogICBBUk1bMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBUk1fMToxOyAgICAgIC8qICAgQVJNWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFJEXzA6MTsgICAgICAvKiAgIFBSRFswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRF8xOjE7ICAgICAgLyogICBQUkRbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVVBfMDoxOyAgICAgIC8qICAgQ1VQWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1VQXzE6MTsgICAgICAvKiAgIENVUFsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMF8wOjE7ICAgLyogICBTQ1VBSTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTBfMToxOyAgIC8qICAgU0NVQUkwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkxXzA6MTsgICAvKiAgIFNDVUFJMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMV8xOjE7ICAgLyogICBTQ1VBSTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkwXzA6MTsgIC8qICAgU0NVRkRJMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMF8xOjE7ICAvKiAgIFNDVUZESTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTFfMDoxOyAgLyogICBTQ1VGREkxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkxXzE6MTsgIC8qICAgU0NVRkRJMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMl8wOjE7ICAvKiAgIFNDVUZESTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTJfMToxOyAgLyogICBTQ1VGREkyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkzXzA6MTsgIC8qICAgU0NVRkRJM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJM18xOjE7ICAvKiAgIFNDVUZESTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTBfMDoxOyAgLyogICBTQ1VGVUkwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkwXzE6MTsgIC8qICAgU0NVRlVJMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMV8wOjE7ICAvKiAgIFNDVUZVSTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTFfMToxOyAgLyogICBTQ1VGVUkxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkyXzA6MTsgIC8qICAgU0NVRlVJMlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMl8xOjE7ICAvKiAgIFNDVUZVSTJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxOTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJM18wOjE7ICAvKiAgIFNDVUZVSTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTNfMToxOyAgLyogICBTQ1VGVUkzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkwXzA6MTsgIC8qICAgU0NVRFZJMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMF8xOjE7ICAvKiAgIFNDVURWSTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTFfMDoxOyAgLyogICBTQ1VEVkkxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkxXzE6MTsgIC8qICAgU0NVRFZJMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMl8wOjE7ICAvKiAgIFNDVURWSTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTJfMToxOyAgLyogICBTQ1VEVkkyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkzXzA6MTsgIC8qICAgU0NVRFZJM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJM18xOjE7ICAvKiAgIFNDVURWSTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQkNJXzA6MTsgICAgLyogICBNTEJDSVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJDSV8xOjE7ICAgIC8qICAgTUxCQ0lbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUxCU0lfMDoxOyAgICAvKiAgIE1MQlNJWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQlNJXzE6MTsgICAgLyogICBNTEJTSVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkMwXzA6MTsgICAgIC8qICAgRFJDMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMF8xOjE7ICAgICAvKiAgIERSQzBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSQzFfMDoxOyAgICAgLyogICBEUkMxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkMxXzE6MTsgICAgIC8qICAgRFJDMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9UXzA6MTsvKiAgIExJTkkwX0lOVF9UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfVF8xOjE7LyogICBMSU5JMF9JTlRfVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1JfMDoxOy8qICAgTElOSTBfSU5UX1JbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9SXzE6MTsvKiAgIExJTkkwX0lOVF9SWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfU18wOjE7LyogICBMSU5JMF9JTlRfU1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1NfMToxOy8qICAgTElOSTBfSU5UX1NbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9NXzA6MTsvKiAgIExJTkkwX0lOVF9NWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfTV8xOjE7LyogICBMSU5JMF9JTlRfTVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1RfMDoxOy8qICAgTElOSTFfSU5UX1RbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9UXzE6MTsvKiAgIExJTkkxX0lOVF9UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjIxICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9SXzA6MTsvKiAgIExJTkkxX0lOVF9SWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUl8xOjE7LyogICBMSU5JMV9JTlRfUlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1NfMDoxOy8qICAgTElOSTFfSU5UX1NbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9TXzE6MTsvKiAgIExJTkkxX0lOVF9TWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfTV8wOjE7LyogICBMSU5JMV9JTlRfTVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX01fMToxOy8qICAgTElOSTFfSU5UX01bMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwXzA6MTsgICAgIC8qICAgRVJJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMF8xOjE7ICAgICAvKiAgIEVSSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTBfMDoxOyAgICAgLyogICBSWEkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkwXzE6MTsgICAgIC8qICAgUlhJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMF8wOjE7ICAgICAvKiAgIFRYSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTBfMToxOyAgICAgLyogICBUWEkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkwXzA6MTsgICAgIC8qICAgVEVJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMF8xOjE7ICAgICAvKiAgIFRFSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTFfMDoxOyAgICAgLyogICBFUkkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxXzE6MTsgICAgIC8qICAgRVJJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjIxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkxXzA6MTsgICAgIC8qICAgUlhJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMV8xOjE7ICAgICAvKiAgIFJYSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTFfMDoxOyAgICAgLyogICBUWEkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkxXzE6MTsgICAgIC8qICAgVFhJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMV8wOjE7ICAgICAvKiAgIFRFSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTFfMToxOyAgICAgLyogICBURUkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIRVJJXzA6MTsgICAvKiAgIEVUSEVSSVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEVSSV8xOjE7ICAgLyogICBFVEhFUklbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVSV8wOjE7ICAgICAvKiAgIENFVUlbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVUlfMToxOyAgICAgLyogICBDRVVJWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJfMDoxOy8qICAgSU5UX0NTSUgwVElSWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJfMToxOy8qICAgSU5UX0NTSUgwVElSWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJFXzA6MTsvKiAgIElOVF9DU0lIMFRJUkVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMFRJUkVfMToxOy8qICAgSU5UX0NTSUgwVElSRVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElDXzA6MTsvKiAgIElOVF9DU0lIMVRJQ1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElDXzE6MTsvKiAgIElOVF9DU0lIMVRJQ1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjIyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDFUSUpDXzA6MTsvKiAgIElOVF9DU0lIMVRJSkNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJSkNfMToxOy8qICAgSU5UX0NTSUgxVElKQ1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEwXzA6MTsgICAvKiAgIEVDQ0UxMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMF8xOjE7ICAgLyogICBFQ0NFMTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjBfMDoxOyAgIC8qICAgRUNDRTIwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIwXzE6MTsgICAvKiAgIEVDQ0UyMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjBfMDoxOyAgLyogICBFQ0NPVkYwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYwXzE6MTsgIC8qICAgRUNDT1ZGMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTExXzA6MTsgICAvKiAgIEVDQ0UxMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMV8xOjE7ICAgLyogICBFQ0NFMTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjFfMDoxOyAgIC8qICAgRUNDRTIxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIxXzE6MTsgICAvKiAgIEVDQ0UyMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjFfMDoxOyAgLyogICBFQ0NPVkYxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYxXzE6MTsgIC8qICAgRUNDT1ZGMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEyXzA6MTsgICAvKiAgIEVDQ0UxMlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMl8xOjE7ICAgLyogICBFQ0NFMTJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjJfMDoxOyAgIC8qICAgRUNDRTIyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIyXzE6MTsgICAvKiAgIEVDQ0UyMlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjJfMDoxOyAgLyogICBFQ0NPVkYyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYyXzE6MTsgIC8qICAgRUNDT1ZGMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEzXzA6MTsgICAvKiAgIEVDQ0UxM1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxM18xOjE7ICAgLyogICBFQ0NFMTNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjNfMDoxOyAgIC8qICAgRUNDRTIzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIzXzE6MTsgICAvKiAgIEVDQ0UyM1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjNfMDoxOyAgLyogICBFQ0NPVkYzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYzXzE6MTsgIC8qICAgRUNDT1ZGM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSDJYTUxCX0VSUklOVF8wOjE7LyogICBIMlhNTEJfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIMlhNTEJfRVJSSU5UXzE6MTsvKiAgIEgyWE1MQl9FUlJJTlRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWElDMV9FUlJJTlRfMDoxOy8qICAgSDJYSUMxX0VSUklOVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSDJYSUMxX0VSUklOVF8xOjE7LyogICBIMlhJQzFfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMV9FUlJJTlRfMDoxOy8qICAgWDJIUEVSSTFfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMV9FUlJJTlRfMToxOy8qICAgWDJIUEVSSTFfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjI0ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkyX0VSUklOVF8wOjE7LyogICBYMkhQRVJJMl9FUlJJTlRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkyX0VSUklOVF8xOjE7LyogICBYMkhQRVJJMl9FUlJJTlRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkzNF9FUlJJTlRfMDoxOy8qICAgWDJIUEVSSTM0X0VSUklOVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTM0X0VSUklOVF8xOjE7LyogICBYMkhQRVJJMzRfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNV9FUlJJTlRfMDoxOy8qICAgWDJIUEVSSTVfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNV9FUlJJTlRfMToxOy8qICAgWDJIUEVSSTVfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNjdfRVJSSU5UXzA6MTsvKiAgIFgySFBFUkk2N19FUlJJTlRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkk2N19FUlJJTlRfMToxOy8qICAgWDJIUEVSSTY3X0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIREJHUl9FUlJJTlRfMDoxOy8qICAgWDJIREJHUl9FUlJJTlRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySERCR1JfRVJSSU5UXzE6MTsvKiAgIFgySERCR1JfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUlJJXzA6MTsgICAgIC8qICAgUFJSSVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFJSSV8xOjE7ICAgICAvKiAgIFBSUklbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElGRUkwXzA6MTsgICAgLyogICBJRkVJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMF8xOjE7ICAgIC8qICAgSUZFSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTBfMDoxOyAgICAvKiAgIE9GRkkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkwXzE6MTsgICAgLyogICBPRkZJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQRlZFSTBfMDoxOyAgIC8qICAgUEZWRUkwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkwXzE6MTsgICAvKiAgIFBGVkVJMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElGRUkxXzA6MTsgICAgLyogICBJRkVJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMV8xOjE7ICAgIC8qICAgSUZFSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTFfMDoxOyAgICAvKiAgIE9GRkkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkxXzE6MTsgICAgLyogICBPRkZJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQRlZFSTFfMDoxOyAgIC8qICAgUEZWRUkxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkxXzE6MTsgICAvKiAgIFBGVkVJMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjI1ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIGR1bW15OjMyOyAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjU7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjI2ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQwXzA6MTsgICAgLyogICBUSU5UMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMF8xOjE7ICAgIC8qICAgVElOVDBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDFfMDoxOyAgICAvKiAgIFRJTlQxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxXzE6MTsgICAgLyogICBUSU5UMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMl8wOjE7ICAgIC8qICAgVElOVDJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDJfMToxOyAgICAvKiAgIFRJTlQyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzXzA6MTsgICAgLyogICBUSU5UM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UM18xOjE7ICAgIC8qICAgVElOVDNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDRfMDoxOyAgICAvKiAgIFRJTlQ0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0XzE6MTsgICAgLyogICBUSU5UNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNV8wOjE7ICAgIC8qICAgVElOVDVbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDVfMToxOyAgICAvKiAgIFRJTlQ1WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2XzA6MTsgICAgLyogICBUSU5UNlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNl8xOjE7ICAgIC8qICAgVElOVDZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDdfMDoxOyAgICAvKiAgIFRJTlQ3WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3XzE6MTsgICAgLyogICBUSU5UN1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOF8wOjE7ICAgIC8qICAgVElOVDhbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDhfMToxOyAgICAvKiAgIFRJTlQ4WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5XzA6MTsgICAgLyogICBUSU5UOVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOV8xOjE7ICAgIC8qICAgVElOVDlbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwXzA6MTsgICAvKiAgIFRJTlQxMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMF8xOjE7ICAgLyogICBUSU5UMTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTFfMDoxOyAgIC8qICAgVElOVDExWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExXzE6MTsgICAvKiAgIFRJTlQxMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMl8wOjE7ICAgLyogICBUSU5UMTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTJfMToxOyAgIC8qICAgVElOVDEyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzXzA6MTsgICAvKiAgIFRJTlQxM1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxM18xOjE7ICAgLyogICBUSU5UMTNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTRfMDoxOyAgIC8qICAgVElOVDE0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0XzE6MTsgICAvKiAgIFRJTlQxNFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNV8wOjE7ICAgLyogICBUSU5UMTVbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTVfMToxOyAgIC8qICAgVElOVDE1WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjI2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTZfMDoxOyAgIC8qICAgVElOVDE2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2XzE6MTsgICAvKiAgIFRJTlQxNlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxN18wOjE7ICAgLyogICBUSU5UMTdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTdfMToxOyAgIC8qICAgVElOVDE3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE4XzA6MTsgICAvKiAgIFRJTlQxOFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxOF8xOjE7ICAgLyogICBUSU5UMThbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTlfMDoxOyAgIC8qICAgVElOVDE5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE5XzE6MTsgICAvKiAgIFRJTlQxOVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMF8wOjE7ICAgLyogICBUSU5UMjBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjBfMToxOyAgIC8qICAgVElOVDIwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIxXzA6MTsgICAvKiAgIFRJTlQyMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMV8xOjE7ICAgLyogICBUSU5UMjFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjJfMDoxOyAgIC8qICAgVElOVDIyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIyXzE6MTsgICAvKiAgIFRJTlQyMlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyM18wOjE7ICAgLyogICBUSU5UMjNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjNfMToxOyAgIC8qICAgVElOVDIzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI0XzA6MTsgICAvKiAgIFRJTlQyNFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNF8xOjE7ICAgLyogICBUSU5UMjRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjVfMDoxOyAgIC8qICAgVElOVDI1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI1XzE6MTsgICAvKiAgIFRJTlQyNVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNl8wOjE7ICAgLyogICBUSU5UMjZbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjZfMToxOyAgIC8qICAgVElOVDI2WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI3XzA6MTsgICAvKiAgIFRJTlQyN1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyN18xOjE7ICAgLyogICBUSU5UMjdbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjhfMDoxOyAgIC8qICAgVElOVDI4WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI4XzE6MTsgICAvKiAgIFRJTlQyOFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOV8wOjE7ICAgLyogICBUSU5UMjlbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjlfMToxOyAgIC8qICAgVElOVDI5WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMwXzA6MTsgICAvKiAgIFRJTlQzMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMF8xOjE7ICAgLyogICBUSU5UMzBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzFfMDoxOyAgIC8qICAgVElOVDMxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMxXzE6MTsgICAvKiAgIFRJTlQzMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyNzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMyXzA6MTsgICAvKiAgIFRJTlQzMlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMl8xOjE7ICAgLyogICBUSU5UMzJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzNfMDoxOyAgIC8qICAgVElOVDMzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMzXzE6MTsgICAvKiAgIFRJTlQzM1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNF8wOjE7ICAgLyogICBUSU5UMzRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzRfMToxOyAgIC8qICAgVElOVDM0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM1XzA6MTsgICAvKiAgIFRJTlQzNVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNV8xOjE7ICAgLyogICBUSU5UMzVbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzZfMDoxOyAgIC8qICAgVElOVDM2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM2XzE6MTsgICAvKiAgIFRJTlQzNlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzN18wOjE7ICAgLyogICBUSU5UMzdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzdfMToxOyAgIC8qICAgVElOVDM3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM4XzA6MTsgICAvKiAgIFRJTlQzOFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOF8xOjE7ICAgLyogICBUSU5UMzhbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzlfMDoxOyAgIC8qICAgVElOVDM5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM5XzE6MTsgICAvKiAgIFRJTlQzOVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MF8wOjE7ICAgLyogICBUSU5UNDBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDBfMToxOyAgIC8qICAgVElOVDQwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQxXzA6MTsgICAvKiAgIFRJTlQ0MVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MV8xOjE7ICAgLyogICBUSU5UNDFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDJfMDoxOyAgIC8qICAgVElOVDQyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQyXzE6MTsgICAvKiAgIFRJTlQ0MlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0M18wOjE7ICAgLyogICBUSU5UNDNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDNfMToxOyAgIC8qICAgVElOVDQzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ0XzA6MTsgICAvKiAgIFRJTlQ0NFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NF8xOjE7ICAgLyogICBUSU5UNDRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDVfMDoxOyAgIC8qICAgVElOVDQ1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ1XzE6MTsgICAvKiAgIFRJTlQ0NVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Nl8wOjE7ICAgLyogICBUSU5UNDZbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDZfMToxOyAgIC8qICAgVElOVDQ2WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ3XzA6MTsgICAvKiAgIFRJTlQ0N1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0N18xOjE7ICAgLyogICBUSU5UNDdbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjI5ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0OF8wOjE7ICAgLyogICBUSU5UNDhbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDhfMToxOyAgIC8qICAgVElOVDQ4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ5XzA6MTsgICAvKiAgIFRJTlQ0OVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0OV8xOjE7ICAgLyogICBUSU5UNDlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTBfMDoxOyAgIC8qICAgVElOVDUwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUwXzE6MTsgICAvKiAgIFRJTlQ1MFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MV8wOjE7ICAgLyogICBUSU5UNTFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTFfMToxOyAgIC8qICAgVElOVDUxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUyXzA6MTsgICAvKiAgIFRJTlQ1MlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Ml8xOjE7ICAgLyogICBUSU5UNTJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTNfMDoxOyAgIC8qICAgVElOVDUzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUzXzE6MTsgICAvKiAgIFRJTlQ1M1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NF8wOjE7ICAgLyogICBUSU5UNTRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTRfMToxOyAgIC8qICAgVElOVDU0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU1XzA6MTsgICAvKiAgIFRJTlQ1NVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NV8xOjE7ICAgLyogICBUSU5UNTVbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTZfMDoxOyAgIC8qICAgVElOVDU2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU2XzE6MTsgICAvKiAgIFRJTlQ1NlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1N18wOjE7ICAgLyogICBUSU5UNTdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTdfMToxOyAgIC8qICAgVElOVDU3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU4XzA6MTsgICAvKiAgIFRJTlQ1OFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1OF8xOjE7ICAgLyogICBUSU5UNThbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTlfMDoxOyAgIC8qICAgVElOVDU5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU5XzE6MTsgICAvKiAgIFRJTlQ1OVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MF8wOjE7ICAgLyogICBUSU5UNjBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjBfMToxOyAgIC8qICAgVElOVDYwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYxXzA6MTsgICAvKiAgIFRJTlQ2MVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MV8xOjE7ICAgLyogICBUSU5UNjFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjJfMDoxOyAgIC8qICAgVElOVDYyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYyXzE6MTsgICAvKiAgIFRJTlQ2MlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2M18wOjE7ICAgLyogICBUSU5UNjNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjNfMToxOyAgIC8qICAgVElOVDYzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjI5OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIzMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjRfMDoxOyAgIC8qICAgVElOVDY0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY0XzE6MTsgICAvKiAgIFRJTlQ2NFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NV8wOjE7ICAgLyogICBUSU5UNjVbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjVfMToxOyAgIC8qICAgVElOVDY1WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY2XzA6MTsgICAvKiAgIFRJTlQ2NlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Nl8xOjE7ICAgLyogICBUSU5UNjZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjdfMDoxOyAgIC8qICAgVElOVDY3WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY3XzE6MTsgICAvKiAgIFRJTlQ2N1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2OF8wOjE7ICAgLyogICBUSU5UNjhbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjhfMToxOyAgIC8qICAgVElOVDY4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY5XzA6MTsgICAvKiAgIFRJTlQ2OVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2OV8xOjE7ICAgLyogICBUSU5UNjlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzBfMDoxOyAgIC8qICAgVElOVDcwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcwXzE6MTsgICAvKiAgIFRJTlQ3MFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MV8wOjE7ICAgLyogICBUSU5UNzFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzFfMToxOyAgIC8qICAgVElOVDcxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcyXzA6MTsgICAvKiAgIFRJTlQ3MlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Ml8xOjE7ICAgLyogICBUSU5UNzJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzNfMDoxOyAgIC8qICAgVElOVDczWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDczXzE6MTsgICAvKiAgIFRJTlQ3M1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMzA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjMxICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MF8wOjE7ICAgLyogICBUSU5UODBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODBfMToxOyAgIC8qICAgVElOVDgwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgxXzA6MTsgICAvKiAgIFRJTlQ4MVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MV8xOjE7ICAgLyogICBUSU5UODFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODJfMDoxOyAgIC8qICAgVElOVDgyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgyXzE6MTsgICAvKiAgIFRJTlQ4MlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4M18wOjE7ICAgLyogICBUSU5UODNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODNfMToxOyAgIC8qICAgVElOVDgzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg0XzA6MTsgICAvKiAgIFRJTlQ4NFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NF8xOjE7ICAgLyogICBUSU5UODRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODVfMDoxOyAgIC8qICAgVElOVDg1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg1XzE6MTsgICAvKiAgIFRJTlQ4NVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Nl8wOjE7ICAgLyogICBUSU5UODZbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODZfMToxOyAgIC8qICAgVElOVDg2WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg3XzA6MTsgICAvKiAgIFRJTlQ4N1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4N18xOjE7ICAgLyogICBUSU5UODdbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODhfMDoxOyAgIC8qICAgVElOVDg4WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg4XzE6MTsgICAvKiAgIFRJTlQ4OFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4OV8wOjE7ICAgLyogICBUSU5UODlbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODlfMToxOyAgIC8qICAgVElOVDg5WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkwXzA6MTsgICAvKiAgIFRJTlQ5MFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MF8xOjE7ICAgLyogICBUSU5UOTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTFfMDoxOyAgIC8qICAgVElOVDkxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkxXzE6MTsgICAvKiAgIFRJTlQ5MVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Ml8wOjE7ICAgLyogICBUSU5UOTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTJfMToxOyAgIC8qICAgVElOVDkyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkzXzA6MTsgICAvKiAgIFRJTlQ5M1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5M18xOjE7ICAgLyogICBUSU5UOTNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTRfMDoxOyAgIC8qICAgVElOVDk0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk0XzE6MTsgICAvKiAgIFRJTlQ5NFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NV8wOjE7ICAgLyogICBUSU5UOTVbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTVfMToxOyAgIC8qICAgVElOVDk1WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjMxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIzMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTZfMDoxOyAgIC8qICAgVElOVDk2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk2XzE6MTsgICAvKiAgIFRJTlQ5NlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5N18wOjE7ICAgLyogICBUSU5UOTdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTdfMToxOyAgIC8qICAgVElOVDk3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk4XzA6MTsgICAvKiAgIFRJTlQ5OFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OF8xOjE7ICAgLyogICBUSU5UOThbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTlfMDoxOyAgIC8qICAgVElOVDk5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk5XzE6MTsgICAvKiAgIFRJTlQ5OVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDBfMDoxOyAgLyogICBUSU5UMTAwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAwXzE6MTsgIC8qICAgVElOVDEwMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMV8wOjE7ICAvKiAgIFRJTlQxMDFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDFfMToxOyAgLyogICBUSU5UMTAxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAyXzA6MTsgIC8qICAgVElOVDEwMlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMl8xOjE7ICAvKiAgIFRJTlQxMDJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDNfMDoxOyAgLyogICBUSU5UMTAzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAzXzE6MTsgIC8qICAgVElOVDEwM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNF8wOjE7ICAvKiAgIFRJTlQxMDRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDRfMToxOyAgLyogICBUSU5UMTA0WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA1XzA6MTsgIC8qICAgVElOVDEwNVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNV8xOjE7ICAvKiAgIFRJTlQxMDVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDZfMDoxOyAgLyogICBUSU5UMTA2WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA2XzE6MTsgIC8qICAgVElOVDEwNlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwN18wOjE7ICAvKiAgIFRJTlQxMDdbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDdfMToxOyAgLyogICBUSU5UMTA3WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA4XzA6MTsgIC8qICAgVElOVDEwOFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOF8xOjE7ICAvKiAgIFRJTlQxMDhbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDlfMDoxOyAgLyogICBUSU5UMTA5WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA5XzE6MTsgIC8qICAgVElOVDEwOVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMF8wOjE7ICAvKiAgIFRJTlQxMTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTBfMToxOyAgLyogICBUSU5UMTEwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTExXzA6MTsgIC8qICAgVElOVDExMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMV8xOjE7ICAvKiAgIFRJTlQxMTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMl8wOjE7ICAvKiAgIFRJTlQxMTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTJfMToxOyAgLyogICBUSU5UMTEyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEzXzA6MTsgIC8qICAgVElOVDExM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExM18xOjE7ICAvKiAgIFRJTlQxMTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTRfMDoxOyAgLyogICBUSU5UMTE0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE0XzE6MTsgIC8qICAgVElOVDExNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNV8wOjE7ICAvKiAgIFRJTlQxMTVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTVfMToxOyAgLyogICBUSU5UMTE1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE2XzA6MTsgIC8qICAgVElOVDExNlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNl8xOjE7ICAvKiAgIFRJTlQxMTZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTdfMDoxOyAgLyogICBUSU5UMTE3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE3XzE6MTsgIC8qICAgVElOVDExN1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOF8wOjE7ICAvKiAgIFRJTlQxMThbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMThfMToxOyAgLyogICBUSU5UMTE4WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE5XzA6MTsgIC8qICAgVElOVDExOVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOV8xOjE7ICAvKiAgIFRJTlQxMTlbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjBfMDoxOyAgLyogICBUSU5UMTIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIwXzE6MTsgIC8qICAgVElOVDEyMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMV8wOjE7ICAvKiAgIFRJTlQxMjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjFfMToxOyAgLyogICBUSU5UMTIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIyXzA6MTsgIC8qICAgVElOVDEyMlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMl8xOjE7ICAvKiAgIFRJTlQxMjJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjNfMDoxOyAgLyogICBUSU5UMTIzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIzXzE6MTsgIC8qICAgVElOVDEyM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNF8wOjE7ICAvKiAgIFRJTlQxMjRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjRfMToxOyAgLyogICBUSU5UMTI0WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI1XzA6MTsgIC8qICAgVElOVDEyNVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNV8xOjE7ICAvKiAgIFRJTlQxMjVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjZfMDoxOyAgLyogICBUSU5UMTI2WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI2XzE6MTsgIC8qICAgVElOVDEyNlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyN18wOjE7ICAvKiAgIFRJTlQxMjdbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjdfMToxOyAgLyogICBUSU5UMTI3WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMzM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjM0ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjhfMDoxOyAgLyogICBUSU5UMTI4WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI4XzE6MTsgIC8qICAgVElOVDEyOFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOV8wOjE7ICAvKiAgIFRJTlQxMjlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjlfMToxOyAgLyogICBUSU5UMTI5WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMwXzA6MTsgIC8qICAgVElOVDEzMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMF8xOjE7ICAvKiAgIFRJTlQxMzBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzFfMDoxOyAgLyogICBUSU5UMTMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMxXzE6MTsgIC8qICAgVElOVDEzMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMl8wOjE7ICAvKiAgIFRJTlQxMzJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzJfMToxOyAgLyogICBUSU5UMTMyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMzXzA6MTsgIC8qICAgVElOVDEzM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzM18xOjE7ICAvKiAgIFRJTlQxMzNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzRfMDoxOyAgLyogICBUSU5UMTM0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM0XzE6MTsgIC8qICAgVElOVDEzNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNV8wOjE7ICAvKiAgIFRJTlQxMzVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzVfMToxOyAgLyogICBUSU5UMTM1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM2XzA6MTsgIC8qICAgVElOVDEzNlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNl8xOjE7ICAvKiAgIFRJTlQxMzZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzdfMDoxOyAgLyogICBUSU5UMTM3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM3XzE6MTsgIC8qICAgVElOVDEzN1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOF8wOjE7ICAvKiAgIFRJTlQxMzhbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzhfMToxOyAgLyogICBUSU5UMTM4WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM5XzA6MTsgIC8qICAgVElOVDEzOVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOV8xOjE7ICAvKiAgIFRJTlQxMzlbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDBfMDoxOyAgLyogICBUSU5UMTQwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQwXzE6MTsgIC8qICAgVElOVDE0MFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MV8wOjE7ICAvKiAgIFRJTlQxNDFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDFfMToxOyAgLyogICBUSU5UMTQxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQyXzA6MTsgIC8qICAgVElOVDE0MlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Ml8xOjE7ICAvKiAgIFRJTlQxNDJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDNfMDoxOyAgLyogICBUSU5UMTQzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQzXzE6MTsgIC8qICAgVElOVDE0M1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjM0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIzNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ0XzA6MTsgIC8qICAgVElOVDE0NFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NF8xOjE7ICAvKiAgIFRJTlQxNDRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDVfMDoxOyAgLyogICBUSU5UMTQ1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ1XzE6MTsgIC8qICAgVElOVDE0NVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Nl8wOjE7ICAvKiAgIFRJTlQxNDZbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDZfMToxOyAgLyogICBUSU5UMTQ2WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ3XzA6MTsgIC8qICAgVElOVDE0N1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0N18xOjE7ICAvKiAgIFRJTlQxNDdbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDhfMDoxOyAgLyogICBUSU5UMTQ4WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ4XzE6MTsgIC8qICAgVElOVDE0OFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OV8wOjE7ICAvKiAgIFRJTlQxNDlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDlfMToxOyAgLyogICBUSU5UMTQ5WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUwXzA6MTsgIC8qICAgVElOVDE1MFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MF8xOjE7ICAvKiAgIFRJTlQxNTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTFfMDoxOyAgLyogICBUSU5UMTUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUxXzE6MTsgIC8qICAgVElOVDE1MVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Ml8wOjE7ICAvKiAgIFRJTlQxNTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTJfMToxOyAgLyogICBUSU5UMTUyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUzXzA6MTsgIC8qICAgVElOVDE1M1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1M18xOjE7ICAvKiAgIFRJTlQxNTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTRfMDoxOyAgLyogICBUSU5UMTU0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU0XzE6MTsgIC8qICAgVElOVDE1NFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NV8wOjE7ICAvKiAgIFRJTlQxNTVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTVfMToxOyAgLyogICBUSU5UMTU1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU2XzA6MTsgIC8qICAgVElOVDE1NlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Nl8xOjE7ICAvKiAgIFRJTlQxNTZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTdfMDoxOyAgLyogICBUSU5UMTU3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU3XzE6MTsgIC8qICAgVElOVDE1N1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1OF8wOjE7ICAvKiAgIFRJTlQxNThbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNThfMToxOyAgLyogICBUSU5UMTU4WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU5XzA6MTsgIC8qICAgVElOVDE1OVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1OV8xOjE7ICAvKiAgIFRJTlQxNTlbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzNTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MF8wOjE7ICAvKiAgIFRJTlQxNjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjBfMToxOyAgLyogICBUSU5UMTYwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYxXzA6MTsgIC8qICAgVElOVDE2MVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MV8xOjE7ICAvKiAgIFRJTlQxNjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjJfMDoxOyAgLyogICBUSU5UMTYyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYyXzE6MTsgIC8qICAgVElOVDE2MlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzNjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJQ0ZSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE5WzEwOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwcGlfc3RhdHVzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgcHBpX3N0YXR1czA6MTsgICAgICAgICAgICAgLyogICBwcGlfc3RhdHVzWzBdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHBwaV9zdGF0dXMxOjE7ICAgICAgICAgICAgIC8qICAgcHBpX3N0YXR1c1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBwcGlfc3RhdHVzMjoxOyAgICAgICAgICAgICAvKiAgIHBwaV9zdGF0dXNbMl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgcHBpX3N0YXR1czM6MTsgICAgICAgICAgICAgLyogICBwcGlfc3RhdHVzWzNdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHBwaV9zdGF0dXM0OjE7ICAgICAgICAgICAgIC8qICAgcHBpX3N0YXR1c1s0XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gcHBpX3N0YXR1czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcGlfc3RhdHVzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMDoxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czE6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzFdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyOjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMzoxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbM10gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czQ6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzRdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXM1OjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1s1XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzNjoxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbNl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czc6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzddICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXM4OjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1s4XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzOToxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbOV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czEwOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzEwXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTE6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMTFdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxMjoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxMl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czEzOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzEzXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTQ6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMTRdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxNToxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxNV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czE2OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzE2XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTc6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMTddICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxODoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxOF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czE5OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzE5XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjA6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjBdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyMToxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czIyOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzIyXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjM6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjNdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyNDoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syNF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czI1OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzI1XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjY6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjZdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyNzoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syN10gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czI4OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzI4XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjk6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjldICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMzMDoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1szMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czMxOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzMxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBzcGlfc3RhdHVzWzE3XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIwWzQ0MF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RTR0lSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0lJTlRJRDo0OyAgICAgICAgICAgICAgICAvKiAgIFNHSUlOVElEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBVFQ6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0FUVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUFVUYXJnZXRMaXN0Ojg7ICAgICAgICAgICAvKiAgIENQVVRhcmdldExpc3QgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVGFyZ2V0TGlzdEZpbHRlcjoyOyAgICAgICAgLyogICBUYXJnZXRMaXN0RmlsdGVyICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RTR0lSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIxWzI1Ml07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NJQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFbmFibGVTOjE7ICAgICAgICAgICAgICAgICAvKiAgIEVuYWJsZVMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRW5hYmxlTlM6MTsgICAgICAgICAgICAgICAgLyogICBFbmFibGVOUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFja0N0bDoxOyAgICAgICAgICAgICAgICAgIC8qICAgQWNrQ3RsICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSVFFbjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEZJUUVuICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0JQUjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTQlBSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NJQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ1BNUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFByaW9yaXR5Ojg7ICAgICAgICAgICAgICAgIC8qICAgUHJpb3JpdHkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDUE1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NCUFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCaW5hcnlwb2ludDozOyAgICAgICAgICAgICAvKiAgIEJpbmFyeXBvaW50ICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NCUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ0lBUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDS0lOVElEOjEwOyAgICAgICAgICAgICAgIC8qICAgQUNLSU5USUQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUFVJRDozOyAgICAgICAgICAgICAgICAgICAvKiAgIENQVUlEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ0lBUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDRU9JUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU9JSU5USUQ6MTA7ICAgICAgICAgICAgICAgLyogICBFT0lJTlRJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQVUlEOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1BVSUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDRU9JUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NSUFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQcmlvcml0eTo4OyAgICAgICAgICAgICAgICAvKiAgIFByaW9yaXR5ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ1JQUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDSFBJUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEVORElOVElEOjEwOyAgICAgICAgICAgICAgLyogICBQRU5ESU5USUQgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQVUlEOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1BVSUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDSFBJUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NBQlBSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCaW5hcnlwb2ludDozOyAgICAgICAgICAgICAvKiAgIEJpbmFyeXBvaW50ICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NBQlBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIyWzIyMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIElDQ0lEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NJRFIgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2ludGNfMiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBJTlRDMiAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IwICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlGOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBOTUlGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSUU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE5NSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JTDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTk1JTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMDBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMDBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTAxUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTAxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlExMFM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlExMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMTFTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMTFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTIwUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTIwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEyMVM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlEyMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMzBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMzBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTMxUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTMxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE0MFM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlE0MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNDFTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNDFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTUwUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTUwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE1MVM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlE1MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNjBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNjBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTYxUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTYxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE3MFM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlE3MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNzFTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNzFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUlFSUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTBGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTBGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlExRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlExRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMkY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTNGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTNGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE0RjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE0RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNUY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTZGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTZGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE3RjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE3RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUlFSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNWElSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1YSToxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1YSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE1YSVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTVhJUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWEk6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNWEkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBNWElSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNpZm5kZWYgQVJNX1NJTQ0KLSNkZWZpbmUgSU5UQyAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2ludGMgKikgIDB4RTgyMDEwMDApICAvKiBJTlRDICBBZGRyZXNzICovDQotI2RlZmluZSBJTlRDMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaW50Y18yICopMHhGQ0ZFRjgwMCkgIC8qIElOVEMyIEFkZHJlc3MgKi8NCi0jZWxzZQkvKiBBUk1fU0lNICovDQotI2RlZmluZSBJTlRDICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaW50YyAqKSAgMHg0NTIwMTAwMCkgIC8qIElOVEMgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIElOVEMyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9pbnRjXzIgKikweDQ5RkVGODAwKSAgLyogSU5UQzIgQWRkcmVzcyAqLw0KLSNlbmRpZgkvKiBBUk1fU0lNICovDQotDQotI2VuZGlmIC8qIF9fSU5UQ19JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvbXR1Ml9pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9tdHUyX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1Y2M0ZGIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9tdHUyX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBESVNDTEFJTUVSDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkgDQotKiAgIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXIgDQotKiAgIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qDQotKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIA0KLSogICBSRUdBUkRJTkcgVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgDQotKiAgIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgDQotKiAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSANCi0qICAgRElTQ0xBSU1FRC4NCi0qDQotKiAgIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMgDQotKiAgIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRSANCi0qICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyANCi0qICAgRk9SIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTDQotKiAgIEFGRklMSUFURVMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qDQotKiAgIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgDQotKiAgIHNvZnR3YXJlIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuDQotKiAgIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgDQotKiAgIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZSBmb2xsb3dpbmcgbGluazogDQotKiAgIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGVjaG5pY2FsIHJlZmVyZW5jZSBkYXRhICoqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIFN5c3RlbSBOYW1lIDogDQotKiAgIEZpbGUgTmFtZSAgIDogbXR1Ml9pb2RlZmluZS5oDQotKiAgIEFic3RyYWN0ICAgIDogDQotKiAgIFZlcnNpb24gICAgIDogMS4wMC4wMA0KLSogICBEZXZpY2UgICAgICA6IEFSTQ0KLSogICBUb29sLUNoYWluICA6IA0KLSogICBPUyAgICAgICAgICA6IE5vbmUNCi0qICAgSC9XIFBsYXRmb3JtOiANCi0qICAgRGVzY3JpcHRpb24gOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBIaXN0b3J5ICAgICA6IEphbi4xMSwyMDEzIFZlci4xLjAwLjAwDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fTVRVMl9JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fTVRVMl9JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF9tdHUyeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBNVFUyICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8yICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MjsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVVOjE7ICAgICAgICAgICAgIC8qICAgVENJRVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8yICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVjoxOyAgICAgICAgICAgICAgLyogICBUQ0ZWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGVToxOyAgICAgICAgICAgICAgLyogICBUQ0ZVICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENGRDoxOyAgICAgICAgICAgICAgLyogICBUQ0ZEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFNSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQV8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQV8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdSQl8yICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdSQl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbNTAwXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzMgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjozOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENSXzQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFBTQzozOyAgICAgICAgICAgICAgLyogICBUUFNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0tFRzoyOyAgICAgICAgICAgICAgLyogICBDS0VHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0NMUjozOyAgICAgICAgICAgICAgLyogICBDQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENSXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZBOjE7ICAgICAgICAgICAgICAgLyogICBCRkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZCOjE7ICAgICAgICAgICAgICAgLyogICBCRkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE1EUl80ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTUQ6NDsgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZBOjE7ICAgICAgICAgICAgICAgLyogICBCRkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkZCOjE7ICAgICAgICAgICAgICAgLyogICBCRkIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE1EUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkhfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkhfMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkxfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9DOjQ7ICAgICAgICAgICAgICAgLyogICBJT0MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9EOjQ7ICAgICAgICAgICAgICAgLyogICBJT0QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkxfMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkhfNCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9BOjQ7ICAgICAgICAgICAgICAgLyogICBJT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9COjQ7ICAgICAgICAgICAgICAgLyogICBJT0IgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkhfNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElPUkxfNCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9DOjQ7ICAgICAgICAgICAgICAgLyogICBJT0MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU9EOjQ7ICAgICAgICAgICAgICAgLyogICBJT0QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElPUkxfNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUM6MTsgICAgICAgICAgICAgLyogICBUR0lFQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUQ6MTsgICAgICAgICAgICAgLyogICBUR0lFRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElFUl80ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUE6MTsgICAgICAgICAgICAgLyogICBUR0lFQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUI6MTsgICAgICAgICAgICAgLyogICBUR0lFQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUM6MTsgICAgICAgICAgICAgLyogICBUR0lFQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVEdJRUQ6MTsgICAgICAgICAgICAgLyogICBUR0lFRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENJRVY6MTsgICAgICAgICAgICAgLyogICBUQ0lFViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRTI6MTsgICAgICAgICAgICAgLyogICBUVEdFMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVFRHRToxOyAgICAgICAgICAgICAgLyogICBUVEdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElFUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9FUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0UzQjoxOyAgICAgICAgICAgICAgLyogICBPRTNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QToxOyAgICAgICAgICAgICAgLyogICBPRTRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QjoxOyAgICAgICAgICAgICAgLyogICBPRTRCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0UzRDoxOyAgICAgICAgICAgICAgLyogICBPRTNEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0QzoxOyAgICAgICAgICAgICAgLyogICBPRTRDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0U0RDoxOyAgICAgICAgICAgICAgLyogICBPRTREICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9FUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVUY6MTsgICAgICAgICAgICAgICAgLyogICBVRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVkY6MTsgICAgICAgICAgICAgICAgLyogICBWRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgV0Y6MTsgICAgICAgICAgICAgICAgLyogICBXRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRkI6MTsgICAgICAgICAgICAgICAgLyogICBGQiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUDoxOyAgICAgICAgICAgICAgICAgLyogICBQICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTjoxOyAgICAgICAgICAgICAgICAgLyogICBOICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkRDOjE7ICAgICAgICAgICAgICAgLyogICBCREMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9DUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTUDoxOyAgICAgICAgICAgICAgLyogICBPTFNQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTTjoxOyAgICAgICAgICAgICAgLyogICBPTFNOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9DUzoxOyAgICAgICAgICAgICAgLyogICBUT0NTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9DTDoxOyAgICAgICAgICAgICAgLyogICBUT0NMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUFNZRToxOyAgICAgICAgICAgICAgLyogICBQU1lFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9DUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9DUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMVA6MTsgICAgICAgICAgICAgLyogICBPTFMxUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMU46MTsgICAgICAgICAgICAgLyogICBPTFMxTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMlA6MTsgICAgICAgICAgICAgLyogICBPTFMyUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTMk46MTsgICAgICAgICAgICAgLyogICBPTFMyTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM1A6MTsgICAgICAgICAgICAgLyogICBPTFMzUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgT0xTM046MTsgICAgICAgICAgICAgLyogICBPTFMzTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQkY6MjsgICAgICAgICAgICAgICAgLyogICBCRiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9DUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF8zICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENOVF80ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENOVF80OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENEUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ0RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBURERSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRERFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRTICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRTOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDQlIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8zICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl80ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJVENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF80VkNPUjozOyAgICAgICAgICAgIC8qICAgXzRWQ09SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFQ0VkVOOjE7ICAgICAgICAgICAgIC8qICAgVDRWRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8zQUNPUjozOyAgICAgICAgICAgIC8qICAgXzNBQ09SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFQzQUVOOjE7ICAgICAgICAgICAgIC8qICAgVDNBRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJVENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJVENOVCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF80VkNOVDozOyAgICAgICAgICAgIC8qICAgXzRWQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8zQUNOVDozOyAgICAgICAgICAgIC8qICAgXzNBQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJVENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVEVSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJURToyOyAgICAgICAgICAgICAgIC8qICAgQlRFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVEVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRERVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRERVI6MTsgICAgICAgICAgICAgIC8qICAgVERFUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRERVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPTEJSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMVAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMlAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMk4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNQOjE7ICAgICAgICAgICAgIC8qICAgT0xTM1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNOOjE7ICAgICAgICAgICAgIC8qICAgT0xTM04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPTEJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQjRWRToxOyAgICAgICAgICAgIC8qICAgSVRCNFZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQjNBRToxOyAgICAgICAgICAgIC8qICAgSVRCM0FFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQTRWRToxOyAgICAgICAgICAgIC8qICAgSVRBNFZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQTNBRToxOyAgICAgICAgICAgIC8qICAgSVRBM0FFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNEJFOjE7ICAgICAgICAgICAgIC8qICAgRFQ0QkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVUNEJFOjE7ICAgICAgICAgICAgIC8qICAgVVQ0QkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNEFFOjE7ICAgICAgICAgICAgIC8qICAgRFQ0QUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVUNEFFOjE7ICAgICAgICAgICAgIC8qICAgVVQ0QUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJGOjI7ICAgICAgICAgICAgICAgIC8qICAgQkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPUkFfNCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPUkFfNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPUkJfNCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPUkJfNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPQlJBXzQgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPQlJBXzQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPQlJCXzQgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPQlJCXzQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRXQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdSRToxOyAgICAgICAgICAgICAgIC8qICAgV1JFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDRToxOyAgICAgICAgICAgICAgIC8qICAgQ0NFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRXQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFszMV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTVFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDA6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDE6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDI6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDM6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDQ6MTsgICAgICAgICAgICAgIC8qICAgQ1NUNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTWVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMwOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMxOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMyOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMzOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkM0OjE7ICAgICAgICAgICAgIC8qICAgU1lOQzQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTWVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSV0VSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJXRToxOyAgICAgICAgICAgICAgIC8qICAgUldFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSV0VSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsxMjNdOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8wICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGRToxOyAgICAgICAgICAgICAgIC8qICAgQkZFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8wICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1sxNl07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkVfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkVfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkZfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkZfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVIyXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVFOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVGOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0UyOjE7ICAgICAgICAgICAgIC8qICAgVFRHRTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVIyXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUjJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkU6MTsgICAgICAgICAgICAgIC8qICAgVEdGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkY6MTsgICAgICAgICAgICAgIC8qICAgVEdGRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUjJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0U6MTsgICAgICAgICAgICAgIC8qICAgVFRTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFs4OV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8xICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MjsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVVOjE7ICAgICAgICAgICAgIC8qICAgVENJRVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8xICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlU6MTsgICAgICAgICAgICAgIC8qICAgVENGVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJQ0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkxQUU6MTsgICAgICAgICAgICAgIC8qICAgSTFBRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkxQkU6MTsgICAgICAgICAgICAgIC8qICAgSTFCRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkyQUU6MTsgICAgICAgICAgICAgIC8qICAgSTJBRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkyQkU6MTsgICAgICAgICAgICAgIC8qICAgSTJCRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJQ0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLQ0KLSNkZWZpbmUgTVRVMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfbXR1MiAqKTB4RkNGRjAwMDApICAvKiBNVFUyIEFkZHJlc3MgKi8NCi0NCi0jZW5kaWYgLyogX19NVFUyX0lPREVGSU5FX0hfXyAqLw0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9vc3RtX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL29zdG1faW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMzZWNmNC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL29zdG1faW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICAgOiBvc3RtX2lvZGVmaW5lLmgNCi0qIFZlcnNpb24gICAgICAgOiAwLjAxDQotKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLSogICAgICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gdmVjb3RyLnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGc2VjMTFfT1NUTV8xMjA2MDEucGRmDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fT1NUTV9JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fT1NUTV9JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF9vc3RtX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBPU1RNICAqLw0KLSAgICAgICBfVURXT1JEIE9TVE1uQ01QOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uQ01QICAgICAqLw0KLSAgICAgICBfVURXT1JEIE9TVE1uQ05UOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uQ05UICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uVEUgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uVEU6MTsgICAgICAgICAgIC8qICAgT1NUTW5URSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9TVE1uVEU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uVFMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uVFM6MTsgICAgICAgICAgIC8qICAgT1NUTW5UUyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9TVE1uVFM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uVFQgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uVFQ6MTsgICAgICAgICAgIC8qICAgT1NUTW5UVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9TVE1uVFQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9TVE1uQ1RMICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uTUQwOjE7ICAgICAgICAgIC8qICAgT1NUTW5NRDAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9TVE1uTUQxOjE7ICAgICAgICAgIC8qICAgT1NUTW5NRDEgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9TVE1uQ1RMOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUJT1NUTTAJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9vc3RtX24gKikweEZDRkVDMDAwKSAgIC8qIE9TVE0wIEFkZHJlc3MgKi8NCi0jZGVmaW5lCU9TVE0xCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICopMHhGQ0ZFQzQwMCkgICAvKiBPU1RNMSBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fT1NUTV9JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcGZjX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3BmY19pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTY2YTE3Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcGZjX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBESVNDTEFJTUVSDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkgDQotKiAgIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXIgDQotKiAgIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qDQotKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIA0KLSogICBSRUdBUkRJTkcgVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgDQotKiAgIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgDQotKiAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSANCi0qICAgRElTQ0xBSU1FRC4NCi0qDQotKiAgIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMgDQotKiAgIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRSANCi0qICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyANCi0qICAgRk9SIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTDQotKiAgIEFGRklMSUFURVMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qDQotKiAgIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgDQotKiAgIHNvZnR3YXJlIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuDQotKiAgIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgDQotKiAgIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZSBmb2xsb3dpbmcgbGluazogDQotKiAgIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGVjaG5pY2FsIHJlZmVyZW5jZSBkYXRhICoqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIFN5c3RlbSBOYW1lIDogDQotKiAgIEZpbGUgTmFtZSAgIDogcGZjX2lvZGVmaW5lLmgNCi0qICAgQWJzdHJhY3QgICAgOiANCi0qICAgVmVyc2lvbiAgICAgOiAxLjAwLjAwDQotKiAgIERldmljZSAgICAgIDogQVJNDQotKiAgIFRvb2wtQ2hhaW4gIDogDQotKiAgIE9TICAgICAgICAgIDogTm9uZQ0KLSogICBIL1cgUGxhdGZvcm06IA0KLSogICBEZXNjcmlwdGlvbiA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIEhpc3RvcnkgICAgIDogTWFyLjA2LDIwMTIgVmVyLjEuMDAuMDANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19QRkNfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX1BGQ19JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF9wZmNfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFBGQyAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBuICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMDoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMToxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMjoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMzoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuNDoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuNToxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuNjoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuNzoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuODoxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuOToxOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTA6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTE6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTI6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTM6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTQ6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBuMTU6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBTUm4gICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXT1JEIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFTkFCTEU6MTY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTRVQ6MTY7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRVQ7DQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4wOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4zOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm40OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm41OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm42OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm43OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm44OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm45OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xNjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xNzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xODoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4xOToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yNjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yNzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yODoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4yOToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4zMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBTUm4zMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFNSbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMHgxMDAtNF07ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUFBSbiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjA6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjE6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjI6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjM6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjQ6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjU6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjY6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjc6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjg6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjk6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjEwOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjExOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjEyOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjEzOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjE0OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUFBSbjE1OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUFBSbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMHgxMDAtMl07ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUE1uICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMDoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMToxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMjoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMzoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uNDoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uNToxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uNjoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uNzoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uODoxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uOToxOyAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTA6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTE6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTI6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTM6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTQ6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1uMTU6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUE1uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMHgxMDAtMl07ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUE1DbiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjA6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjE6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjI6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjM6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjQ6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjU6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjY6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1Dbjc6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1Dbjg6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1Dbjk6MTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjEwOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjExOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjEyOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjEzOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjE0OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUE1DbjE1OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBNQ247ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBGQ24gICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24wOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24yOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24zOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ240OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ241OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ242OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ243OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ244OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ245OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ24xNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBGQ247ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBGQ0VuICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuNjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuNzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuODoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuOToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTI6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTM6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTQ6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBGQ0VuMTU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBGQ0VuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBOT1RuICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuNjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuNzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuODoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuOToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTI6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTM6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTQ6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBOT1RuMTU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBOT1RuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBNU1JuICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXT1JEIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFTkFCTEU6MTY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTRVQ6MTY7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRVQ7DQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuNjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuNzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuODoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuOToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTE6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTI6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTM6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTQ6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTU6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTY6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTc6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTg6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMTk6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjE6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjI6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjM6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjQ6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjU6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjY6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjc6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjg6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMjk6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMzA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNU1JuMzE6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUE1TUm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMHgxMDAtNF07ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUE1DU1JuICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdPUkQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOQUJMRToxNjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFVDoxNjsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFNFVDsNCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMzoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuNDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuNToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuNjoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuNzoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuODoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuOToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTA6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTE6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTI6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTM6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTQ6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTU6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTY6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTc6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTg6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMTk6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjA6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjE6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjI6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjM6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjQ6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjU6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjY6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjc6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjg6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMjk6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMzA6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1DU1JuMzE6MTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQTUNTUm47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsweDEwMC00XTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkFDRW4gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4wOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4yOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4zOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW40OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW41OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW42OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW43OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW44OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW45OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xMDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xMToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xMjoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xMzoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xNDoxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNBRW4xNToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNBRW47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbMHg0MDAwLTB4YTAwLTJdOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSUJDbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjY6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjc6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjg6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjk6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjEwOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjExOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjEyOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjEzOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjE0OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUJDbjE1OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSUJDbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbMHgxMDAtMl07ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQQkRDbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjY6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjc6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjg6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjk6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjEwOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjExOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjEyOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjEzOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjE0OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQkRDbjE1OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQQkRDbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbMHgxMDAtMl07ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBDbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjY6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjc6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjg6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjk6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjEwOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjExOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjEyOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjEzOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjE0OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBDbjE1OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBDbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbMHgxMDAtMl07ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIFBPUlRuX0JBU0UJMHhGQ0ZFMzAwMA0KLQ0KLSNkZWZpbmUJUE9SVDAJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgMCkpKSAgIC8qIFBPUlQgIDAgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDEJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgMSkpKSAgIC8qIFBPUlQgIDEgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDIJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgMikpKSAgIC8qIFBPUlQgIDIgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDMJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgMykpKSAgIC8qIFBPUlQgIDMgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDQJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgNCkpKSAgIC8qIFBPUlQgIDQgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDUJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgNSkpKSAgIC8qIFBPUlQgIDUgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDYJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgNikpKSAgIC8qIFBPUlQgIDYgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDcJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgNykpKSAgIC8qIFBPUlQgIDcgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDgJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgOCkpKSAgIC8qIFBPUlQgIDggQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDkJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAgOSkpKSAgIC8qIFBPUlQgIDkgQWRkcmVzcyAqLw0KLSNkZWZpbmUJUE9SVDEwCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogMTApKSkgICAvKiBQT1JUIDEwIEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQxMQkJKCoodm9sYXRpbGUgc3RydWN0IHN0X3BmY19uICopKFBPUlRuX0JBU0UgKyAoNCAqIDExKSkpICAgLyogUE9SVCAxMSBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fUEZDX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9wcnJfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcHJyX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiY2Q5MDYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9wcnJfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogcHJyX2lvZGVmaW5lLmgNCi0qIFZlcnNpb24gICAgICAgOiAwLjAxDQotKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLSogICAgICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gdmVjb3RyLnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGQXJhZ29uX1BSUjEyMDYxNC54bHMJISEhQlNJRILMk+CXZYKqjmSXbI+RgsmCyIKiISEhDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fUFJSX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19QUlJfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfcHJyIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgUFJSICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNRFIgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlRNRDozOyAgICAgICAgICAgICAvKiAgIEJUTUQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlRURVNUOjE7ICAgICAgICAgICAvKiAgIEJUVEVTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VDOjE7ICAgICAgICAgICAgICAvKiAgIFNFQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VMRkVXUDoxOyAgICAgICAgICAvKiAgIFNFTEZFV1AgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkFNQk9PVDoxOyAgICAgICAgICAvKiAgIFJBTUJPT1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBNRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCU0lEICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgZHVtbXk6MzI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLwkvKiAhISGDcoNig2eMiJLojp+R5oFBkuiLYIK3gukhISEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCU0lEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFQ0NSUiAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRU46MTsgICAgICAgICAgICAvKiAgIEVDQ0VOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBFQ0NSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsyNzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTRU1SbiAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VNRjoxOyAgICAgICAgICAgICAvKiAgIFNFTUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTRU1SblszMl07ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs5Nl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSTVBSICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVhJNjQ6MTsgICAgICAgICAgICAvKiAgIEFYSTY0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVhJMTI4OjE7ICAgICAgICAgICAvKiAgIEFYSTEyOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMwOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSTVBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEwwICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIQVdDQUNIRTo0OyAgICAgICAvKiAgIEVUSEFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIQVJDQUNIRTo0OyAgICAgICAvKiAgIEVUSEFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkNVQVdDQUNIRTo0OyAgICAgICAvKiAgIEpDVUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkNVQVJDQUNIRTo0OyAgICAgICAvKiAgIEpDVUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEwwOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEwxICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjFBV0NBQ0hFOjQ7ICAgICAvKiAgIElNUjIxQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMUFSQ0FDSEU6NDsgICAgIC8qICAgSU1SMjFBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIwQVdDQUNIRTo0OyAgICAgLyogICBJTVIyMEFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjBBUkNBQ0hFOjQ7ICAgICAvKiAgIElNUjIwQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSUJVU0NUTDE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSUJVU0NUTDIgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVBV0NBQ0hFOjQ7ICAgICAgIC8qICAgQ0VVQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVBUkNBQ0hFOjQ7ICAgICAgIC8qICAgQ0VVQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJEQVdDQUNIRTo0OyAgICAgIC8qICAgSU1SREFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SREFSQ0FDSEU6NDsgICAgICAvKiAgIElNUkRBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMMyAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MUFXQ0FDSEU6NDsgICAgLyogICBSR1A2NDFBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MUFSQ0FDSEU6NDsgICAgLyogICBSR1A2NDFBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MEFXQ0FDSEU6NDsgICAgLyogICBSR1A2NDBBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MEFSQ0FDSEU6NDsgICAgLyogICBSR1A2NDBBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMMzsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMNCAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODBBV0NBQ0hFOjQ7ICAgLyogICBSR1AxMjgwQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwQVJDQUNIRTo0OyAgIC8qICAgUkdQMTI4MEFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyQVdDQUNIRTo0OyAgICAvKiAgIFJHUDY0MkFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyQVJDQUNIRTo0OyAgICAvKiAgIFJHUDY0MkFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw0OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEw1ICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUxCX0F4Q0FDSEU6MjsgICAgICAvKiAgIE1MQl9BeENBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODFBV0NBQ0hFOjQ7ICAgLyogICBSR1AxMjgxQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgxQVJDQUNIRTo0OyAgIC8qICAgUkdQMTI4MUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw1OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEw2ICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAyQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUwMkFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAxQVdDQUNIRTo0OyAgICAvKiAgIFZEQzUwMUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAxQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUwMUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw2OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEw3ICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA0QVJDQUNIRTo0OyAgICAvKiAgIFZEQzUwNEFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAzQVdDQUNIRTo0OyAgICAvKiAgIFZEQzUwM0FXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAzQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUwM0FSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw3OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEw4ICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExQVdDQUNIRTo0OyAgICAvKiAgIFZEQzUxMUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUxMUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1QVdDQUNIRTo0OyAgICAvKiAgIFZEQzUwNUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1QVJDQUNIRTo0OyAgICAvKiAgIFZEQzUwNUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEw5ICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEzQVdDQUNIRTo0OyAgICAvKiAgIFZEQzUxM0FXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEzQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUxM0FSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEyQVJDQUNIRTo0OyAgICAvKiAgIFZEQzUxMkFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEw5OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEwxMCAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE1QVdDQUNIRTo0OyAgICAvKiAgIFZEQzUxNUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE1QVJDQUNIRTo0OyAgICAvKiAgIFZEQzUxNUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE0QVJDQUNIRTo0OyAgICAvKiAgIFZEQzUxNEFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEwxMDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ1RMMCAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVUkVSUkVOOjE7ICAgICAgICAvKiAgIENFVVJFUlJFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SRFJFUlJFTjoxOyAgICAgICAvKiAgIElNUkRSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjFSRVJSRU46MTsgICAgICAvKiAgIElNUjIxUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIwUkVSUkVOOjE7ICAgICAgLyogICBJTVIyMFJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhSRVJSRU46MTsgICAgICAgIC8qICAgRVRIUkVSUkVOICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKQ1VSRVJSRU46MTsgICAgICAgIC8qICAgSkNVUkVSUkVOICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJDVEwwOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJDVEwxICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgxUkVSUkVOOjE7ICAgIC8qICAgUkdQMTI4MVJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwUkVSUkVOOjE7ICAgIC8qICAgUkdQMTI4MFJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDJSRVJSRU46MTsgICAgIC8qICAgUkdQNjQyUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MVJFUlJFTjoxOyAgICAgLyogICBSR1A2NDFSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQwUkVSUkVOOjE7ICAgICAvKiAgIFJHUDY0MFJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJDVEwxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJDVEwyICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDVSRVJSRU46MTsgICAgIC8qICAgVkRDNTA1UkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNFJFUlJFTjoxOyAgICAgLyogICBWREM1MDRSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAzUkVSUkVOOjE7ICAgICAvKiAgIFZEQzUwM1JFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDJSRVJSRU46MTsgICAgIC8qICAgVkRDNTAyUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMVJFUlJFTjoxOyAgICAgLyogICBWREM1MDFSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ1RMMjsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ1RMMyAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE1UkVSUkVOOjE7ICAgICAvKiAgIFZEQzUxNVJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTRSRVJSRU46MTsgICAgIC8qICAgVkRDNTE0UkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxM1JFUlJFTjoxOyAgICAgLyogICBWREM1MTNSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEyUkVSUkVOOjE7ICAgICAvKiAgIFZEQzUxMlJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTFSRVJSRU46MTsgICAgIC8qICAgVkRDNTExUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUkNUTDM7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUlNUMCAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVUJSRVNQOjI7ICAgICAgICAgLyogICBDRVVCUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVVJSRVNQOjI7ICAgICAgICAgLyogICBDRVVSUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRCUkVTUDoyOyAgICAgICAgLyogICBJTVJEQlJFU1AgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRSUkVTUDoyOyAgICAgICAgLyogICBJTVJEUlJFU1AgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIxQlJFU1A6MjsgICAgICAgLyogICBJTVIyMUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIxUlJFU1A6MjsgICAgICAgLyogICBJTVIyMVJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIwQlJFU1A6MjsgICAgICAgLyogICBJTVIyMEJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIwUlJFU1A6MjsgICAgICAgLyogICBJTVIyMFJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEJSRVNQOjI7ICAgICAgICAgLyogICBFVEhCUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSFJSRVNQOjI7ICAgICAgICAgLyogICBFVEhSUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpDVUJSRVNQOjI7ICAgICAgICAgLyogICBKQ1VCUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpDVVJSRVNQOjI7ICAgICAgICAgLyogICBKQ1VSUkVTUCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUlNUMDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUlNUMSAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODFCUkVTUDoyOyAgICAgLyogICBSR1AxMjgxQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MVJSRVNQOjI7ICAgICAvKiAgIFJHUDEyODFSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwQlJFU1A6MjsgICAgIC8qICAgUkdQMTI4MEJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODBSUkVTUDoyOyAgICAgLyogICBSR1AxMjgwUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyQlJFU1A6MjsgICAgICAvKiAgIFJHUDY0MkJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MlJSRVNQOjI7ICAgICAgLyogICBSR1A2NDJSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFCUkVTUDoyOyAgICAgIC8qICAgUkdQNjQxQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQxUlJFU1A6MjsgICAgICAvKiAgIFJHUDY0MVJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MEJSRVNQOjI7ICAgICAgLyogICBSR1A2NDBCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDBSUkVTUDoyOyAgICAgIC8qICAgUkdQNjQwUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSU1QxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSU1QyICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1QlJFU1A6MjsgICAgICAvKiAgIFZEQzUwNUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNVJSRVNQOjI7ICAgICAgLyogICBWREM1MDVSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDRCUkVTUDoyOyAgICAgIC8qICAgVkRDNTA0QlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA0UlJFU1A6MjsgICAgICAvKiAgIFZEQzUwNFJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM0JSRVNQOjI7ICAgICAgLyogICBWREM1MDNCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDNSUkVTUDoyOyAgICAgIC8qICAgVkRDNTAzUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAyQlJFU1A6MjsgICAgICAvKiAgIFZEQzUwMkJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMlJSRVNQOjI7ICAgICAgLyogICBWREM1MDJSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDFCUkVTUDoyOyAgICAgIC8qICAgVkRDNTAxQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAxUlJFU1A6MjsgICAgICAvKiAgIFZEQzUwMVJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUlNUMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUlNUMyAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNUJSRVNQOjI7ICAgICAgLyogICBWREM1MTVCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTVSUkVTUDoyOyAgICAgIC8qICAgVkRDNTE1UlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE0QlJFU1A6MjsgICAgICAvKiAgIFZEQzUxNEJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNFJSRVNQOjI7ICAgICAgLyogICBWREM1MTRSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTNCUkVTUDoyOyAgICAgIC8qICAgVkRDNTEzQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEzUlJFU1A6MjsgICAgICAvKiAgIFZEQzUxM1JSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMkJSRVNQOjI7ICAgICAgLyogICBWREM1MTJCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTJSUkVTUDoyOyAgICAgIC8qICAgVkRDNTEyUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExQlJFU1A6MjsgICAgICAvKiAgIFZEQzUxMUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMVJSRVNQOjI7ICAgICAgLyogICBWREM1MTFSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJTVDM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJDTFIwICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVCUkVTUENMUjoxOyAgICAgIC8qICAgQ0VVQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVUlJFU1BDTFI6MTsgICAgICAvKiAgIENFVVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRCUkVTUENMUjoxOyAgICAgLyogICBJTVJEQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SRFJSRVNQQ0xSOjE7ICAgICAvKiAgIElNUkRSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMUJSRVNQQ0xSOjE7ICAgIC8qICAgSU1SMjFCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMVJSRVNQQ0xSOjE7ICAgIC8qICAgSU1SMjFSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMEJSRVNQQ0xSOjE7ICAgIC8qICAgSU1SMjBCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMFJSRVNQQ0xSOjE7ICAgIC8qICAgSU1SMjBSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhCUkVTUENMUjoxOyAgICAgIC8qICAgRVRIQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIUlJFU1BDTFI6MTsgICAgICAvKiAgIEVUSFJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpDVUJSRVNQQ0xSOjE7ICAgICAgLyogICBKQ1VCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKQ1VSUkVTUENMUjoxOyAgICAgIC8qICAgSkNVUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ0xSMDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ0xSMSAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MUJSRVNQQ0xSOjE7ICAvKiAgIFJHUDEyODFCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgxUlJFU1BDTFI6MTsgIC8qICAgUkdQMTI4MVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODBCUkVTUENMUjoxOyAgLyogICBSR1AxMjgwQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MFJSRVNQQ0xSOjE7ICAvKiAgIFJHUDEyODBSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDJCUkVTUENMUjoxOyAgIC8qICAgUkdQNjQyQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyUlJFU1BDTFI6MTsgICAvKiAgIFJHUDY0MlJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MUJSRVNQQ0xSOjE7ICAgLyogICBSR1A2NDFCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFSUkVTUENMUjoxOyAgIC8qICAgUkdQNjQxUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQwQlJFU1BDTFI6MTsgICAvKiAgIFJHUDY0MEJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MFJSRVNQQ0xSOjE7ICAgLyogICBSR1A2NDBSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJDTFIxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJDTFIyICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDVCUkVTUENMUjoxOyAgIC8qICAgVkRDNTA1QlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1UlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwNVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNEJSRVNQQ0xSOjE7ICAgLyogICBWREM1MDRCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDRSUkVTUENMUjoxOyAgIC8qICAgVkRDNTA0UlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAzQlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwM0JSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM1JSRVNQQ0xSOjE7ICAgLyogICBWREM1MDNSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDJCUkVTUENMUjoxOyAgIC8qICAgVkRDNTAyQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAyUlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwMlJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMUJSRVNQQ0xSOjE7ICAgLyogICBWREM1MDFCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDFSUkVTUENMUjoxOyAgIC8qICAgVkRDNTAxUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ0xSMjsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ0xSMyAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE1QlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxNUJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNVJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTVSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTRCUkVTUENMUjoxOyAgIC8qICAgVkRDNTE0QlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE0UlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxNFJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxM0JSRVNQQ0xSOjE7ICAgLyogICBWREM1MTNCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTNSUkVTUENMUjoxOyAgIC8qICAgVkRDNTEzUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEyQlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxMkJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMlJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTJSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTFCUkVTUENMUjoxOyAgIC8qICAgVkRDNTExQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExUlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxMVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUkNMUjM7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZQlQUlIJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wcnIgKikweEZDRkUxODAwKSAgIC8qIFBSUiBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fUFJSX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9yaWljX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3JpaWNfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZhODQwMC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3JpaWNfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogcmlpY19pb2RlZmluZS5oDQotKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLSogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi0qICAgICAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLSogICAgICAgICA6IDI3LjA3LjIwMTIgMC4wMQkJjlGNbI6Rl7+BRlJaX0ExSF8wNUpfMTIxMDEwXzExLnBkZg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX1JJSUNfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX1JJSUNfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDU0FSeSAgKi8NCi0gICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVkEwOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNWQTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVkE6OTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNWQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBGU3k6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEZTeSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IFJJSUNuSUNTQVJ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi1zdHJ1Y3Qgc3RfcmlpY19uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgUklJQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDQ1IxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RBSToxOyAgICAgICAgICAgICAvKiAgIFNEQUkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMSToxOyAgICAgICAgICAgICAvKiAgIFNDTEkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RBTzoxOyAgICAgICAgICAgICAvKiAgIFNEQU8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMTzoxOyAgICAgICAgICAgICAvKiAgIFNDTE8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU09XUDoxOyAgICAgICAgICAgICAvKiAgIFNPV1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xPOjE7ICAgICAgICAgICAgICAvKiAgIENMTyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUlDUlNUOjE7ICAgICAgICAgICAvKiAgIElJQ1JTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUNFOjE7ICAgICAgICAgICAgICAvKiAgIElDRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDQ1IxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDQ1IyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1Q6MTsgICAgICAgICAgICAgICAvKiAgIFNUICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlM6MTsgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1A6MTsgICAgICAgICAgICAgICAvKiAgIFNQICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJTOjE7ICAgICAgICAgICAgICAvKiAgIFRSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTVNUOjE7ICAgICAgICAgICAgICAvKiAgIE1TVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkJTWToxOyAgICAgICAgICAgICAvKiAgIEJCU1kgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDQ1IyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDTVIxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkM6MzsgICAgICAgICAgICAgICAvKiAgIEJDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkNXUDoxOyAgICAgICAgICAgICAvKiAgIEJDV1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0tTOjM7ICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTVRXUDoxOyAgICAgICAgICAgICAvKiAgIE1UV1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDTVIxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDTVIyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PUzoxOyAgICAgICAgICAgICAvKiAgIFRNT1MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PTDoxOyAgICAgICAgICAgICAvKiAgIFRNT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSDoxOyAgICAgICAgICAgICAvKiAgIFRNT0ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RETDozOyAgICAgICAgICAgICAvKiAgIFNEREwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRExDUzoxOyAgICAgICAgICAgICAvKiAgIERMQ1MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDTVIyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDTVIzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkY6MjsgICAgICAgICAgICAgICAvKiAgIE5GICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUNLQlI6MTsgICAgICAgICAgICAvKiAgIEFDS0JSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUNLQlQ6MTsgICAgICAgICAgICAvKiAgIEFDS0JUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUNLV1A6MTsgICAgICAgICAgICAvKiAgIEFDS1dQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRSRlM6MTsgICAgICAgICAgICAvKiAgIFJEUkZTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV0FJVDoxOyAgICAgICAgICAgICAvKiAgIFdBSVQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU01CUzoxOyAgICAgICAgICAgICAvKiAgIFNNQlMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDTVIzOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDRkVSICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PRToxOyAgICAgICAgICAgICAvKiAgIFRNT0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUFMRToxOyAgICAgICAgICAgICAvKiAgIE1BTEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFMRToxOyAgICAgICAgICAgICAvKiAgIE5BTEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FMRToxOyAgICAgICAgICAgICAvKiAgIFNBTEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFDS0U6MTsgICAgICAgICAgICAvKiAgIE5BQ0tFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkZFOjE7ICAgICAgICAgICAgICAvKiAgIE5GRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMRToxOyAgICAgICAgICAgICAvKiAgIFNDTEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRk1QRToxOyAgICAgICAgICAgICAvKiAgIEZNUEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDRkVSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDU0VSICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FSMEU6MTsgICAgICAgICAgICAvKiAgIFNBUjBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FSMUU6MTsgICAgICAgICAgICAvKiAgIFNBUjFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FSMkU6MTsgICAgICAgICAgICAvKiAgIFNBUjJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0NBRToxOyAgICAgICAgICAgICAvKiAgIEdDQUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElERToxOyAgICAgICAgICAgICAvKiAgIERJREUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSE9BRToxOyAgICAgICAgICAgICAvKiAgIEhPQUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDU0VSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDSUVSICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSUU6MTsgICAgICAgICAgICAvKiAgIFRNT0lFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJRToxOyAgICAgICAgICAgICAvKiAgIEFMSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJRToxOyAgICAgICAgICAgICAvKiAgIFNUSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJRToxOyAgICAgICAgICAgICAvKiAgIFNQSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSUU6MTsgICAgICAgICAgICAvKiAgIE5BS0lFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUklFOjE7ICAgICAgICAgICAgICAvKiAgIFJJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJRToxOyAgICAgICAgICAgICAvKiAgIFRFSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElFOjE7ICAgICAgICAgICAgICAvKiAgIFRJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDSUVSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDU1IxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUFTMDoxOyAgICAgICAgICAgICAvKiAgIEFBUzAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUFTMToxOyAgICAgICAgICAgICAvKiAgIEFBUzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUFTMjoxOyAgICAgICAgICAgICAvKiAgIEFBUzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0NBOjE7ICAgICAgICAgICAgICAvKiAgIEdDQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElEOjE7ICAgICAgICAgICAgICAvKiAgIERJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSE9BOjE7ICAgICAgICAgICAgICAvKiAgIEhPQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDU1IxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDU1IyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PRjoxOyAgICAgICAgICAgICAvKiAgIFRNT0YgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUw6MTsgICAgICAgICAgICAgICAvKiAgIEFMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RBUlQ6MTsgICAgICAgICAgICAvKiAgIFNUQVJUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RPUDoxOyAgICAgICAgICAgICAvKiAgIFNUT1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFDS0Y6MTsgICAgICAgICAgICAvKiAgIE5BQ0tGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRSRjoxOyAgICAgICAgICAgICAvKiAgIFJEUkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVORDoxOyAgICAgICAgICAgICAvKiAgIFRFTkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVERSRToxOyAgICAgICAgICAgICAvKiAgIFREUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDU1IyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JCVJJSUNuSUNTQVJ5IFJJSUNuSUNTQVIwOwkJCQkvKiBSSUlDbklDU0FSMCAgKi8NCi0JCVJJSUNuSUNTQVJ5IFJJSUNuSUNTQVIxOwkJCQkvKiBSSUlDbklDU0FSMSAgKi8NCi0JCVJJSUNuSUNTQVJ5IFJJSUNuSUNTQVIyOwkJCQkvKiBSSUlDbklDU0FSMiAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDQlJMICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJMOjU7ICAgICAgICAgICAgICAvKiAgIEJSTCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDQlJMOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDQlJIICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJIOjU7ICAgICAgICAgICAgICAvKiAgIEJSSCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDQlJIOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDRFJUICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUNEUlM6ODsgICAgICAgICAgICAvKiAgIElDRFJTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDRFJUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDRFJSICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUNEUlI6ODsgICAgICAgICAgICAvKiAgIElDRFJSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSSUlDbklDRFJSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIFJJSUNfMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRTAwMCkgICAgLyogUklJQ18wIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJJSUNfMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRTQwMCkgICAgLyogUklJQ18xIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJJSUNfMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRTgwMCkgICAgLyogUklJQ18yIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJJSUNfMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRUMwMCkgICAgLyogUklJQ18zIEFkZHJlc3MgKi8NCi0NCi0NCi0jZW5kaWYgLyogX19SSUlDX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9zY2lmX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3NjaWZfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZGIxYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3NjaWZfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIERJU0NMQUlNRVINCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seSANCi0qICAgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlciANCi0qICAgYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSoNCi0qICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgDQotKiAgIFJFR0FSRElORyBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCANCi0qICAgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSANCi0qICAgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiAgQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIA0KLSogICBESVNDTEFJTUVELg0KLSoNCi0qICAgVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUyANCi0qICAgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFIA0KLSogICBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIA0KLSogICBGT1IgQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMNCi0qICAgQUZGSUxJQVRFUyBIQVZFIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSoNCi0qICAgUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyANCi0qICAgc29mdHdhcmUgYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4NCi0qICAgQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwgeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCANCi0qICAgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlIGZvbGxvd2luZyBsaW5rOiANCi0qICAgaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUZWNobmljYWwgcmVmZXJlbmNlIGRhdGEgKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgU3lzdGVtIE5hbWUgOiANCi0qICAgRmlsZSBOYW1lICAgOiBzY2lmX2lvZGVmaW5lLmgNCi0qICAgQWJzdHJhY3QgICAgOiANCi0qICAgVmVyc2lvbiAgICAgOiAxLjAwLjAwDQotKiAgIERldmljZSAgICAgIDogQVJNDQotKiAgIFRvb2wtQ2hhaW4gIDogDQotKiAgIE9TICAgICAgICAgIDogTm9uZQ0KLSogICBIL1cgUGxhdGZvcm06IA0KLSogICBEZXNjcmlwdGlvbiA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIEhpc3RvcnkgICAgIDogTWFyLjA2LDIwMTIgVmVyLjEuMDAuMDANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19TQ0lGX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19TQ0lGX0lPREVGSU5FX0hfXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotc3RydWN0IHN0X3NjaWZfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNDSUYgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTTVJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjI7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RPUDoxOyAgICAgICAgICAgICAgLyogICBTVE9QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT0U6MTsgICAgICAgICAgICAgICAgLyogICBPL0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEU6MTsgICAgICAgICAgICAgICAgLyogICBQRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0hSOjE7ICAgICAgICAgICAgICAgLyogICBDSFIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0E6MTsgICAgICAgICAgICAgICAgLyogICBDL0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NCUlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NCUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tFOjI7ICAgICAgICAgICAgICAgLyogICBDS0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVJRToxOyAgICAgICAgICAgICAgLyogICBSRUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkU6MTsgICAgICAgICAgICAgICAgLyogICBSRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEU6MTsgICAgICAgICAgICAgICAgLyogICBURSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUklFOjE7ICAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVElFOjE7ICAgICAgICAgICAgICAgLyogICBUSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGVERSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGVERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFI6MTsgICAgICAgICAgICAgICAgLyogICBEUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRGOjE7ICAgICAgICAgICAgICAgLyogICBSREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSOjE7ICAgICAgICAgICAgICAgLyogICBQRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSOjE7ICAgICAgICAgICAgICAgLyogICBGRVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJLOjE7ICAgICAgICAgICAgICAgLyogICBCUksgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERGRToxOyAgICAgICAgICAgICAgLyogICBUREZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVORDoxOyAgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRVI6MTsgICAgICAgICAgICAgICAgLyogICBFUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkVSTjo0OyAgICAgICAgICAgICAgLyogICBGRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVSTjo0OyAgICAgICAgICAgICAgLyogICBQRVJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGUkRSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRDo4OyAgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGUkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9PUDoxOyAgICAgICAgICAgICAgLyogICBMT09QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZSU1Q6MTsgICAgICAgICAgICAgLyogICBSRlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZSU1Q6MTsgICAgICAgICAgICAgLyogICBURlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNFOjE7ICAgICAgICAgICAgICAgLyogICBNQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFRSRzoyOyAgICAgICAgICAgICAgLyogICBUVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRSRzoyOyAgICAgICAgICAgICAgLyogICBSVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNUUkc6MzsgICAgICAgICAgICAgLyogICBSU1RSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NGRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUjo1OyAgICAgICAgICAgICAgICAgLyogICBSICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVDo1OyAgICAgICAgICAgICAgICAgLyogICBUICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NGRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NTUFRSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMkRUOjE7ICAgICAgICAgICAgLyogICBTUEIyRFQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1BCMklPOjE7ICAgICAgICAgICAgLyogICBTUEIySU8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLRFQ6MTsgICAgICAgICAgICAgLyogICBTQ0tEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLSU86MTsgICAgICAgICAgICAgLyogICBTQ0tJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RTRFQ6MTsgICAgICAgICAgICAgLyogICBDVFNEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RTSU86MTsgICAgICAgICAgICAgLyogICBDVFNJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRTRFQ6MTsgICAgICAgICAgICAgLyogICBSVFNEVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRTSU86MTsgICAgICAgICAgICAgLyogICBSVFNJTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NTUFRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1JFUjoxOyAgICAgICAgICAgICAgLyogICBPUkVSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NFTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUJDUzoxOyAgICAgICAgICAgICAgLyogICBBQkNTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkdETToxOyAgICAgICAgICAgICAgLyogICBCR0RNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NFTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZSBTQ0lGMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICopMHhFODAwNzAwMCkJLyogU0NJRjAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMDc4MDApCS8qIFNDSUYxIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUYyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmX24gKikweEU4MDA4MDAwKQkvKiBTQ0lGMiBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICopMHhFODAwODgwMCkJLyogU0NJRjMgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjQgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMDkwMDApCS8qIFNDSUY0IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY1ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmX24gKikweEU4MDA5ODAwKQkvKiBTQ0lGNSBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGNiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICopMHhFODAwQTAwMCkJLyogU0NJRjYgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjcgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMEE4MDApCS8qIFNDSUY3IEFkZHJlc3MgKi8NCi0NCi0NCi0jZW5kaWYgLyogX19TQ0lGX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9zcGlic2NfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvc3BpYnNjX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YmFmMWMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9zcGlic2NfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyNiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogc3BpYnNjX2lvZGVmaW5lLmggDQotKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLSogRGV2aWNlKHMpICAgICA6IA0KLSogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi0qICAgICAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSAgOiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogMDUuMTEuMjAxMiAwLjAxIFZlcnNpb24gRGVzY3JpcHRpb24NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19TUElCU0NfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX1NQSUJTQ19JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qICAgICAgIFNQSUJTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0cnVjdCBzdF9zcGlic2NfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNQSUJTQyovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01OQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJTWjoyOyAgICAgICAgICAgICAgLyogICBCU1ogICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQT0w6MTsgICAgICAgICAgICAgLyogICBDUE9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTFA6MTsgICAgICAgICAgICAgLyogICBTU0xQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQSEFSOjE7ICAgICAgICAgICAgLyogICBDUEhBUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENQSEFUOjE7ICAgICAgICAgICAgLyogICBDUEhBVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElPMEZWOjI7ICAgICAgICAgICAgLyogICBJTzBGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElPMkZWOjI7ICAgICAgICAgICAgLyogICBJTzJGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElPM0ZWOjI7ICAgICAgICAgICAgLyogICBJTzNGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMDoyOyAgICAgICAgICAgLyogICBNT0lJTzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMToyOyAgICAgICAgICAgLyogICBNT0lJTzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMjoyOyAgICAgICAgICAgLyogICBNT0lJTzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMzoyOyAgICAgICAgICAgLyogICBNT0lJTzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1EOjE7ICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01OQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NMRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDS0RMOjM7ICAgICAgICAgICAgLyogICBTQ0tETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNMTkRMOjM7ICAgICAgICAgICAgLyogICBTTE5ETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQTkRMOjM7ICAgICAgICAgICAgLyogICBTUE5ETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NMRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSRFY6MjsgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQQlI6ODsgICAgICAgICAgICAgLyogICBTUEJSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1BCQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTEU6MTsgICAgICAgICAgICAgLyogICBTU0xFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJCRToxOyAgICAgICAgICAgICAgLyogICBSQkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJDRjoxOyAgICAgICAgICAgICAgLyogICBSQ0YgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJCVVJTVDo0OyAgICAgICAgICAgLyogICBSQlVSU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTE46MTsgICAgICAgICAgICAgLyogICBTU0xOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJDTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DTUQ6ODsgICAgICAgICAgICAgLyogICBPQ01EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDo4OyAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJDTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJFQVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVBQzozOyAgICAgICAgICAgICAgLyogICBFQUMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVBVjo4OyAgICAgICAgICAgICAgLyogICBFQVYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJFQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJPUFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDA6ODsgICAgICAgICAgICAgLyogICBPUEQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDE6ODsgICAgICAgICAgICAgLyogICBPUEQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDI6ODsgICAgICAgICAgICAgLyogICBPUEQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDM6ODsgICAgICAgICAgICAgLyogICBPUEQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJPUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJFTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREU6NDsgICAgICAgICAgICAgLyogICBPUERFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFERTo0OyAgICAgICAgICAgICAgLyogICBBREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREU6MTsgICAgICAgICAgICAgLyogICBPQ0RFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENERToxOyAgICAgICAgICAgICAgLyogICBDREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNRToxOyAgICAgICAgICAgICAgLyogICBETUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSREI6MjsgICAgICAgICAgICAgLyogICBEUkRCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREI6MjsgICAgICAgICAgICAgLyogICBPUERCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEQjoyOyAgICAgICAgICAgICAgLyogICBBREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREI6MjsgICAgICAgICAgICAgLyogICBPQ0RCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENEQjoyOyAgICAgICAgICAgICAgLyogICBDREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJFTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01DUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSUU6MTsgICAgICAgICAgICAgLyogICBTUElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSVdFOjE7ICAgICAgICAgICAgLyogICBTUElXRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSVJFOjE7ICAgICAgICAgICAgLyogICBTUElSRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01DTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DTUQ6ODsgICAgICAgICAgICAgLyogICBPQ01EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDo4OyAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01DTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01BRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEUjozMjsgICAgICAgICAgICAgLyogICBBRFIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01BRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01PUFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDA6ODsgICAgICAgICAgICAgLyogICBPUEQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDE6ODsgICAgICAgICAgICAgLyogICBPUEQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDI6ODsgICAgICAgICAgICAgLyogICBPUEQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDM6ODsgICAgICAgICAgICAgLyogICBPUEQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01PUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01FTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSURFOjQ7ICAgICAgICAgICAgLyogICBTUElERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREU6NDsgICAgICAgICAgICAgLyogICBPUERFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFERTo0OyAgICAgICAgICAgICAgLyogICBBREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREU6MTsgICAgICAgICAgICAgLyogICBPQ0RFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENERToxOyAgICAgICAgICAgICAgLyogICBDREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNRToxOyAgICAgICAgICAgICAgLyogICBETUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSURCOjI7ICAgICAgICAgICAgLyogICBTUElEQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREI6MjsgICAgICAgICAgICAgLyogICBPUERCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEQjoyOyAgICAgICAgICAgICAgLyogICBBREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREI6MjsgICAgICAgICAgICAgLyogICBPQ0RCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENEQjoyOyAgICAgICAgICAgICAgLyogICBDREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01FTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01SRFIwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEQVRBMDozMjsgICAgICAgICAgLyogICBSREFUQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01SRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01SRFIxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEQVRBMTozMjsgICAgICAgICAgLyogICBSREFUQTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01SRFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01XRFIwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdEQVRBMDozMjsgICAgICAgICAgLyogICBXREFUQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01XRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01XRFIxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdEQVRBMTozMjsgICAgICAgICAgLyogICBXREFUQTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01XRFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01OU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTEY6MTsgICAgICAgICAgICAgLyogICBTU0xGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01OU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJETUNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgCSAgICAgX1VEV09SRCBETUNZQzozOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgCSAJIF9VRFdPUkQgOjEzOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIAkgCSBfVURXT1JEIERNREI6MjsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAJIAkgX1VEV09SRCA6MTQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJETUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJEUkVOUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkRSRToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERSRToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAJIAkgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUREUkU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSRFJFTlI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNRE1DUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1DWUM6MzsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEzOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1EQjoyOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE0OyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNRE1DUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNRFJFTlIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJRFJFOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEUkU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAJIAkgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFERFJFOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTURSRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIFNQSUJTQzAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NwaWJzY19uICopMHgzRkVGQTAwMCkNCi0jZGVmaW5lIFNQSUJTQzEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NwaWJzY19uICopMHgzRkVGQjAwMCkNCi0NCi0NCi0jZW5kaWYgLyogX19TUElCU0NfSU9ERUZJTkVfSF9fICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy91c2JfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvdXNiX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NThmZTIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy91c2JfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMzYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBESVNDTEFJTUVSDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkgDQotKiAgIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXIgDQotKiAgIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qDQotKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIA0KLSogICBSRUdBUkRJTkcgVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgDQotKiAgIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgDQotKiAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSANCi0qICAgRElTQ0xBSU1FRC4NCi0qDQotKiAgIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMgDQotKiAgIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRSANCi0qICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyANCi0qICAgRk9SIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTDQotKiAgIEFGRklMSUFURVMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qDQotKiAgIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgDQotKiAgIHNvZnR3YXJlIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuDQotKiAgIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgDQotKiAgIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZSBmb2xsb3dpbmcgbGluazogDQotKiAgIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGVjaG5pY2FsIHJlZmVyZW5jZSBkYXRhICoqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIFN5c3RlbSBOYW1lIDogDQotKiAgIEZpbGUgTmFtZSAgIDogdXNiX2lvZGVmaW5lLmgNCi0qICAgQWJzdHJhY3QgICAgOiANCi0qICAgVmVyc2lvbiAgICAgOiAxLjAwLjAwDQotKiAgIERldmljZSAgICAgIDogQVJNDQotKiAgIFRvb2wtQ2hhaW4gIDogDQotKiAgIE9TICAgICAgICAgIDogTm9uZQ0KLSogICBIL1cgUGxhdGZvcm06IA0KLSogICBEZXNjcmlwdGlvbiA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIEhpc3RvcnkgICAgIDogTWFyLjA2LDIwMTIgVmVyLjEuMDAuMDANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19VU0JfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX1VTQl9JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF91c2JfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBVU0IgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU0NGRyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQkU6MTsgICAgICAgICAgICAgIC8qICAgVVNCRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQTExFOjE7ICAgICAgICAgICAgIC8qICAgVVBMTEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVDS1NFTDoxOyAgICAgICAgICAgIC8qICAgVUNLU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERQUlBVOjE7ICAgICAgICAgICAgIC8qICAgRFBSUFUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSUEQ6MTsgICAgICAgICAgICAgIC8qICAgRFJQRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDRk06MTsgICAgICAgICAgICAgIC8qICAgRENGTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhTRToxOyAgICAgICAgICAgICAgIC8qICAgSFNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NGRzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJVU1dBSVQgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJXQUlUOjY7ICAgICAgICAgICAgIC8qICAgQldBSVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJVU1dBSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZU1NUUzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExOU1Q6MjsgICAgICAgICAgICAgIC8qICAgTE5TVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU1NUUzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERWU1RDVFIwICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJIU1Q6MzsgICAgICAgICAgICAgIC8qICAgUkhTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVBQ1Q6MTsgICAgICAgICAgICAgIC8qICAgVUFDVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU1VNRToxOyAgICAgICAgICAgIC8qICAgUkVTVU1FICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlJTVDoxOyAgICAgICAgICAgIC8qICAgVVNCUlNUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJXVVBFOjE7ICAgICAgICAgICAgIC8qICAgUldVUEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdLVVA6MTsgICAgICAgICAgICAgIC8qICAgV0tVUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERWU1RDVFIwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVURVNUICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVUU1Q6NDsgICAgICAgICAgICAgIC8qICAgVVRTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFVURVNUOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRkJDRkcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFTkRFOjE7ICAgICAgICAgICAgIC8qICAgVEVOREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERGQUNDOjI7ICAgICAgICAgICAgIC8qICAgREZBQ0MgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRkJDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRkJDRkcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFTkRFOjE7ICAgICAgICAgICAgIC8qICAgVEVOREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERGQUNDOjI7ICAgICAgICAgICAgIC8qICAgREZBQ0MgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRkJDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENGSUZPICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRFsyXTsgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURVs0XTsgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENGSUZPOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGTyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRFsyXTsgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURVs0XTsgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGTzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGTyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRFsyXTsgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURVs0XTsgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGTzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENGSUZPU0VMICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENVUlBJUEU6NDsgICAgICAgICAgIC8qICAgQ1VSUElQRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElTRUw6MTsgICAgICAgICAgICAgIC8qICAgSVNFTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJJR0VORDoxOyAgICAgICAgICAgIC8qICAgQklHRU5EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CVzoyOyAgICAgICAgICAgICAgIC8qICAgTUJXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFVzoxOyAgICAgICAgICAgICAgIC8qICAgUkVXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJDTlQ6MTsgICAgICAgICAgICAgIC8qICAgUkNOVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENGSUZPU0VMOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENGSUZPQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUTE46MTI7ICAgICAgICAgICAgIC8qICAgRFRMTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZSRFk6MTsgICAgICAgICAgICAgIC8qICAgRlJEWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJDTFI6MTsgICAgICAgICAgICAgIC8qICAgQkNMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJWQUw6MTsgICAgICAgICAgICAgIC8qICAgQlZBTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENGSUZPQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT1NFTCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENVUlBJUEU6NDsgICAgICAgICAgIC8qICAgQ1VSUElQRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJJR0VORDoxOyAgICAgICAgICAgIC8qICAgQklHRU5EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CVzoyOyAgICAgICAgICAgICAgIC8qICAgTUJXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSRVFFOjE7ICAgICAgICAgICAgIC8qICAgRFJFUUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDTFJNOjE7ICAgICAgICAgICAgIC8qICAgRENMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFVzoxOyAgICAgICAgICAgICAgIC8qICAgUkVXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJDTlQ6MTsgICAgICAgICAgICAgIC8qICAgUkNOVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT1NFTDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0NUUiAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUTE46MTI7ICAgICAgICAgICAgIC8qICAgRFRMTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZSRFk6MTsgICAgICAgICAgICAgIC8qICAgRlJEWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJDTFI6MTsgICAgICAgICAgICAgIC8qICAgQkNMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJWQUw6MTsgICAgICAgICAgICAgIC8qICAgQlZBTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0NUUjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT1NFTCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENVUlBJUEU6NDsgICAgICAgICAgIC8qICAgQ1VSUElQRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJJR0VORDoxOyAgICAgICAgICAgIC8qICAgQklHRU5EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CVzoyOyAgICAgICAgICAgICAgIC8qICAgTUJXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSRVFFOjE7ICAgICAgICAgICAgIC8qICAgRFJFUUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDTFJNOjE7ICAgICAgICAgICAgIC8qICAgRENMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFVzoxOyAgICAgICAgICAgICAgIC8qICAgUkVXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJDTlQ6MTsgICAgICAgICAgICAgIC8qICAgUkNOVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT1NFTDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0NUUiAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUTE46MTI7ICAgICAgICAgICAgIC8qICAgRFRMTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZSRFk6MTsgICAgICAgICAgICAgIC8qICAgRlJEWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJDTFI6MTsgICAgICAgICAgICAgIC8qICAgQkNMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJWQUw6MTsgICAgICAgICAgICAgIC8qICAgQlZBTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0NUUjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOVEVOQjAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFlFOjE7ICAgICAgICAgICAgIC8qICAgQlJEWUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SRFlFOjE7ICAgICAgICAgICAgIC8qICAgTlJEWUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJFTVBFOjE7ICAgICAgICAgICAgIC8qICAgQkVNUEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUUkU6MTsgICAgICAgICAgICAgIC8qICAgQ1RSRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERWU0U6MTsgICAgICAgICAgICAgIC8qICAgRFZTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNPRkU6MTsgICAgICAgICAgICAgIC8qICAgU09GRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTTUU6MTsgICAgICAgICAgICAgIC8qICAgUlNNRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZCU0U6MTsgICAgICAgICAgICAgIC8qICAgVkJTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOVEVOQjA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOVEVOQjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNBQ0tFOjE7ICAgICAgICAgICAgIC8qICAgU0FDS0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNJR05FOjE7ICAgICAgICAgICAgIC8qICAgU0lHTkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVPRkVSUkU6MTsgICAgICAgICAgIC8qICAgRU9GRVJSRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUVENIRToxOyAgICAgICAgICAgIC8qICAgQVRUQ0hFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUQ0hFOjE7ICAgICAgICAgICAgIC8qICAgRFRDSEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJDSEdFOjE7ICAgICAgICAgICAgIC8qICAgQkNIR0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOVEVOQjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJSRFlFTkIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwQlJEWUU6MTsgICAgICAgIC8qICAgUElQRTBCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxQlJEWUU6MTsgICAgICAgIC8qICAgUElQRTFCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyQlJEWUU6MTsgICAgICAgIC8qICAgUElQRTJCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzQlJEWUU6MTsgICAgICAgIC8qICAgUElQRTNCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0QlJEWUU6MTsgICAgICAgIC8qICAgUElQRTRCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1QlJEWUU6MTsgICAgICAgIC8qICAgUElQRTVCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2QlJEWUU6MTsgICAgICAgIC8qICAgUElQRTZCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3QlJEWUU6MTsgICAgICAgIC8qICAgUElQRTdCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4QlJEWUU6MTsgICAgICAgIC8qICAgUElQRThCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5QlJEWUU6MTsgICAgICAgIC8qICAgUElQRTlCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBQlJEWUU6MTsgICAgICAgIC8qICAgUElQRUFCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCQlJEWUU6MTsgICAgICAgIC8qICAgUElQRUJCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDQlJEWUU6MTsgICAgICAgIC8qICAgUElQRUNCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVEQlJEWUU6MTsgICAgICAgIC8qICAgUElQRURCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFQlJEWUU6MTsgICAgICAgIC8qICAgUElQRUVCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGQlJEWUU6MTsgICAgICAgIC8qICAgUElQRUZCUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJSRFlFTkI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5SRFlFTkIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwTlJEWUU6MTsgICAgICAgIC8qICAgUElQRTBOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxTlJEWUU6MTsgICAgICAgIC8qICAgUElQRTFOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyTlJEWUU6MTsgICAgICAgIC8qICAgUElQRTJOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzTlJEWUU6MTsgICAgICAgIC8qICAgUElQRTNOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0TlJEWUU6MTsgICAgICAgIC8qICAgUElQRTROUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1TlJEWUU6MTsgICAgICAgIC8qICAgUElQRTVOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2TlJEWUU6MTsgICAgICAgIC8qICAgUElQRTZOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3TlJEWUU6MTsgICAgICAgIC8qICAgUElQRTdOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4TlJEWUU6MTsgICAgICAgIC8qICAgUElQRThOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5TlJEWUU6MTsgICAgICAgIC8qICAgUElQRTlOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBTlJEWUU6MTsgICAgICAgIC8qICAgUElQRUFOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCTlJEWUU6MTsgICAgICAgIC8qICAgUElQRUJOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDTlJEWUU6MTsgICAgICAgIC8qICAgUElQRUNOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVETlJEWUU6MTsgICAgICAgIC8qICAgUElQRUROUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFTlJEWUU6MTsgICAgICAgIC8qICAgUElQRUVOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGTlJEWUU6MTsgICAgICAgIC8qICAgUElQRUZOUkRZRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE5SRFlFTkI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJFTVBFTkIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwQkVNUEU6MTsgICAgICAgIC8qICAgUElQRTBCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxQkVNUEU6MTsgICAgICAgIC8qICAgUElQRTFCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyQkVNUEU6MTsgICAgICAgIC8qICAgUElQRTJCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzQkVNUEU6MTsgICAgICAgIC8qICAgUElQRTNCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0QkVNUEU6MTsgICAgICAgIC8qICAgUElQRTRCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1QkVNUEU6MTsgICAgICAgIC8qICAgUElQRTVCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2QkVNUEU6MTsgICAgICAgIC8qICAgUElQRTZCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3QkVNUEU6MTsgICAgICAgIC8qICAgUElQRTdCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4QkVNUEU6MTsgICAgICAgIC8qICAgUElQRThCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5QkVNUEU6MTsgICAgICAgIC8qICAgUElQRTlCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBQkVNUEU6MTsgICAgICAgIC8qICAgUElQRUFCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCQkVNUEU6MTsgICAgICAgIC8qICAgUElQRUJCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDQkVNUEU6MTsgICAgICAgIC8qICAgUElQRUNCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVEQkVNUEU6MTsgICAgICAgIC8qICAgUElQRURCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFQkVNUEU6MTsgICAgICAgIC8qICAgUElQRUVCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGQkVNUEU6MTsgICAgICAgIC8qICAgUElQRUZCRU1QRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJFTVBFTkI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNPRkNGRyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFlNOjE7ICAgICAgICAgICAgIC8qICAgQlJEWU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSTkVOU0VMOjE7ICAgICAgICAgIC8qICAgVFJORU5TRUwgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNPRkNGRzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOVFNUUzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUU1E6MzsgICAgICAgICAgICAgIC8qICAgQ1RTUSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZBTElEOjE7ICAgICAgICAgICAgIC8qICAgVkFMSUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERWU1E6MzsgICAgICAgICAgICAgIC8qICAgRFZTUSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZCU1RTOjE7ICAgICAgICAgICAgIC8qICAgVkJTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFk6MTsgICAgICAgICAgICAgIC8qICAgQlJEWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SRFk6MTsgICAgICAgICAgICAgIC8qICAgTlJEWSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJFTVA6MTsgICAgICAgICAgICAgIC8qICAgQkVNUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUUlQ6MTsgICAgICAgICAgICAgIC8qICAgQ1RSVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERWU1Q6MTsgICAgICAgICAgICAgIC8qICAgRFZTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNPRlI6MTsgICAgICAgICAgICAgIC8qICAgU09GUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU006MTsgICAgICAgICAgICAgIC8qICAgUkVTTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZCSU5UOjE7ICAgICAgICAgICAgIC8qICAgVkJJTlQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOVFNUUzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOVFNUUzEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNBQ0s6MTsgICAgICAgICAgICAgIC8qICAgU0FDSyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNJR046MTsgICAgICAgICAgICAgIC8qICAgU0lHTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVPRkVSUjoxOyAgICAgICAgICAgIC8qICAgRU9GRVJSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUVENIOjE7ICAgICAgICAgICAgIC8qICAgQVRUQ0ggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUQ0g6MTsgICAgICAgICAgICAgIC8qICAgRFRDSCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJDSEc6MTsgICAgICAgICAgICAgIC8qICAgQkNIRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOVFNUUzE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJSRFlTVFMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwQlJEWToxOyAgICAgICAgIC8qICAgUElQRTBCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxQlJEWToxOyAgICAgICAgIC8qICAgUElQRTFCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyQlJEWToxOyAgICAgICAgIC8qICAgUElQRTJCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzQlJEWToxOyAgICAgICAgIC8qICAgUElQRTNCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0QlJEWToxOyAgICAgICAgIC8qICAgUElQRTRCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1QlJEWToxOyAgICAgICAgIC8qICAgUElQRTVCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2QlJEWToxOyAgICAgICAgIC8qICAgUElQRTZCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3QlJEWToxOyAgICAgICAgIC8qICAgUElQRTdCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4QlJEWToxOyAgICAgICAgIC8qICAgUElQRThCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5QlJEWToxOyAgICAgICAgIC8qICAgUElQRTlCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBQlJEWToxOyAgICAgICAgIC8qICAgUElQRUFCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCQlJEWToxOyAgICAgICAgIC8qICAgUElQRUJCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDQlJEWToxOyAgICAgICAgIC8qICAgUElQRUNCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVEQlJEWToxOyAgICAgICAgIC8qICAgUElQRURCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFQlJEWToxOyAgICAgICAgIC8qICAgUElQRUVCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGQlJEWToxOyAgICAgICAgIC8qICAgUElQRUZCUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJSRFlTVFM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5SRFlTVFMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwTlJEWToxOyAgICAgICAgIC8qICAgUElQRTBOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxTlJEWToxOyAgICAgICAgIC8qICAgUElQRTFOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyTlJEWToxOyAgICAgICAgIC8qICAgUElQRTJOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzTlJEWToxOyAgICAgICAgIC8qICAgUElQRTNOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0TlJEWToxOyAgICAgICAgIC8qICAgUElQRTROUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1TlJEWToxOyAgICAgICAgIC8qICAgUElQRTVOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2TlJEWToxOyAgICAgICAgIC8qICAgUElQRTZOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3TlJEWToxOyAgICAgICAgIC8qICAgUElQRTdOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4TlJEWToxOyAgICAgICAgIC8qICAgUElQRThOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5TlJEWToxOyAgICAgICAgIC8qICAgUElQRTlOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBTlJEWToxOyAgICAgICAgIC8qICAgUElQRUFOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCTlJEWToxOyAgICAgICAgIC8qICAgUElQRUJOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDTlJEWToxOyAgICAgICAgIC8qICAgUElQRUNOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVETlJEWToxOyAgICAgICAgIC8qICAgUElQRUROUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFTlJEWToxOyAgICAgICAgIC8qICAgUElQRUVOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGTlJEWToxOyAgICAgICAgIC8qICAgUElQRUZOUkRZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE5SRFlTVFM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJFTVBTVFMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUwQkVNUDoxOyAgICAgICAgIC8qICAgUElQRTBCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUxQkVNUDoxOyAgICAgICAgIC8qICAgUElQRTFCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUyQkVNUDoxOyAgICAgICAgIC8qICAgUElQRTJCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEUzQkVNUDoxOyAgICAgICAgIC8qICAgUElQRTNCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU0QkVNUDoxOyAgICAgICAgIC8qICAgUElQRTRCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU1QkVNUDoxOyAgICAgICAgIC8qICAgUElQRTVCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU2QkVNUDoxOyAgICAgICAgIC8qICAgUElQRTZCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU3QkVNUDoxOyAgICAgICAgIC8qICAgUElQRTdCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU4QkVNUDoxOyAgICAgICAgIC8qICAgUElQRThCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEU5QkVNUDoxOyAgICAgICAgIC8qICAgUElQRTlCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVBQkVNUDoxOyAgICAgICAgIC8qICAgUElQRUFCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVCQkVNUDoxOyAgICAgICAgIC8qICAgUElQRUJCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVDQkVNUDoxOyAgICAgICAgIC8qICAgUElQRUNCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVEQkVNUDoxOyAgICAgICAgIC8qICAgUElQRURCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVFQkVNUDoxOyAgICAgICAgIC8qICAgUElQRUVCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVGQkVNUDoxOyAgICAgICAgIC8qICAgUElQRUZCRU1QICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJFTVBTVFM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZSTU5VTSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZSTk06MTE7ICAgICAgICAgICAgIC8qICAgRlJOTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQ0U6MTsgICAgICAgICAgICAgIC8qICAgQ1JDRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9WUk46MTsgICAgICAgICAgICAgIC8qICAgT1ZSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZSTU5VTTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVGUk1OVU0gICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVGUk5NOjM7ICAgICAgICAgICAgIC8qICAgVUZSTk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFVGUk1OVU07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTQkFERFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQkFERFI6NzsgICAgICAgICAgIC8qICAgVVNCQUREUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo5OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFVTQkFERFI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTQlJFUSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJNUkVRVUVTVFRZUEU6ODsgICAgIC8qICAgQk1SRVFVRVNUVFlQRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRVFVRVNUOjg7ICAgICAgICAgIC8qICAgQlJFUVVFU1QgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFVTQlJFUTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVVNCVkFMOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTQlZBTCAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgVVNCSU5EWDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTQklORFggICAgICAqLw0KLSAgICAgICBfVVdPUkQgVVNCTEVORzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTQkxFTkcgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENGRyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERJUjoxOyAgICAgICAgICAgICAgIC8qICAgRElSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENGRzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUE1BWFAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1YUFM6NzsgICAgICAgICAgICAgIC8qICAgTVhQUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFVlNFTDo0OyAgICAgICAgICAgIC8qICAgREVWU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUE1BWFA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENUUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENDUEw6MTsgICAgICAgICAgICAgIC8qICAgQ0NQTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJTkdFOjE7ICAgICAgICAgICAgIC8qICAgUElOR0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNVUkVRQ0xSOjE7ICAgICAgICAgIC8qICAgU1VSRVFDTFIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNVUkVROjE7ICAgICAgICAgICAgIC8qICAgU1VSRVEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENUUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVTRUwgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJUEVTRUw6NDsgICAgICAgICAgIC8qICAgUElQRVNFTCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVTRUw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVDRkcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVQTlVNOjQ7ICAgICAgICAgICAgIC8qICAgRVBOVU0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERJUjoxOyAgICAgICAgICAgICAgIC8qICAgRElSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIVE5BSzoxOyAgICAgICAgICAgIC8qICAgU0hUTkFLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENOVE1EOjE7ICAgICAgICAgICAgIC8qICAgQ05UTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERCTEI6MTsgICAgICAgICAgICAgIC8qICAgREJMQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJGUkU6MTsgICAgICAgICAgICAgIC8qICAgQkZSRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRZUEU6MjsgICAgICAgICAgICAgIC8qICAgVFlQRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVCVUYgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJVRk5NQjo4OyAgICAgICAgICAgIC8qICAgQlVGTk1CICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJVRlNJWkU6NTsgICAgICAgICAgIC8qICAgQlVGU0laRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVCVUY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVNQVhQICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1YUFM6MTE7ICAgICAgICAgICAgIC8qICAgTVhQUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERFVlNFTDo0OyAgICAgICAgICAgIC8qICAgREVWU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVNQVhQOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVQRVJJICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElJVFY6MzsgICAgICAgICAgICAgIC8qICAgSUlUViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo5OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElGSVM6MTsgICAgICAgICAgICAgIC8qICAgSUZJUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVQRVJJOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUxQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUxQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUyQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUyQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUzQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUzQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU0Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU0Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU1Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU1Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU2Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU2Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU3Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU3Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU4Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU4Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU5Q1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTU1RTOjE7ICAgICAgICAgICAgIC8qICAgQ1NTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENTQ0xSOjE7ICAgICAgICAgICAgIC8qICAgQ1NDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU5Q1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVBQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVBQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVCQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVCQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVDQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVDQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVEQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVEQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVFQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVFQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVGQ1RSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBJRDoyOyAgICAgICAgICAgICAgIC8qICAgUElEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCVVNZOjE7ICAgICAgICAgICAgIC8qICAgUEJVU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRTU9OOjE7ICAgICAgICAgICAgIC8qICAgU1FNT04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRU0VUOjE7ICAgICAgICAgICAgIC8qICAgU1FTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNRQ0xSOjE7ICAgICAgICAgICAgIC8qICAgU1FDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDTFJNOjE7ICAgICAgICAgICAgIC8qICAgQUNMUk0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUUkVQTToxOyAgICAgICAgICAgIC8qICAgQVRSRVBNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOQlVGTToxOyAgICAgICAgICAgIC8qICAgSU5CVUZNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJTVFM6MTsgICAgICAgICAgICAgIC8qICAgQlNUUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVGQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUxVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUxVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTFUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUxVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUyVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUyVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTJUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUyVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUzVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEUzVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTNUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEUzVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU0VFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU0VFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTRUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU0VFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU1VFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU1VFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTVUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU1VFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVCVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVCVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRUJUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVCVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVDVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVDVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRUNUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVDVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVEVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVEVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRURUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVEVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVFVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVFVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRUVUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVFVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVGVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVGVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRUZUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVGVFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU5VFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEU5VFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRTlUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEU5VFJOICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVBVFJFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSQ0xSOjE7ICAgICAgICAgICAgIC8qICAgVFJDTFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRSRU5COjE7ICAgICAgICAgICAgIC8qICAgVFJFTkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBJUEVBVFJFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUElQRUFUUk47ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBJUEVBVFJOICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDIgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDQgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDUgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDYgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDggICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFERDkgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFERDk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERFVkFEREEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVTQlNQRDoyOyAgICAgICAgICAgIC8qICAgVVNCU1BEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhVQlBPUlQ6MzsgICAgICAgICAgIC8qICAgSFVCUE9SVCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVQUEhVQjo0OyAgICAgICAgICAgIC8qICAgVVBQSFVCICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERFVkFEREE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsyOF07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNVU1BNT0RFICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNVU1BNOjE7ICAgICAgICAgICAgIC8qICAgU1VTUE0gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNVU1BNT0RFOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1s5Ml07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0IwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0IwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0IxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0IxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0IyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0IyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0IzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0IzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0I0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0I0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0I1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0I1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0I2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0I2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQwRklGT0I3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQwRklGT0I3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0IwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0IwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0IxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0IxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0IyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0IyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0IzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0IzOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0I0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0I0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0I1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0I1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0I2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0I2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEQxRklGT0I3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGSUZPUE9SVDozMjsgICAgICAgIC8qICAgRklGT1BPUlQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEQxRklGT0I3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUgVVNCMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfdXNiX24gKikweEU4MDEwMDAwKSAgICAvKiBVU0IwIEFkZHJlc3MgICovDQotI2RlZmluZSBVU0IxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF91c2JfbiAqKTB4RTgyMDcwMDApICAgIC8qIFVTQjEgQWRkcmVzcyAgKi8NCi0NCi0NCi0jZW5kaWYgLyogX19VU0JfSU9ERUZJTkVfSF9fICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvbWFpbi5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL21haW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliMGE1Yi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvbWFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBtYWluLmgNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBNYWluDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX01BSU5fSF8NCi0jZGVmaW5lIF9NQUlOX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnRfdCBtYWluKHZvaWQpOw0KLXZvaWQgU2FtcGxlX09TVE0wX0ludGVycnVwdCh2b2lkKTsNCi0NCi0jZW5kaWYgIC8qIF9NQUlOX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvcG9ydF9pbml0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvcG9ydF9pbml0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiOGUzZGUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3BvcnRfaW5pdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBwb3J0X2luaXQuaA0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFNDSUYgVUFSVCBzYW1wbGUgcHJvZ3JhbQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9QT1JUX0lOSVRfSF8NCi0jZGVmaW5lIF9QT1JUX0lOSVRfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgUE9SVF9Jbml0KHZvaWQpOw0KLQ0KLQ0KLSNlbmRpZiAgLyogX1BPUlRfSU5JVF9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3JfdHlwZWRlZnMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yX3R5cGVkZWZzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMTQ5NDMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3JfdHlwZWRlZnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcioNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSA6IHJfdHlwZWRlZnMuaA0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uIDogYmFzaWMgdHlwZSBkZWZpbml0aW9uDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgUl9UWVBFREVGU19IDQotI2RlZmluZSBSX1RZUEVERUZTX0gNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgPHN0ZGRlZi5oPg0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmICFkZWZpbmVkKF9fYm9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkKSAmJiAhZGVmaW5lZChfX2NwbHVzcGx1cykNCi0jZGVmaW5lIGZhbHNlIDANCi0jZGVmaW5lIHRydWUgIDENCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi10eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgY2hhcl90Ow0KLXR5cGVkZWYgaW50ICAgICAgICAgICAgICAgICBpbnRfdDsNCi0NCi0jaWZkZWYgVFlQRVNfQUxSRUFEWV9ERUZJTkVEX0lOX1NURElOVA0KLQl0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgYm9vbF90Ow0KLQl0eXBlZGVmIHNpZ25lZCBjaGFyICAgICAgICAgaW50OF90Ow0KLQl0eXBlZGVmIHNpZ25lZCBzaG9ydCAgICAgICAgaW50MTZfdDsNCi0JdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgIGludDMyX3Q7DQotCXR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyAgICBpbnQ2NF90Ow0KLQl0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgICAgdWludDhfdDsNCi0JdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgIHVpbnQxNl90Ow0KLQl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgdWludDMyX3Q7DQotCXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICB1aW50NjRfdDsNCi0JdHlwZWRlZiBmbG9hdCAgICAgICAgICAgICAgIGZsb2F0MzJfdDsNCi0JdHlwZWRlZiBkb3VibGUgICAgICAgICAgICAgIGZsb2F0NjRfdDsNCi0JdHlwZWRlZiBsb25nIGRvdWJsZSAgICAgICAgIGZsb2F0MTI4X3Q7DQotI2VuZGlmDQotI2VuZGlmIC8qIFJfVFlQRURFRlNfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yZXNldHByZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3Jlc2V0cHJnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZDBhOTIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3Jlc2V0cHJnLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHJlc2V0cHJnLmgNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBQcm9ncmFtIGFmdGVyIHJlc2V0DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX1JFU0VUUFJHX0hfDQotI2RlZmluZSBfUkVTRVRQUkdfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgaW9faW5pdF9jYWNoZSh2b2lkKTsNCi1pbnQzMl90IGlvX2NhY2hlX3dyaXRlYmFjayh2b2lkKTsNCi0NCi0jZW5kaWYgIC8qIF9SRVNFVFBSR19IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3NhbXBsZV9tYWluLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc2FtcGxlX21haW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY0M2I1Mi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc2FtcGxlX21haW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc2FtcGxlX21haW4uaA0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFJJSUMgc2FtcGxlIHByb2dyYW0NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfU0FNUExFX01BSU5fSF8NCi0jZGVmaW5lIF9TQU1QTEVfTUFJTl9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBTYW1wbGVfTWFpbih2b2lkKTsNCi0NCi0NCi0jZW5kaWYgIC8qIF9TQU1QTEVfTUFJTl9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3Npb19jaGFyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc2lvX2NoYXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzY2MzYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc2lvX2NoYXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc2lvX2NoYXIuaA0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFRlcm1pbmFsIEkvTw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9TSU9fQ0hBUl9IXw0KLSNkZWZpbmUgX1NJT19DSEFSX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFNpb1dyaXRlKGludDMyX3QgZmlsZV9ubywgY29uc3QgY2hhcl90ICogYnVmZmVyLCB1aW50MzJfdCB3cml0aW5nX2IpOw0KLWludDMyX3QgU2lvUmVhZChpbnQzMl90IGZpbGVfbm8sIGNoYXJfdCAqIGJ1ZmZlciwgdWludDMyX3QgcmVhZGluZ19iKTsNCi0NCi12b2lkICAgSW9Jbml0U2NpZjIodm9pZCk7DQotY2hhcl90IElvR2V0Y2hhcih2b2lkKTsNCi12b2lkICAgSW9QdXRjaGFyKGNoYXJfdCBidWZmZXIpOw0KLQ0KLSNlbmRpZiAgLyogX1NJT19DSEFSX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc3RiX2luaXQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9zdGJfaW5pdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjhmYTlkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9zdGJfaW5pdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBzdGJfaW5pdC5oDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gU0NJRiBVQVJUIHNhbXBsZSBwcm9ncmFtDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX1NUQl9JTklUX0hfDQotI2RlZmluZSBfU1RCX0lOSVRfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgU1RCX0luaXQodm9pZCk7DQotDQotDQotI2VuZGlmICAvKiBfU1RCX0lOSVRfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS90eXBlZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvdHlwZWRlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjc5MjM2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS90eXBlZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogdHlwZWRlZmluZS5oDQotKiBWZXJzaW9uICAgICAgIDogMS4wMA0KLSogRGVzY3JpcHRpb24gICA6IERlZmluZXMgZXhhY3Qgd2lkdGggaW50ZWdlciB0eXBlcy4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKiAgICAgICAgIDogMjQuMDUuMjAxMiAxLjAwICAgIEZpcnN0IFJlbGVhc2UNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX1RZUEVfREVGSU5FX0hfDQotI2RlZmluZSBfVFlQRV9ERUZJTkVfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXR5cGVkZWYgc2lnbmVkICAgY2hhciAgICAgIF9TQllURTsNCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgICBfVUJZVEU7DQotdHlwZWRlZiBzaWduZWQgICBzaG9ydCAgICAgX1NXT1JEOw0KLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgIF9VV09SRDsNCi10eXBlZGVmIHNpZ25lZCAgIGludCAgICAgICBfU0lOVDsNCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICBfVUlOVDsNCi10eXBlZGVmIHNpZ25lZCAgIGxvbmcgICAgICBfU0RXT1JEOw0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgIF9VRFdPUkQ7DQotdHlwZWRlZiBzaWduZWQgICBsb25nIGxvbmcgX1NRV09SRDsNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfVVFXT1JEOw0KLQ0KLSNlbmRpZgkvKiBfVFlQRV9ERUZJTkVfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvdmVjdG9yL3ZlY3Rvcl9taXJyb3J0YWJsZS5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy92ZWN0b3IvdmVjdG9yX21pcnJvcnRhYmxlLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNTFhNTUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy92ZWN0b3IvdmVjdG9yX21pcnJvcnRhYmxlLnMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IHZlY3Rvcl9taXJyb3J0YWJsZS5zDQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuMTMNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLTsqICAgICAgICAgICAgICAgOiANCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBWZWN0b3IgbWlycm9ydGFibGUNCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotOyogICAgICAgICA6IDIzLjA1LjIwMTIgMC4wMQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEVudHJ5IHBvaW50IGZvciB0aGUgUmVzZXQgaGFuZGxlcg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JUFJFU0VSVkU4DQotCUFSRUEgVkVDVE9SX01JUlJPUl9UQUJMRSwgQ09ERSwgUkVBRE9OTFkNCi0NCi07CUVYUE9SVCB2ZWN0b3JfdGFibGUNCi0NCi0JSU1QT1JUICByZXNldF9oYW5kbGVyDQotCUlNUE9SVCAgdW5kZWZpbmVkX2hhbmRsZXINCi0JSU1QT1JUICBwcmVmZXRjaF9oYW5kbGVyDQotCUlNUE9SVCAgYWJvcnRfaGFuZGxlcg0KLQlJTVBPUlQgIHJlc2VydmVkX2hhbmRsZXINCi0JSU1QT1JUICBGcmVlUlRPU19JUlFfSGFuZGxlcg0KLQlJTVBPUlQgIGZpcV9oYW5kbGVyDQotCUlNUE9SVCAgRnJlZVJUT1NfU1dJX0hhbmRsZXINCi0NCi07CUVOVFJZDQotDQotOwlFWFBPUlQgU3RhcnQNCi0NCi07U3RhcnQNCi0NCi12ZWN0b3JfdGFibGUyDQotCUxEUiBwYywgPXJlc2V0X2hhbmRsZXIgICAgICAgICA7IDB4MDAwMF8wMDAwDQotCUxEUiBwYywgPXVuZGVmaW5lZF9oYW5kbGVyICAgICA7IDB4MDAwMF8wMDA0DQotCUxEUiBwYywgPUZyZWVSVE9TX1NXSV9IYW5kbGVyICA7IDB4MDAwMF8wMDA4DQotCUxEUiBwYywgPXByZWZldGNoX2hhbmRsZXIgICAgICA7IDB4MDAwMF8wMDBjDQotCUxEUiBwYywgPWFib3J0X2hhbmRsZXIgICAgICAgICA7IDB4MDAwMF8wMDEwDQotCUxEUiBwYywgPXJlc2VydmVkX2hhbmRsZXIgICAgICA7IDB4MDAwMF8wMDE0DQotCUxEUiBwYywgPUZyZWVSVE9TX0lSUV9IYW5kbGVyICA7IDB4MDAwMF8wMDE4DQotCUxEUiBwYywgPWZpcV9oYW5kbGVyICAgICAgICAgICA7IDB4MDAwMF8wMDFjDQotDQotTGl0ZXJhbHMNCi0JTFRPUkcNCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy92ZWN0b3IvdmVjdG9yX3RhYmxlLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL3ZlY3Rvci92ZWN0b3JfdGFibGUucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVhZDQ0YS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL3ZlY3Rvci92ZWN0b3JfdGFibGUucworKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIERJU0NMQUlNRVINCi07KiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi07KiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLTsqIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLTsqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi07KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi07KiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLTsqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotOyogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLTsqIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi07KiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi07KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLTsqIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLTsqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLTsqIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi07KiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLTsqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotOyogZm9sbG93aW5nIGxpbms6DQotOyogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotOyoNCi07KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBGaWxlIE5hbWUgICAgIDogdmVjdG9yX3RhYmxlLnMNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24gLSBSWi9BMUgNCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS4xMw0KLTsqICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotOyogICAgICAgICAgICAgICA6IA0KLTsqIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotOyogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFZlY3RvciB0YWJsZQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW50cnkgcG9pbnQgZm9yIHRoZSBSZXNldCBoYW5kbGVyDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlQUkVTRVJWRTgNCi0JQVJFQSBWRUNUT1JfVEFCTEUsIENPREUsIFJFQURPTkxZDQotDQotCUVYUE9SVCB2ZWN0b3JfdGFibGUNCi0NCi0JSU1QT1JUICByZXNldF9oYW5kbGVyDQotCUlNUE9SVCAgdW5kZWZpbmVkX2hhbmRsZXINCi0JSU1QT1JUICBGcmVlUlRPU19TV0lfSGFuZGxlcg0KLQlJTVBPUlQgIHByZWZldGNoX2hhbmRsZXINCi0JSU1QT1JUICBhYm9ydF9oYW5kbGVyDQotCUlNUE9SVCAgcmVzZXJ2ZWRfaGFuZGxlcg0KLQlJTVBPUlQgIEZyZWVSVE9TX0lSUV9IYW5kbGVyDQotCUlNUE9SVCAgZmlxX2hhbmRsZXINCi0NCi0JRU5UUlkNCi0NCi0JRVhQT1JUIFN0YXJ0DQotDQotU3RhcnQNCi0NCi12ZWN0b3JfdGFibGUNCi0JTERSIHBjLCA9cmVzZXRfaGFuZGxlciAgICAgICAgIDsgMHgwMDAwXzAwMDANCi0JTERSIHBjLCA9dW5kZWZpbmVkX2hhbmRsZXIgICAgIDsgMHgwMDAwXzAwMDQNCi0JTERSIHBjLCA9RnJlZVJUT1NfU1dJX0hhbmRsZXIgIDsgMHgwMDAwXzAwMDgNCi0JTERSIHBjLCA9cHJlZmV0Y2hfaGFuZGxlciAgICAgIDsgMHgwMDAwXzAwMGMNCi0JTERSIHBjLCA9YWJvcnRfaGFuZGxlciAgICAgICAgIDsgMHgwMDAwXzAwMTANCi0JTERSIHBjLCA9cmVzZXJ2ZWRfaGFuZGxlciAgICAgIDsgMHgwMDAwXzAwMTQNCi0JTERSIHBjLCA9RnJlZVJUT1NfSVJRX0hhbmRsZXIgIDsgMHgwMDAwXzAwMTgNCi0JTERSIHBjLCA9ZmlxX2hhbmRsZXIgICAgICAgICAgIDsgMHgwMDAwXzAwMWMNCi0NCi1MaXRlcmFscw0KLQlMVE9SRw0KLQ0KLQlFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL21haW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5NGIxOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvbWFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQotICogYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCi0gKiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgKGRlZmluZWQgaW4gdGhpcyBmaWxlKSBpcyB1c2VkIHRvDQotICogc2VsZWN0IGJldHdlZW4gdGhlIHR3by4gIFRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaXMgaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZA0KLSAqIGluIG1haW5fYmxpbmt5LmMuICBUaGUgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24gaXMNCi0gKiBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fZnVsbC5jLg0KLSAqDQotICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGNvZGUgdGhhdCBpcyBub3QgZGVtbyBzcGVjaWZpYywgaW5jbHVkaW5nIHRoZQ0KLSAqIGhhcmR3YXJlIHNldHVwIGFuZCBGcmVlUlRPUyBob29rIGZ1bmN0aW9ucy4NCi0gKg0KLSAqIEVOU1VSRSBUTyBSRUFEIFRIRSBET0NVTUVOVEFUSU9OIFBBR0UgRk9SIFRISVMgUE9SVCBBTkQgREVNTyBBUFBMSUNBVElPTiBPTg0KLSAqIFRIRSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBXRUIgU0lURSBGT1IgRlVMTCBJTkZPUk1BVElPTiBPTiBVU0lORyBUSElTIERFTU8NCi0gKiBBUFBMSUNBVElPTiwgQU5EIElUUyBBU1NPQ0lBVEUgRnJlZVJUT1MgQVJDSElURUNUVVJFIFBPUlQhDQotICoNCi0gKi8NCi0NCi0vKiBTY2hlZHVsZXIgaW5jbHVkZSBmaWxlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0NCi0vKiBTdGFuZGFyZCBkZW1vIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJwYXJ0ZXN0LmgiDQotI2luY2x1ZGUgIlRpbWVyRGVtby5oIg0KLSNpbmNsdWRlICJRdWV1ZU92ZXJ3cml0ZS5oIg0KLQ0KLS8qIFJlbmVzYXMgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAic2lvX2NoYXIuaCINCi0NCi0vKiBTZXQgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSB0byBvbmUgdG8gcnVuIHRoZSBzaW1wbGUgYmxpbmt5IGRlbW8sDQotb3IgMCB0byBydW4gdGhlIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAqLw0KLSNkZWZpbmUgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQkwDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBDb25maWd1cmUgdGhlIGhhcmR3YXJlIGFzIG5lY2Vzc2FyeSB0byBydW4gdGhpcyBkZW1vLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIG1haW5fYmxpbmt5KCkgaXMgdXNlZCB3aGVuIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgc2V0IHRvIDEuDQotICogbWFpbl9mdWxsKCkgaXMgdXNlZCB3aGVuIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgc2V0IHRvIDAuDQotICovDQotI2lmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgPT0gMQ0KLQlleHRlcm4gdm9pZCBtYWluX2JsaW5reSggdm9pZCApOw0KLSNlbHNlDQotCWV4dGVybiB2b2lkIG1haW5fZnVsbCggdm9pZCApOw0KLSNlbmRpZiAvKiAjaWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSA9PSAxICovDQotDQotLyogUHJvdG90eXBlcyBmb3IgdGhlIHN0YW5kYXJkIEZyZWVSVE9TIGNhbGxiYWNrL2hvb2sgZnVuY3Rpb25zIGltcGxlbWVudGVkDQotd2l0aGluIHRoaXMgZmlsZS4gKi8NCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKTsNCi12b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICk7DQotdm9pZCB2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggVGFza0hhbmRsZV90IHB4VGFzaywgY2hhciAqcGNUYXNrTmFtZSApOw0KLXZvaWQgdkFwcGxpY2F0aW9uVGlja0hvb2soIHZvaWQgKTsNCi0NCi0vKg0KLSAqIENyZWF0ZXMgYW5kIHZlcmlmaWVzIGRpZmZlcmVudCBmaWxlcyBvbiB0aGUgdm9sdW1lLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YNCi0gKiB2YXJpb3VzIGRpZmZlcmVudCBBUEkgZnVuY3Rpb25zLg0KLSAqLw0KLWV4dGVybiB2b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLWludCBtYWluKCB2b2lkICkNCi17DQotCS8qIENvbmZpZ3VyZSB0aGUgaGFyZHdhcmUgcmVhZHkgdG8gcnVuIHRoZSBkZW1vLiAqLw0KLQlwcnZTZXR1cEhhcmR3YXJlKCk7DQotDQotCS8qIFRoZSBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaXMgZGVzY3JpYmVkIGF0IHRoZSB0b3ANCi0Jb2YgdGhpcyBmaWxlLiAqLw0KLQkjaWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSA9PSAxDQotCXsNCi0JCW1haW5fYmxpbmt5KCk7DQotCX0NCi0JI2Vsc2UNCi0Jew0KLQkJbWFpbl9mdWxsKCk7DQotCX0NCi0JI2VuZGlmDQotDQotCXJldHVybiAwOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZTZXR1cEhhcmR3YXJlKCB2b2lkICkNCi17DQotCS8qIEluaXRpYWxpc2UgdGhlIHBpbnMgdXNlZCBieSB0aGUgTEVEcyAodGhlIG9ic2N1cmUgW25vdyBmb3IgaGlzdG9yaWNhbA0KLQlyZWFzb25zXSBuYW1lIFBhclRlc3Qgc3RhbmRzIGZvciBQYXJhbGxlbCBQb3J0IHRlc3QpLiAqLw0KLQl2UGFyVGVzdEluaXRpYWxpc2UoKTsNCi0NCi0gICAgLyogQ2FsbCB0aGUgUmVuZXNhcyBkcml2ZXIgdGhhdCBpbml0aWFsaXNlcyB0aGUgc2VyaWFsIHBvcnQuICBQMT02Ni42N01Ieg0KLQlDS1M9MCBTQ0JSUj0xNyBCaXQgcmF0ZSBlcnJvcj0wLjQ2JSA9PiBCYXVkIHJhdGU9MTE1MjAwYnBzLiAqLw0KLSAgICBJb0luaXRTY2lmMigpOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKQ0KLXsNCi0JLyogQ2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscyBiZWNhdXNlIHRoZXJlIGlzIGluc3VmZmljaWVudA0KLQlmcmVlIG1lbW9yeSBhdmFpbGFibGUgaW4gdGhlIEZyZWVSVE9TIGhlYXAuICBwdlBvcnRNYWxsb2MoKSBpcyBjYWxsZWQNCi0JaW50ZXJuYWxseSBieSBGcmVlUlRPUyBBUEkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIHRhc2tzLCBxdWV1ZXMsIHNvZnR3YXJlDQotCXRpbWVycywgYW5kIHNlbWFwaG9yZXMuICBUaGUgc2l6ZSBvZiB0aGUgRnJlZVJUT1MgaGVhcCBpcyBzZXQgYnkgdGhlDQotCWNvbmZpZ1RPVEFMX0hFQVBfU0laRSBjb25maWd1cmF0aW9uIGNvbnN0YW50IGluIEZyZWVSVE9TQ29uZmlnLmguICovDQotCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsNCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCBUYXNrSGFuZGxlX3QgcHhUYXNrLCBjaGFyICpwY1Rhc2tOYW1lICkNCi17DQotCSggdm9pZCApIHBjVGFza05hbWU7DQotCSggdm9pZCApIHB4VGFzazsNCi0NCi0JLyogUnVuIHRpbWUgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgcGVyZm9ybWVkIGlmDQotCWNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyBpcyBkZWZpbmVkIHRvIDEgb3IgMi4gIFRoaXMgaG9vaw0KLQlmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYSBzdGFjayBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gKi8NCi0JdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOw0KLQlmb3IoIDs7ICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdkFwcGxpY2F0aW9uSWRsZUhvb2soIHZvaWQgKQ0KLXsNCi12b2xhdGlsZSBzaXplX3QgeEZyZWVIZWFwU3BhY2U7DQotDQotCS8qIFRoaXMgaXMganVzdCBhIHRyaXZpYWwgZXhhbXBsZSBvZiBhbiBpZGxlIGhvb2suICBJdCBpcyBjYWxsZWQgb24gZWFjaA0KLQljeWNsZSBvZiB0aGUgaWRsZSB0YXNrLiAgSXQgbXVzdCAqTk9UKiBhdHRlbXB0IHRvIGJsb2NrLiAgSW4gdGhpcyBjYXNlIHRoZQ0KLQlpZGxlIHRhc2sganVzdCBxdWVyaWVzIHRoZSBhbW91bnQgb2YgRnJlZVJUT1MgaGVhcCB0aGF0IHJlbWFpbnMuICBTZWUgdGhlDQotCW1lbW9yeSBtYW5hZ2VtZW50IHNlY3Rpb24gb24gdGhlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIHdlYiBzaXRlIGZvciBtZW1vcnkNCi0JbWFuYWdlbWVudCBvcHRpb25zLiAgSWYgdGhlcmUgaXMgYSBsb3Qgb2YgaGVhcCBtZW1vcnkgZnJlZSB0aGVuIHRoZQ0KLQljb25maWdUT1RBTF9IRUFQX1NJWkUgdmFsdWUgaW4gRnJlZVJUT1NDb25maWcuaCBjYW4gYmUgcmVkdWNlZCB0byBmcmVlIHVwDQotCVJBTS4gKi8NCi0JeEZyZWVIZWFwU3BhY2UgPSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBhYm91dCB4RnJlZUhlYXBTcGFjZSBiZWluZyBzZXQgYnV0IG5ldmVyIHVzZWQuICovDQotCSggdm9pZCApIHhGcmVlSGVhcFNwYWNlOw0KLQ0KLQkjaWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSAhPSAxDQotCXsNCi0JCS8qIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBvbmx5IGdvaW5nIHRvIGJlIGFjY2Vzc2VkIGZyb20gb25lIHRhc2sgdGhlbg0KLQkJRl9GU19USFJFQURfQVdBUkUgY2FuIGJlIHNldCB0byAwIGFuZCB0aGUgc2V0IG9mIGV4YW1wbGUgZmlsZXMgaXMNCi0JCWNyZWF0ZWQgYmVmb3JlIHRoZSBSVE9TIHNjaGVkdWxlciBpcyBzdGFydGVkLiAgSWYgdGhlIGZpbGUgc3lzdGVtIGlzDQotCQlnb2luZyB0byBiZQlhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2sgdGhlbiBGX0ZTX1RIUkVBRF9BV0FSRSBtdXN0DQotCQliZSBzZXQgdG8gMSBhbmQgdGhlIHNldCBvZiBzYW1wbGUgZmlsZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgaWRsZSB0YXNrDQotCQlob29rIGZ1bmN0aW9uLiAqLw0KLQkJI2lmIEZfRlNfVEhSRUFEX0FXQVJFID09IDENCi0JCXsNCi0JCQlzdGF0aWMgcG9ydEJBU0VfVFlQRSB4Q3JlYXRlZFNhbXBsZUZpbGVzID0gcGRGQUxTRTsNCi0NCi0JCQkvKiBJbml0aWFsaXNlIHRoZSBkcml2ZSBhbmQgZmlsZSBzeXN0ZW0sIHRoZW4gY3JlYXRlIGEgZmV3IGV4YW1wbGUNCi0JCQlmaWxlcy4gIFRoZSBvdXRwdXQgZnJvbSB0aGlzIGZ1bmN0aW9uIGp1c3QgZ29lcyB0byB0aGUgc3Rkb3V0IHdpbmRvdywNCi0JCQlhbGxvd2luZyB0aGUgb3V0cHV0IHRvIGJlIHZpZXdlZCB3aGVuIHRoZSBVRFAgY29tbWFuZCBjb25zb2xlIGlzIG5vdA0KLQkJCWNvbm5lY3RlZC4gKi8NCi0JCQlpZiggeENyZWF0ZWRTYW1wbGVGaWxlcyA9PSBwZEZBTFNFICkNCi0JCQl7DQotCQkJCXZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcygpOw0KLQkJCQl4Q3JlYXRlZFNhbXBsZUZpbGVzID0gcGRUUlVFOw0KLQkJCX0NCi0JCX0NCi0JCSNlbmRpZg0KLQl9DQotCSNlbmRpZg0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBc3NlcnRDYWxsZWQoIGNvbnN0IGNoYXIgKiBwY0ZpbGUsIHVuc2lnbmVkIGxvbmcgdWxMaW5lICkNCi17DQotdm9sYXRpbGUgdW5zaWduZWQgbG9uZyB1bCA9IDA7DQotDQotCSggdm9pZCApIHBjRmlsZTsNCi0JKCB2b2lkICkgdWxMaW5lOw0KLQ0KLQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCi0Jew0KLQkJLyogU2V0IHVsIHRvIGEgbm9uLXplcm8gdmFsdWUgdXNpbmcgdGhlIGRlYnVnZ2VyIHRvIHN0ZXAgb3V0IG9mIHRoaXMNCi0JCWZ1bmN0aW9uLiAqLw0KLQkJd2hpbGUoIHVsID09IDAgKQ0KLQkJew0KLQkJCXBvcnROT1AoKTsNCi0JCX0NCi0JfQ0KLQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvblRpY2tIb29rKCB2b2lkICkNCi17DQotCSNpZiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZID09IDANCi0Jew0KLQkJLyogVGhlIGZ1bGwgZGVtbyBpbmNsdWRlcyBhIHNvZnR3YXJlIHRpbWVyIGRlbW8vdGVzdCB0aGF0IHJlcXVpcmVzDQotCQlwcm9kZGluZyBwZXJpb2RpY2FsbHkgZnJvbSB0aGUgdGljayBpbnRlcnJ1cHQuICovDQotCQl2VGltZXJQZXJpb2RpY0lTUlRlc3RzKCk7DQotDQotCQkvKiBDYWxsIHRoZSBwZXJpb2RpYyBxdWV1ZSBvdmVyd3JpdGUgZnJvbSBJU1IgZGVtby4gKi8NCi0JCXZRdWV1ZU92ZXJ3cml0ZVBlcmlvZGljSVNSRGVtbygpOw0KLQl9DQotCSNlbmRpZg0KLX0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9zY2F0dGVyLnNjYXQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9zY2F0dGVyLnNjYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYjkwNDMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvc2NhdHRlci5zY2F0CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiBzY2F0dGVyLnNjYXQNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24NCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotOyogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi07KiAgICAgICAgICAgICAgIDogDQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHNjYXR0ZXIgZmlsZQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotTE9BRF9NT0RVTEUzIDB4MjAwMjAwMDAgMHgyMDlGRkZGRiAgICAgICAgICAgICAgOzsgSW50ZXJuYWwgUkFNIEFyZWEgKDB4MjAwMjAwMDAtMHgyMDAzRkZGRikNCi17DQotICAgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLSAgICA7OyAgICB1c2UgYXMgUkFNIEFyZWEgICAgOzsNCi0gICAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQotICAgIFZFQ1RPUl9NSVJST1JfVEFCTEUgICAgIDB4MjAwMjAwMDAgICAgICAgICAgOzsgSW50ZXJuYWwgUkFNIEFyZWEgKDB4MjAwMjAwMDAtMHgyMDAyMDBGRikNCi0gICAgeyAgICogKFZFQ1RPUl9NSVJST1JfVEFCTEUpICAgICAgICAgfSAgICAgICA7OyBWZWN0b3IgdGFibGUNCi0JCi0JQ09ERSAJCQkJCSswCQkJRklYRUQNCi0JewkqICgrUk8tQ09ERSkgCQkJCX0NCi0NCi0JQ09OU1QJCQkJCSswCQkJRklYRUQNCi0JewkqICgrUk8tREFUQSkgCQkJCX0NCi0NCi0JREFUQQkJCQkJKzANCi0JewkqICgrUlcpIAkJCQkJfQ0KLQ0KLQlCU1MJCQkJCQkrMA0KLQl7CSogKCtaSSkJCQkJCQl9DQotDQotCTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLQk7OyAgICB1c2UgYXMgUkFNIEFyZWEoMikgICAgOzsNCi0JOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQotCUFSTV9MSUJfSEVBUAkJCTB4MjAwODAwMDAJRU1QVFkgIDB4MDAwMDgwMDAJOyBBcHBsaWNhdGlvbiBoZWFwDQotCXsgfQ0KLQ0KLQlBUk1fTElCX1NUQUNLCQkJMHgyMDA5MDAwMAlFTVBUWSAgLTB4MDAwMDgwMDAJOyBBcHBsaWNhdGlvbiBzdGFjaw0KLQl7IH0NCi0NCi0JSVJRX1NUQUNLCQkJCTB4MjAwOTIwMDAJRU1QVFkgIC0weDAwMDAyMDAwCTsgSVJRIG1vZGUgc3RhY2sNCi0JeyB9DQotDQotCUZJUV9TVEFDSwkJCQkweDIwMDk0MDAwCUVNUFRZICAtMHgwMDAwMjAwMAk7IEZSUSBtb2RlIHN0YWNrDQotCXsgfQ0KLQ0KLQlTVkNfU1RBQ0sJCQkJMHgyMDA5NjAwMAlFTVBUWSAgLTB4MDAwMDIwMDAJOyBTVkMgbW9kZSBzdGFjaw0KLQl7IH0NCi0NCi0JQUJUX1NUQUNLCQkJCTB4MjAwOTgwMDAJRU1QVFkgIC0weDAwMDAyMDAwCTsgQUJUIG1vZGUgc3RhY2sNCi0JeyB9DQotDQotCVRUQgkJCQkJCSgweDIwMDk4MDAwIEFORCAweEZGRkZDMDAwKQlFTVBUWQkweDAwMDA4MDAwCTsgTGV2ZWwtMSBUcmFuc2xhdGlvbiBUYWJsZSBmb3IgTU1VDQotCXsgfQ0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS90YXJnZXRfc2NyaXB0cy9pbml0X1JaLUExSC5kcyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L3RhcmdldF9zY3JpcHRzL2luaXRfUlotQTFILmRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzAwZjIxLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L3RhcmdldF9zY3JpcHRzL2luaXRfUlotQTFILmRzCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotcmVzZXQNCi1zdG9wDQotI3Jlc2V0DQotDQotaW5mbyBtZW1vcnkNCi1tZW1vcnkgUzoweDAwMDAwMDAwIFM6MHgwN2ZmZmZmZiBybw0KLW1lbW9yeSBTOjB4MDgwMDAwMDAgUzoweDBmZmZmZmZmIGNhY2hlDQotbWVtb3J5IFM6MHgzZmZmZmY4MCBTOjB4M2ZmZmZmZmYgbm9jYWNoZSBub3ZlcmlmeQ0KLW1lbW9yeSBTOjB4ZmNmZTAwMDAgUzoweGZjZmVmZmZmIG5vY2FjaGUgbm92ZXJpZnkNCi0NCi0jIFVTQiBSZWdpc3RlciBhY2Nlc3NlZCBieSBvbmx5IDE2Yml0DQotbWVtb3J5IFM6MHhlODAxMDAwMCBTOjB4ZTgwMTAxMGYgMTYNCi1tZW1vcnkgUzoweGU4MjA3MDAwIFM6MHhlODIwNzEwZiAxNg0KLWluZm8gbWVtb3J5DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0jIFJlbGVhc2UgTDIgY2FjaGUgc3RhbmRieQkJCSMjDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi1tZW0gc2V0IDB4M2ZmZmZmODAgMzIgMHgwMDAwMDAwMQ0KLQ0KLSMgOypXcml0aW5nIHRvIE9uLUNoaXAgRGF0YS1SZXRlbnRpb24gUkFNIGlzIGVuYWJsZWQuDQotIyA7U1lTQ1IzLlJSQU1XRTM9UlJBTVdFMj1SUkFNV0UxPVJSQU1XRTA9MQ0KLW1lbW9yeSBzZXQgUzoweEZDRkUwNDA4IDAgeyh1bnNpZ25lZCBjaGFyKTB4MEZ9DQoteC8xYiAweGZjZmUwNDA4DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0jIENTMCBQb3J0IFNldHRpbmcJCQkJCSMjDQotIyBDUzEgUG9ydCBTZXR0aW5nCQkJCQkjIw0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBQOV8xKEEyNSksIFA5XzAoQTI0KSwNCi1tZW0gc2V0IDB4ZmNmZTM0MjQgMTYgMHgwMDAzICAgICAgICAjIFBNQzkNCi1tZW0gc2V0IDB4ZmNmZTNBMjQgMTYgMHgwMDAwICAgICAgICAjIFBGQ0FFOQ0KLW1lbSBzZXQgMHhmY2ZlMzYyNCAxNiAweDAwMDAgICAgICAgICMgUEZDRTkNCi1tZW0gc2V0IDB4ZmNmZTM1MjQgMTYgMHgwMDAwICAgICAgICAjIFBGQzkNCi1tZW0gc2V0IDB4ZmNmZTcyMjQgMTYgMHgwMDAzICAgICAgICAjIFBJUEM5DQotIyBQOF8xNShBMjMpLCBQOF8xNChBMjIpLCBQOF8xMyhBMjEpLA0KLW1lbSBzZXQgMHhmY2ZlMzQyMCAxNiAweGZmZmYgICAgICAgICMgUE1DOA0KLW1lbSBzZXQgMHhmY2ZlM0EyMCAxNiAweDAwMDAgICAgICAgICMgUEZDQUU4DQotbWVtIHNldCAweGZjZmUzNjIwIDE2IDB4MDAwMCAgICAgICAgIyBQRkNFOA0KLW1lbSBzZXQgMHhmY2ZlMzUyMCAxNiAweDAwMDAgICAgICAgICMgUEZDOA0KLW1lbSBzZXQgMHhmY2ZlNzIyMCAxNiAweGZmZmYgICAgICAgICMgUElQQzgNCi0jIFAzXzcoQ1MxIyksDQotbWVtIHNldCAweGZjZmUzNDBjIDE2IDB4MDA4MCAgICAgICAgIyBQTUMzDQotbWVtIHNldCAweGZjZmUzQTBjIDE2IDB4MDA4MCAgICAgICAgIyBQRkNBRTMNCi1tZW0gc2V0IDB4ZmNmZTM2MGMgMTYgMHgwMDgwICAgICAgICAjIFBGQ0UzDQotbWVtIHNldCAweGZjZmUzNTBjIDE2IDB4MDAwMCAgICAgICAgIyBQRkMzDQotbWVtIHNldCAweGZjZmU3MjBjIDE2IDB4MDA4MCAgICAgICAgIyBQSVBDMw0KLQ0KLSMgU1JTUiAtIFNEUkFNIFNldHVwPw0KLSMgUDdfOChSRCMpLCBQN183KFdFMSMpLCBQN182KFdFMCMpLCBQN181KFJEL1dSIyksIFA3XzQoQ0tFKSwgUDdfMyhDQVMjKSwgUDdfMihSQVMjKSwgUDdfMShDUzMjKSwgUDdfMChDUzAjKQ0KLW1lbSBzZXQgMHhmY2ZlMzQxYyAxNiAweGZmZmYgICAgICAgICMgUE1DNw0KLW1lbSBzZXQgMHhmY2ZlM0ExYyAxNiAweDAwMDAgICAgICAgICMgUEZDQUU3DQotbWVtIHNldCAweGZjZmUzNjFjIDE2IDB4MDAwMCAgICAgICAgIyBQRkNFNw0KLW1lbSBzZXQgMHhmY2ZlMzUxYyAxNiAweDAwMDAgICAgICAgICMgUEZDNw0KLW1lbSBzZXQgMHhmY2ZlNzIxYyAxNiAweGZmZmYgICAgICAgICMgUElQQzcNCi0jIFA1XzgoQ1MyIyksDQotbWVtIHNldCAweGZjZmUzNDE0IDE2IDB4MDEwMCAgICAgICAgIyBQTUM1DQotbWVtIHNldCAweGZjZmUzQTE0IDE2IDB4MDEwMCAgICAgICAgIyBQRkNBRTUNCi1tZW0gc2V0IDB4ZmNmZTM2MTQgMTYgMHgwMDAwICAgICAgICAjIFBGQ0U1DQotbWVtIHNldCAweGZjZmUzNTE0IDE2IDB4MDEwMCAgICAgICAgIyBQRkM1DQotbWVtIHNldCAweGZjZmU3MjE0IDE2IDB4MDEwMCAgICAgICAgIyBQSVBDNQ0KLQ0KLSMgZGlzYWJsZSB2ZXJpZnkgb24gU0RSQU0gc2V0dXAgcmVnaXN0ZXJzDQotbWVtb3J5IFM6MHgzZmZmYzAwMCBTOjB4M2ZmZmZmZmYgbm9jYWNoZSBub3ZlcmlmeQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBDUzIgU0RSQU0gU2V0dGluZyAgICAgICAgICAgICAgICAgIyMNCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLW1lbSBzZXQgMHgzZmZmYzAwYyAzMiAweDAwMDA0QzAwICAgICMgQ1MyQkNSIC0gU0RSQU0NCi1tZW0gc2V0IDB4M2ZmZmMwMzAgMzIgMHgwMDAwMDA4MCAgICAjIENTMldDUiAtIFNEUkFNDQotbWVtIHNldCAweDNmZmZkMDQwIDE2IDB4MDAwMCAgICAgICAgIyBTRFJBTV9NT0RFX0NTMg0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBDUzMgU0RSQU0gU2V0dGluZyAgICAgICAgICAgICAgICAgIyMNCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLXdhaXQgMC41cw0KLW1lbSBzZXQgMHgzZmZmYzAxMCAzMiAweDAwMDA0QzAwICAgICMgQ1MzQkNSIC0gU0RSQU0NCi1tZW0gc2V0IDB4M2ZmZmMwMzQgMzIgMHgwMDAwMjQ5MiAgICAjIENTM1dDUiAtIFNEUkFNDQotbWVtIHNldCAweDNmZmZjMDRjIDMyIDB4MDAxMjA4MTIgICAgIyBTRENSDQotbWVtIHNldCAweDNmZmZjMDU4IDMyIDB4QTU1QTAwMjAgICAgIyBSVENPUg0KLW1lbSBzZXQgMHgzZmZmYzA1MCAzMiAweEE1NUEwMDEwICAgICMgUlRDU1INCi1tZW0gc2V0IDB4M2ZmZmUwNDAgMTYgMHgwMDAwICAgICAgICAjIFNEUkFNX01PREVfQ1MzDQotIyBTUlNSIC0gU0RSQU0gU2V0dXA/DQotDQotI1NSU1IgLSBOb3QgdXNlZCAtIHVwZGF0ZWQgdG8gaW5jbHVkZSBTRFJBTSBzZXR1cA0KLSMgUDdfNihXRTAjKSwgUDdfOChSRCMpLCBQN18wKENTMCMpLA0KLSNtZW0gc2V0IDB4ZmNmZTM0MWMgMTYgMHhmZjQxICAgICAgICAjIFBNQzcNCi0jbWVtIHNldCAweGZjZmUzQTFjIDE2IDB4MDAwMCAgICAgICAgIyBQRkNBRTcNCi0jbWVtIHNldCAweGZjZmUzNjFjIDE2IDB4MDAwMCAgICAgICAgIyBQRkNFNw0KLSNtZW0gc2V0IDB4ZmNmZTM1MWMgMTYgMHgwMDAwICAgICAgICAjIFBGQzcNCi0jbWVtIHNldCAweGZjZmU3MjFjIDE2IDB4ZmY0MSAgICAgICAgIyBQSVBDNw0KLSNTUlNSIC0gTm90IHVzZWQgLSB1cGRhdGVkIHRvIGluY2x1ZGUgU0RSQU0gc2V0dXANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1NTVmZDJlLi5mN2Q5MjUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdGhyZWUgZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCA5NThhZjQ4Li5kMjAxMGZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKaW5kZXggNDM4ZDE2MC4uMmJhODg1MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAzNWVjZTgwLi5jNWQ1NTVlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggN2FlM2NiZi4uNGU5ODVjMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0aHJlZSBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKaW5kZXggN2YyZGNhYS4uNzA3YjZhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLmdsb2JhbCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3NlcmlhbC5jCmluZGV4IGI4NTVkODkuLmUzMzY1ZjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL1BhclRlc3QuYwppbmRleCBmNTQzNTQ2Li42NThiYzM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKaW5kZXggMmEwYTc0Yy4uYTc3NTEwNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAic3RkbGliLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKaW5kZXggOWNkYmUwNC4uZTJkM2Q5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKaW5kZXggZDEyMDljYi4uNzY0ZjdjZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaWZuZGVmIExXSVBfQVBQU19IDQogI2RlZmluZSBMV0lQX0FQUFNfSA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9tYWluX2x3SVAuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9tYWluX2x3SVAuYwppbmRleCAzMWY5ZGVhLi44YTZlZTkyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHRocmVlIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbWFpbi5jCmluZGV4IDg3ZDQyMjIuLmI5M2E4MjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCAwYmNjMzgyLi45Y2ZjZWZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDNkYjJhOWEuLjU4ZjcyZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbGNkX21lc3NhZ2UuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbGNkX21lc3NhZ2UuaAppbmRleCBkMGJhZmM2Li5kYTRlOTc3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL2xjZF9tZXNzYWdlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9sY2RfbWVzc2FnZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIExDRF9NRVNTQUdFX0gNCiAjZGVmaW5lIExDRF9NRVNTQUdFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbWFpbi5jCmluZGV4IDNkMjA2ZGEuLmVhZGY0MWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZTYyNjMwYS4uOWUyODg0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKaW5kZXggYmExYTM2OC4uNTY5YjgyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvY29tdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL2RlbW9fc2VyaWFsLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL2RlbW9fc2VyaWFsLmgKaW5kZXggMjc0YmM3YS4uZmFjMTk3YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTRVJJQUxfQ09NTVNfSA0KICNkZWZpbmUgU0VSSUFMX0NPTU1TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2FjN2U2Ni4uNzA0N2JmNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKaW5kZXggMmFiYWZhMS4uZGYxNjE3YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCmluZGV4IGQ3NjEzMjEuLmM1M2UwYzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYwppbmRleCBiYzEyNjJiLi40Njk0NTJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IDg1ZjY0OWQuLmY4MTc5ODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYwppbmRleCBmODAwYjEwLi5jNDEwNTI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVU0FSVDEuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYwppbmRleCBiYTFhMzY4Li41NjliODI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCmluZGV4IDI3NGJjN2EuLmZhYzE5N2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFUklBTF9DT01NU19IDQogI2RlZmluZSBTRVJJQUxfQ09NTVNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2FjN2U2Ni4uNzA0N2JmNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYwppbmRleCAyYWJhZmExLi5kZjE2MTdiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW4uYwppbmRleCBkNzYxMzIxLi5jNTNlMGM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYwppbmRleCBiYzEyNjJiLi40Njk0NTJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKaW5kZXggODVmNjQ5ZC4uZjgxNzk4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKaW5kZXggZDc3NDMzMi4uZDQ1M2Q4OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVTQVJUMS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDc0Nzc0ZWIuLjk2NDJkYzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jCmluZGV4IDFlMDhhNDguLjNiZDQwNjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oCmluZGV4IGJkMmFlNzUuLjM2NWZlMDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSF8NCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IXw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCmluZGV4IGFjNTljYjkuLjgxYTJkOGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYwppbmRleCA0MGZkNjE3Li42NDdkMDgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCmluZGV4IGRkZWQ3NjcuLjBhMzU0MzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYwppbmRleCBlNjNiYmU2Li5hZTIzM2M3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNzQ3NzRlYi4uOTY0MmRjMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jCmluZGV4IDFlMDhhNDguLjNiZDQwNjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaAppbmRleCBiZDJhZTc1Li4zNjVmZTA5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSF8NCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IXw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMKaW5kZXggYWM1OWNiOS4uODFhMmQ4ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYwppbmRleCA0MGZkNjE3Li42NDdkMDgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYwppbmRleCBkZGVkNzY3Li4wYTM1NDM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jCmluZGV4IGU2M2JiZTYuLmFlMjMzYzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDc0Nzc0ZWIuLjk2NDJkYzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwppbmRleCAxZTA4YTQ4Li4zYmQ0MDY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggYmQyYWU3NS4uMzY1ZmUwOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0hfDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSF8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCmluZGV4IGFjNTljYjkuLjgxYTJkOGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKaW5kZXggNDBmZDYxNy4uNjQ3ZDA4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKaW5kZXggZGRlZDc2Ny4uMGEzNTQzOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYwppbmRleCBlNjNiYmU2Li5hZTIzM2M3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDAwZWFlMGMuLjBjZjY3NWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYwppbmRleCAyM2FlYzk2Li42YTcwZmZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBkZTc0NTVjLi4xYjY2MmZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfQlVSVEMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfQlVSVEMuYwppbmRleCBlYWQ2ZmM3Li45ZjY4MWRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X0JVUlRDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9CVVJUQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAibGltaXRzLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVEMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDLmMKaW5kZXggZDc2YzRhMy4uYjM1NDY2MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVEMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X1JUQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYwppbmRleCA5ZWU2NjFjLi5lOTYwOWUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IGRlbW8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9tYWluLmMKaW5kZXggZmZiMWY3Ny4uOTg1MzQzMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9FRk0zMi1HaWFudC1HZWNrby1QZWFybC1HZWNrby10aWNrbGVzcy1SVE9TLWRlbW8uaHRtbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDdiZTNkNjcuLmIyYzIzNGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYwppbmRleCBkZTI3MmIwLi5jMDc5OTY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBkZTc0NTVjLi4xYjY2MmZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDQy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVENDLmMKaW5kZXggOWU2MTdiZC4uY2RkYWJhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVENDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVENDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGlubGNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL21haW5fbG93X3Bvd2VyLmMKaW5kZXggOWVlNjYxYy4uZTk2MDllMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBkZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jCmluZGV4IDgyNzkzZjEuLjIyNzViMjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvRUZNMzItR2lhbnQtR2Vja28tUGVhcmwtR2Vja28tdGlja2xlc3MtUlRPUy1kZW1vLmh0bWwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGI4ZDUyZWEuLjY0NzkyZWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9QYXJUZXN0LmMKaW5kZXggYzFmNGMyYy4uM2Y0OTk0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIEdQSU8gKHBhcmFsbGVsIHBvcnQpIElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluLWZ1bGwuYwppbmRleCA5NTc4OWE5Li4xOTgzNjVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL21haW5fYmxpbmt5LmMKaW5kZXggNGM1NGM0Ni4uYmZmMzM4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvdUlQX1Rhc2suYwppbmRleCA4ODI3YTFjLi5mMGY5M2NhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggZDVkZThkYy4uNjA2MTExYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVzY2FsZSBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiY29tbW9uLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvd2Vic2VydmVyL0VNQUMuaAppbmRleCA0YThjZmNkLi5iYjQ3MzExIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvd2Vic2VydmVyL0VNQUMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvd2Vic2VydmVyL0VNQUMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUl9FTUFDX0gNCiAjZGVmaW5lIEZSX0VNQUNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGM3YTEwOWEuLmM5ZmQyODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzEvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9tYWluLmMKaW5kZXggMGVkMmNmZC4uYTg5ODg0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzEvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8xL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGNyZWF0ZXMgc2l4IGNvLXJvdXRpbmVzIGFuZCB0d28gdGFza3MgKHRocmVlIGluY2x1ZGluZyANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvRnJlZVJUT1NDb25maWcuaAppbmRleCBmNTg1NDJkLi5lYTMyY2Q5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvbWFpbi5jCmluZGV4IDcyOTViZGYuLjNmZGI4OWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8yL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgZGVtbyBhcHBsaWNhdGlvbiBjcmVhdGVzIHNldmVuIGNvLXJvdXRpbmVzIGFuZCBvbmUgdGFzayAodHdvIGluY2x1ZGluZyANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCAwYWM3YWE5Li5lNzc1OTNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBlN2NmNTcxLi41YjQ3YmNiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL21haW4uYwppbmRleCAwZWQyY2ZkLi5hODk4ODRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gY3JlYXRlcyBzaXggY28tcm91dGluZXMgYW5kIHR3byB0YXNrcyAodGhyZWUgaW5jbHVkaW5nIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDBhYzdhYTkuLmU3NzU5M2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9QYXJUZXN0LmMKaW5kZXggZTdjZjU3MS4uNWI0N2JjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL21haW4uYwppbmRleCA1MjFhZmI2Li4zY2JmYjkwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gY3JlYXRlcyBzaXggY28tcm91dGluZXMgYW5kIHR3byB0YXNrcyAodGhyZWUgaW5jbHVkaW5nIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGE5MjFlMDMuLmZlYjdhOWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9QYXJUZXN0LmMKaW5kZXggZTdjZjU3MS4uNWI0N2JjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL21haW4uYwppbmRleCA2NjAxMjU0Li5iNzQwZTM1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gY3JlYXRlcyBzZXZlbiBjby1yb3V0aW5lcyBhbmQgb25lIHRhc2sgKHR3byBpbmNsdWRpbmcgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNmZhYWQxMi4uZGFjOTgzMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL1BhclRlc3QuYwppbmRleCA0MjlkNTI2Li5jZTM5MzY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvbWFpbi5jCmluZGV4IDAyYjYyZmIuLjJhZDdjYTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDFmMTI0MS4uZWZiYmYxZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZTdjZjU3MS4uNWI0N2JjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL2NvbW1zdGVzdC5jCmluZGV4IDc4MjM5NzMuLjY5NDRjMTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL2NvbW1zdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL2NvbW1zdGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoZSBjb21tcyB0ZXN0IFJ4IGFuZCBUeCB0YXNrIGFuZCBjby1yb3V0aW5lLiAgU2VlIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvY29tbXN0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuaAppbmRleCA1YmMzODljLi4yMzFlMjg0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDT01NU19URVNUX0gNCiAjZGVmaW5lIENPTU1TX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL21haW4uYwppbmRleCBmNjNiOTlhLi4yNDkxN2MwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gY3JlYXRlcyBlaWdodCBjby1yb3V0aW5lcyBhbmQgZm91ciB0YXNrcyAoZml2ZSANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCA0YmM5MmI4Li5kZjVkMTU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvbWFpbi5jCmluZGV4IDhhNTk0OTguLjIyMzVhZTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMjM4M2VkZi4uYzkyYzkwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL21haW4uYwppbmRleCA3ZDM0Y2VhLi40OTk0NzY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDg3MDVmOC4uODNlN2Q4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML2hlYXAvaGVhcF8xLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvaGVhcC9oZWFwXzEuYwppbmRleCBjMGZiMjlmLi40NTJlNjI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvaGVhcC9oZWFwXzEuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvaGVhcC9oZWFwXzEuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9tYWluLmMKaW5kZXggZjI0ZWJlYS4uOTkzOWVlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDY4NGZkNzYuLjZmMGUwNzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCkBAIC04OCw3ICs0Nyw3IEBACiAjZGVmaW5lIGNvbmZpZ0NQVV9DTE9DS19IWgkJCQkoICggdW5zaWduZWQgbG9uZyApIDUwMDAwMDAwICkNCiAjZGVmaW5lIGNvbmZpZ1RJQ0tfUkFURV9IWgkJCQkoICggVGlja1R5cGVfdCApIDEwMDAgKQ0KICNkZWZpbmUgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFCQkoICggdW5zaWduZWQgc2hvcnQgKSA3MCApDQotI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkoICggc2l6ZV90ICkgKCAyNDAwMCApICkNCisjZGVmaW5lIGNvbmZpZ1RPVEFMX0hFQVBfU0laRQkJCSggKCBzaXplX3QgKSAoIDI3MDAwICkgKQ0KICNkZWZpbmUgY29uZmlnTUFYX1RBU0tfTkFNRV9MRU4JCQkoIDEyICkNCiAjZGVmaW5lIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFXzE2X0JJVF9USUNLUwkJCTANCkBAIC0xMDMsNiArNjIsNyBAQAogI2RlZmluZSBjb25maWdNQVhfUFJJT1JJVElFUwkJCSggNVVMICkNCiAjZGVmaW5lIGNvbmZpZ01BWF9DT19ST1VUSU5FX1BSSU9SSVRJRVMgKCAyICkNCiAjZGVmaW5lIGNvbmZpZ1FVRVVFX1JFR0lTVFJZX1NJWkUJCTEwDQorI2RlZmluZSBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OCTENCiANCiAvKiBUaW1lciByZWxhdGVkIGRlZmluZXMuICovDQogI2RlZmluZSBjb25maWdVU0VfVElNRVJTCQkJCTENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggZTA1ODU3Ny4uZjk1Mjc5ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZGU3NzQyMy4uZGJiNDYyMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9SVE9TRGVtby51dnByb2ogYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9SVE9TRGVtby51dnByb2oKaW5kZXggNzQ0NTI0NS4uMzE5ZDE0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUlRPU0RlbW8udXZwcm9qCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1JUT1NEZW1vLnV2cHJvagpAQCAtMTAsNiArMTAsOCBAQAogICAgICAgPFRhcmdldE5hbWU+RnJlZVJUT1NfRGVtbzwvVGFyZ2V0TmFtZT4KICAgICAgIDxUb29sc2V0TnVtYmVyPjB4NDwvVG9vbHNldE51bWJlcj4KICAgICAgIDxUb29sc2V0TmFtZT5BUk0tQURTPC9Ub29sc2V0TmFtZT4KKyAgICAgIDxwQ0NVc2VkPjUwNjA1Mjg6OlY1LjA2IHVwZGF0ZSA1IChidWlsZCA1MjgpOjpBUk1DQzwvcENDVXNlZD4KKyAgICAgIDx1QUM2PjA8L3VBQzY+CiAgICAgICA8VGFyZ2V0T3B0aW9uPgogICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgogICAgICAgICAgIDxEZXZpY2U+TE0zUzg5NjI8L0RldmljZT4KQEAgLTgyLDYgKzg0LDggQEAKICAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4KICAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPgogICAgICAgICAgICAgPFVzZXJQcm9nMkRvczE2TW9kZT4wPC9Vc2VyUHJvZzJEb3MxNk1vZGU+CisgICAgICAgICAgICA8blN0b3BBMVg+MDwvblN0b3BBMVg+CisgICAgICAgICAgICA8blN0b3BBMlg+MDwvblN0b3BBMlg+CiAgICAgICAgICAgPC9BZnRlck1ha2U+CiAgICAgICAgICAgPFNlbGVjdGVkRm9yQmF0Y2hCdWlsZD4wPC9TZWxlY3RlZEZvckJhdGNoQnVpbGQ+CiAgICAgICAgICAgPFNWQ1NJZFN0cmluZz48L1NWQ1NJZFN0cmluZz4KQEAgLTIyNSw2ICsyMjksNyBAQAogICAgICAgICAgICAgPHVzZVVsaWI+MDwvdXNlVWxpYj4KICAgICAgICAgICAgIDxFbmRTZWw+MDwvRW5kU2VsPgogICAgICAgICAgICAgPHVMdGNnPjA8L3VMdGNnPgorICAgICAgICAgICAgPG5TZWN1cmU+MDwvblNlY3VyZT4KICAgICAgICAgICAgIDxSb1NlbEQ+MzwvUm9TZWxEPgogICAgICAgICAgICAgPFJ3U2VsRD4zPC9Sd1NlbEQ+CiAgICAgICAgICAgICA8Q29kZVNlbD4wPC9Db2RlU2VsPgpAQCAtMzU5LDYgKzM2NCwxMyBAQAogICAgICAgICAgICAgPHVTdXJwSW5jPjA8L3VTdXJwSW5jPgogICAgICAgICAgICAgPHVDOTk+MDwvdUM5OT4KICAgICAgICAgICAgIDx1c2VYTz4wPC91c2VYTz4KKyAgICAgICAgICAgIDx2Nkxhbmc+MTwvdjZMYW5nPgorICAgICAgICAgICAgPHY2TGFuZ1A+MTwvdjZMYW5nUD4KKyAgICAgICAgICAgIDx2U2hvcnRFbj4xPC92U2hvcnRFbj4KKyAgICAgICAgICAgIDx2U2hvcnRXY2g+MTwvdlNob3J0V2NoPgorICAgICAgICAgICAgPHY2THRvPjA8L3Y2THRvPgorICAgICAgICAgICAgPHY2V3RFPjA8L3Y2V3RFPgorICAgICAgICAgICAgPHY2UnR0aT4wPC92NlJ0dGk+CiAgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgogICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPi0tZGlhZ19zdXBwcmVzcyAxOTEsNTUwLDUxMywxNjcsMTc3LDE0NDwvTWlzY0NvbnRyb2xzPgogICAgICAgICAgICAgICA8RGVmaW5lPlJWRFNfQVJNQ00zX0xNM1MxMDIsICJQQUNLX1NUUlVDVF9FTkQ9IiwiQUxJR05fU1RSVUNUX0VORD0iPC9EZWZpbmU+CkBAIC0zNzYsNiArMzg4LDcgQEAKICAgICAgICAgICAgIDxOb1dhcm4+MDwvTm9XYXJuPgogICAgICAgICAgICAgPHVTdXJwSW5jPjA8L3VTdXJwSW5jPgogICAgICAgICAgICAgPHVzZVhPPjA8L3VzZVhPPgorICAgICAgICAgICAgPHVDbGFuZ0FzPjA8L3VDbGFuZ0FzPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTQwNywxMSArNDIwLDYgQEAKICAgICAgICAgICA8R3JvdXBOYW1lPkRlbW9fU291cmNlPC9Hcm91cE5hbWU+CiAgICAgICAgICAgPEZpbGVzPgogICAgICAgICAgICAgPEZpbGU+Ci0gICAgICAgICAgICAgIDxGaWxlTmFtZT5CbG9ja1EuYzwvRmlsZU5hbWU+Ci0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9GaWxlUGF0aD4KLSAgICAgICAgICAgIDwvRmlsZT4KLSAgICAgICAgICAgIDxGaWxlPgogICAgICAgICAgICAgICA8RmlsZU5hbWU+YmxvY2t0aW0uYzwvRmlsZU5hbWU+CiAgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L0ZpbGVQYXRoPgpAQCAtNDIyLDExICs0MzAsNiBAQAogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICA8RmlsZT4KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPmludGVnZXIuYzwvRmlsZU5hbWU+Ci0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXGludGVnZXIuYzwvRmlsZVBhdGg+Ci0gICAgICAgICAgICA8L0ZpbGU+Ci0gICAgICAgICAgICA8RmlsZT4KICAgICAgICAgICAgICAgPEZpbGVOYW1lPm1haW4uYzwvRmlsZU5hbWU+CiAgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cbWFpbi5jPC9GaWxlUGF0aD4KQEAgLTQ5Niw2ICs0OTksMTYgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5NZXNzYWdlQnVmZmVyRGVtby5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cQ29tbW9uXE1pbmltYWxcTWVzc2FnZUJ1ZmZlckRlbW8uYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPlN0cmVhbUJ1ZmZlckRlbW8uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXFN0cmVhbUJ1ZmZlckRlbW8uYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgPC9GaWxlcz4KICAgICAgICAgPC9Hcm91cD4KICAgICAgICAgPEdyb3VwPgpAQCAtNTY2LDYgKzU3OSwxMSBAQAogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzIuYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0cmVhbV9idWZmZXIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICAgIDxHcm91cD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL21haW4uYwppbmRleCBiOThhMDhjLi44ZGI3ODM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KQEAgLTEzOSw5ICs5OCw3IEBACiAjaW5jbHVkZSAiZm9ybWlrZTEyOHgxMjh4MTYuaCINCiANCiAvKiBEZW1vIGFwcCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiQmxvY2tRLmgiDQogI2luY2x1ZGUgImRlYXRoLmgiDQotI2luY2x1ZGUgImludGVnZXIuaCINCiAjaW5jbHVkZSAiYmxvY2t0aW0uaCINCiAjaW5jbHVkZSAiZmxhc2guaCINCiAjaW5jbHVkZSAicGFydGVzdC5oIg0KQEAgLTE1NSw2ICsxMTIsOCBAQAogI2luY2x1ZGUgIkludFF1ZXVlLmgiDQogI2luY2x1ZGUgIlF1ZXVlU2V0LmgiDQogI2luY2x1ZGUgIkV2ZW50R3JvdXBzRGVtby5oIg0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyRGVtby5oIg0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJEZW1vLmgiDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtMTcyLDkgKzEzMSw3IEBACiAjZGVmaW5lIG1haW5RVUVVRV9QT0xMX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDIgKQ0KICNkZWZpbmUgbWFpbkNIRUNLX1RBU0tfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMyApDQogI2RlZmluZSBtYWluU0VNX1RFU1RfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMSApDQotI2RlZmluZSBtYWluQkxPQ0tfUV9QUklPUklUWQkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyICkNCiAjZGVmaW5lIG1haW5DUkVBVE9SX1RBU0tfUFJJT1JJVFkgICAgICAgICAgICggdHNrSURMRV9QUklPUklUWSArIDMgKQ0KLSNkZWZpbmUgbWFpbklOVEVHRVJfVEFTS19QUklPUklUWSAgICAgICAgICAgKCB0c2tJRExFX1BSSU9SSVRZICkNCiAjZGVmaW5lIG1haW5HRU5fUVVFVUVfVEFTS19QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSApDQogDQogLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2UgdGhhdCBjYW4gYmUgd2FpdGluZyBmb3IgZGlzcGxheSBhdCBhbnkgb25lDQpAQCAtMjU1LDE3ICsyMTIsMTcgQEAKIAl4T0xFRFF1ZXVlID0geFF1ZXVlQ3JlYXRlKCBtYWluT0xFRF9RVUVVRV9TSVpFLCBzaXplb2YoIHhPTEVETWVzc2FnZSApICk7DQogDQogCS8qIFN0YXJ0IHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLiAqLw0KLSAgICB2U3RhcnRJbnRlZ2VyTWF0aFRhc2tzKCBtYWluSU5URUdFUl9UQVNLX1BSSU9SSVRZICk7DQotICAgIHZTdGFydEdlbmVyaWNRdWV1ZVRhc2tzKCBtYWluR0VOX1FVRVVFX1RBU0tfUFJJT1JJVFkgKTsNCi0gICAgdlN0YXJ0SW50ZXJydXB0UXVldWVUYXNrcygpOw0KKwl2U3RhcnRHZW5lcmljUXVldWVUYXNrcyggbWFpbkdFTl9RVUVVRV9UQVNLX1BSSU9SSVRZICk7DQorCXZTdGFydEludGVycnVwdFF1ZXVlVGFza3MoKTsNCiAJdlN0YXJ0UmVjdXJzaXZlTXV0ZXhUYXNrcygpOw0KLQl2U3RhcnRCbG9ja2luZ1F1ZXVlVGFza3MoIG1haW5CTE9DS19RX1BSSU9SSVRZICk7DQogCXZDcmVhdGVCbG9ja1RpbWVUYXNrcygpOw0KIAl2U3RhcnRTZW1hcGhvcmVUYXNrcyggbWFpblNFTV9URVNUX1BSSU9SSVRZICk7DQogCXZTdGFydFBvbGxlZFF1ZXVlVGFza3MoIG1haW5RVUVVRV9QT0xMX1BSSU9SSVRZICk7DQogCXZTdGFydFF1ZXVlUGVla1Rhc2tzKCk7DQogCXZTdGFydFF1ZXVlU2V0VGFza3MoKTsNCiAJdlN0YXJ0RXZlbnRHcm91cFRhc2tzKCk7DQorCXZTdGFydE1lc3NhZ2VCdWZmZXJUYXNrcygpOw0KKwl2U3RhcnRTdHJlYW1CdWZmZXJUYXNrcygpOw0KIA0KIAkvKiBFeGNsdWRlIHNvbWUgdGFza3MgaWYgdXNpbmcgdGhlIGtpY2tzdGFydCB2ZXJzaW9uIHRvIGVuc3VyZSB3ZSBzdGF5IHdpdGhpbg0KIAl0aGUgMzJLIGNvZGUgc2l6ZSBsaW1pdC4gKi8NCkBAIC0yODAsMjYgKzIzNywyNCBAQAogCX0NCiAJI2VuZGlmDQogDQotDQotDQogCS8qIFN0YXJ0IHRoZSB0YXNrcyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUvc3BlY2lmaWMgdG8gdGhpcyBkZW1vLiAqLw0KIAl4VGFza0NyZWF0ZSggdk9MRURUYXNrLCAiT0xFRCIsIG1haW5PTEVEX1RBU0tfU1RBQ0tfU0laRSwgTlVMTCwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KIA0KIAkvKiBUaGUgc3VpY2lkZSB0YXNrcyBtdXN0IGJlIGNyZWF0ZWQgbGFzdCBhcyB0aGV5IG5lZWQgdG8ga25vdyBob3cgbWFueQ0KIAl0YXNrcyB3ZXJlIHJ1bm5pbmcgcHJpb3IgdG8gdGhlaXIgY3JlYXRpb24gaW4gb3JkZXIgdG8gYXNjZXJ0YWluIHdoZXRoZXINCiAJb3Igbm90IHRoZSBjb3JyZWN0L2V4cGVjdGVkIG51bWJlciBvZiB0YXNrcyBhcmUgcnVubmluZyBhdCBhbnkgZ2l2ZW4gdGltZS4gKi8NCi0gICAgdkNyZWF0ZVN1aWNpZGFsVGFza3MoIG1haW5DUkVBVE9SX1RBU0tfUFJJT1JJVFkgKTsNCisJdkNyZWF0ZVN1aWNpZGFsVGFza3MoIG1haW5DUkVBVE9SX1RBU0tfUFJJT1JJVFkgKTsNCiANCi0JLyogQ29uZmlndXJlIHRoZSBoaWdoIGZyZXF1ZW5jeSBpbnRlcnJ1cHQgdXNlZCB0byBtZWFzdXJlIHRoZSBpbnRlcnJ1cHQNCi0Jaml0dGVyIHRpbWUuICovDQotCXZTZXR1cEhpZ2hGcmVxdWVuY3lUaW1lcigpOw0KKwkvKiBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIGNvbmZpZ3VyZSB0aGUgaGlnaCBmcmVxdWVuY3kgaW50ZXJydXB0IA0KKwl1c2VkIHRvIG1lYXN1cmUgdGhlIGludGVycnVwdCBqaXR0ZXIgdGltZS4gDQorCXZTZXR1cEhpZ2hGcmVxdWVuY3lUaW1lcigpOyAqLw0KIA0KIAkvKiBTdGFydCB0aGUgc2NoZWR1bGVyLiAqLw0KIAl2VGFza1N0YXJ0U2NoZWR1bGVyKCk7DQogDQotICAgIC8qIFdpbGwgb25seSBnZXQgaGVyZSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBjcmVhdGUgdGhlIGlkbGUNCi0gICAgdGFzay4gKi8NCi0JcmV0dXJuIDA7DQorCS8qIFdpbGwgb25seSBnZXQgaGVyZSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeSB0byBjcmVhdGUgdGhlIGlkbGUNCisJdGFzay4gKi8NCisJZm9yKCA7OyApOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCkBAIC0zNDAsNiArMjk1LDE0IEBACiAJCXVsVGlja3NTaW5jZUxhc3REaXNwbGF5ID0gMDsNCiANCiAJCS8qIEhhcyBhbiBlcnJvciBiZWVuIGZvdW5kIGluIGFueSB0YXNrPyAqLw0KKwkJaWYoIHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIFNUUk0iOw0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIE1TRyI7DQorCQl9DQogCQlpZiggeEFyZUdlbmVyaWNRdWV1ZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCiAJCXsNCiAJCQl4TWVzc2FnZS5wY01lc3NhZ2UgPSAiRVJST1IgSU4gR0VOIFEiOw0KQEAgLTM0OCwxOCArMzExLDEwIEBACiAJICAgIHsNCiAJICAgICAgICB4TWVzc2FnZS5wY01lc3NhZ2UgPSAiRVJST1IgSU4gQ1JFQVRFIjsNCiAJICAgIH0NCi0JICAgIGVsc2UgaWYoIHhBcmVJbnRlZ2VyTWF0aHNUYXNrU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JICAgIHsNCi0JICAgICAgICB4TWVzc2FnZS5wY01lc3NhZ2UgPSAiRVJST1IgSU4gTUFUSCI7DQotCSAgICB9DQogCQllbHNlIGlmKCB4QXJlSW50UXVldWVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIElOVCBRVUVVRSI7DQogCQl9DQotCQllbHNlIGlmKCB4QXJlQmxvY2tpbmdRdWV1ZXNTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXhNZXNzYWdlLnBjTWVzc2FnZSA9ICJFUlJPUiBJTiBCTE9DSyBRIjsNCi0JCX0NCiAJCWVsc2UgaWYoIHhBcmVCbG9ja1RpbWVUZXN0VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KIAkJew0KIAkJCXhNZXNzYWdlLnBjTWVzc2FnZSA9ICJFUlJPUiBJTiBCTE9DSyBUSU1FIjsNCkBAIC00ODEsMTAgKzQzNiwxMSBAQAogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KK3ZvbGF0aWxlIHNpZ25lZCBjaGFyICpwY092ZXJmbG93ZWRUYXNrID0gTlVMTDsNCiB2b2lkIHZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCBUYXNrSGFuZGxlX3QgKnB4VGFzaywgc2lnbmVkIGNoYXIgKnBjVGFza05hbWUgKQ0KIHsNCiAJKCB2b2lkICkgcHhUYXNrOw0KLQkoIHZvaWQgKSBwY1Rhc2tOYW1lOw0KKwlwY092ZXJmbG93ZWRUYXNrID0gcGNUYXNrTmFtZTsNCiANCiAJZm9yKCA7OyApOw0KIH0NCkBAIC00OTgsNyArNDU0LDcgQEAKIAl7DQogCQl3aGlsZSggdWxTZXRUbzFJbkRlYnVnZ2VyVG9FeGl0ID09IDAgKQ0KIAkJew0KLQkJCS8qIE5vdGhpbmcgZG8gZG8gaGVyZS4gIFNldCB0aGUgbG9vcCB2YXJpYWJsZSB0byBhIG5vbiB6ZXJvIHZhbHVlIGluDQorCQkJLyogTm90aGluZyB0byBkbyBoZXJlLiAgU2V0IHRoZSBsb29wIHZhcmlhYmxlIHRvIGEgbm9uIHplcm8gdmFsdWUgaW4NCiAJCQl0aGUgZGVidWdnZXIgdG8gc3RlcCBvdXQgb2YgdGhpcyBmdW5jdGlvbiB0byB0aGUgcG9pbnQgdGhhdCBjYXVzZWQNCiAJCQl0aGUgYXNzZXJ0aW9uLiAqLw0KIAkJCSggdm9pZCApIHBjRmlsZTsNCkBAIC01MDcsMyArNDYzLDUzIEBACiAJfQ0KIAl0YXNrRVhJVF9DUklUSUNBTCgpOw0KIH0NCisNCisvKiBjb25maWdVU0VfU1RBVElDX0FMTE9DQVRJT04gaXMgc2V0IHRvIDEsIHNvIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYW4NCitpbXBsZW1lbnRhdGlvbiBvZiB2QXBwbGljYXRpb25HZXRJZGxlVGFza01lbW9yeSgpIHRvIHByb3ZpZGUgdGhlIG1lbW9yeSB0aGF0IGlzDQordXNlZCBieSB0aGUgSWRsZSB0YXNrLiAqLw0KK3ZvaWQgdkFwcGxpY2F0aW9uR2V0SWRsZVRhc2tNZW1vcnkoIFN0YXRpY1Rhc2tfdCAqKnBweElkbGVUYXNrVENCQnVmZmVyLCBTdGFja1R5cGVfdCAqKnBweElkbGVUYXNrU3RhY2tCdWZmZXIsIHVpbnQzMl90ICpwdWxJZGxlVGFza1N0YWNrU2l6ZSApDQorew0KKy8qIElmIHRoZSBidWZmZXJzIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBJZGxlIHRhc2sgYXJlIGRlY2xhcmVkIGluc2lkZSB0aGlzDQorZnVuY3Rpb24gdGhlbiB0aGV5IG11c3QgYmUgZGVjbGFyZWQgc3RhdGljIC0gb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGxvY2F0ZWQgb24NCit0aGUgc3RhY2sgYW5kIHNvIG5vdCBleGlzdHMgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBleGl0cy4gKi8NCitzdGF0aWMgU3RhdGljVGFza190IHhJZGxlVGFza1RDQjsNCitzdGF0aWMgU3RhY2tUeXBlX3QgdXhJZGxlVGFza1N0YWNrWyBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgXTsNCisNCisJLyogUGFzcyBvdXQgYSBwb2ludGVyIHRvIHRoZSBTdGF0aWNUYXNrX3Qgc3RydWN0dXJlIGluIHdoaWNoIHRoZSBJZGxlIHRhc2sncw0KKwlzdGF0ZSB3aWxsIGJlIHN0b3JlZC4gKi8NCisJKnBweElkbGVUYXNrVENCQnVmZmVyID0gJnhJZGxlVGFza1RDQjsNCisNCisJLyogUGFzcyBvdXQgdGhlIGFycmF5IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBJZGxlIHRhc2sncyBzdGFjay4gKi8NCisJKnBweElkbGVUYXNrU3RhY2tCdWZmZXIgPSB1eElkbGVUYXNrU3RhY2s7DQorDQorCS8qIFBhc3Mgb3V0IHRoZSBzaXplIG9mIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5ICpwcHhJZGxlVGFza1N0YWNrQnVmZmVyLg0KKwlOb3RlIHRoYXQsIGFzIHRoZSBhcnJheSBpcyBuZWNlc3NhcmlseSBvZiB0eXBlIFN0YWNrVHlwZV90LA0KKwljb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovDQorCSpwdWxJZGxlVGFza1N0YWNrU2l6ZSA9IGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGFuZCBjb25maWdVU0VfVElNRVJTIGFyZSBib3RoIHNldCB0byAxLCBzbyB0aGUNCithcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCkNCit0byBwcm92aWRlIHRoZSBtZW1vcnkgdGhhdCBpcyB1c2VkIGJ5IHRoZSBUaW1lciBzZXJ2aWNlIHRhc2suICovDQordm9pZCB2QXBwbGljYXRpb25HZXRUaW1lclRhc2tNZW1vcnkoIFN0YXRpY1Rhc2tfdCAqKnBweFRpbWVyVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhUaW1lclRhc2tTdGFja0J1ZmZlciwgdWludDMyX3QgKnB1bFRpbWVyVGFza1N0YWNrU2l6ZSApDQorew0KKy8qIElmIHRoZSBidWZmZXJzIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBUaW1lciB0YXNrIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhpcw0KK2Z1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uDQordGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovDQorc3RhdGljIFN0YXRpY1Rhc2tfdCB4VGltZXJUYXNrVENCOw0KK3N0YXRpYyBTdGFja1R5cGVfdCB1eFRpbWVyVGFza1N0YWNrWyBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIIF07CQ0KKw0KKwkvKiBQYXNzIG91dCBhIHBvaW50ZXIgdG8gdGhlIFN0YXRpY1Rhc2tfdCBzdHJ1Y3R1cmUgaW4gd2hpY2ggdGhlIFRpbWVyDQorCXRhc2sncyBzdGF0ZSB3aWxsIGJlIHN0b3JlZC4gKi8NCisJKnBweFRpbWVyVGFza1RDQkJ1ZmZlciA9ICZ4VGltZXJUYXNrVENCOw0KKw0KKwkvKiBQYXNzIG91dCB0aGUgYXJyYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIFRpbWVyIHRhc2sncyBzdGFjay4gKi8NCisJKnBweFRpbWVyVGFza1N0YWNrQnVmZmVyID0gdXhUaW1lclRhc2tTdGFjazsNCisNCisJLyogUGFzcyBvdXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgKnBweFRpbWVyVGFza1N0YWNrQnVmZmVyLg0KKwlOb3RlIHRoYXQsIGFzIHRoZSBhcnJheSBpcyBuZWNlc3NhcmlseSBvZiB0eXBlIFN0YWNrVHlwZV90LA0KKwljb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovDQorCSpwdWxUaW1lclRhc2tTdGFja1NpemUgPSBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIOw0KK30NCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3RpbWVydGVzdC5jCmluZGV4IDhiY2VmYjUuLjI1YmRlZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvZW1hYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvd2Vic2VydmVyL2VtYWMuYwppbmRleCBiMDU5N2U2Li4yOWZjYTlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvZW1hYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3dlYnNlcnZlci9lbWFjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDhjNjUwMGIuLjJiNTcyYTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAppbmRleCBmOTEyNTlkLi43MTQxODlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuYwppbmRleCBlMDU4NTc3Li5mOTUyNzlmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGRlNzc0MjMuLmRiYjQ2MjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L21haW4uYwppbmRleCBmOTI4Y2JiLi5jOTg2M2RmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3RpbWVydGVzdC5jCmluZGV4IDc1MzM4ZDUuLmNiYmQ2MjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKaW5kZXggNjE0OGRhYS4uMDI1YjMzZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKaW5kZXggOGY5OGJlNy4uMDg2ZTdiNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNjljNjVkZi4uMjI0ZmY4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9QYXJUZXN0LmMKaW5kZXggNmY1ZWNkMC4uN2UxNDEzMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUy5vcmcgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9tYWluLmMKaW5kZXggNzk4NGFlYy4uNDNlNjk0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvZW1hYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci9lbWFjLmMKaW5kZXggNWY4OThkNy4uZTNhYTIwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci9lbWFjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci9lbWFjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIE9yaWdpbmFsbHkgYWRhcHRlZCBmcm9tIGZpbGUgd3JpdHRlbiBieSBBbmRyZWFzIERhbm5lbmJlcmcuICBTdXBwbGllZCB3aXRoIHBlcm1pc3Npb24uICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IGZmYTk1NDAuLjY3MmY0YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDgxZWRhYjMuLjM4MTg5MmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9MRUQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9MRUQuaAppbmRleCAzNmZkYjJlLi5mNzY0Njc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvTEVELmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L0xFRC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIExFRF9ISA0KICNkZWZpbmUgTEVEX0hIDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9QYXJUZXN0LmMKaW5kZXggNGYzNjdlNC4uODBjYzAxYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUy5vcmcgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9tYWluLmMKaW5kZXggODIwMjEwYy4uNWRjNjhiOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKaW5kZXggNmMyNmM1ZS4uNzFhMTcyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIE9yaWdpbmFsbHkgYWRhcHRlZCBmcm9tIGZpbGUgd3JpdHRlbiBieSBBbmRyZWFzIERhbm5lbmJlcmcuICBTdXBwbGllZCB3aXRoIHBlcm1pc3Npb24uICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDk1NmFmYTguLjZhNTE5MzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBkOWMxOWQ0Li5lZTUzOWE1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvTEVELmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9MRUQuaAppbmRleCAzNmZkYjJlLi5mNzY0Njc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9MRUQuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9MRUQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMRURfSEgNCiAjZGVmaW5lIExFRF9ISA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL1BhclRlc3QuYwppbmRleCBiODA3NThjLi45NDc1Yzk0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUy5vcmcgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvbWFpbi5jCmluZGV4IGJkN2U1Y2IuLjAxM2Q2YzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL2VtYWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci9lbWFjLmMKaW5kZXggMWY4OGRhOC4uMjQ5YTViMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL2VtYWMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi93ZWJzZXJ2ZXIvZW1hYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBPcmlnaW5hbGx5IGFkYXB0ZWQgZnJvbSBmaWxlIHdyaXR0ZW4gYnkgQW5kcmVhcyBEYW5uZW5iZXJnLiAgU3VwcGxpZWQgd2l0aCBwZXJtaXNzaW9uLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKaW5kZXggOTU2YWZhOC4uNmE1MTkzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9SZWdUZXN0LmMKaW5kZXggMTRiZjZhNy4uYTczMzcxNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1NhbXBsZS1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1NhbXBsZS1DTEktY29tbWFuZHMuYwppbmRleCA4OTRiNjRkLi5mN2ZhZGQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvU2FtcGxlLUNMSS1jb21tYW5kcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9VQVJUQ29tbWFuZENvbnNvbGUuYwppbmRleCAyOGVkYTA3Li4wZGU3ZmQ5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9VQVJUQ29tbWFuZENvbnNvbGUuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9VQVJUQ29tbWFuZENvbnNvbGUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgInN0cmluZy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1VBUlRDb21tYW5kQ29uc29sZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmgKaW5kZXggODYyOGFlOS4uM2EyNDEwNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVUFSVF9DT01NQU5EX0NPTlNPTEVfSA0KICNkZWZpbmUgVUFSVF9DT01NQU5EX0NPTlNPTEVfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDI2NWY0NS4uNGFmMzY5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1ibGlua3kuYwppbmRleCBiNzk0OWJjLi42MmZmNWRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWZ1bGwuYwppbmRleCA2YjlmYTVjLi5kMTVjZDYyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLmMKaW5kZXggNzkzMDE4Mi4uNDYzZWExZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9BdG9sbGljX1NwZWNpZmljL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0F0b2xsaWNfU3BlY2lmaWMvUmVnVGVzdC5jCmluZGV4IDAwMGQ2MjcuLjM1MTY4ZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0F0b2xsaWNfU3BlY2lmaWMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0F0b2xsaWNfU3BlY2lmaWMvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGgga25vd24gdmFsdWVzLCB0aGVuIGNoZWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMjEwYzk5NC4uY2Q4ZDgzNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvSUFSX1NwZWNpZmljL1JlZ1Rlc3RfSUFSLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9JQVJfU3BlY2lmaWMvUmVnVGVzdF9JQVIucwppbmRleCA3ZjRlNDlhLi5lOGVhZWNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9JQVJfU3BlY2lmaWMvUmVnVGVzdF9JQVIucworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9JQVJfU3BlY2lmaWMvUmVnVGVzdF9JQVIucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdF9LZWlsLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3RfS2VpbC5zCmluZGV4IDJhN2ZjMjIuLjQ1NDRhNDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdF9LZWlsLnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0X0tlaWwucwpAQCAtMSw2OCArMSwzMiBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLTsgICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi07ICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+PiEgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlDQotOyAgICA+PiEgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUNCi07ICAgID4+ISB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgID4+ISBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KLTsvKiANCis7LyoNCiA7ICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KIDsgKiB0aGF0IGVhY2ggcmVnaXN0ZXIgbWFpbnRhaW5zIGl0cyBleHBlY3RlZCB2YWx1ZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZQ0KIDsgKiB0YXNrLiAgRWFjaCB0YXNrIHVzZXMgYSBkaWZmZXJlbnQgc2V0IG9mIHZhbHVlcy4gIFRoZSByZWcgdGVzdCB0YXNrcyBleGVjdXRlDQpAQCAtNzAsNyArMzQsNyBAQAogOyAqIGNvbnRhaW5pbmcgYW4gdW5leHBlY3RlZCB2YWx1ZSBpcyBpbmRpY2F0aXZlIG9mIGFuIGVycm9yIGluIHRoZSBjb250ZXh0DQogOyAqIHN3aXRjaGluZyBtZWNoYW5pc20uDQogOyAqLw0KLSANCisNCiAJUFJFU0VSVkU4DQogCVRIVU1CDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMTAwLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzExMDAuYwppbmRleCAyYTZkZWRlLi41N2RkZWQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzExMDAuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzExMDAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBHUElPIChwYXJhbGxlbCBwb3J0KSBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzEyMDAuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTIwMC5jCmluZGV4IDQwYTMxNmUuLjdjZDQ2ZTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTIwMC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTIwMC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIEdQSU8gKHBhcmFsbGVsIHBvcnQpIElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTMwMC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMzAwLmMKaW5kZXggYTIyODUyOC4uMjBkOTE2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMzAwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMzAwLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgR1BJTyAocGFyYWxsZWwgcG9ydCkgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tYmxpbmt5LmMKaW5kZXggMDgwZTI2OS4uMmQ0N2YzOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1mdWxsLmMKaW5kZXggNjMwYjkzMS4uMjRhYTU4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IDAyNGQ2ZjMuLjFhNzQwMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDg0YjE2NmEuLmE2Y2EwNjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvSW50UXVldWVUaW1lci5jCmluZGV4IDc1MDU2OTAuLmI2MWFkMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvUmVnVGVzdC5jCmluZGV4IGEwOTQ1OWYuLmU0MTI0M2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiB2b2lkIHZSZWdUZXN0MVRhc2soIHZvaWQgKSBfX2F0dHJpYnV0ZV9fKChuYWtlZCkpOw0KIHZvaWQgdlJlZ1Rlc3QyVGFzayggdm9pZCApIF9fYXR0cmlidXRlX18oKG5ha2VkKSk7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWJsaW5reS5jCmluZGV4IDVjZDVmOWIuLmE1YTgxN2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1mdWxsLmMKaW5kZXggYmI2NjY2OC4uMmUxYjQ3ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLmMKaW5kZXggMThmZmU3ZC4uN2IwNWRjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNGY4NWIzMC4uNDg0OWYzMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUGFyVGVzdC5jCmluZGV4IDFmNDJlZGIuLjBmNzNlODAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgR1BJTyAocGFyYWxsZWwgcG9ydCkgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUmVnVGVzdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUmVnVGVzdC5zCmluZGV4IDdmNmUyNWMuLjU2NTNhNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1JlZ1Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9SZWdUZXN0LnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlSU0VHICAgIENPREU6Q09ERSgyKQ0KIAl0aHVtYg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWJsaW5reS5jCmluZGV4IGFlNDFhYWMuLjk1ODg1MTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tZnVsbC5jCmluZGV4IDdjYjk3OGYuLjViNWIzOTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4uYwppbmRleCA3ZjZjNGQ4Li44MWZhNTk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggNjMwZjgwNy4uYzYwNjM3MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogUHJvdmlkZXMgdGhlIHR3byB0aW1lcnMgc291cmNlcyBmb3IgdGhlIHN0YW5kYXJkIGRlbW8gSW50UXVldWUgdGVzdC4gIEFsc28NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKaW5kZXggYzYyYzY2My4uMDcxZjE0NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL1J1blRpbWVTdGF0c1RpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL1J1blRpbWVTdGF0c1RpbWVyLmMKaW5kZXggYzA4OGE1OS4uMDcyYWFkZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9SdW5UaW1lU3RhdHNUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUnVuVGltZVN0YXRzVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZGVjNzUyZi4uM2ZhMmMzYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NJUENvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NJUENvbmZpZy5oCmluZGV4IDE2MDM2YmUuLjA1YzQ0ZGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TSVBDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0lQQ29uZmlnLmgKQEAgLTEsNDMgKzEsMjkgQEAKIC8qDQotICogRnJlZVJUT1MrVURQIFYxLjAuNCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4NCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkDQorICogRnJlZVJUT1MrVURQIFYxLjAuNA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCiAgKg0KLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUytVRFAgZGlzdHJpYnV0aW9uLiAgVGhlIEZyZWVSVE9TK1VEUCBsaWNlbnNlDQotICogdGVybXMgYXJlIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSB0ZXJtcy4NCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogICoNCi0gKiBGcmVlUlRPUytVRFAgdXNlcyBhIGR1YWwgbGljZW5zZSBtb2RlbCB0aGF0IGFsbG93cyB0aGUgc29mdHdhcmUgdG8gYmUgdXNlZA0KLSAqIHVuZGVyIGEgc3RhbmRhcmQgR1BMIG9wZW4gc291cmNlIGxpY2Vuc2UsIG9yIGEgY29tbWVyY2lhbCBsaWNlbnNlLiAgVGhlDQotICogc3RhbmRhcmQgR1BMIGxpY2Vuc2UgKHVubGlrZSB0aGUgbW9kaWZpZWQgR1BMIGxpY2Vuc2UgdW5kZXIgd2hpY2ggRnJlZVJUT1MNCi0gKiBpdHNlbGYgaXMgZGlzdHJpYnV0ZWQpIHJlcXVpcmVzIHRoYXQgYWxsIHNvZnR3YXJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGgNCi0gKiBGcmVlUlRPUytVRFAgaXMgYWxzbyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBHUEwgVjIgbGljZW5zZSB0ZXJtcy4NCi0gKiBEZXRhaWxzIG9mIGJvdGggbGljZW5zZSBvcHRpb25zIGZvbGxvdzoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiAgKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytVRFAgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQsIGV2YWx1YXRlZCBhbmQNCi0gKiBkaXN0cmlidXRlZCB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZQ0KLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3INCi0gKiB0aGlzIHRleHQuICBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlDQotICogZm9sbG93aW5nIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQuDQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZvciBjb21tZXJjaWFsIG9yIG90aGVyIHJlYXNvbnMgY2Fubm90IGNvbXBseQ0KLSAqIHdpdGggdGhlIHRlcm1zIG9mIHRoZSBHUEwgVjIgbGljZW5zZSBtdXN0IG9idGFpbiBhIGNvbW1lcmNpYWwgbGljZW5zZSBiZWZvcmUNCi0gKiBpbmNvcnBvcmF0aW5nIEZyZWVSVE9TK1VEUCBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciBkaXN0cmlidXRpb24gaW4gYW55DQotICogZm9ybS4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuIGJlIHB1cmNoYXNlZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZy91ZHANCi0gKiBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcyB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrVURQIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UgY2Fubm90DQotICogdXNlIEZyZWVSVE9TK1VEUCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzIGlzJy4NCi0gKiBGcmVlUlRPUytVRFAgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZA0KLSAqIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KLSAqIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBkaXNjbGFpbXMgYWxsIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5DQotICogaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KICAqDQogICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy91ZHANCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCiAgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KICAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KQEAgLTI0Niw4ICsyMzIsOCBAQAogaGFyZHdhcmUgZm9yIHRyYW5zbWlzc2lvbi4gKi8NCiAjZGVmaW5lIGlwY29uZmlnRVRIRVJORVRfRFJJVkVSX0FERFNfSVBfQ0hFQ0tTVU0JMA0KIA0KLS8qIElmIGlwY29uZmlnRVRIRVJORVRfRFJJVkVSX0NIRUNLU19JUF9DSEVDS1NVTSBpcyBzZXQgdG8gMSB0aGVuIHRoZSBJUCANCi1jaGVja3N1bSB3aWxsIGJlIGlnbm9yZWQgb24gaW5jb21pbmcgcGFja2V0cyBvbiB0aGUgYXNzdW1wdGlvbiBJUCBwYWNrZXRzIHdpdGggDQorLyogSWYgaXBjb25maWdFVEhFUk5FVF9EUklWRVJfQ0hFQ0tTX0lQX0NIRUNLU1VNIGlzIHNldCB0byAxIHRoZW4gdGhlIElQDQorY2hlY2tzdW0gd2lsbCBiZSBpZ25vcmVkIG9uIGluY29taW5nIHBhY2tldHMgb24gdGhlIGFzc3VtcHRpb24gSVAgcGFja2V0cyB3aXRoDQogYW4gaW52YWxpZCBjaGVja3N1bSBhcmUgbm90IHBhc3NlZCB0byB0aGUgc3RhY2suICovDQogI2RlZmluZSBpcGNvbmZpZ0VUSEVSTkVUX0RSSVZFUl9DSEVDS1NfSVBfQ0hFQ0tTVU0JMA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggNWNiOTU2Ny4uYWRjZTZkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCmluZGV4IGZiOTljNTIuLjhiMDgwZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKaW5kZXggYTFhYmIwYy4uNDUxY2FlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDg0MDI1ODcuLjk4MGNmODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCmluZGV4IGMyNzRmZGUuLmM5MmVjM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGgga25vd24gdmFsdWVzLCB0aGVuIGNoZWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCAzNTlkZWE1Li5hZGJiYWE4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGgga25vd24gdmFsdWVzLCB0aGVuIGNoZWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IGIyODJmODQuLjJiMjE5ZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvTWljcm9jaGlwX0NFQzEzMDJfQVJNX0NvcnRleC1NNEZfTG93X1Bvd2VyX0RlbW8uaHRtbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5jCmluZGV4IDBjZTMzMTYuLjZlMWRjY2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGFmOTJhNC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9tYWluX2Z1bGwuYwppbmRleCAzNDY3ZTVhLi45OTAwN2QxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbG93X3Bvd2VyX3RpY2tfY29uZmlnLmMKaW5kZXggN2FjZDliOC4uZTU0N2Y0YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbG93X3Bvd2VyX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbG93X3Bvd2VyX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxsaW1pdHMuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYwppbmRleCA0NjRmNjY5Li44NmJhZGE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IGRlbW8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGRiYTZjZjQuLjE1MTFmNDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL01pa3JvQ19TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvTWlrcm9DX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCBiMWI5MWJhLi5lOWU2YjQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvTWlrcm9DX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvTWlrcm9DX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluLmMKaW5kZXggZjE5OGRiMS4uMGJmZTRhOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuYwppbmRleCA3NzI4NWYwLi4zYmYzN2QzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaAppbmRleCA4YWY5MmE0Li5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9tYWluX2Z1bGwuYwppbmRleCAyYzExMzQ4Li5mM2Q1ZjgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2Z1bGwvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jCmluZGV4IGUxMTZjMWQuLmQzOWEwZWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9sb3dfcG93ZXJfdGlja19jb25maWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbG93X3Bvd2VyX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxsaW1pdHMuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jCmluZGV4IGNhYWU2ZTcuLjM0NGFiYWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBkZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCBiNDU0NDJiLi43M2Q2MmJjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IDc2YjU0MDEuLjUyMGQwOWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvRnJlZVJUT1NDb25maWcuaAppbmRleCA0ZWY5MTM5Li44OGNjMWU1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluLmMKaW5kZXggYzI4NWY2My4uYzkwZDIyMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9ibGlua3kuYwppbmRleCA2ZTBkYTczLi45Zjg1NTYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2Z1bGwuYwppbmRleCA3NzM2NmU3Li4zM2YyM2EzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDVjMjdmMWEuLmEwNTc5ZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9SZWdUZXN0LnMKaW5kZXggMmViYzQ0Yi4uMWZiZjA0MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL1JlZ1Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvUmVnVGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW4uYwppbmRleCBhYTdmMWE2Li42N2E0ZDZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9ibGlua3kuYwppbmRleCA2ZTBkYTczLi45Zjg1NTYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9mdWxsLmMKaW5kZXggMWRjZWU0Mi4uNjUwODEyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMDZjM2IzNS4uMGQyZGVkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9SZWdUZXN0LmMKaW5kZXggMmY1NTAyNS4uZGE2YjkzZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIF9fYXNtIHZSZWdUZXN0MVRhc2soIHZvaWQgKQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluLmMKaW5kZXggNzcyNzAyNi4uNmNiOTMxNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2JsaW5reS5jCmluZGV4IDZlMGRhNzMuLjlmODU1NjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9mdWxsLmMKaW5kZXggNGE3ZjVlMS4uMTI3ZTQxNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvRnJlZVJUT1NDb25maWcuaAppbmRleCAwMGUyMDc3Li42NTg5MmIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW4uYwppbmRleCBhOTBhMmIyLi5iMmFhZThjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fYmxpbmt5LmMKaW5kZXggYTVmNWM2Zi4uMDgwYzc0MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2Z1bGwuYwppbmRleCBhNDJjNTMyLi43NmZlNDVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCAzZjVjYTM4Li4zMzc1ZDk3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbi5jCmluZGV4IGE2ZDU0YjkuLjJiZjUxOTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2JsaW5reS5jCmluZGV4IGVmODc5ZTguLmY5MWI3ODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2Z1bGwuYwppbmRleCA4YTJlNWYyLi43Yzk4ODkyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvRnJlZVJUT1NDb25maWcuaAppbmRleCBjOThlNzlkLi43ZmNkYTRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1BhclRlc3QuYwppbmRleCBmMDg5NzBjLi42NWY0ZDhlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIE5vcm1hbGx5LCBhIGRlbW8gYXBwbGljYXRpb24gd291bGQgZGVmaW5lIFBhclRlc3QgKHBhcmFsbGVsIHBvcnQgdGVzdCkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvUmVnVGVzdC5jCmluZGV4IGU1NTg4ZjIuLjRlMTAxN2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiBfX2FzbSB2UmVnVGVzdDFUYXNrKCB2b2lkICkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvbWFpbi5jCmluZGV4IDlhMGE0ZDIuLjk1OTkxNTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogPj4+Pj4+IE5PVEUgMTogPDw8PDw8DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnJlZVJUT1NDb25maWcuaAppbmRleCBmZTMwMGQwLi4xZTJlNTFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggODA4YmY3ZS4uYjU1NWI3OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRoZSB0d28gdGltZXJzIGF2YWlsYWJsZSBpbiB0aGUgVGltZXIzMiBwZXJpcGhlcmFsLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmFzbSBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5hc20KaW5kZXggZjJhODBiOS4uNjdmOGU4ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmFzbQorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QuYXNtCkBAIC0xLDcxICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi07ICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLTsgICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotOyAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLTsgICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLTsgICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi07ICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotOyAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi07ICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi07ICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLTsgICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotOyAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLTsgICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLTsgICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotOyAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogCS50aHVtYg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKaW5kZXggZWFmNmJkZS4uYWFhMjk3NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIF9fYXNtIHZvaWQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24oIHZvaWQgKQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LnMKaW5kZXggNTc4ZTI0NC4uZDc5NmJjYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxGcmVlUlRPU0NvbmZpZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUnVuVGltZVN0YXRzVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUnVuVGltZVN0YXRzVGltZXIuYwppbmRleCBiYjgxMTU5Li43MTZjMzE0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SdW5UaW1lU3RhdHNUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCAyZjE1OTllLi4zNDAwNWQzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9zZXJpYWwuYwppbmRleCBkZjdlY2E0Li4yZmYxNGRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9TaW1wbHlCbGlua3lEZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvU2ltcGx5Qmxpbmt5RGVtby9tYWluX2JsaW5reS5jCmluZGV4IDBkODE3ZTUuLjZlZGRkYjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9TaW1wbHlCbGlua3lEZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL1NpbXBseUJsaW5reURlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL21haW4uYwppbmRleCAwYTE4NDg4Li5lNTA4NTQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svRnJlZVJUT1NDb25maWcuaAppbmRleCA3MDRmNGFjLi44N2FiNDNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUGFyVGVzdC5jCmluZGV4IGZkYTA5ZmYuLjVhNjQ5NDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBHUElPIChwYXJhbGxlbCBwb3J0KSBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUmVnVGVzdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL1JlZ1Rlc3QucwppbmRleCA2MzNlNTE5Li41N2U1ZDk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUmVnVGVzdC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9SZWdUZXN0LnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxGcmVlUlRPU0NvbmZpZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svbWFpbi5jCmluZGV4IGRmMzJhMDguLmFmODBkY2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqID4+Pj4+PiBOT1RFIDE6IDw8PDw8PA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCmluZGV4IGJiMjc3MmMuLjc3NWQ4MjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9TQU00TF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvU0FNNExfbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudC5jCmluZGV4IDg3MzY4YWYuLmEwZWE0OWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9TQU00TF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL1NBTTRMX2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImxpbWl0cy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaAppbmRleCA0NTFjMTJkLi4yZDFhYjdkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCmluZGV4IDZlODgyZTcuLmQ1MTQxOWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIGxvdyBwb3dlciBwcm9qZWN0IHRoYXQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKaW5kZXggMzJlZDljOS4uY2YyYjM2ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIGxvdyBwb3dlciB0aWNrbGVzcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fbG93X3Bvd2VyLmMKaW5kZXggNDY0N2ZhNy4uNjA4ZmZiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBXaGVuIGNvbmZpZ0NSRUFURV9MT1dfUE9XRVJfREVNTyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oIG1haW4oKSB3aWxsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYwppbmRleCBiYTFhMzY4Li41NjliODI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCmluZGV4IDI3NGJjN2EuLmZhYzE5N2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFUklBTF9DT01NU19IDQogI2RlZmluZSBTRVJJQUxfQ09NTVNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYTQ3NDRjMC4uNmNlNTUyYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYwppbmRleCAxYWNhNTJjLi5kOWQxZTFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogUHJvdmlkZXMgdGhlIHR3byB0aW1lcnMgc291cmNlcyBmb3IgdGhlIHN0YW5kYXJkIGRlbW8gSW50UXVldWUgdGVzdC4gIEFsc28NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKaW5kZXggZWQ2OWRlNC4uNWQ2OGU4MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggOGZjN2FjYi4uZWRlMTgwYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKaW5kZXggYmMxMjYyYi4uNDY5NDUyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IDg5NjkwYmMuLjYzYmRkYWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCmluZGV4IDdmNDU2MjIuLmEwZDA2NWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVU0FSVDEuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLmNwcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLmNwcm9qZWN0CmluZGV4IGIzN2IzMmMuLmQ1MzYyN2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5jcHJvamVjdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8uY3Byb2plY3QKQEAgLTUzLDYgKzUzLDcgQEAKIAkJCQkJCQkJPC9vcHRpb24+DQogCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELkRJQUdfV1JBUC42NDYxNzU4NTMiIG5hbWU9IldyYXAgZGlhZ25vc3RpYyBtZXNzYWdlcyAoLS1kaWFnX3dyYXApIiBzdXBlckNsYXNzPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELkRJQUdfV1JBUCIgdmFsdWU9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVySUQuRElBR19XUkFQLm9mZiIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQogCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELkRJU1BMQVlfRVJST1JfTlVNQkVSLjE4MzAzMzY5OTYiIG5hbWU9IkVtaXQgZGlhZ25vc3RpYyBpZGVudGlmaWVyIG51bWJlcnMgKC0tZGlzcGxheV9lcnJvcl9udW1iZXIsIC1wZGVuKSIgc3VwZXJDbGFzcz0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5ESVNQTEFZX0VSUk9SX05VTUJFUiIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KKwkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5PUFRfTEVWRUwuMTg4ODEwNTUyOSIgbmFtZT0iT3B0aW1pemF0aW9uIGxldmVsICgtLW9wdF9sZXZlbCwgLU8pIiBzdXBlckNsYXNzPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELk9QVF9MRVZFTCIgdmFsdWU9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVySUQuT1BUX0xFVkVMLm9mZiIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQogCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlci5pbnB1dFR5cGVfX0NfU1JDUy4xMzgwMTEyMzI0IiBuYW1lPSJDIFNvdXJjZXMiIHN1cGVyQ2xhc3M9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVyLmlucHV0VHlwZV9fQ19TUkNTIi8+DQogCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlci5pbnB1dFR5cGVfX0NQUF9TUkNTLjczNTc4Mjg3NCIgbmFtZT0iQysrIFNvdXJjZXMiIHN1cGVyQ2xhc3M9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVyLmlucHV0VHlwZV9fQ1BQX1NSQ1MiLz4NCiAJCQkJCQkJCTxpbnB1dFR5cGUgaWQ9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVyLmlucHV0VHlwZV9fQVNNX1NSQ1MuMTA0NzI5MDcwMiIgbmFtZT0iQXNzZW1ibHkgU291cmNlcyIgc3VwZXJDbGFzcz0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXIuaW5wdXRUeXBlX19BU01fU1JDUyIvPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5sYXVuY2hlcy9SVE9TRGVtby5sYXVuY2ggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ubGF1bmNoZXMvUlRPU0RlbW8ubGF1bmNoCmluZGV4IGE5NjBkOWUuLmM4ZDgyNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5sYXVuY2hlcy9SVE9TRGVtby5sYXVuY2gKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLmxhdW5jaGVzL1JUT1NEZW1vLmxhdW5jaApAQCAtMTcsNyArMTcsMTAgQEAKIDxzdHJpbmdBdHRyaWJ1dGUga2V5PSJjb20udGkuY2NzdHVkaW8uZGVidWcuZGVidWdNb2RlbC5BVFRSX1BST0dSQU0uVGV4YXMgSW5zdHJ1bWVudHMgWERTMTEwIFVTQiBEZWJ1ZyBQcm9iZS9Db3J0ZXhfTTRfMCIgdmFsdWU9IiR7YnVpbGRfYXJ0aWZhY3Q6UlRPU0RlbW99Ii8+DQogPHN0cmluZ0F0dHJpYnV0ZSBrZXk9ImNvbS50aS5jY3N0dWRpby5kZWJ1Zy5kZWJ1Z01vZGVsLkFUVFJfUFJPSkVDVC5UZXhhcyBJbnN0cnVtZW50cyBYRFMxMTAgVVNCIERlYnVnIFByb2JlL0NvcnRleF9NNF8wIiB2YWx1ZT0iUlRPU0RlbW8iLz4NCiA8c3RyaW5nQXR0cmlidXRlIGtleT0iY29tLnRpLmNjc3R1ZGlvLmRlYnVnLmRlYnVnTW9kZWwuQVRUUl9UQVJHRVRfQ09ORklHIiB2YWx1ZT0iJHt0YXJnZXRfY29uZmlnX2FjdGl2ZV9kZWZhdWx0OlJUT1NEZW1vfSIvPg0KLTxzdHJpbmdBdHRyaWJ1dGUga2V5PSJjb20udGkuY2NzdHVkaW8uZGVidWcuZGVidWdNb2RlbC5NUlVfUFJPR1JBTS5UZXhhcyBJbnN0cnVtZW50cyBYRFMxMTAgVVNCIERlYnVnIFByb2JlL0NvcnRleF9NNF8wIiB2YWx1ZT0iQzovVXNlcnNccmliYXJyeVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1NcRGVidWdcUlRPU0RlbW8ub3V0Ii8+DQorPHN0cmluZ0F0dHJpYnV0ZSBrZXk9ImNvbS50aS5jY3N0dWRpby5kZWJ1Zy5kZWJ1Z01vZGVsLk1SVV9QUk9HUkFNLlRleGFzIEluc3RydW1lbnRzIFhEUzExMCBVU0IgRGVidWcgUHJvYmUvQ29ydGV4X000XzAiIHZhbHVlPSJDOi9Vc2Vyc1xyaWJhcnJ5XERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcRnJlZVJUT1NfRGV2XFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTXERlYnVnXFJUT1NEZW1vLm91dCIvPg0KKzxtYXBBdHRyaWJ1dGUga2V5PSJjb20udGkuY2NzdHVkaW8uZGVidWcudWkuZGlzcGxheUZvcm1hdHMiPg0KKzxtYXBFbnRyeSBrZXk9IlRleGFzIEluc3RydW1lbnRzIFhEUzExMCBVU0IgRGVidWcgUHJvYmUvQ29ydGV4X000XzBAIyNzZXBhcmF0b3IjI0AwIiB2YWx1ZT0iMzItQml0IEhleCAtIFRJIFN0eWxlIi8+DQorPC9tYXBBdHRyaWJ1dGU+DQogPGxpc3RBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLk1BUFBFRF9SRVNPVVJDRV9QQVRIUyI+DQogPGxpc3RFbnRyeSB2YWx1ZT0iL1JUT1NEZW1vIi8+DQogPC9saXN0QXR0cmlidXRlPg0KQEAgLTI2LDQgKzI5LDUgQEAKIDwvbGlzdEF0dHJpYnV0ZT4NCiA8c3RyaW5nQXR0cmlidXRlIGtleT0ib3JnLmVjbGlwc2UuZGVidWcuY29yZS5zb3VyY2VfbG9jYXRvcl9pZCIgdmFsdWU9ImNvbS50aS5jY3N0dWRpby5kZWJ1Zy5zb3VyY2VMb2NhdG9yIi8+DQogPHN0cmluZ0F0dHJpYnV0ZSBrZXk9Im9yZy5lY2xpcHNlLmRlYnVnLmNvcmUuc291cmNlX2xvY2F0b3JfbWVtZW50byIgdmFsdWU9IiZsdDs/eG1sIHZlcnNpb249JnF1b3Q7MS4wJnF1b3Q7IGVuY29kaW5nPSZxdW90O1VURi04JnF1b3Q7IHN0YW5kYWxvbmU9JnF1b3Q7bm8mcXVvdDs/Jmd0OyYjMTM7JiMxMDsmbHQ7c291cmNlTG9va3VwRGlyZWN0b3ImZ3Q7JiMxMzsmIzEwOyZsdDtzb3VyY2VDb250YWluZXJzIGR1cGxpY2F0ZXM9JnF1b3Q7ZmFsc2UmcXVvdDsmZ3Q7JiMxMzsmIzEwOyZsdDtjb250YWluZXIgbWVtZW50bz0mcXVvdDsmYW1wO2x0Oz94bWwgdmVyc2lvbj0mYW1wO3F1b3Q7MS4wJmFtcDtxdW90OyBlbmNvZGluZz0mYW1wO3F1b3Q7VVRGLTgmYW1wO3F1b3Q7IHN0YW5kYWxvbmU9JmFtcDtxdW90O25vJmFtcDtxdW90Oz8mYW1wO2d0OyZhbXA7IzEzOyZhbXA7IzEwOyZhbXA7bHQ7ZGVmYXVsdC8mYW1wO2d0OyZhbXA7IzEzOyZhbXA7IzEwOyZxdW90OyB0eXBlSWQ9JnF1b3Q7b3JnLmVjbGlwc2UuZGVidWcuY29yZS5jb250YWluZXJUeXBlLmRlZmF1bHQmcXVvdDsvJmd0OyYjMTM7JiMxMDsmbHQ7Y29udGFpbmVyIG1lbWVudG89JnF1b3Q7JmFtcDtsdDs/eG1sIHZlcnNpb249JmFtcDtxdW90OzEuMCZhbXA7cXVvdDsgZW5jb2Rpbmc9JmFtcDtxdW90O1VURi04JmFtcDtxdW90OyBzdGFuZGFsb25lPSZhbXA7cXVvdDtubyZhbXA7cXVvdDs/JmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmYW1wO2x0O2NwdVNwZWNpZmljQ29udGFpbmVyIGNwdU5hbWU9JmFtcDtxdW90O1RleGFzIEluc3RydW1lbnRzIFhEUzExMCBVU0IgRGVidWcgUHJvYmUvQ29ydGV4X000XzAmYW1wO3F1b3Q7JmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmYW1wO2x0O2NoaWxkQ29udGFpbmVyRW50cnkgY2hpbGRNZW1lbnRvPSZhbXA7cXVvdDsmYW1wO2FtcDtsdDs/eG1sIHZlcnNpb249JmFtcDthbXA7cXVvdDsxLjAmYW1wO2FtcDtxdW90OyBlbmNvZGluZz0mYW1wO2FtcDtxdW90O1VURi04JmFtcDthbXA7cXVvdDsgc3RhbmRhbG9uZT0mYW1wO2FtcDtxdW90O25vJmFtcDthbXA7cXVvdDs/JmFtcDthbXA7Z3Q7JmFtcDthbXA7IzEzOyZhbXA7YW1wOyMxMDsmYW1wO2FtcDtsdDtwcm9qZWN0IG5hbWU9JmFtcDthbXA7cXVvdDtSVE9TRGVtbyZhbXA7YW1wO3F1b3Q7IHJlZmVyZW5jZWRQcm9qZWN0cz0mYW1wO2FtcDtxdW90O3RydWUmYW1wO2FtcDtxdW90Oy8mYW1wO2FtcDtndDsmYW1wO2FtcDsjMTM7JmFtcDthbXA7IzEwOyZhbXA7cXVvdDsgY2hpbGRUeXBlPSZhbXA7cXVvdDtvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLmNvbnRhaW5lclR5cGUucHJvamVjdCZhbXA7cXVvdDsvJmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmYW1wO2x0O2NoaWxkQ29udGFpbmVyRW50cnkgY2hpbGRNZW1lbnRvPSZhbXA7cXVvdDsmYW1wO2FtcDtsdDs/eG1sIHZlcnNpb249JmFtcDthbXA7cXVvdDsxLjAmYW1wO2FtcDtxdW90OyBlbmNvZGluZz0mYW1wO2FtcDtxdW90O1VURi04JmFtcDthbXA7cXVvdDsgc3RhbmRhbG9uZT0mYW1wO2FtcDtxdW90O25vJmFtcDthbXA7cXVvdDs/JmFtcDthbXA7Z3Q7JmFtcDthbXA7IzEzOyZhbXA7YW1wOyMxMDsmYW1wO2FtcDtsdDtkZWZhdWx0LyZhbXA7YW1wO2d0OyZhbXA7YW1wOyMxMzsmYW1wO2FtcDsjMTA7JmFtcDtxdW90OyBjaGlsZFR5cGU9JmFtcDtxdW90O29yZy5lY2xpcHNlLmRlYnVnLmNvcmUuY29udGFpbmVyVHlwZS5kZWZhdWx0JmFtcDtxdW90Oy8mYW1wO2d0OyZhbXA7IzEzOyZhbXA7IzEwOyZhbXA7bHQ7Y2hpbGRDb250YWluZXJFbnRyeSBjaGlsZE1lbWVudG89JmFtcDtxdW90OyZhbXA7YW1wO2x0Oz94bWwgdmVyc2lvbj0mYW1wO2FtcDtxdW90OzEuMCZhbXA7YW1wO3F1b3Q7IGVuY29kaW5nPSZhbXA7YW1wO3F1b3Q7VVRGLTgmYW1wO2FtcDtxdW90OyBzdGFuZGFsb25lPSZhbXA7YW1wO3F1b3Q7bm8mYW1wO2FtcDtxdW90Oz8mYW1wO2FtcDtndDsmYW1wO2FtcDsjMTM7JmFtcDthbXA7IzEwOyZhbXA7YW1wO2x0O2xpYnJhcnlTb3VyY2UvJmFtcDthbXA7Z3Q7JmFtcDthbXA7IzEzOyZhbXA7YW1wOyMxMDsmYW1wO3F1b3Q7IGNoaWxkVHlwZT0mYW1wO3F1b3Q7Y29tLnRpLmNjc3R1ZGlvLmRlYnVnLmNvbnRhaW5lclR5cGUubGlicmFyeS5zb3VyY2UmYW1wO3F1b3Q7LyZhbXA7Z3Q7JmFtcDsjMTM7JmFtcDsjMTA7JmFtcDtsdDsvY3B1U3BlY2lmaWNDb250YWluZXImYW1wO2d0OyZhbXA7IzEzOyZhbXA7IzEwOyZxdW90OyB0eXBlSWQ9JnF1b3Q7Y29tLnRpLmNjc3R1ZGlvLmRlYnVnLmNvbnRhaW5lclR5cGUuY3B1LnNwZWNpZmljJnF1b3Q7LyZndDsmIzEzOyYjMTA7Jmx0Oy9zb3VyY2VDb250YWluZXJzJmd0OyYjMTM7JiMxMDsmbHQ7L3NvdXJjZUxvb2t1cERpcmVjdG9yJmd0OyYjMTM7JiMxMDsiLz4NCis8c3RyaW5nQXR0cmlidXRlIGtleT0ib3JnLmVjbGlwc2UuZHNmLmxhdW5jaC5NRU1PUllfQkxPQ0tTIiB2YWx1ZT0iJmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVvdDsgZW5jb2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDsgc3RhbmRhbG9uZT0mcXVvdDtubyZxdW90Oz8mZ3Q7JiMxMzsmIzEwOyZsdDttZW1vcnlCbG9ja0V4cHJlc3Npb25MaXN0IGNvbnRleHQ9JnF1b3Q7cmVzZXJ2ZWQtZm9yLWZ1dHVyZS11c2UmcXVvdDsvJmd0OyYjMTM7JiMxMDsiLz4NCiA8L2xhdW5jaENvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLnByb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ucHJvamVjdAppbmRleCBlNDQ5OTMyLi4xNjdhNDkyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ucHJvamVjdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ucHJvamVjdApAQCAtNjEsNyArNjEsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTQ2PC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkwOTwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC03MCw3ICs3MCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxNDY8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTEzPC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTc5LDcgKzc5LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE0NjwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5MTY8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtODgsNyArODgsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTQ2PC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkxOTwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC05Nyw3ICs5Nyw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxNjI8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTIyPC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTEwNiw3ICsxMDYsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTc3PC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkyNjwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMTUsNyArMTE1LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE3NzwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5Mjk8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTI0LDcgKzEyNCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxNzc8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTMyPC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTEzMyw3ICsxMzMsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTkzPC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkzNjwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xNDIsNyArMTQyLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE5MzwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5Mzk8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTUxLDYgKzE1MSwyNCBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTQzPC9pZD4NCisJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCisJCQk8dHlwZT41PC90eXBlPg0KKwkJCTxtYXRjaGVyPg0KKwkJCQk8aWQ+b3JnLmVjbGlwc2UudWkuaWRlLm11bHRpRmlsdGVyPC9pZD4NCisJCQkJPGFyZ3VtZW50cz4xLjAtbmFtZS1tYXRjaGVzLWZhbHNlLWZhbHNlLVN0cmVhbUJ1ZmZlckRlbW8uYzwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCisJCQk8aWQ+MTUwNzIyMDY3MDk0NjwvaWQ+DQorCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQorCQkJPHR5cGU+NTwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS1NZXNzYWdlQnVmZmVyRGVtby5jPC9hcmd1bWVudHM+DQorCQkJPC9tYXRjaGVyPg0KKwkJPC9maWx0ZXI+DQorCQk8ZmlsdGVyPg0KIAkJCTxpZD4xNDg2NzYxODUxODY4PC9pZD4NCiAJCQk8bmFtZT5GcmVlUlRPU19Tb3VyY2UvcG9ydGFibGUvQ0NTPC9uYW1lPg0KIAkJCTx0eXBlPjk8L3R5cGU+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggY2RmZGM4Mi4uNWEzNjAyOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpAQCAtMjI1LDUgKzE4NCwxMCBAQAogI2RlZmluZSBwb3J0Q09ORklHVVJFX1RJTUVSX0ZPUl9SVU5fVElNRV9TVEFUUygpDQogI2RlZmluZSBwb3J0R0VUX1JVTl9USU1FX0NPVU5URVJfVkFMVUUoKQkJMA0KIA0KKy8qIFRoZSB0ZXN0IHRoYXQgY2hlY2tzIHRoZSB0cmlnZ2VyIGxldmVsIG9uIHN0cmVhbSBidWZmZXJzIHJlcXVpcmVzIGFuDQorYWxsb3dhYmxlIG1hcmdpbiBvZiBlcnJvciBvbiBzbG93ZXIgcHJvY2Vzc29ycyAoc2xvd2VyIHRoYW4gdGhlIFdpbjMyDQorbWFjaGluZSBvbiB3aGljaCB0aGUgdGVzdCBpcyBkZXZlbG9wZWQpLiAqLw0KKyNkZWZpbmUgY29uZmlnU1RSRUFNX0JVRkZFUl9UUklHR0VSX0xFVkVMX1RFU1RfTUFSR0lOICAgNA0KKw0KICNlbmRpZiAvKiBGUkVFUlRPU19DT05GSUdfSCAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9SZWdUZXN0LmFzbSBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9SZWdUZXN0LmFzbQppbmRleCBjN2Y5NzNjLi42YTgzNTQwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vUmVnVGVzdC5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnVsbF9EZW1vL1JlZ1Rlc3QuYXNtCkBAIC0xLDcxICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi07ICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLTsgICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotOyAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLTsgICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLTsgICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi07ICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotOyAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi07ICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi07ICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLTsgICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotOyAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLTsgICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLTsgICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotOyAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogCS50aHVtYg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBkM2QwNjk4Li42YzA4Yjg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpAQCAtMTMyLDYgKzkxLDggQEAKICNpbmNsdWRlICJUYXNrTm90aWZ5LmgiDQogI2luY2x1ZGUgIkludFNlbVRlc3QuaCINCiAjaW5jbHVkZSAiU3RhdGljQWxsb2NhdGlvbi5oIg0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJEZW1vLmgiDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJEZW1vLmgiDQogDQogLyogUHJpb3JpdGllcyBmb3IgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MuICovDQogI2RlZmluZSBtYWluU0VNX1RFU1RfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMVVMICkNCkBAIC0yMzAsNiArMTkxLDggQEAKIAl2U3RhcnRFdmVudEdyb3VwVGFza3MoKTsNCiAJdlN0YXJ0VGFza05vdGlmeVRhc2soKTsNCiAJdlN0YXJ0SW50ZXJydXB0U2VtYXBob3JlVGFza3MoKTsNCisJdlN0YXJ0U3RyZWFtQnVmZmVyVGFza3MoKTsNCisJdlN0YXJ0TWVzc2FnZUJ1ZmZlclRhc2tzKCk7DQogDQogCS8qIENyZWF0ZSB0aGUgcmVnaXN0ZXIgY2hlY2sgdGFza3MsIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mIHRoaXMJZmlsZSAqLw0KIAl4VGFza0NyZWF0ZSggcHJ2UmVnVGVzdFRhc2tFbnRyeTEsICJSZWcxIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBtYWluUkVHX1RFU1RfVEFTS18xX1BBUkFNRVRFUiwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KQEAgLTMyNCwxNyArMjg3LDI3IEBACiAJCQl1bEVycm9yRm91bmQgfD0gMVVMIDw8IDEzVUw7DQogCQl9DQogDQorCQlpZiggeEFyZVN0cmVhbUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCXsNCisJCQl1bEVycm9yRm91bmQgfD0gMVVMIDw8IDE0VUw7DQorCQl9DQorDQorCQlpZiggeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxNVVMOw0KKwkJfQ0KKw0KIAkJLyogQ2hlY2sgdGhhdCB0aGUgcmVnaXN0ZXIgdGVzdCAxIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCiAJCWlmKCB1bExhc3RSZWdUZXN0MVZhbHVlID09IHVsUmVnVGVzdDFMb29wQ291bnRlciApDQogCQl7DQotCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxNVVMOw0KKwkJCXVsRXJyb3JGb3VuZCB8PSAxVUwgPDwgMTZVTDsNCiAJCX0NCiAJCXVsTGFzdFJlZ1Rlc3QxVmFsdWUgPSB1bFJlZ1Rlc3QxTG9vcENvdW50ZXI7DQogDQogCQkvKiBDaGVjayB0aGF0IHRoZSByZWdpc3RlciB0ZXN0IDIgdGFzayBpcyBzdGlsbCBydW5uaW5nLiAqLw0KIAkJaWYoIHVsTGFzdFJlZ1Rlc3QyVmFsdWUgPT0gdWxSZWdUZXN0Mkxvb3BDb3VudGVyICkNCiAJCXsNCi0JCQl1bEVycm9yRm91bmQgfD0gMVVMIDw8IDE2VUw7DQorCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxN1VMOw0KIAkJfQ0KIAkJdWxMYXN0UmVnVGVzdDJWYWx1ZSA9IHVsUmVnVGVzdDJMb29wQ291bnRlcjsNCiANCkBAIC00MTMsNiArMzg2LDEwIEBACiANCiAJCS8qIFVzZSBtdXRleGVzIGZyb20gaW50ZXJydXB0cy4gKi8NCiAJCXZJbnRlcnJ1cHRTZW1hcGhvcmVQZXJpb2RpY1Rlc3QoKTsNCisNCisJCS8qIFdyaXRlcyB0byBzdHJlYW0gYnVmZmVyIGJ5dGUgYnkgYnl0ZSB0byB0ZXN0IHRoZSBzdHJlYW0gYnVmZmVyIHRyaWdnZXINCisJCWxldmVsIGZ1bmN0aW9uYWxpdHkuICovDQorCQl2UGVyaW9kaWNTdHJlYW1CdWZmZXJQcm9jZXNzaW5nKCk7DQogCX0NCiANCiAjZW5kaWYNCkBAIC00MjIsNCArMzk5LDMgQEAKIA0KIA0KIA0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL1NpbXBseV9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvU2ltcGx5X0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggZjE1MzcyMS4uNDYzZTY5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvU2ltcGx5X0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvU2ltcGx5X0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL21haW4uYwppbmRleCBjOTY5M2VmLi42Yjk5M2IwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvbWFpbi5jCkBAIC0xLDI4OCArMSwyNDkgQEAKLS8qCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLgotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQKLQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4KLQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uCi0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4KLQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PAotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PAotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PAotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PAotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwKLQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoKLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKgotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoKLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91Ci0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8KLQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5Ci0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5Ci0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4KLQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMKLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuCi0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLAotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLgotCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuCi0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gKLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MKLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4KLQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkKLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuCi0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyEKLSovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwKLSAqIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlCi0gKiBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gc2V0dGluZyAoZGVmaW5lZCBpbiBGcmVlUlRPU0NvbmZpZy5oKSBpcwotICogdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvLiAgVGhlIHNpbXBseSBibGlua3kgZGVtbyBpcyBpbXBsZW1lbnRlZCBhbmQKLSAqIGRlc2NyaWJlZCBpbiBtYWluX2JsaW5reS5jLiAgVGhlIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uCi0gKiBpcyBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fZnVsbC5jLgotICoKLSAqIFRoZSBibGlua3kgZGVtbyB1c2VzIEZyZWVSVE9TJ3MgdGlja2xlc3MgaWRsZSBtb2RlIHRvIHJlZHVjZSBwb3dlcgotICogY29uc3VtcHRpb24uICBTZWUgdGhlIG5vdGVzIG9uIHRoZSB3ZWIgcGFnZSBiZWxvdyByZWdhcmRpbmcgdGhlIGRpZmZlcmVuY2UKLSAqIGluIHBvd2VyIHNhdmluZyB0aGF0IGNhbiBiZSBhY2hpZXZlZCBiZXR3ZWVuIHVzaW5nIHRoZSBnZW5lcmljIHRpY2tsZXNzCi0gKiBpbXBsZW1lbnRhdGlvbiAoYXMgdXNlZCBieSB0aGUgYmxpbmt5IGRlbW8pIGFuZCBhIHRpY2tsZXNzIGltcGxlbWVudGF0aW9uCi0gKiB0aGF0IGlzIHRhaWxvcmVkIHNwZWNpZmljYWxseSB0byB0aGUgQ0MzMjIwLgotICoKLSAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBjb2RlIHRoYXQgaXMgbm90IGRlbW8gc3BlY2lmaWMuCi0gKgotICogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1RJX0NDMzIyMF9TaW1wbGVMaW5rX0ZyZWVSVE9TX0RlbW8uaHRtbCBmb3IKLSAqIGluc3RydWN0aW9ucy4KLSAqCi0gKi8KLQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQotLyogVEkgaW5jbHVkZXMuICovCi0jaW5jbHVkZSA8dGkvZHJpdmVycy9HUElPLmg+Ci0jaW5jbHVkZSA8dGkvYm9hcmRzL0NDMzIyMFNGX0xBVU5DSFhML0JvYXJkLmg+Ci0KLS8qIEtlcm5lbCBpbmNsdWRlcy4gKi8KLSNpbmNsdWRlICJGcmVlUlRPUy5oIgotI2luY2x1ZGUgInRhc2suaCIKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qCi0gKiBTZXQgdXAgdGhlIGhhcmR3YXJlIHJlYWR5IHRvIHJ1biB0aGlzIGRlbW8uCi0gKi8KLXN0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKTsKLQotLyoKLSAqIG1haW5fYmxpbmt5KCkgaXMgdXNlZCB3aGVuIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyBpcyBzZXQgdG8gMS4KLSAqIG1haW5fZnVsbCgpIGlzIHVzZWQgd2hlbiBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gaXMgc2V0IHRvIDAuCi0gKi8KLWV4dGVybiB2b2lkIG1haW5fYmxpbmt5KCB2b2lkICk7Ci1leHRlcm4gdm9pZCBtYWluX2Z1bGwoIHZvaWQgKTsKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLWludCBtYWluKCB2b2lkICkKLXsKLQkvKiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvVElfQ0MzMjIwX1NpbXBsZUxpbmtfRnJlZVJUT1NfRGVtby5odG1sIGZvcgotICAgIGluc3RydWN0aW9ucy4gKi8KLQotCi0JLyogUHJlcGFyZSB0aGUgaGFyZHdhcmUgdG8gcnVuIHRoaXMgZGVtby4gKi8KLQlwcnZTZXR1cEhhcmR3YXJlKCk7Ci0KLQkvKiBUaGUgY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PIHNldHRpbmcgaXMgZGVzY3JpYmVkIGF0IHRoZSB0b3AKLQlvZiB0aGlzIGZpbGUuICovCi0JI2lmKCBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gPT0gMSApCi0JewotCQltYWluX2JsaW5reSgpOwotCX0KLQkjZWxzZQotCXsKLQkJbWFpbl9mdWxsKCk7Ci0JfQotCSNlbmRpZgotCi0JcmV0dXJuIDA7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotc3RhdGljIHZvaWQgcHJ2U2V0dXBIYXJkd2FyZSggdm9pZCApCi17Ci0gICAgLyogQ2FsbCBib2FyZCBpbml0IGZ1bmN0aW9ucyAqLwotICAgIEJvYXJkX2luaXRHZW5lcmFsKCk7Ci0gICAgQm9hcmRfaW5pdEdQSU8oKTsKLSAgICBHUElPX3dyaXRlKCBCb2FyZF9MRUQwLCBCb2FyZF9HUElPX0xFRF9PRkYgKTsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi12b2lkIHZNYWluVG9nZ2xlTEVEKCB2b2lkICkKLXsKLXN0YXRpYyB1aW50MzJfdCB1bExFRFN0YXRlID0gQm9hcmRfR1BJT19MRURfT0ZGOwotCi0gICAgdWxMRURTdGF0ZSA9ICF1bExFRFN0YXRlOwotICAgIEdQSU9fd3JpdGUoIEJvYXJkX0xFRDAsIHVsTEVEU3RhdGUgKTsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKQotewotCS8qIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmCi0JY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgaXMgYSBob29rCi0JZnVuY3Rpb24gdGhhdCB3aWxsIGdldCBjYWxsZWQgaWYgYSBjYWxsIHRvIHB2UG9ydE1hbGxvYygpIGZhaWxzLgotCXB2UG9ydE1hbGxvYygpIGlzIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBrZXJuZWwgd2hlbmV2ZXIgYSB0YXNrLCBxdWV1ZSwKLQl0aW1lciBvciBzZW1hcGhvcmUgaXMgY3JlYXRlZC4gIEl0IGlzIGFsc28gY2FsbGVkIGJ5IHZhcmlvdXMgcGFydHMgb2YgdGhlCi0JZGVtbyBhcHBsaWNhdGlvbi4gIElmIGhlYXBfMS5jIG9yIGhlYXBfMi5jIGFyZSB1c2VkLCB0aGVuIHRoZSBzaXplIG9mIHRoZQotCWhlYXAgYXZhaWxhYmxlIHRvIHB2UG9ydE1hbGxvYygpIGlzIGRlZmluZWQgYnkgY29uZmlnVE9UQUxfSEVBUF9TSVpFIGluCi0JRnJlZVJUT1NDb25maWcuaCwgYW5kIHRoZSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpIEFQSSBmdW5jdGlvbiBjYW4gYmUgdXNlZAotCXRvIHF1ZXJ5IHRoZSBzaXplIG9mIGZyZWUgaGVhcCBzcGFjZSB0aGF0IHJlbWFpbnMgKGFsdGhvdWdoIGl0IGRvZXMgbm90Ci0JcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHJlbWFpbmluZyBoZWFwIG1pZ2h0IGJlIGZyYWdtZW50ZWQpLiAqLwotCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsKLQlmb3IoIDs7ICk7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotdm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApCi17Ci0JLyogdkFwcGxpY2F0aW9uSWRsZUhvb2soKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGNvbmZpZ1VTRV9JRExFX0hPT0sgaXMgc2V0Ci0JdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGlkbGUKLQl0YXNrLiAgSXQgaXMgZXNzZW50aWFsIHRoYXQgY29kZSBhZGRlZCB0byB0aGlzIGhvb2sgZnVuY3Rpb24gbmV2ZXIgYXR0ZW1wdHMKLQl0byBibG9jayBpbiBhbnkgd2F5IChmb3IgZXhhbXBsZSwgY2FsbCB4UXVldWVSZWNlaXZlKCkgd2l0aCBhIGJsb2NrIHRpbWUKLQlzcGVjaWZpZWQsIG9yIGNhbGwgdlRhc2tEZWxheSgpKS4gIElmIHRoZSBhcHBsaWNhdGlvbiBtYWtlcyB1c2Ugb2YgdGhlCi0JdlRhc2tEZWxldGUoKSBBUEkgZnVuY3Rpb24gKGFzIHRoaXMgZGVtbyBhcHBsaWNhdGlvbiBkb2VzKSB0aGVuIGl0IGlzIGFsc28KLQlpbXBvcnRhbnQgdGhhdCB2QXBwbGljYXRpb25JZGxlSG9vaygpIGlzIHBlcm1pdHRlZCB0byByZXR1cm4gdG8gaXRzIGNhbGxpbmcKLQlmdW5jdGlvbiwgYmVjYXVzZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGlkbGUgdGFzayB0byBjbGVhbiB1cAotCW1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIGtlcm5lbCB0byBhbnkgdGFzayB0aGF0IGhhcyBzaW5jZSBiZWVuIGRlbGV0ZWQuICovCi19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotdm9pZCB2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggVGFza0hhbmRsZV90IHB4VGFzaywgY2hhciAqcGNUYXNrTmFtZSApCi17Ci0JKCB2b2lkICkgcGNUYXNrTmFtZTsKLQkoIHZvaWQgKSBweFRhc2s7Ci0KLQkvKiBSdW4gdGltZSBzdGFjayBvdmVyZmxvdyBjaGVja2luZyBpcyBwZXJmb3JtZWQgaWYKLQljb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgaXMgZGVmaW5lZCB0byAxIG9yIDIuICBUaGlzIGhvb2sKLQlmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYSBzdGFjayBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gKi8KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7Ci0JZm9yKCA7OyApOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLXZvaWQgKm1hbGxvYyggc2l6ZV90IHhTaXplICkKLXsKLQkvKiBUaGVyZSBzaG91bGQgbm90IGJlIGEgaGVhcCBkZWZpbmVkLCBzbyB0cmFwIGFueSBhdHRlbXB0cyB0byBjYWxsCi0JbWFsbG9jLiAqLwotCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsKLQlmb3IoIDs7ICk7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGlzIHNldCB0byAxLCBzbyB0aGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGFuCi1pbXBsZW1lbnRhdGlvbiBvZiB2QXBwbGljYXRpb25HZXRJZGxlVGFza01lbW9yeSgpIHRvIHByb3ZpZGUgdGhlIG1lbW9yeSB0aGF0IGlzCi11c2VkIGJ5IHRoZSBJZGxlIHRhc2suICovCi12b2lkIHZBcHBsaWNhdGlvbkdldElkbGVUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhJZGxlVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhJZGxlVGFza1N0YWNrQnVmZmVyLCB1aW50MzJfdCAqcHVsSWRsZVRhc2tTdGFja1NpemUgKQotewotLyogSWYgdGhlIGJ1ZmZlcnMgdG8gYmUgcHJvdmlkZWQgdG8gdGhlIElkbGUgdGFzayBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoaXMKLWZ1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uCi10aGUgc3RhY2sgYW5kIHNvIG5vdCBleGlzdHMgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBleGl0cy4gKi8KLXN0YXRpYyBTdGF0aWNUYXNrX3QgeElkbGVUYXNrVENCOwotc3RhdGljIFN0YWNrVHlwZV90IHV4SWRsZVRhc2tTdGFja1sgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIF07Ci0KLSAgICAvKiBQYXNzIG91dCBhIHBvaW50ZXIgdG8gdGhlIFN0YXRpY1Rhc2tfdCBzdHJ1Y3R1cmUgaW4gd2hpY2ggdGhlIElkbGUgdGFzaydzCi0gICAgc3RhdGUgd2lsbCBiZSBzdG9yZWQuICovCi0gICAgKnBweElkbGVUYXNrVENCQnVmZmVyID0gJnhJZGxlVGFza1RDQjsKLQotICAgIC8qIFBhc3Mgb3V0IHRoZSBhcnJheSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgSWRsZSB0YXNrJ3Mgc3RhY2suICovCi0gICAgKnBweElkbGVUYXNrU3RhY2tCdWZmZXIgPSB1eElkbGVUYXNrU3RhY2s7Ci0KLSAgICAvKiBQYXNzIG91dCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSAqcHB4SWRsZVRhc2tTdGFja0J1ZmZlci4KLSAgICBOb3RlIHRoYXQsIGFzIHRoZSBhcnJheSBpcyBuZWNlc3NhcmlseSBvZiB0eXBlIFN0YWNrVHlwZV90LAotICAgIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSBpcyBzcGVjaWZpZWQgaW4gd29yZHMsIG5vdCBieXRlcy4gKi8KLSAgICAqcHVsSWRsZVRhc2tTdGFja1NpemUgPSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkU7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGFuZCBjb25maWdVU0VfVElNRVJTIGFyZSBib3RoIHNldCB0byAxLCBzbyB0aGUKLWFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB2QXBwbGljYXRpb25HZXRUaW1lclRhc2tNZW1vcnkoKQotdG8gcHJvdmlkZSB0aGUgbWVtb3J5IHRoYXQgaXMgdXNlZCBieSB0aGUgVGltZXIgc2VydmljZSB0YXNrLiAqLwotdm9pZCB2QXBwbGljYXRpb25HZXRUaW1lclRhc2tNZW1vcnkoIFN0YXRpY1Rhc2tfdCAqKnBweFRpbWVyVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhUaW1lclRhc2tTdGFja0J1ZmZlciwgdWludDMyX3QgKnB1bFRpbWVyVGFza1N0YWNrU2l6ZSApCi17Ci0vKiBJZiB0aGUgYnVmZmVycyB0byBiZSBwcm92aWRlZCB0byB0aGUgVGltZXIgdGFzayBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoaXMKLWZ1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uCi10aGUgc3RhY2sgYW5kIHNvIG5vdCBleGlzdHMgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBleGl0cy4gKi8KLXN0YXRpYyBTdGF0aWNUYXNrX3QgeFRpbWVyVGFza1RDQjsKLXN0YXRpYyBTdGFja1R5cGVfdCB1eFRpbWVyVGFza1N0YWNrWyBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIIF07Ci0KLSAgICAvKiBQYXNzIG91dCBhIHBvaW50ZXIgdG8gdGhlIFN0YXRpY1Rhc2tfdCBzdHJ1Y3R1cmUgaW4gd2hpY2ggdGhlIFRpbWVyCi0gICAgdGFzaydzIHN0YXRlIHdpbGwgYmUgc3RvcmVkLiAqLwotICAgICpwcHhUaW1lclRhc2tUQ0JCdWZmZXIgPSAmeFRpbWVyVGFza1RDQjsKLQotICAgIC8qIFBhc3Mgb3V0IHRoZSBhcnJheSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgVGltZXIgdGFzaydzIHN0YWNrLiAqLwotICAgICpwcHhUaW1lclRhc2tTdGFja0J1ZmZlciA9IHV4VGltZXJUYXNrU3RhY2s7Ci0KLSAgICAvKiBQYXNzIG91dCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSAqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIuCi0gICAgTm90ZSB0aGF0LCBhcyB0aGUgYXJyYXkgaXMgbmVjZXNzYXJpbHkgb2YgdHlwZSBTdGFja1R5cGVfdCwKLSAgICBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovCi0gICAgKnB1bFRpbWVyVGFza1N0YWNrU2l6ZSA9IGNvbmZpZ1RJTUVSX1RBU0tfU1RBQ0tfREVQVEg7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogQ2F0Y2ggYXNzZXJ0cyBzbyB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgb2YgdGhlIGFzc2VydCBjYW4gYmUgdmlld2VkLiAqLwotdm9pZCB2TWFpbkFzc2VydENhbGxlZCggY29uc3QgY2hhciAqcGNGaWxlTmFtZSwgdWludDMyX3QgdWxMaW5lTnVtYmVyICkKLXsKLSAgICB0YXNrRU5URVJfQ1JJVElDQUwoKTsKLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIC8qIFVzZSB0aGUgdmFyaWFibGVzIHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MgYW5kIGluIGFuIGF0dGVtcHQgdG8KLSAgICAgICAgZW5zdXJlIHRoZXkgY2FuIGJlIHZpZXdlZCBpbiB0aGUgZGVidWdnZXIuICBJZiB0aGUgdmFyaWFibGVzIGdldAotICAgICAgICBvcHRpbWlzZWQgYXdheSB0aGVuIHNldCBjb3B5IHRoZWlyIHZhbHVlcyB0byBmaWxlIHNjb3BlIG9yIGdsb2JhbHMgdGhlbgotICAgICAgICB2aWV3IHRoZSB2YXJpYWJsZXMgdGhleSBhcmUgY29waWVkIHRvLiAqLwotICAgICAgICAoIHZvaWQgKSBwY0ZpbGVOYW1lOwotICAgICAgICAoIHZvaWQgKSB1bExpbmVOdW1iZXI7Ci0gICAgfQotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIFRvIGVuYWJsZSB0aGUgbGlicmFyaWVzIHRvIGJ1aWxkLiAqLwotdm9pZCBQb3dlckNDMzJYWF9lbnRlckxQRFMoIHZvaWQgKmRyaXZlcmxpYkZ1bmMgKQotewotICAgICggdm9pZCApIGRyaXZlcmxpYkZ1bmM7Ci0KLSAgICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBzbyB0cmFwIGFueSBjYWxscyB0byBpdCBieSBoYWx0aW5nCi0gICAgaGVyZS4gKi8KLSAgICBjb25maWdBU1NFUlQoIGRyaXZlcmxpYkZ1bmMgPT0gTlVMTCAgKTsKLX0KKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCisgKiBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KKyAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyBzZXR0aW5nIChkZWZpbmVkIGluIEZyZWVSVE9TQ29uZmlnLmgpIGlzDQorICogdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvLiAgVGhlIHNpbXBseSBibGlua3kgZGVtbyBpcyBpbXBsZW1lbnRlZCBhbmQNCisgKiBkZXNjcmliZWQgaW4gbWFpbl9ibGlua3kuYy4gIFRoZSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbg0KKyAqIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4gbWFpbl9mdWxsLmMuDQorICoNCisgKiBUaGUgYmxpbmt5IGRlbW8gdXNlcyBGcmVlUlRPUydzIHRpY2tsZXNzIGlkbGUgbW9kZSB0byByZWR1Y2UgcG93ZXINCisgKiBjb25zdW1wdGlvbi4gIFNlZSB0aGUgbm90ZXMgb24gdGhlIHdlYiBwYWdlIGJlbG93IHJlZ2FyZGluZyB0aGUgZGlmZmVyZW5jZQ0KKyAqIGluIHBvd2VyIHNhdmluZyB0aGF0IGNhbiBiZSBhY2hpZXZlZCBiZXR3ZWVuIHVzaW5nIHRoZSBnZW5lcmljIHRpY2tsZXNzDQorICogaW1wbGVtZW50YXRpb24gKGFzIHVzZWQgYnkgdGhlIGJsaW5reSBkZW1vKSBhbmQgYSB0aWNrbGVzcyBpbXBsZW1lbnRhdGlvbg0KKyAqIHRoYXQgaXMgdGFpbG9yZWQgc3BlY2lmaWNhbGx5IHRvIHRoZSBDQzMyMjAuDQorICoNCisgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgY29kZSB0aGF0IGlzIG5vdCBkZW1vIHNwZWNpZmljLg0KKyAqDQorICogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1RJX0NDMzIyMF9TaW1wbGVMaW5rX0ZyZWVSVE9TX0RlbW8uaHRtbCBmb3INCisgKiBpbnN0cnVjdGlvbnMuDQorICoNCisgKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisNCisvKiBUSSBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8dGkvZHJpdmVycy9HUElPLmg+DQorI2luY2x1ZGUgPHRpL2JvYXJkcy9DQzMyMjBTRl9MQVVOQ0hYTC9Cb2FyZC5oPg0KKw0KKy8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiRnJlZVJUT1MuaCINCisjaW5jbHVkZSAidGFzay5oIg0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogU2V0IHVwIHRoZSBoYXJkd2FyZSByZWFkeSB0byBydW4gdGhpcyBkZW1vLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKTsNCisNCisvKg0KKyAqIG1haW5fYmxpbmt5KCkgaXMgdXNlZCB3aGVuIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyBpcyBzZXQgdG8gMS4NCisgKiBtYWluX2Z1bGwoKSBpcyB1c2VkIHdoZW4gY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PIGlzIHNldCB0byAwLg0KKyAqLw0KK2V4dGVybiB2b2lkIG1haW5fYmxpbmt5KCB2b2lkICk7DQorZXh0ZXJuIHZvaWQgbWFpbl9mdWxsKCB2b2lkICk7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQoraW50IG1haW4oIHZvaWQgKQ0KK3sNCisJLyogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1RJX0NDMzIyMF9TaW1wbGVMaW5rX0ZyZWVSVE9TX0RlbW8uaHRtbCBmb3INCisgICAgaW5zdHJ1Y3Rpb25zLiAqLw0KKw0KKw0KKwkvKiBQcmVwYXJlIHRoZSBoYXJkd2FyZSB0byBydW4gdGhpcyBkZW1vLiAqLw0KKwlwcnZTZXR1cEhhcmR3YXJlKCk7DQorDQorCS8qIFRoZSBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gc2V0dGluZyBpcyBkZXNjcmliZWQgYXQgdGhlIHRvcA0KKwlvZiB0aGlzIGZpbGUuICovDQorCSNpZiggY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PID09IDEgKQ0KKwl7DQorCQltYWluX2JsaW5reSgpOw0KKwl9DQorCSNlbHNlDQorCXsNCisJCW1haW5fZnVsbCgpOw0KKwl9DQorCSNlbmRpZg0KKw0KKwlyZXR1cm4gMDsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2U2V0dXBIYXJkd2FyZSggdm9pZCApDQorew0KKyAgICAvKiBDYWxsIGJvYXJkIGluaXQgZnVuY3Rpb25zICovDQorICAgIEJvYXJkX2luaXRHZW5lcmFsKCk7DQorICAgIEJvYXJkX2luaXRHUElPKCk7DQorICAgIEdQSU9fd3JpdGUoIEJvYXJkX0xFRDAsIEJvYXJkX0dQSU9fTEVEX09GRiApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZNYWluVG9nZ2xlTEVEKCB2b2lkICkNCit7DQorc3RhdGljIHVpbnQzMl90IHVsTEVEU3RhdGUgPSBCb2FyZF9HUElPX0xFRF9PRkY7DQorDQorICAgIHVsTEVEU3RhdGUgPSAhdWxMRURTdGF0ZTsNCisgICAgR1BJT193cml0ZSggQm9hcmRfTEVEMCwgdWxMRURTdGF0ZSApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKQ0KK3sNCisJLyogdkFwcGxpY2F0aW9uTWFsbG9jRmFpbGVkSG9vaygpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYNCisJY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgaXMgYSBob29rDQorCWZ1bmN0aW9uIHRoYXQgd2lsbCBnZXQgY2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscy4NCisJcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGtlcm5lbCB3aGVuZXZlciBhIHRhc2ssIHF1ZXVlLA0KKwl0aW1lciBvciBzZW1hcGhvcmUgaXMgY3JlYXRlZC4gIEl0IGlzIGFsc28gY2FsbGVkIGJ5IHZhcmlvdXMgcGFydHMgb2YgdGhlDQorCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYyBvciBoZWFwXzIuYyBhcmUgdXNlZCwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUNCisJaGVhcCBhdmFpbGFibGUgdG8gcHZQb3J0TWFsbG9jKCkgaXMgZGVmaW5lZCBieSBjb25maWdUT1RBTF9IRUFQX1NJWkUgaW4NCisJRnJlZVJUT1NDb25maWcuaCwgYW5kIHRoZSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpIEFQSSBmdW5jdGlvbiBjYW4gYmUgdXNlZA0KKwl0byBxdWVyeSB0aGUgc2l6ZSBvZiBmcmVlIGhlYXAgc3BhY2UgdGhhdCByZW1haW5zIChhbHRob3VnaCBpdCBkb2VzIG5vdA0KKwlwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgcmVtYWluaW5nIGhlYXAgbWlnaHQgYmUgZnJhZ21lbnRlZCkuICovDQorCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsNCisJZm9yKCA7OyApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICkNCit7DQorCS8qIHZBcHBsaWNhdGlvbklkbGVIb29rKCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBjb25maWdVU0VfSURMRV9IT09LIGlzIHNldA0KKwl0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBJdCB3aWxsIGJlIGNhbGxlZCBvbiBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgaWRsZQ0KKwl0YXNrLiAgSXQgaXMgZXNzZW50aWFsIHRoYXQgY29kZSBhZGRlZCB0byB0aGlzIGhvb2sgZnVuY3Rpb24gbmV2ZXIgYXR0ZW1wdHMNCisJdG8gYmxvY2sgaW4gYW55IHdheSAoZm9yIGV4YW1wbGUsIGNhbGwgeFF1ZXVlUmVjZWl2ZSgpIHdpdGggYSBibG9jayB0aW1lDQorCXNwZWNpZmllZCwgb3IgY2FsbCB2VGFza0RlbGF5KCkpLiAgSWYgdGhlIGFwcGxpY2F0aW9uIG1ha2VzIHVzZSBvZiB0aGUNCisJdlRhc2tEZWxldGUoKSBBUEkgZnVuY3Rpb24gKGFzIHRoaXMgZGVtbyBhcHBsaWNhdGlvbiBkb2VzKSB0aGVuIGl0IGlzIGFsc28NCisJaW1wb3J0YW50IHRoYXQgdkFwcGxpY2F0aW9uSWRsZUhvb2soKSBpcyBwZXJtaXR0ZWQgdG8gcmV0dXJuIHRvIGl0cyBjYWxsaW5nDQorCWZ1bmN0aW9uLCBiZWNhdXNlIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaWRsZSB0YXNrIHRvIGNsZWFuIHVwDQorCW1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIGtlcm5lbCB0byBhbnkgdGFzayB0aGF0IGhhcyBzaW5jZSBiZWVuIGRlbGV0ZWQuICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soIFRhc2tIYW5kbGVfdCBweFRhc2ssIGNoYXIgKnBjVGFza05hbWUgKQ0KK3sNCisJKCB2b2lkICkgcGNUYXNrTmFtZTsNCisJKCB2b2lkICkgcHhUYXNrOw0KKw0KKwkvKiBSdW4gdGltZSBzdGFjayBvdmVyZmxvdyBjaGVja2luZyBpcyBwZXJmb3JtZWQgaWYNCisJY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XIGlzIGRlZmluZWQgdG8gMSBvciAyLiAgVGhpcyBob29rDQorCWZ1bmN0aW9uIGlzIGNhbGxlZCBpZiBhIHN0YWNrIG92ZXJmbG93IGlzIGRldGVjdGVkLiAqLw0KKwl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQorCWZvciggOzsgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCAqbWFsbG9jKCBzaXplX3QgeFNpemUgKQ0KK3sNCisJLyogVGhlcmUgc2hvdWxkIG5vdCBiZSBhIGhlYXAgZGVmaW5lZCwgc28gdHJhcCBhbnkgYXR0ZW1wdHMgdG8gY2FsbA0KKwltYWxsb2MuICovDQorCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsNCisJZm9yKCA7OyApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBjb25maWdVU0VfU1RBVElDX0FMTE9DQVRJT04gaXMgc2V0IHRvIDEsIHNvIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYW4NCitpbXBsZW1lbnRhdGlvbiBvZiB2QXBwbGljYXRpb25HZXRJZGxlVGFza01lbW9yeSgpIHRvIHByb3ZpZGUgdGhlIG1lbW9yeSB0aGF0IGlzDQordXNlZCBieSB0aGUgSWRsZSB0YXNrLiAqLw0KK3ZvaWQgdkFwcGxpY2F0aW9uR2V0SWRsZVRhc2tNZW1vcnkoIFN0YXRpY1Rhc2tfdCAqKnBweElkbGVUYXNrVENCQnVmZmVyLCBTdGFja1R5cGVfdCAqKnBweElkbGVUYXNrU3RhY2tCdWZmZXIsIHVpbnQzMl90ICpwdWxJZGxlVGFza1N0YWNrU2l6ZSApDQorew0KKy8qIElmIHRoZSBidWZmZXJzIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBJZGxlIHRhc2sgYXJlIGRlY2xhcmVkIGluc2lkZSB0aGlzDQorZnVuY3Rpb24gdGhlbiB0aGV5IG11c3QgYmUgZGVjbGFyZWQgc3RhdGljIC0gb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGxvY2F0ZWQgb24NCit0aGUgc3RhY2sgYW5kIHNvIG5vdCBleGlzdHMgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBleGl0cy4gKi8NCitzdGF0aWMgU3RhdGljVGFza190IHhJZGxlVGFza1RDQjsNCitzdGF0aWMgU3RhY2tUeXBlX3QgdXhJZGxlVGFza1N0YWNrWyBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgXTsNCisNCisgICAgLyogUGFzcyBvdXQgYSBwb2ludGVyIHRvIHRoZSBTdGF0aWNUYXNrX3Qgc3RydWN0dXJlIGluIHdoaWNoIHRoZSBJZGxlIHRhc2sncw0KKyAgICBzdGF0ZSB3aWxsIGJlIHN0b3JlZC4gKi8NCisgICAgKnBweElkbGVUYXNrVENCQnVmZmVyID0gJnhJZGxlVGFza1RDQjsNCisNCisgICAgLyogUGFzcyBvdXQgdGhlIGFycmF5IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBJZGxlIHRhc2sncyBzdGFjay4gKi8NCisgICAgKnBweElkbGVUYXNrU3RhY2tCdWZmZXIgPSB1eElkbGVUYXNrU3RhY2s7DQorDQorICAgIC8qIFBhc3Mgb3V0IHRoZSBzaXplIG9mIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5ICpwcHhJZGxlVGFza1N0YWNrQnVmZmVyLg0KKyAgICBOb3RlIHRoYXQsIGFzIHRoZSBhcnJheSBpcyBuZWNlc3NhcmlseSBvZiB0eXBlIFN0YWNrVHlwZV90LA0KKyAgICBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovDQorICAgICpwdWxJZGxlVGFza1N0YWNrU2l6ZSA9IGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGFuZCBjb25maWdVU0VfVElNRVJTIGFyZSBib3RoIHNldCB0byAxLCBzbyB0aGUNCithcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCkNCit0byBwcm92aWRlIHRoZSBtZW1vcnkgdGhhdCBpcyB1c2VkIGJ5IHRoZSBUaW1lciBzZXJ2aWNlIHRhc2suICovDQordm9pZCB2QXBwbGljYXRpb25HZXRUaW1lclRhc2tNZW1vcnkoIFN0YXRpY1Rhc2tfdCAqKnBweFRpbWVyVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhUaW1lclRhc2tTdGFja0J1ZmZlciwgdWludDMyX3QgKnB1bFRpbWVyVGFza1N0YWNrU2l6ZSApDQorew0KKy8qIElmIHRoZSBidWZmZXJzIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBUaW1lciB0YXNrIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhpcw0KK2Z1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uDQordGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovDQorc3RhdGljIFN0YXRpY1Rhc2tfdCB4VGltZXJUYXNrVENCOw0KK3N0YXRpYyBTdGFja1R5cGVfdCB1eFRpbWVyVGFza1N0YWNrWyBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIIF07DQorDQorICAgIC8qIFBhc3Mgb3V0IGEgcG9pbnRlciB0byB0aGUgU3RhdGljVGFza190IHN0cnVjdHVyZSBpbiB3aGljaCB0aGUgVGltZXINCisgICAgdGFzaydzIHN0YXRlIHdpbGwgYmUgc3RvcmVkLiAqLw0KKyAgICAqcHB4VGltZXJUYXNrVENCQnVmZmVyID0gJnhUaW1lclRhc2tUQ0I7DQorDQorICAgIC8qIFBhc3Mgb3V0IHRoZSBhcnJheSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgVGltZXIgdGFzaydzIHN0YWNrLiAqLw0KKyAgICAqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIgPSB1eFRpbWVyVGFza1N0YWNrOw0KKw0KKyAgICAvKiBQYXNzIG91dCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSAqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIuDQorICAgIE5vdGUgdGhhdCwgYXMgdGhlIGFycmF5IGlzIG5lY2Vzc2FyaWx5IG9mIHR5cGUgU3RhY2tUeXBlX3QsDQorICAgIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSBpcyBzcGVjaWZpZWQgaW4gd29yZHMsIG5vdCBieXRlcy4gKi8NCisgICAgKnB1bFRpbWVyVGFza1N0YWNrU2l6ZSA9IGNvbmZpZ1RJTUVSX1RBU0tfU1RBQ0tfREVQVEg7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIENhdGNoIGFzc2VydHMgc28gdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIG9mIHRoZSBhc3NlcnQgY2FuIGJlIHZpZXdlZC4gKi8NCit2b2lkIHZNYWluQXNzZXJ0Q2FsbGVkKCBjb25zdCBjaGFyICpwY0ZpbGVOYW1lLCB1aW50MzJfdCB1bExpbmVOdW1iZXIgKQ0KK3sNCit2b2xhdGlsZSBCYXNlVHlwZV90IHhTZXRUb05vblplcm9Ub1N0ZXBPdXRPZkxvb3AgPSAwOw0KKw0KKyAgICB0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisgICAgd2hpbGUoIHhTZXRUb05vblplcm9Ub1N0ZXBPdXRPZkxvb3AgPT0gMCApDQorICAgIHsNCisgICAgICAgIC8qIFVzZSB0aGUgdmFyaWFibGVzIHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MgYW5kIGluIGFuIGF0dGVtcHQgdG8NCisgICAgICAgIGVuc3VyZSB0aGV5IGNhbiBiZSB2aWV3ZWQgaW4gdGhlIGRlYnVnZ2VyLiAgSWYgdGhlIHZhcmlhYmxlcyBnZXQNCisgICAgICAgIG9wdGltaXNlZCBhd2F5IHRoZW4gc2V0IGNvcHkgdGhlaXIgdmFsdWVzIHRvIGZpbGUgc2NvcGUgb3IgZ2xvYmFscyB0aGVuDQorICAgICAgICB2aWV3IHRoZSB2YXJpYWJsZXMgdGhleSBhcmUgY29waWVkIHRvLiAqLw0KKyAgICAgICAgKCB2b2lkICkgcGNGaWxlTmFtZTsNCisgICAgICAgICggdm9pZCApIHVsTGluZU51bWJlcjsNCisgICAgfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUbyBlbmFibGUgdGhlIGxpYnJhcmllcyB0byBidWlsZC4gKi8NCit2b2lkIFBvd2VyQ0MzMlhYX2VudGVyTFBEUyggdm9pZCAqZHJpdmVybGliRnVuYyApDQorew0KKyAgICAoIHZvaWQgKSBkcml2ZXJsaWJGdW5jOw0KKw0KKyAgICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBzbyB0cmFwIGFueSBjYWxscyB0byBpdCBieSBoYWx0aW5nDQorICAgIGhlcmUuICovDQorICAgIGNvbmZpZ0FTU0VSVCggZHJpdmVybGliRnVuYyA9PSBOVUxMICApOw0KK30NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL3ByaW50Zi1zdGRhcmcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL3ByaW50Zi1zdGRhcmcuYwpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBGcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL3ByaW50Zi1zdGRhcmcuYwpyZW5hbWUgdG8gRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvcHJpbnRmLXN0ZGFyZy5jCmluZGV4IDZhMDUxOTMuLmEyNWNhYjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vcHJpbnRmLXN0ZGFyZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL3ByaW50Zi1zdGRhcmcuYwpAQCAtMjQsMjYgKzI0LDM5IEBACiAJcmVwbGFjZSBvdXRieXRlKGMpIGJ5IHlvdXIgb3duIGZ1bmN0aW9uIGNhbGwuDQogDQogKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSA8c3RkYXJnLmg+DQotI2luY2x1ZGUgPHN0ZGludC5oPg0KIA0KLXN0YXRpYyB2b2lkIHByaW50Y2hhcihjaGFyICoqc3RyLCBpbnQgYykNCisjZGVmaW5lIHB1dGNoYXIoYykgYw0KKw0KKyNpbmNsdWRlIDxzdGRhcmcuaD4NCisNCitzdGF0aWMgaW50IHRpbnlfcHJpbnQoIGNoYXIgKipvdXQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzLCB1bnNpZ25lZCBpbnQgYnVmbGVuICk7DQorDQorc3RhdGljIHZvaWQgcHJpbnRjaGFyKGNoYXIgKipzdHIsIGludCBjLCBjaGFyICpidWZsaW1pdCkNCiB7DQorCS8vZXh0ZXJuIGludCBwdXRjaGFyKGludCBjKTsNCisNCiAJaWYgKHN0cikgew0KLQkJKipzdHIgPSAoY2hhciljOw0KLQkJKysoKnN0cik7DQorCQlpZiggYnVmbGltaXQgPT0gKCBjaGFyICogKSAwICkgew0KKwkJCS8qIExpbWl0IG9mIGJ1ZmZlciBub3Qga25vd24sIHdyaXRlIGNoYXJhdGVyIHRvIGJ1ZmZlci4gKi8NCisJCQkqKnN0ciA9IChjaGFyKWM7DQorCQkJKysoKnN0cik7DQorCQl9DQorCQllbHNlIGlmKCAoICggdW5zaWduZWQgbG9uZyApICpzdHIgKSA8ICggKCB1bnNpZ25lZCBsb25nICkgYnVmbGltaXQgKSApIHsNCisJCQkvKiBXaXRoaW5nIGtub3duIGxpbWl0IG9mIGJ1ZmZlciwgd3JpdGUgY2hhcmFjdGVyLiAqLw0KKwkJCSoqc3RyID0gKGNoYXIpYzsNCisJCQkrKygqc3RyKTsNCisJCX0NCiAJfQ0KIAllbHNlDQogCXsNCi0JCS8qIE91dHB1dCBjaGFyIGhlcmUuICovDQorCQkodm9pZClwdXRjaGFyKGMpOw0KIAl9DQogfQ0KIA0KICNkZWZpbmUgUEFEX1JJR0hUIDENCiAjZGVmaW5lIFBBRF9aRVJPIDINCiANCi1zdGF0aWMgaW50IHByaW50cyhjaGFyICoqb3V0LCBjb25zdCBjaGFyICpzdHJpbmcsIGludCB3aWR0aCwgaW50IHBhZCkNCitzdGF0aWMgaW50IHByaW50cyhjaGFyICoqb3V0LCBjb25zdCBjaGFyICpzdHJpbmcsIGludCB3aWR0aCwgaW50IHBhZCwgY2hhciAqYnVmbGltaXQpDQogew0KIAlyZWdpc3RlciBpbnQgcGMgPSAwLCBwYWRjaGFyID0gJyAnOw0KIA0KQEAgLTU3LDE2ICs3MCwxNiBAQAogCX0NCiAJaWYgKCEocGFkICYgUEFEX1JJR0hUKSkgew0KIAkJZm9yICggOyB3aWR0aCA+IDA7IC0td2lkdGgpIHsNCi0JCQlwcmludGNoYXIgKG91dCwgcGFkY2hhcik7DQorCQkJcHJpbnRjaGFyIChvdXQsIHBhZGNoYXIsIGJ1ZmxpbWl0KTsNCiAJCQkrK3BjOw0KIAkJfQ0KIAl9DQogCWZvciAoIDsgKnN0cmluZyA7ICsrc3RyaW5nKSB7DQotCQlwcmludGNoYXIgKG91dCwgKnN0cmluZyk7DQorCQlwcmludGNoYXIgKG91dCwgKnN0cmluZywgYnVmbGltaXQpOw0KIAkJKytwYzsNCiAJfQ0KIAlmb3IgKCA7IHdpZHRoID4gMDsgLS13aWR0aCkgew0KLQkJcHJpbnRjaGFyIChvdXQsIHBhZGNoYXIpOw0KKwkJcHJpbnRjaGFyIChvdXQsIHBhZGNoYXIsIGJ1ZmxpbWl0KTsNCiAJCSsrcGM7DQogCX0NCiANCkBAIC03Niw3ICs4OSw3IEBACiAvKiB0aGUgZm9sbG93aW5nIHNob3VsZCBiZSBlbm91Z2ggZm9yIDMyIGJpdCBpbnQgKi8NCiAjZGVmaW5lIFBSSU5UX0JVRl9MRU4gMTINCiANCi1zdGF0aWMgaW50IHByaW50aShjaGFyICoqb3V0LCBpbnQgaSwgaW50IGIsIGludCBzZywgaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgbGV0YmFzZSkNCitzdGF0aWMgaW50IHByaW50aShjaGFyICoqb3V0LCBpbnQgaSwgaW50IGIsIGludCBzZywgaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgbGV0YmFzZSwgY2hhciAqYnVmbGltaXQpDQogew0KIAljaGFyIHByaW50X2J1ZltQUklOVF9CVUZfTEVOXTsNCiAJcmVnaXN0ZXIgY2hhciAqczsNCkBAIC04Niw3ICs5OSw3IEBACiAJaWYgKGkgPT0gMCkgew0KIAkJcHJpbnRfYnVmWzBdID0gJzAnOw0KIAkJcHJpbnRfYnVmWzFdID0gJ1wwJzsNCi0JCXJldHVybiBwcmludHMgKG91dCwgcHJpbnRfYnVmLCB3aWR0aCwgcGFkKTsNCisJCXJldHVybiBwcmludHMgKG91dCwgcHJpbnRfYnVmLCB3aWR0aCwgcGFkLCBidWZsaW1pdCk7DQogCX0NCiANCiAJaWYgKHNnICYmIGIgPT0gMTAgJiYgaSA8IDApIHsNCkBAIC0xMDcsNyArMTIwLDcgQEAKIA0KIAlpZiAobmVnKSB7DQogCQlpZiggd2lkdGggJiYgKHBhZCAmIFBBRF9aRVJPKSApIHsNCi0JCQlwcmludGNoYXIgKG91dCwgJy0nKTsNCisJCQlwcmludGNoYXIgKG91dCwgJy0nLCBidWZsaW1pdCk7DQogCQkJKytwYzsNCiAJCQktLXdpZHRoOw0KIAkJfQ0KQEAgLTExNiwxNCArMTI5LDIzIEBACiAJCX0NCiAJfQ0KIA0KLQlyZXR1cm4gcGMgKyBwcmludHMgKG91dCwgcywgd2lkdGgsIHBhZCk7DQorCXJldHVybiBwYyArIHByaW50cyAob3V0LCBzLCB3aWR0aCwgcGFkLCBidWZsaW1pdCk7DQogfQ0KIA0KLXN0YXRpYyBpbnQgcHJpbnQoIGNoYXIgKipvdXQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzICkNCitzdGF0aWMgaW50IHRpbnlfcHJpbnQoIGNoYXIgKipvdXQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzLCB1bnNpZ25lZCBpbnQgYnVmbGVuICkNCiB7DQogCXJlZ2lzdGVyIGludCB3aWR0aCwgcGFkOw0KIAlyZWdpc3RlciBpbnQgcGMgPSAwOw0KLQljaGFyIHNjclsyXTsNCisJY2hhciBzY3JbMl0sICpidWZsaW1pdDsNCisNCisJaWYoIGJ1ZmxlbiA9PSAwICl7DQorCQlidWZsaW1pdCA9ICggY2hhciAqICkgMDsNCisJfQ0KKwllbHNlIHsNCisJCS8qIENhbGN1bGF0ZSB0aGUgbGFzdCB2YWxpZCBidWZmZXIgc3BhY2UsIGxlYXZpbmcgc3BhY2UgZm9yIHRoZSBOVUxMDQorCQl0ZXJtaW5hdG9yLiAqLw0KKwkJYnVmbGltaXQgPSAoICpvdXQgKSArICggYnVmbGVuIC0gMSApOw0KKwl9DQogDQogCWZvciAoOyAqZm9ybWF0ICE9IDA7ICsrZm9ybWF0KSB7DQogCQlpZiAoKmZvcm1hdCA9PSAnJScpIHsNCkBAIC0xNDUsMzYgKzE2NywzNiBAQAogCQkJfQ0KIAkJCWlmKCAqZm9ybWF0ID09ICdzJyApIHsNCiAJCQkJcmVnaXN0ZXIgY2hhciAqcyA9IChjaGFyICopdmFfYXJnKCBhcmdzLCBpbnQgKTsNCi0JCQkJcGMgKz0gcHJpbnRzIChvdXQsIHM/czoiKG51bGwpIiwgd2lkdGgsIHBhZCk7DQorCQkJCXBjICs9IHByaW50cyAob3V0LCBzP3M6IihudWxsKSIsIHdpZHRoLCBwYWQsIGJ1ZmxpbWl0KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KLQkJCWlmKCAqZm9ybWF0ID09ICdkJyB8fCAqZm9ybWF0ID09ICdpJyApIHsNCi0JCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDEwLCAxLCB3aWR0aCwgcGFkLCAnYScpOw0KKwkJCWlmKCAqZm9ybWF0ID09ICdkJyApIHsNCisJCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDEwLCAxLCB3aWR0aCwgcGFkLCAnYScsIGJ1ZmxpbWl0KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIAkJCWlmKCAqZm9ybWF0ID09ICd4JyApIHsNCi0JCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDE2LCAwLCB3aWR0aCwgcGFkLCAnYScpOw0KKwkJCQlwYyArPSBwcmludGkgKG91dCwgdmFfYXJnKCBhcmdzLCBpbnQgKSwgMTYsIDAsIHdpZHRoLCBwYWQsICdhJywgYnVmbGltaXQpOw0KIAkJCQljb250aW51ZTsNCiAJCQl9DQogCQkJaWYoICpmb3JtYXQgPT0gJ1gnICkgew0KLQkJCQlwYyArPSBwcmludGkgKG91dCwgdmFfYXJnKCBhcmdzLCBpbnQgKSwgMTYsIDAsIHdpZHRoLCBwYWQsICdBJyk7DQorCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxNiwgMCwgd2lkdGgsIHBhZCwgJ0EnLCBidWZsaW1pdCk7DQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCiAJCQlpZiggKmZvcm1hdCA9PSAndScgKSB7DQotCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxMCwgMCwgd2lkdGgsIHBhZCwgJ2EnKTsNCisJCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDEwLCAwLCB3aWR0aCwgcGFkLCAnYScsIGJ1ZmxpbWl0KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIAkJCWlmKCAqZm9ybWF0ID09ICdjJyApIHsNCiAJCQkJLyogY2hhciBhcmUgY29udmVydGVkIHRvIGludCB0aGVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgKi8NCiAJCQkJc2NyWzBdID0gKGNoYXIpdmFfYXJnKCBhcmdzLCBpbnQgKTsNCiAJCQkJc2NyWzFdID0gJ1wwJzsNCi0JCQkJcGMgKz0gcHJpbnRzIChvdXQsIHNjciwgd2lkdGgsIHBhZCk7DQorCQkJCXBjICs9IHByaW50cyAob3V0LCBzY3IsIHdpZHRoLCBwYWQsIGJ1ZmxpbWl0KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIAkJfQ0KIAkJZWxzZSB7DQogCQlvdXQ6DQotCQkJcHJpbnRjaGFyIChvdXQsICpmb3JtYXQpOw0KKwkJCXByaW50Y2hhciAob3V0LCAqZm9ybWF0LCBidWZsaW1pdCk7DQogCQkJKytwYzsNCiAJCX0NCiAJfQ0KQEAgLTE4NSwzMSArMjA3LDMyIEBACiANCiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KIHsNCi0JdmFfbGlzdCBhcmdzOw0KKyAgICAgICAgdmFfbGlzdCBhcmdzOw0KIA0KLQl2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQotCXJldHVybiBwcmludCggMCwgZm9ybWF0LCBhcmdzICk7DQorICAgICAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQorICAgICAgICByZXR1cm4gdGlueV9wcmludCggMCwgZm9ybWF0LCBhcmdzLCAwICk7DQogfQ0KIA0KIGludCBzcHJpbnRmKGNoYXIgKm91dCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pDQogew0KLQl2YV9saXN0IGFyZ3M7DQorICAgICAgICB2YV9saXN0IGFyZ3M7DQogDQotCXZhX3N0YXJ0KCBhcmdzLCBmb3JtYXQgKTsNCi0JcmV0dXJuIHByaW50KCAmb3V0LCBmb3JtYXQsIGFyZ3MgKTsNCisgICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBmb3JtYXQgKTsNCisgICAgICAgIHJldHVybiB0aW55X3ByaW50KCAmb3V0LCBmb3JtYXQsIGFyZ3MsIDAgKTsNCiB9DQogDQogDQogaW50IHNucHJpbnRmKCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBjb3VudCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4gKQ0KIHsNCi0JdmFfbGlzdCBhcmdzOw0KKyAgICAgICAgdmFfbGlzdCBhcmdzOw0KIA0KLQkoIHZvaWQgKSBjb3VudDsNCisgICAgICAgICggdm9pZCApIGNvdW50Ow0KIA0KLQl2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQotCXJldHVybiBwcmludCggJmJ1ZiwgZm9ybWF0LCBhcmdzICk7DQorICAgICAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQorICAgICAgICByZXR1cm4gdGlueV9wcmludCggJmJ1ZiwgZm9ybWF0LCBhcmdzLCBjb3VudCApOw0KIH0NCiANCisNCiAjaWZkZWYgVEVTVF9QUklOVEYNCiBpbnQgbWFpbih2b2lkKQ0KIHsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNjFlZDRlZS4uMzFkMDM1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNTFmNzlkMC4uOGYxOTc1MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBhNWY2MzU1Li4yYWVkNDU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIE5vcm1hbGx5IHRoZSBpbnRlcnJ1cHQgbmVzdGluZyB0ZXN0IHdvdWxkIHVzZSBbYXQgbGVhc3RdIHR3byBzZXBhcmF0ZSB0aW1lcnMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMKaW5kZXggYWIzZjM1ZS4uYzkyZWMzZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDM1YTkzZTguLjdiNzNlYWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggNmY3OWQ5MS4uMTE4ZDE3ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBlZjUxZGVhLi43YTI0NTk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGVmMzlkMjYuLjlmNDE4OWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCA4MGM1OWUyLi5mOTJjNWUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMKaW5kZXggYWIzZjM1ZS4uYzkyZWMzZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGgga25vd24gdmFsdWVzLCB0aGVuIGNoZWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggNTc2YmU0YS4uNjg2OTkwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vbWFpbi5jCmluZGV4IGYxNTI5OWMuLmJkMjU1ZjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGVmNTFkZWEuLjdhMjQ1OTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZWYzOWQyNi4uOWY0MTg5YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGY3ZmZhODEuLjcxZDI2NjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKaW5kZXggMTFlYTFhNi4uMzU3NmYxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIF9fYXNtIHZvaWQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24oIHZvaWQgKQ0KIHsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCmluZGV4IDA2MjkzYjcuLjE4NzQ1MGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCA1NzZiZTRhLi42ODY5OTAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3ZCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld2QKaW5kZXggNDYwNjA2OS4uZGI3MTJmZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3ZAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXdkCkBAIC0xLDMxNjMgKzEsMjgzNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQogPHByb2plY3Q+DQotICA8ZmlsZVZlcnNpb24+MjwvZmlsZVZlcnNpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+RGVidWc8L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+Mjg8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgPGZpbGVWZXJzaW9uPjM8L2ZpbGVWZXJzaW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc2FtdjctZWstc3JhbS5tYWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxDT05GSUdcZGVidWdnZXJcQXRtZWxcQVRTQU1WNzFRMjEuZGRmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjMwLjMuODA2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHluRHJpdmVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkpMSU5LX0lEPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny42MC4xLjExMjA2PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcQXRtZWxcc2FtdjcxcTIxXHNhbXY3MXEyMS1mbGFzaC5ib2FyZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk92ZXJyaWRlRGVmRmxhc2hCb2FyZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RldmljZUNvbmZpZ01hY3JvRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RlYnVnZ2VyRXh0cmFPcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NBbGxNVEJPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTnJPZkNvcmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTWFzdGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVXb3Jrc3BhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlUHJvamVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVDb25maWd1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEV4dHJhSW1hZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSUk9NX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+ODwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDAuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5SRElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWY2NUeXBlRGVmYXVsdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZvbHRhZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRWQ0NEZWZhdWx0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0U2V0dGxpbmd0aW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9KdGFnU3BlZWRUeXBlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0Q29ubmVjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjU8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2VPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUHJvYmVMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXEhDQ1dhcmVcSENDV2FyZS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcUGVyY2VwaW9UcmFjZUV4cG9ydGVyXFBlcmNlcGlvVHJhY2VFeHBvcnRQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXEFWSVhcQVZJWC5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xNUVhcTVFYUnRvc1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFF1YWRyb3NcUXVhZHJvc19FV0I3X1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRocmVhZFhcVGhyZWFkWEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcT3J0aVxPcnRpLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcdUNQcm9iZVx1Q1Byb2JlUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgPC9kZWJ1Z2dlclBsdWdpbnM+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+UmVsZWFzZTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yODwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXElBUlxzYW12Ny1lay1zcmFtLm1hYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXENPTkZJR1xkZWJ1Z2dlclxBdG1lbFxBVFNBTVY3MVEyMS5kZGY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcuMzAuMy44MDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXGNvbmZpZ1xmbGFzaGxvYWRlclxBdG1lbFxzYW12NzF4MjFcc2FtdjcxeDIxLWZsYXNoLmJvYXJkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFzc0VyYXNlQmVmb3JlRmxhc2hpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNBRElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NhZGlNZW1vcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmFzdCBNb2RlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTaXplTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rREFQTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEZWJ1Z0FjY2Vzc1BvcnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5USVBhY2thZ2VPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5USVBhY2thZ2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1iZWRcTWJlZEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcVGFyZ2V0QWNjZXNzU2VydmVyXFRhcmdldEFjY2Vzc1NlcnZlci5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPlJlbGVhc2U8L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuMzAuMy44MDYxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+QVJNU0lNX0lEPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BUk1TSU1fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFOR0VMX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQW5nZWxIZWFydGJlYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbXVuaWNhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTkdFTFRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9BbmdlbExvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QW5nZWxMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUlJPTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JSkVUX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RvSmxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQ29tbVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtTcGVlZFJhZGlvVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NVU0JEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RjcElwU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua0RldmljZU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5NQUNSQUlHT1JfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0VtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MEBBUk03VERNSTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnbzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VW51c2VkQWRkcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDA4MDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRVc2JDb21Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRBbGxvd0FjY2Vzc1RvQlNMPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0VyYXNlRmxhc2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj41PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8ZGVidWdnZXJQbHVnaW5zPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxIQ0NXYXJlXEhDQ1dhcmUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXFBlcmNlcGlvVHJhY2VFeHBvcnRlclxQZXJjZXBpb1RyYWNlRXhwb3J0UGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xRdWFkcm9zXFF1YWRyb3NfRVdCN19QbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcuMzAuMy44MDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QVJNU0lNX0lEPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFzc0VyYXNlQmVmb3JlRmxhc2hpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNBRElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NhZGlNZW1vcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmFzdCBNb2RlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQURJTG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JSkVUX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+ODwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJlZmVyRVRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNldHRpbmdzTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEQVBOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RlYnVnQWNjZXNzUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTV09Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPGRlYnVnZ2VyUGx1Z2lucz4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXGVtYk9TXGVtYk9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTWJlZFxNYmVkQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xUYXJnZXRBY2Nlc3NTZXJ2ZXJcVGFyZ2V0QWNjZXNzU2VydmVyLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3AgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXdwCmluZGV4IDkzYzZmMDIuLmEzMTIzYmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3AKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3cApAQCAtMSwyMDgwICsxLDIxODcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgPGZpbGVWZXJzaW9uPjM8L2ZpbGVWZXJzaW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5EZWJ1Z1xFeGU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+RGVidWdcT2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5EZWJ1Z1xMaXN0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NS4xMC4wLjE1OTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+QVRTQU1WNzFRMjEJQXRtZWwgQVRTQU1WNzFRMjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db3JlVmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVEZXZpY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkFUU0FNVjcxUTIxCUF0bWVsIEFUU0FNVjcxUTIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TkVPTjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlMjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X19TQU1WNzFRMjFfXzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wMDAwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12Nzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2FtdjdcaW5jbHVkZVxzYW12Nzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcRnVsbF9EZW1vPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+LnRleHQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JSW50ZXJ3b3JrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDcHBEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjUlRUSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDcHBJbmxpbmVTZW1hbnRpY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRmxvYXRTZW1hbnRpY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NOb0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3lTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFBUk08L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+OTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU9ialByZWZpeDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFDYXNlU2Vuc2l0aXZpdHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjcm9DaGFyczwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fX1NBTTRTMTZDX188L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5fX0FTU0VNQkxZX188L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJUT1NEZW1vLmJpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCi0gICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCi0gICAgICAgIDxoYXNQcmlvPjA8L2hhc1ByaW8+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCi0gICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTc8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJUT1NEZW1vLm91dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTGliSU9Db25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+WExpbmtNaXNyYUhhbmRsZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJbnB1dEZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXElBUlxzYW12NzFxMjFfc3JhbS5pY2Y8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fX2lhcl9wcm9ncmFtX3N0YXJ0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlYnVnXEV4ZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5EZWJ1Z1xPYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlYnVnXExpc3Q8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41LjEwLjAuMTU5PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+OC4yMC4xLjE0MTgxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BVFNBTVY3MVEyMQlBdG1lbCBBVFNBTVY3MVEyMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkFUU0FNVjcxUTIxCUF0bWVsIEFUU0FNVjcxUTIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDTVNJU1BhY2tTZWxlY3REZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2dMaWJIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGliQWRkaXRpb25hbExvY2FsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50ZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlVGFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZURpc3BsYXlPbmx5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RFNQRXh0ZW5zaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM0PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X19TQU1WNzFRMjFfXzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VFJBQ0VfTEVWRUw9NDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wMDAwMDAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWJ1Z0luZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUVuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGFuZ0NvbmZvcm1hbmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2lnbmVkUGxhaW5DaGFyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUmVxdWlyZVByb3RvdHlwZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWs8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12Nzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XGluY2x1ZGVcc2Ftdjc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcRnVsbF9EZW1vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+LnRleHQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NSVFRJMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X19TQU00UzE2Q19fPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fX0FTU0VNQkxZX188L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlJUT1NEZW1vLmJpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCisgICAgICAgICAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KKyAgICAgICAgICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5SVE9TRGVtby5vdXQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTGliSU9Db25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+WExpbmtNaXNyYUhhbmRsZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJbnB1dEZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc2FtdjcxcTIxX3NyYW0uaWNmPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X19pYXJfcHJvZ3JhbV9zdGFydDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MTEwMjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNCaXRPcmRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUaHJlYWRzU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dDYWxsR3JhcGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlX0FsdERlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jT3V0cHV0Qm9tPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSGVhcFNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvY2FsZVNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SZWxlYXNlXEV4ZTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SZWxlYXNlXE9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxMaXN0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkZ1bGwgZm9ybWF0dGluZy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgdmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5GdWxsIGZvcm1hdHRpbmcuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3RTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41LjEwLjAuMTU5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny42MC4xLjExMjA2PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5kZWZhdWx0CU5vbmU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvcmVWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5kZWZhdWx0CU5vbmU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk5yUmVnczwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5ERUJVRzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTExMTEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEZWJ1Z0luZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUVuZGlhbk1vZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGFuZ0NvbmZvcm1hbmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU2lnbmVkUGxhaW5DaGFyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUmVxdWlyZVByb3RvdHlwZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPi50ZXh0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmMuc3JlYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCi0gICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCi0gICAgICAgIDxoYXNQcmlvPjA8L2hhc1ByaW8+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCi0gICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTc8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmMub3V0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxDT05GSUdcZ2VuZXJpYy5pY2Y8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MTEwMjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNCaXRPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUaHJlYWRzU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dDYWxsR3JhcGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5BdG1lbF9MaWJCb2FyZDwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbG93bGV2ZWwuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9tZW1vcmllcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXElBUlxzdGFydHVwX3NhbS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXHN5c3RlbV9zYW0uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+QXRtZWxfTGliQ2hpcDwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwaW8uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHBtYy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2Vcc3VwYy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VcdGMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHdkdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5CbGlua3lfRGVtbzwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GcmVlUlRPU19Tb3VyY2U8L25hbWU+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5SZWxlYXNlXEV4ZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5SZWxlYXNlXE9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxMaXN0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5GdWxsIGZvcm1hdHRpbmcuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RnVsbCBmb3JtYXR0aW5nLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41LjEwLjAuMTU5PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Ny42MC4xLjExMjA2PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZWZhdWx0CU5vbmU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ZGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NNU0lTUGFja1NlbGVjdERldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PZ0xpYkhlYXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMaWJBZGRpdGlvbmFsTG9jYWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVUYWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlRGlzcGxheU9ubHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5EU1BFeHRlbnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5OREVCVUc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTExMTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4udGV4dDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnMyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1JUVEkyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Yy5zcmVjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KKyAgICAgICAgICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQorICAgICAgICAgICAgICAgIDxoYXNQcmlvPjA8L2hhc1ByaW8+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQorICAgICAgICAgICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmMub3V0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxDT05GSUdcZ2VuZXJpYy5pY2Y8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZV9BbHREZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0hlYXBTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2NhbGVTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0YXNtLnM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0bWFjcm8uaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQorICAgICAgICA8bmFtZT5BdG1lbF9MaWJCb2FyZDwvbmFtZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9tZW1vcmllcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcbGVkLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc3RhcnR1cF9zYW0uYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXHN5c3RlbV9zYW0uYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGdyb3VwPg0KKyAgICAgICAgPG5hbWU+QXRtZWxfTGliQ2hpcDwvbmFtZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VccGlvLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHBtYy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxzdXBjLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHRjLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHdkdC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5CbGlua3lfRGVtbzwvbmFtZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGdyb3VwPg0KKyAgICAgICAgPG5hbWU+RnJlZVJUT1NfU291cmNlPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPnBvcnRhYmxlPC9uYW1lPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnRhc20uczwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydG1hY3JvLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGdyb3VwPg0KKyAgICAgICAgPG5hbWU+RnVsbF9EZW1vPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPkNvbW1vbl9EZW1vX1Rhc2tzPC9uYW1lPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb3VudHNlbS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFNlbVRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVTZXQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUYXNrTm90aWZ5LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmg8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXFJlZ1Rlc3QuczwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCiAgICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRpbWVycy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GdWxsX0RlbW88L25hbWU+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5Db21tb25fRGVtb19UYXNrczwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGZsb3AuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50U2VtVGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlU2V0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGFza05vdGlmeS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGltZXJEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5oPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXFJlZ1Rlc3QuczwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCi0gIDwvZmlsZT4NCiA8L3Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3QKaW5kZXggMjc3OTk4MS4uMTZkNjMxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3dAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXd0CkBAIC0xLDI0NjMgKzEsMjUyMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQogPHByb2plY3Q+DQotICA8ZmlsZVZlcnNpb24+MjwvZmlsZVZlcnNpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+RGVidWc8L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Qy1TVEFUPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yNTk8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjU5PC92ZXJzaW9uPg0KLSAgICAgICAgPGNzdGF0YXJncz4NCi0gICAgICAgICAgPHVzZUV4dHJhQXJncz4wPC91c2VFeHRyYUFyZ3M+DQotICAgICAgICAgIDxleHRyYUFyZ3M+PC9leHRyYUFyZ3M+DQotICAgICAgICAgIDxhbmFseXplVGltZW91dEVuYWJsZWQ+MTwvYW5hbHl6ZVRpbWVvdXRFbmFibGVkPg0KLSAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXQ+NjAwPC9hbmFseXplVGltZW91dD4NCi0gICAgICAgICAgPGVuYWJsZVBhcmFsbGVsPjA8L2VuYWJsZVBhcmFsbGVsPg0KLSAgICAgICAgICA8cGFyYWxsZWxUaHJlYWRzPjI8L3BhcmFsbGVsVGhyZWFkcz4NCi0gICAgICAgICAgPGVuYWJsZUZhbHNlUG9zaXRpdmVzPjA8L2VuYWJsZUZhbHNlUG9zaXRpdmVzPg0KLSAgICAgICAgICA8bWVzc2FnZXNMaW1pdEVuYWJsZWQ+MTwvbWVzc2FnZXNMaW1pdEVuYWJsZWQ+DQotICAgICAgICAgIDxtZXNzYWdlc0xpbWl0PjEwMDwvbWVzc2FnZXNMaW1pdD4NCi0gICAgICAgIDwvY3N0YXRhcmdzPg0KLSAgICAgICAgPGNzdGF0X3NldHRpbmdzPg0KLSAgICAgICAgICA8Y3N0YXRfdmVyc2lvbj4xLjMuMjwvY3N0YXRfdmVyc2lvbj4NCi0gICAgICAgICAgPGNoZWNrc190cmVlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNURENIRUNLUyI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXB0ci1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgtcHRyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItbmVnLWluZGV4Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItdW5pbml0LWluZGV4Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLWZsb2F0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLXVuc2lnbi1uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkFUSC1kaXYtMC1jbXAtYWZ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWludGVydmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstZ2xvYmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstbG9jYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC11bmNoay1wYXJhbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtaW5jLWJvb2wiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1tYWxsb2Mtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1ub25uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbmV3LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtb3ZlcmZsb3ctY2FzdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW92ZXJmbG93Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2hpZnQtYm91bmRzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2hpZnQtbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2l6ZW9mLWJ5LXNpemVvZiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDQVNUIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVNULW9sZC1zdHlsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDQVRDSCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDQVRDSC1vYmplY3Qtc2xpY2luZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNBVENILXh0b3ItYmFkLW1lbWJlciIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT01NQSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ09NTUEtb3ZlcmxvYWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT01NRU5ULW5lc3RlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT05TVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT05TVC1tZW1iZXItcmV0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ09QLWFsbG9jLWN0b3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3AtcmV0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXNlbGYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1jb3B5LWN0b3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtZGVhbGxvYy1kdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtZHRvci10aHJvdyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LW9yZGVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtaW5pdC11bmluaXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1tZW1iZXItdW5pbml0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtY3Rvci1jYWxsLXZpcnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDUFUtY3Rvci1pbXBsaWNpdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWRlbGV0ZS10aHJvdyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWRlbGV0ZS12b2lkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZHRvci1jYWxsLXZpcnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1tYWxsb2MtY2xhc3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1ub252aXJ0LWR0b3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1yZXR1cm4tcmVmLXRvLWNsYXNzLWRhdGEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iREVDTCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iREVDTC1pbXBsaWNpdC1pbnQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iREVGSU5FIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORS1oYXNoLW11bHRpcGxlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVOVU0iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVOVU0tYm91bmRzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtY29uZC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUC1kYW5nbGluZy1lbHNlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtbG9vcC1leGl0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW1haW4tcmV0LWludCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVYUC1udWxsLXN0bXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtc3RyYXktc2VtaWNvbG9uIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUi1jb25zdC1vdmVyZmxvdyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULWNtcC1udWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlBULWxpdGVyYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVC1taXN1c2UiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlVOQyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlVOQy1pbXBsaWNpdC1kZWNsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlVOQy11bnByb3RvdHlwZWQtYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGVU5DLXVucHJvdG90eXBlZC11c2VkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IklOQ0xVREUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklOQ0xVREUtYy1maWxlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IklOVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTlQtdXNlLXNpZ25lZC1hcy11bnNpZ25lZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWVuZC1jbXAtYWZ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1iZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1pbnZhbGlkYXRlZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklUUi1taXNtYXRjaC1hbGciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItc3RvcmUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi11bmluaXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1ic2VhcmNoLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZm4tdW5zYWZlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItZnJlYWQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1jcHktb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1zZXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1zZXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1wdXRlbnYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcXNvcnQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcXNvcnQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1jb25zdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1lcnJvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1sZWFrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1udWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXNwcmludGYtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdGQtc29ydC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0ZC1zb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RyY2F0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RyY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RyY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RyY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJuY21wLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJuY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTE9HSUMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxPR0lDLW92ZXJsb2FkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZGVsZXRlLWFycmF5LW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZGVsZXRlLW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kb3VibGUtZnJlZS1zb21lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZpZWxkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1mcHRyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2Mtc3RydWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLW5vLXVzZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtb3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXN0cnVjdC1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtdmFyaWFibGUtYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbGVhay1hbGlhcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1sZWFrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLW1hbGxvYy1hcml0aCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1kaWZmLXR5cGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2Mtc2l6ZW9mLXB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbWFsbG9jLXN0cmxlbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJlYWxsb2MtZGlmZi10eXBlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmV0dXJuLWZyZWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZXR1cm4tbm8tYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stZ2xvYmFsLWZpZWxkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stZ2xvYmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcGFyYW0tcmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1yZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLXNvbWUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLXN0YWNrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtdmFyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItY21wLXN0ci1saXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24tZnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZi1mdW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWZ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1saXRlcmFsLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1vdmVybG9hZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1zaW5nbGV0b24tYXJpdGgtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0tc29tZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi11bmNoay1wYXJhbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi11bmluaXQtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5pbml0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWFsbG9jLXplcm8tYnl0ZXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY2FzZS1yZWFjaCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jbXAtYWx3YXlzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNtcC1uZXZlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLWFsd2F5cyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtZXhwciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLWNvbnN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtbmV2ZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1kZWFkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWV4cHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZnVuYy1uby1lZmZlY3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1nbG9iYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtbG9jYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtbWVtYmVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtbm8tZWZmZWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtc2VsZi1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELXVudXNlZC1wYXJhbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcmV0dXJuLXZhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtdmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtdW51c2VkLXZhci1hbGwiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWRlcmVmLWZpbGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWRvdWJsZS1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1uby1jbG9zZS1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1maWxlLXBvcy1uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWZpbGUtdXNlLWFmdGVyLWNsb3NlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtaW1wbGljaXQtZGVyZWYtZmlsZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0Utd3JpdGUtcm9ubHktZmlsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0YiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0laRU9GLXNpZGUtZWZmZWN0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtb3JkZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdW5pbml0LWFyci1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkLWhlYXAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdW5pbml0LXN0cnVjdC1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC12YXItc29tZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS1yZWFkcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS13cml0ZXMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1RSVUNUIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTVFJVQ1Qtc2lnbmVkLWJpdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTV0lUQ0giPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENILWZhbGwtdGhyb3VnaCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctZW1wdHkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJUSFJPVy1tYWluIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1udWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1wdHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXN0YXRpYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctdW5oYW5kbGVkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLW92ZXJsYXAtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi10eXBlLXB1bm5pbmciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDRVJUIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUVYUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUVYUDE5LUMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zNy1DIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTzM4LUMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1TSUciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1TSUczMS1DIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDVVJJVFkiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1tZW1vcnktbGVhay1hbGlhcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWsiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1tZW1zZXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zcHJpbnRmLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY2F0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jYXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNtcC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtYWxsb2Mtc2l6ZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHktbGVuZ3RoIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtY29weSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWluZGV4Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtb2Zmc2V0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXVzZS1hZnRlci1mcmVlLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1zb21lIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1hZnRlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYmVmb3JlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtdGFpbnRlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1GSUxFT1Atb3Blbi1uby1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1GSUxFT1AtcGF0aC10cmF2ZXJzYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1GSUxFT1AtdXNlLWFmdGVyLWNsb3NlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1JTkpFQ1RJT04iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04tc3FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUlOSkVDVElPTi14cGF0aCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTE9PUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTE9PUC10YWludGVkLWJvdW5kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtTlVMTC1hc3NpZ25tZW50LWZ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWNtcC1hZnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWNtcC1iZWYtZnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtbGl0ZXJhbC1wb3MiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLVNUUklORyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HLWZvcm1hdC1zdHJpbmciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtU1RSSU5HLWhhcmQtY29kZWQtY3JlZGVudGlhbHMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0Ij4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2kiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2oiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTIuNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC02LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC03LjEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjVfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjEyIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC42Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjExIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEyX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuN19hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4xMCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMTAiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2QiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC40Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTIiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfaCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfaSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2giLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19qIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2siLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19uIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX28iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM190Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM193Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTMuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTMuMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjNfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjRfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS45Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02LjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy40X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjNfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjlfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjlfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS41X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1IyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I1Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I4Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuOCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS45Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjRfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy42Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjNfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjNfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC44Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOS4yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC40X2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4xMCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMl9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi42Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4Ij4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS00X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS03Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS04Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTRfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTktMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOS0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC03Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE1X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0yMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi01Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy00Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE0Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE0LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTgtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTktMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zLTFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2QiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC02Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtOCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTItMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtNF9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNS0xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMy0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNS0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTAtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMS0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS01LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTAtNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTItMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgPC9jaGVja3NfdHJlZT4NCi0gICAgICAgIDwvY3N0YXRfc2V0dGluZ3M+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UnVudGltZUNoZWNraW5nPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgPGZpbGVWZXJzaW9uPjM8L2ZpbGVWZXJzaW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0RlYnVnSGVhcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNFbmFibGVCb3VuZHNDaGVja2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ck1lbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNUcmFja1BvaW50ZXJCb3VuZHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tBY2Nlc3NlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNHZW5lcmF0ZUVudHJpZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjTnJUcmFja2VkUG9pbnRlcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50T3ZlcmZsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW5jVW5zaWduZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50Q29udmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsRXhwbGljaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50U2hpZnRPdmVyZmxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsVW5zaWduZWRTaGlmdE92ZXJmbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y1VuaGFuZGxlZENhc2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjRGl2QnlaZXJvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ckZ1bmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1RBVDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjU5PC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI1OTwvdmVyc2lvbj4NCi0gICAgICAgIDxjc3RhdGFyZ3M+DQotICAgICAgICAgIDx1c2VFeHRyYUFyZ3M+MDwvdXNlRXh0cmFBcmdzPg0KLSAgICAgICAgICA8ZXh0cmFBcmdzPjwvZXh0cmFBcmdzPg0KLSAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXRFbmFibGVkPjE8L2FuYWx5emVUaW1lb3V0RW5hYmxlZD4NCi0gICAgICAgICAgPGFuYWx5emVUaW1lb3V0PjYwMDwvYW5hbHl6ZVRpbWVvdXQ+DQotICAgICAgICAgIDxlbmFibGVQYXJhbGxlbD4wPC9lbmFibGVQYXJhbGxlbD4NCi0gICAgICAgICAgPHBhcmFsbGVsVGhyZWFkcz4yPC9wYXJhbGxlbFRocmVhZHM+DQotICAgICAgICAgIDxlbmFibGVGYWxzZVBvc2l0aXZlcz4wPC9lbmFibGVGYWxzZVBvc2l0aXZlcz4NCi0gICAgICAgICAgPG1lc3NhZ2VzTGltaXRFbmFibGVkPjE8L21lc3NhZ2VzTGltaXRFbmFibGVkPg0KLSAgICAgICAgICA8bWVzc2FnZXNMaW1pdD4xMDA8L21lc3NhZ2VzTGltaXQ+DQotICAgICAgICA8L2NzdGF0YXJncz4NCi0gICAgICAgIDxjc3RhdF9zZXR0aW5ncz4NCi0gICAgICAgICAgPGNzdGF0X3ZlcnNpb24+MS4zLjI8L2NzdGF0X3ZlcnNpb24+DQotICAgICAgICAgIDxjaGVja3NfdHJlZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVERDSEVDS1MiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHItcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLW5lZy1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLXVuaW5pdC1pbmRleCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC1mbG9hdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC11bnNpZ24tbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLXVuc2lnbi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1iZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1pbnRlcnZhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWdsb2JhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWxvY2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWluYy1ib29sIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbWFsbG9jLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stbm9ubmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbmVnLWNoZWNrLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5ldy1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILW92ZXJmbG93LWNhc3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1vdmVyZmxvdyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LWJvdW5kcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LW5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNpemVvZi1ieS1zaXplb2YiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FTVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0FTVC1vbGQtc3R5bGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0giPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0gtb2JqZWN0LXNsaWNpbmciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVRDSC14dG9yLWJhZC1tZW1iZXIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPTU1BLW92ZXJsb2FkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVC1uZXN0ZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QtbWVtYmVyLXJldCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1hbGxvYy1jdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXJldCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcC1zZWxmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtY29weS1jdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ09QLWRlYWxsb2MtZHRvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3ItdGhyb3ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtaW5pdC1vcmRlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtdW5pbml0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtbWVtYmVyLXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWN0b3ItY2FsbC12aXJ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ1BVLWN0b3ItaW1wbGljaXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdGhyb3ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdm9pZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWR0b3ItY2FsbC12aXJ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbWFsbG9jLWNsYXNzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbm9udmlydC1kdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtcmV0dXJuLXJlZi10by1jbGFzcy1kYXRhIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFQ0wiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkRFQ0wtaW1wbGljaXQtaW50Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUZJTkUtaGFzaC1tdWx0aXBsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFTlVNIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFTlVNLWJvdW5kcyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWNvbmQtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtZGFuZ2xpbmctZWxzZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWxvb3AtZXhpdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVYUC1tYWluLXJldC1pbnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbnVsbC1zdG10Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLXN0cmF5LXNlbWljb2xvbiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFBSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFItY29uc3Qtb3ZlcmZsb3ciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBUIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVC1jbXAtbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZQVC1saXRlcmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQtbWlzdXNlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtaW1wbGljaXQtZGVjbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlVOQy11bnByb3RvdHlwZWQtdXNlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTkNMVURFIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJTkNMVURFLWMtZmlsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTlQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklOVC11c2Utc2lnbmVkLWFzLXVuc2lnbmVkLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1lbmQtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWVuZC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItaW52YWxpZGF0ZWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItbWlzbWF0Y2gtYWxnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLXN0b3JlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItdW5pbml0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWJzZWFyY2gtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZuLXVuc2FmZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1mcmVhZC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcHV0ZW52Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tY29uc3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tZXJyb3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbGVhayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zcHJpbnRmLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdGQtc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJuY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJuY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxPR0lDIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMT0dJQy1vdmVybG9hZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1hcnJheS1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtc29tZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZnB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jLXN0cnVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1uby11c2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1zdHJ1Y3QtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWxlYWstYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbGVhayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2MtYXJpdGgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2MtZGlmZi10eXBlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLXNpemVvZi1wdHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2Mtc2l6ZW9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLW1hbGxvYy1zdHJsZW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZWFsbG9jLWRpZmYtdHlwZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1mcmVlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmV0dXJuLW5vLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbC1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtLXJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2siLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1zb21lIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1zdGFjayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLXZhciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWNtcC1zdHItbGl0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduLWZ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1hZnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYtZnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1mdW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtbGl0ZXJhbC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItb3ZlcmxvYWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXVuY2hrLXBhcmFtLXNvbWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5pbml0LXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1hbGxvYy16ZXJvLWJ5dGVzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNhc2UtcmVhY2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLWFsd2F5cyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jbXAtbmV2ZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1hbHdheXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWV4cHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLW5ldmVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtZGVhZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1leHByIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWZ1bmMtbm8tZWZmZWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtZ2xvYmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWxvY2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLW1lbWJlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELW5vLWVmZmVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXNlbGYtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtdW51c2VkLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXJldHVybi12YWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXZhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC12YXItYWxsIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1kZXJlZi1maWxlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1kb3VibGUtY2xvc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWZpbGUtbm8tY2xvc2UtYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1wb3MtbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLXVzZS1hZnRlci1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWltcGxpY2l0LWRlcmVmLWZpbGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLXdyaXRlLXJvbmx5LWZpbGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0laRU9GIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNJWkVPRi1zaWRlLWVmZmVjdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLW9yZGVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1hcnItYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXN0cnVjdC1maWVsZC1oZWFwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXZhci1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLXNvbWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtcmVhZHMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtd3JpdGVzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNUUlVDVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1RSVUNULXNpZ25lZC1iaXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENIIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNXSVRDSC1mYWxsLXRocm91Z2giLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlRIUk9XLWVtcHR5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctbWFpbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctcHRyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1zdGF0aWMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXVuaGFuZGxlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi1vdmVybGFwLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04tdHlwZS1wdW5uaW5nIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0VSVCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAxOS1DIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPMzctQyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zOC1DIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHMzEtQyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQ1VSSVRZIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWstYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1tZW1zZXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3ByaW50Zi1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNtcC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWFsbG9jLXNpemUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1jb3B5LWxlbmd0aCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLW9mZnNldCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtc29tZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYWZ0ZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC1jb21wYXJlLWJlZm9yZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLXRhaW50ZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLW9wZW4tbm8tY2xvc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtRklMRU9QLXBhdGgtdHJhdmVyc2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLXVzZS1hZnRlci1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtSU5KRUNUSU9OIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtSU5KRUNUSU9OLXNxbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04teHBhdGgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AtdGFpbnRlZC1ib3VuZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtYXNzaWdubWVudC1mdW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1hc3NpZ25tZW50Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYWZ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmLWZ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1OVUxMLWxpdGVyYWwtcG9zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLVNUUklORy1mb3JtYXQtc3RyaW5nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLVNUUklORy1oYXJkLWNvZGVkLWNyZWRlbnRpYWxzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9oIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9pIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9qIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS42Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNy4xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS41Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEyX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMTAiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS41Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjEwIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2kiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19oIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19oIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2kiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19rIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX20iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19vIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM191Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi43Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjJfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjRfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjVfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuNF9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4zX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjVfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjE0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I3Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2QiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi43Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy44Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguOCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjRfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMTAiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjExIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEyX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS00X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS05Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTExIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMi0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMy0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTktMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC01Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC04Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE1X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMjEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi02Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTExX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTFfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTgtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE5LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zLTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC03Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS02Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMS0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTRfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTAtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTUtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0wLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNS0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNy0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgIDwvY2hlY2tzX3RyZWU+DQotICAgICAgICA8L2NzdGF0X3NldHRpbmdzPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlJ1bnRpbWVDaGVja2luZzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Qy1TVEFUPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yNjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDxjc3RhdGFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8dXNlRXh0cmFBcmdzPjA8L3VzZUV4dHJhQXJncz4NCisgICAgICAgICAgICAgICAgICAgIDxleHRyYUFyZ3M+PC9leHRyYUFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXRFbmFibGVkPjE8L2FuYWx5emVUaW1lb3V0RW5hYmxlZD4NCisgICAgICAgICAgICAgICAgICAgIDxhbmFseXplVGltZW91dD42MDA8L2FuYWx5emVUaW1lb3V0Pg0KKyAgICAgICAgICAgICAgICAgICAgPGVuYWJsZVBhcmFsbGVsPjA8L2VuYWJsZVBhcmFsbGVsPg0KKyAgICAgICAgICAgICAgICAgICAgPHBhcmFsbGVsVGhyZWFkcz4yPC9wYXJhbGxlbFRocmVhZHM+DQorICAgICAgICAgICAgICAgICAgICA8ZW5hYmxlRmFsc2VQb3NpdGl2ZXM+MDwvZW5hYmxlRmFsc2VQb3NpdGl2ZXM+DQorICAgICAgICAgICAgICAgICAgICA8bWVzc2FnZXNMaW1pdEVuYWJsZWQ+MTwvbWVzc2FnZXNMaW1pdEVuYWJsZWQ+DQorICAgICAgICAgICAgICAgICAgICA8bWVzc2FnZXNMaW1pdD4xMDA8L21lc3NhZ2VzTGltaXQ+DQorICAgICAgICAgICAgICAgIDwvY3N0YXRhcmdzPg0KKyAgICAgICAgICAgICAgICA8Y3N0YXRfc2V0dGluZ3M+DQorICAgICAgICAgICAgICAgICAgICA8Y3N0YXRfdmVyc2lvbj4xLjUuMDwvY3N0YXRfdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxjaGVja3NfdHJlZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVERDSEVDS1MiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXB0ci1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItbmVnLWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi11bmluaXQtaW5kZXgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtZmxvYXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC11bnNpZ24tbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtaW50ZXJ2YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstZ2xvYmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC11bmNoay1sb2NhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1pbmMtYm9vbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbWFsbG9jLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1ub25uZWciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5ldy1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtb3ZlcmZsb3ctY2FzdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtb3ZlcmZsb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LWJvdW5kcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2hpZnQtbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaXplb2YtYnktc2l6ZW9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FTVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNBU1Qtb2xkLXN0eWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0giPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENILW9iamVjdC1zbGljaW5nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVRDSC14dG9yLWJhZC1tZW1iZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT01NQSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPTU1BLW92ZXJsb2FkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVC1uZXN0ZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT05TVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QtbWVtYmVyLXJldCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1hbGxvYy1jdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3AtcmV0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3Atc2VsZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1jb3B5LWN0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1kZWFsbG9jLWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3ItdGhyb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtb3JkZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1tZW1iZXItdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtY3Rvci1jYWxsLXZpcnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNQVS1jdG9yLWltcGxpY2l0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdGhyb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWRlbGV0ZS12b2lkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kdG9yLWNhbGwtdmlydCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbWFsbG9jLWNsYXNzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1ub252aXJ0LWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLXJldHVybi1yZWYtdG8tY2xhc3MtZGF0YSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFQ0wiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJERUNMLWltcGxpY2l0LWludCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iREVGSU5FLWhhc2gtbXVsdGlwbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFTlVNIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRU5VTS1ib3VuZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUC1jb25kLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtZGFuZ2xpbmctZWxzZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtbG9vcC1leGl0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbWFpbi1yZXQtaW50IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbnVsbC1zdG10IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtc3RyYXktc2VtaWNvbG9uIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUi1jb25zdC1vdmVyZmxvdyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULWNtcC1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGUFQtbGl0ZXJhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQtbWlzdXNlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlVOQyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtaW1wbGljaXQtZGVjbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlVOQy11bnByb3RvdHlwZWQtYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLXVzZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTkNMVURFIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5DTFVERS1jLWZpbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJTlQtdXNlLXNpZ25lZC1hcy11bnNpZ25lZC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1lbmQtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWludmFsaWRhdGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItbWlzbWF0Y2gtYWxnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItc3RvcmUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1ic2VhcmNoLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZm4tdW5zYWZlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZnJlYWQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbWNoci1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1wdXRlbnYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1jb25zdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWVycm9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbGVhayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW51bGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zcHJpbnRmLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdGQtc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RyY2F0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTE9HSUMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMT0dJQy1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1hcnJheS1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZGVsZXRlLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kb3VibGUtZnJlZS1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZnB0ciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2Mtc3RydWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tZnJlZS1uby1hbGxvYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1uby11c2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtb3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtc3RydWN0LWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1sZWFrLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbGVhayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLW1hbGxvYy1hcml0aCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLWRpZmYtdHlwZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLXNpemVvZi1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2Mtc3RybGVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZWFsbG9jLWRpZmYtdHlwZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmV0dXJuLWZyZWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1uby1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stZ2xvYmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbS1yZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2siIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tdXNlLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1zdGFjayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtdmFyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1jbXAtc3RyLWxpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduLWZ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZi1mdW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1saXRlcmFsLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW92ZXJsb2FkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmNoay1wYXJhbS1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi11bmluaXQtcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmluaXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtYWxsb2MtemVyby1ieXRlcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNhc2UtcmVhY2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jbXAtYWx3YXlzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLW5ldmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1hbHdheXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdC1leHByIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtbmV2ZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWRlYWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1leHByIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZnVuYy1uby1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWxvY2FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtbWVtYmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1wYXJhbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELW5vLWVmZmVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtc2VsZi1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcmV0dXJuLXZhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELXVudXNlZC12YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC12YXItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1kZXJlZi1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWRvdWJsZS1jbG9zZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLW5vLWNsb3NlLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1wb3MtbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWZpbGUtdXNlLWFmdGVyLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1pbXBsaWNpdC1kZXJlZi1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLXdyaXRlLXJvbmx5LWZpbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0YiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNJWkVPRi1zaWRlLWVmZmVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLW9yZGVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdW5pbml0LWFyci1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQtaGVhcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC12YXItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS1yZWFkcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXZvbGF0aWxlLXdyaXRlcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNUUlVDVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNUUlVDVC1zaWduZWQtYml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTV0lUQ0gtZmFsbC10aHJvdWdoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJUSFJPVy1lbXB0eSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctbWFpbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXB0ciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1zdGF0aWMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctdW5oYW5kbGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04iPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLW92ZXJsYXAtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLXR5cGUtcHVubmluZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNFUlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQMTktQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTzM3LUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zOC1DIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1TSUciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHMzEtQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQ1VSSVRZIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWstYWxpYXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1xc29ydC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3ByaW50Zi1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RkLXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY2F0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtYWxsb2Mtc2l6ZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtY29weS1sZW5ndGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1vZmZzZXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1hZnRlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1iZWZvcmUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLXRhaW50ZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLW9wZW4tbm8tY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1GSUxFT1AtcGF0aC10cmF2ZXJzYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC11c2UtYWZ0ZXItY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtSU5KRUNUSU9OIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUlOSkVDVElPTi1zcWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04teHBhdGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTE9PUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AtdGFpbnRlZC1ib3VuZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtYXNzaWdubWVudC1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmLWZ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtTlVMTC1saXRlcmFsLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkctZm9ybWF0LXN0cmluZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLVNUUklORy1oYXJkLWNvZGVkLWNyZWRlbnRpYWxzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2oiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC03LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguOF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC44X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtOC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOCAxMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2kiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2oiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19rIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19vIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM191IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjVfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC40X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTktMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC05IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTExX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC04IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTktMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yNy0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgIDwvY2hlY2tzX3RyZWU+DQorICAgICAgICAgICAgICAgIDwvY3N0YXRfc2V0dGluZ3M+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5SdW50aW1lQ2hlY2tpbmc8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRGVidWdIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZUJvdW5kc0NoZWNraW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyTWVtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y1RyYWNrUG9pbnRlckJvdW5kczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja0FjY2Vzc2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0dlbmVyYXRlRW50cmllczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNOclRyYWNrZWRQb2ludGVyczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRPdmVyZmxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNVbnNpZ25lZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRDb252ZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xFeHBsaWNpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRTaGlmdE92ZXJmbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xVbnNpZ25lZFNoaWZ0T3ZlcmZsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjVW5oYW5kbGVkQ2FzZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNEaXZCeVplcm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyRnVuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPlJlbGVhc2U8L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjRGVidWdIZWFwPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZUJvdW5kc0NoZWNraW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyTWVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y1RyYWNrUG9pbnRlckJvdW5kczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja0FjY2Vzc2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0dlbmVyYXRlRW50cmllczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNOclRyYWNrZWRQb2ludGVyczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRPdmVyZmxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNVbnNpZ25lZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRDb252ZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xFeHBsaWNpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRTaGlmdE92ZXJmbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xVbnNpZ25lZFNoaWZ0T3ZlcmZsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjVW5oYW5kbGVkQ2FzZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNEaXZCeVplcm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyRnVuYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5BdG1lbF9MaWJCb2FyZDwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbG93bGV2ZWwuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9tZW1vcmllcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXElBUlxzdGFydHVwX3NhbS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXHN5c3RlbV9zYW0uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+QXRtZWxfTGliQ2hpcDwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwaW8uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHBtYy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2Vcc3VwYy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VcdGMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHdkdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5CbGlua3lfRGVtbzwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GcmVlUlRPU19Tb3VyY2U8L25hbWU+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Qy1TVEFUPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yNjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDxjc3RhdGFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8dXNlRXh0cmFBcmdzPjA8L3VzZUV4dHJhQXJncz4NCisgICAgICAgICAgICAgICAgICAgIDxleHRyYUFyZ3M+PC9leHRyYUFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXRFbmFibGVkPjE8L2FuYWx5emVUaW1lb3V0RW5hYmxlZD4NCisgICAgICAgICAgICAgICAgICAgIDxhbmFseXplVGltZW91dD42MDA8L2FuYWx5emVUaW1lb3V0Pg0KKyAgICAgICAgICAgICAgICAgICAgPGVuYWJsZVBhcmFsbGVsPjA8L2VuYWJsZVBhcmFsbGVsPg0KKyAgICAgICAgICAgICAgICAgICAgPHBhcmFsbGVsVGhyZWFkcz4yPC9wYXJhbGxlbFRocmVhZHM+DQorICAgICAgICAgICAgICAgICAgICA8ZW5hYmxlRmFsc2VQb3NpdGl2ZXM+MDwvZW5hYmxlRmFsc2VQb3NpdGl2ZXM+DQorICAgICAgICAgICAgICAgICAgICA8bWVzc2FnZXNMaW1pdEVuYWJsZWQ+MTwvbWVzc2FnZXNMaW1pdEVuYWJsZWQ+DQorICAgICAgICAgICAgICAgICAgICA8bWVzc2FnZXNMaW1pdD4xMDA8L21lc3NhZ2VzTGltaXQ+DQorICAgICAgICAgICAgICAgIDwvY3N0YXRhcmdzPg0KKyAgICAgICAgICAgICAgICA8Y3N0YXRfc2V0dGluZ3M+DQorICAgICAgICAgICAgICAgICAgICA8Y3N0YXRfdmVyc2lvbj4xLjUuMDwvY3N0YXRfdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxjaGVja3NfdHJlZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVERDSEVDS1MiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXB0ci1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItbmVnLWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi11bmluaXQtaW5kZXgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtZmxvYXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC11bnNpZ24tbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtaW50ZXJ2YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstZ2xvYmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC11bmNoay1sb2NhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1pbmMtYm9vbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbWFsbG9jLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1ub25uZWciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5ldy1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtb3ZlcmZsb3ctY2FzdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtb3ZlcmZsb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LWJvdW5kcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2hpZnQtbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaXplb2YtYnktc2l6ZW9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FTVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNBU1Qtb2xkLXN0eWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0giPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENILW9iamVjdC1zbGljaW5nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVRDSC14dG9yLWJhZC1tZW1iZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT01NQSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPTU1BLW92ZXJsb2FkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVC1uZXN0ZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT05TVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QtbWVtYmVyLXJldCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1hbGxvYy1jdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3AtcmV0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3Atc2VsZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1jb3B5LWN0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1kZWFsbG9jLWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3ItdGhyb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtb3JkZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1tZW1iZXItdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtY3Rvci1jYWxsLXZpcnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNQVS1jdG9yLWltcGxpY2l0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdGhyb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWRlbGV0ZS12b2lkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kdG9yLWNhbGwtdmlydCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbWFsbG9jLWNsYXNzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1ub252aXJ0LWR0b3IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLXJldHVybi1yZWYtdG8tY2xhc3MtZGF0YSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFQ0wiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJERUNMLWltcGxpY2l0LWludCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iREVGSU5FLWhhc2gtbXVsdGlwbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFTlVNIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRU5VTS1ib3VuZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUC1jb25kLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtZGFuZ2xpbmctZWxzZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtbG9vcC1leGl0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbWFpbi1yZXQtaW50IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbnVsbC1zdG10IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtc3RyYXktc2VtaWNvbG9uIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUi1jb25zdC1vdmVyZmxvdyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULWNtcC1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGUFQtbGl0ZXJhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQtbWlzdXNlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlVOQyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtaW1wbGljaXQtZGVjbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlVOQy11bnByb3RvdHlwZWQtYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLXVzZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTkNMVURFIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5DTFVERS1jLWZpbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJTlQtdXNlLXNpZ25lZC1hcy11bnNpZ25lZC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1lbmQtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWludmFsaWRhdGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItbWlzbWF0Y2gtYWxnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItc3RvcmUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1ic2VhcmNoLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZm4tdW5zYWZlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZnJlYWQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbWNoci1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1wdXRlbnYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1jb25zdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWVycm9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbGVhayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW51bGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zcHJpbnRmLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdGQtc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RyY2F0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTE9HSUMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMT0dJQy1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1hcnJheS1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZGVsZXRlLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kb3VibGUtZnJlZS1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZnB0ciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2Mtc3RydWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tZnJlZS1uby1hbGxvYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1uby11c2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtb3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtc3RydWN0LWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1sZWFrLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbGVhayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLW1hbGxvYy1hcml0aCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLWRpZmYtdHlwZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLXNpemVvZi1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2Mtc3RybGVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZWFsbG9jLWRpZmYtdHlwZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmV0dXJuLWZyZWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1uby1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stZ2xvYmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbS1yZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2siIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tdXNlLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1zdGFjayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtdmFyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1jbXAtc3RyLWxpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduLWZ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZi1mdW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1saXRlcmFsLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW92ZXJsb2FkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmNoay1wYXJhbS1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi11bmluaXQtcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmluaXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtYWxsb2MtemVyby1ieXRlcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNhc2UtcmVhY2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jbXAtYWx3YXlzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLW5ldmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1hbHdheXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdC1leHByIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtbmV2ZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWRlYWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1leHByIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZnVuYy1uby1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWxvY2FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtbWVtYmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1wYXJhbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELW5vLWVmZmVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtc2VsZi1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcmV0dXJuLXZhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELXVudXNlZC12YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC12YXItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1kZXJlZi1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWRvdWJsZS1jbG9zZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLW5vLWNsb3NlLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1wb3MtbmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWZpbGUtdXNlLWFmdGVyLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1pbXBsaWNpdC1kZXJlZi1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLXdyaXRlLXJvbmx5LWZpbGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0YiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNJWkVPRi1zaWRlLWVmZmVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLW9yZGVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdW5pbml0LWFyci1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQtaGVhcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC12YXItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS1yZWFkcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXZvbGF0aWxlLXdyaXRlcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNUUlVDVCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNUUlVDVC1zaWduZWQtYml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTV0lUQ0gtZmFsbC10aHJvdWdoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJUSFJPVy1lbXB0eSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctbWFpbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXB0ciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1zdGF0aWMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctdW5oYW5kbGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04iPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLW92ZXJsYXAtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLXR5cGUtcHVubmluZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNFUlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQMTktQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTzM3LUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zOC1DIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1TSUciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHMzEtQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQ1VSSVRZIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWstYWxpYXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1xc29ydC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3ByaW50Zi1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RkLXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY2F0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtYWxsb2Mtc2l6ZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtY29weS1sZW5ndGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1vZmZzZXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1hZnRlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1iZWZvcmUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLXRhaW50ZWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLW9wZW4tbm8tY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1GSUxFT1AtcGF0aC10cmF2ZXJzYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC11c2UtYWZ0ZXItY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtSU5KRUNUSU9OIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUlOSkVDVElPTi1zcWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04teHBhdGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTE9PUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AtdGFpbnRlZC1ib3VuZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtYXNzaWdubWVudC1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWFmdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmLWZ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtTlVMTC1saXRlcmFsLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkctZm9ybWF0LXN0cmluZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLVNUUklORy1oYXJkLWNvZGVkLWNyZWRlbnRpYWxzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2oiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC03LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguOF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC44X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtOC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOCAxMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuM19pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2kiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19oIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2oiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19rIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19vIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM191IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M5OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS02LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjVfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC40X2M4OSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTktMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC05IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTExX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC04IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTktMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yNy0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2FnZT4NCisgICAgICAgICAgICAgICAgICAgIDwvY2hlY2tzX3RyZWU+DQorICAgICAgICAgICAgICAgIDwvY3N0YXRfc2V0dGluZ3M+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5SdW50aW1lQ2hlY2tpbmc8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRGVidWdIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZUJvdW5kc0NoZWNraW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyTWVtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y1RyYWNrUG9pbnRlckJvdW5kczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja0FjY2Vzc2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0dlbmVyYXRlRW50cmllczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNOclRyYWNrZWRQb2ludGVyczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRPdmVyZmxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNVbnNpZ25lZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRDb252ZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xFeHBsaWNpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbnRTaGlmdE92ZXJmbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY2xVbnNpZ25lZFNoaWZ0T3ZlcmZsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjVW5oYW5kbGVkQ2FzZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNEaXZCeVplcm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrUHRyc05vbkluc3RyRnVuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KICAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydGFzbS5zPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydG1hY3JvLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KKyAgICAgICAgPG5hbWU+QXRtZWxfTGliQm9hcmQ8L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9sb3dsZXZlbC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xyZXNvdXJjZXNcSUFSXHN0YXJ0dXBfc2FtLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xzeXN0ZW1fc2FtLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkF0bWVsX0xpYkNoaXA8L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHBpby5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwbWMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2Vcc3VwYy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx0Yy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGdyb3VwPg0KKyAgICAgICAgPG5hbWU+Qmxpbmt5X0RlbW88L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZyZWVSVE9TX1NvdXJjZTwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0YXNtLnM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnRtYWNyby5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZ1bGxfRGVtbzwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5Db21tb25fRGVtb19UYXNrczwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRTZW1UZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlU2V0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGFza05vdGlmeS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5oPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xSZWdUZXN0LnM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQogICAgIDwvZ3JvdXA+DQogICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQogICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnVsbF9EZW1vPC9uYW1lPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+Q29tbW9uX0RlbW9fVGFza3M8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50UXVldWUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFNlbVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZVNldC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRhc2tOb3RpZnkuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuaDwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xSZWdUZXN0LnM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQotICA8L2ZpbGU+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvbWFpbi5jCmluZGV4IGE2ZjIyYzIuLmY2MmNiZGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uRGVidWcuY3NweS5iYXQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uRGVidWcuY3NweS5iYXQKaW5kZXggYzQxZTNjMC4uNGE4ZTU0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLkRlYnVnLmNzcHkuYmF0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5EZWJ1Zy5jc3B5LmJhdApAQCAtMjUsNyArMjUsNyBAQAogDQogQGVjaG8gb24gDQogDQotIkM6XERldlRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA3LjRcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXHNldHRpbmdzXFJUT1NEZW1vLkRlYnVnLmdlbmVyYWwueGNsIiAtLWJhY2tlbmQgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbFxzZXR0aW5nc1xSVE9TRGVtby5EZWJ1Zy5kcml2ZXIueGNsIiANCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxjb21tb25cYmluXGNzcHliYXQiIC1mICJDOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZ2VuZXJhbC54Y2wiIC0tYmFja2VuZCAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXHNldHRpbmdzXFJUT1NEZW1vLkRlYnVnLmRyaXZlci54Y2wiIA0KIA0KIEBlY2hvIG9mZiANCiBnb3RvIGVuZCANCkBAIC0zNCw3ICszNCw3IEBACiANCiBAZWNobyBvbiANCiANCi0iQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxjb21tb25cYmluXGNzcHliYXQiIC1mICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZ2VuZXJhbC54Y2wiICItLWRlYnVnX2ZpbGU9JX4xIiAtLWJhY2tlbmQgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbFxzZXR0aW5nc1xSVE9TRGVtby5EZWJ1Zy5kcml2ZXIueGNsIiANCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxjb21tb25cYmluXGNzcHliYXQiIC1mICJDOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZ2VuZXJhbC54Y2wiICItLWRlYnVnX2ZpbGU9JX4xIiAtLWJhY2tlbmQgLWYgIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbFxzZXR0aW5nc1xSVE9TRGVtby5EZWJ1Zy5kcml2ZXIueGNsIiANCiANCiBAZWNobyBvZmYgDQogOmVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5jcnVuIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KaW5kZXggNWJiNWFjYy4uNjJjMjFiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmNydW4KQEAgLTEsMTYgKzEsMTMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxjcnVuPg0KLSAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gIDxmaWx0ZXJfZW50cmllcz4NCi0gICAgPGZpbHRlciBpbmRleD0iMCIgdHlwZT0iZGVmYXVsdCI+DQotICAgICAgPHR5cGU+KjwvdHlwZT4NCi0gICAgICA8c3RhcnRfZmlsZT4qPC9zdGFydF9maWxlPg0KLSAgICAgIDxlbmRfZmlsZT4qPC9lbmRfZmlsZT4NCi0gICAgICA8YWN0aW9uX2RlYnVnZ2VyPjA8L2FjdGlvbl9kZWJ1Z2dlcj4NCi0gICAgICA8YWN0aW9uX2xvZz4xPC9hY3Rpb25fbG9nPg0KLSAgICA8L2ZpbHRlcj4NCi0gIDwvZmlsdGVyX2VudHJpZXM+DQorICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgIDxmaWx0ZXJfZW50cmllcz4NCisgICAgICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KKyAgICAgICAgICAgIDx0eXBlPio8L3R5cGU+DQorICAgICAgICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCisgICAgICAgICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQorICAgICAgICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQorICAgICAgICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCisgICAgICAgIDwvZmlsdGVyPg0KKyAgICA8L2ZpbHRlcl9lbnRyaWVzPg0KIDwvY3J1bj4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKaW5kZXggNDU5NDBiNi4uOGY2NDdlNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdApAQCAtMSwxMTEgKzEsMjkwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQogPFByb2plY3Q+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8RGVidWctTG9nPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+PC9EZWJ1Zy1Mb2c+DQotICAgICAgPEJ1aWxkPg0KLSAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KLSAgICAgICAgPENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+DQotICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KLSAgICAgICAgPENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPg0KLSAgICAgIDwvQnVpbGQ+DQotICAgICAgPFdvcmtzcGFjZT4NCi0gICAgICAgIDxDb2x1bW5XaWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPENvbHVtbjA+MTU3PC9Db2x1bW4wPjxDb2x1bW4xPjI3PC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjI3PC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KLSAgICAgIDwvV29ya3NwYWNlPg0KLSAgICAgIDxEaXNhc3NlbWJseT4NCi0gICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+DQotICAgICAgICA8Y29sLW5hbWVzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8aXRlbT5EaXNhc3NlbWJseTwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+DQotICAgICAgICA8Y29sLXdpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPjxpdGVtPjIwPC9pdGVtPjwvY29sLXdpZHRocz4NCi0gICAgICAgIDxEaXNhc21IaXN0b3J5Lz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPFNob3dDb2RlQ292ZXJhZ2U+MTwvU2hvd0NvZGVDb3ZlcmFnZT48U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz48L0Rpc2Fzc2VtYmx5Pg0KLSAgICAgIDxSZWdpc3Rlcj48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjwvUmVnaXN0ZXI+DQotICAgICAgPENhbGxTdGFjaz4NCi0gICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQotICAgICAgICAgIDxQb3NpdGlvbj4xPC9Qb3NpdGlvbj4NCi0gICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCi0gICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCi0gICAgICAgICAgPFdpbmRvd3MvPg0KLSAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQotICAgICAgICA8Y29sLW5hbWVzPg0KLSAgICAgICAgICA8aXRlbT5GcmFtZTwvaXRlbT4NCi0gICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KLSAgICAgICAgPC9jb2wtbmFtZXM+DQotICAgICAgICA8Y29sLXdpZHRocz4NCi0gICAgICAgICAgPGl0ZW0+MzUwMDwvaXRlbT4NCi0gICAgICAgICAgPGl0ZW0+MjA8L2l0ZW0+DQotICAgICAgICA8L2NvbC13aWR0aHM+DQotICAgICAgPC9DYWxsU3RhY2s+DQotICAgIDxRdWlja1dhdGNoPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5FeHByZXNzaW9uPC9pdGVtPjxpdGVtPkxvY2F0aW9uPC9pdGVtPjxpdGVtPlR5cGU8L2l0ZW0+PGl0ZW0+VmFsdWU8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48UVdhdGNoSGlzdG9yeT48aXRlbT51bHg8L2l0ZW0+PC9RV2F0Y2hIaXN0b3J5PjwvUXVpY2tXYXRjaD48L1N0YXRpYz4NCi0gICAgPFdpbmRvd3M+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxXbmQwPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE5ODU4LTk4MTg8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTkzMzUtOTgyODwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDA+PFduZDE+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMzA2MDYtOTgyMTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPU19Tb3VyY2U8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TX1NvdXJjZS9Qb3J0YWJsZTwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDE+PC9XaW5kb3dzPg0KLSAgICA8RWRpdG9yPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8UGFuZT48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXG1haW4uYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjExNDwvWVBvczI+PFNlbFN0YXJ0Mj42NDExPC9TZWxTdGFydDI+PFNlbEVuZDI+NjQxMTwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjIxOTwvWVBvczI+PFNlbFN0YXJ0Mj4xMTMwNDwvU2VsU3RhcnQyPjxTZWxFbmQyPjExMzA0PC9TZWxFbmQyPjwvVGFiPjxBY3RpdmVUYWI+MTwvQWN0aXZlVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjE0NDwvWVBvczI+PFNlbFN0YXJ0Mj43MzE0PC9TZWxTdGFydDI+PFNlbEVuZDI+NzMxNDwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9sb3dsZXZlbC5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NDM8L1lQb3MyPjxTZWxTdGFydDI+MjkxMzwvU2VsU3RhcnQyPjxTZWxFbmQyPjI5MTM8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjM1OTwvWVBvczI+PFNlbFN0YXJ0Mj4xNDE0MTwvU2VsU3RhcnQyPjxTZWxFbmQyPjE0MTQxPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGVccG9ydGFibGUuaDwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjc3PC9ZUG9zMj48U2VsU3RhcnQyPjUyMjc8L1NlbFN0YXJ0Mj48U2VsRW5kMj41MjI3PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAwQ0Q4RjkwPjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMENEOEY5MD48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXM+PFRvb2xiYXItMTI2NzBBQzg+PGtleT5kZWJ1Z2dlcmd1aS5lbnUxPC9rZXk+PC9Ub29sYmFyLTEyNjcwQUM4PjwvU2l6ZXM+PC9Sb3cxPjxSb3cyPjxTaXplcz48VG9vbGJhci0xMjY3MEM1OD48a2V5PmFybWpsaW5rLmVudTE8L2tleT48L1Rvb2xiYXItMTI2NzBDNTg+PC9TaXplcz48L1JvdzI+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQxPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjYzMTwvQm90dG9tPjxSaWdodD4yMzE8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMzg2OTA8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NjQzMjkzPC9zaXplVmVydENZPjwvUmVjdD48L1duZDE+PC9TaXplcz48L1JvdzA+PC9MZWZ0PjxSaWdodD48Um93MD48U2l6ZXMvPjwvUm93MD48L1JpZ2h0PjxCb3R0b20+PFJvdzA+PFNpemVzPjxXbmQwPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjI2MTwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4xNjg0PC94c2NyZWVuPjx5c2NyZWVuPjI2MzwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjI2NzI3Njwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPjwvUmVjdD48L1duZDA+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCi0gIDwvRGVza3RvcD4NCisgICAgPERlc2t0b3A+DQorICAgICAgICA8U3RhdGljPg0KKyAgICAgICAgICAgIDxEZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgPC9EZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9CdWlsZD4NCisgICAgICAgICAgICA8V29ya3NwYWNlPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MTU3PC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+Mjc8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMj4yNzwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4zPjI3PC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICA8L1dvcmtzcGFjZT4NCisgICAgICAgICAgICA8RGlzYXNzZW1ibHk+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjUwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxEaXNhc21IaXN0b3J5IC8+DQorICAgICAgICAgICAgICAgIDxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+DQorICAgICAgICAgICAgICAgIDxTaG93SW5zdHJQcm9maWxpbmc+MTwvU2hvd0luc3RyUHJvZmlsaW5nPg0KKyAgICAgICAgICAgIDwvRGlzYXNzZW1ibHk+DQorICAgICAgICAgICAgPFJlZ2lzdGVyPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICA8L1JlZ2lzdGVyPg0KKyAgICAgICAgICAgIDxDYWxsU3RhY2s+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MTwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RnJhbWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM1MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQ2FsbFN0YWNrPg0KKyAgICAgICAgICAgIDxRdWlja1dhdGNoPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkV4cHJlc3Npb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5Mb2NhdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlR5cGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYWx1ZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTUwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxRV2F0Y2hIaXN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+dWx4PC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1FXYXRjaEhpc3Rvcnk+DQorICAgICAgICAgICAgPC9RdWlja1dhdGNoPg0KKyAgICAgICAgPC9TdGF0aWM+DQorICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICA8V25kMD4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTg1OC05ODE4PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE5MzM1LTk4Mjg8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQwPg0KKyAgICAgICAgICAgIDxXbmQxPg0KKyAgICAgICAgICAgICAgICA8VGFicz4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTMwNjA2LTk4MjE8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1NfU291cmNlPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TX1NvdXJjZS9Qb3J0YWJsZTwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDE+DQorICAgICAgICA8L1dpbmRvd3M+DQorICAgICAgICA8RWRpdG9yPg0KKyAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj4xMTQ8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42NDExPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42NDExPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+MjE5PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+MTEzMDQ8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjExMzA0PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPEFjdGl2ZVRhYj4xPC9BY3RpdmVUYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj4xNDQ8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj43MzE0PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj43MzE0PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj40MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjI5MTM8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjI5MTM8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjM1OTwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjE0MTQxPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj4xNDE0MTwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlXHBvcnRhYmxlLmg8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj43NzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjUyMjc8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjUyMjc8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPg0KKyAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgICAgICA8WD4xMDAwMDAwPC9YPg0KKyAgICAgICAgICAgICAgICAgICAgPFk+MTAwMDAwMDwvWT4NCisgICAgICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgPFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+DQorICAgICAgICA8L0VkaXRvcj4NCisgICAgICAgIDxQb3NpdGlvbnM+DQorICAgICAgICAgICAgPFRvcD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMDBDRDhGOTA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+aWFyaWRlcG0uZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0wMENEOEY5MD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICAgICAgPFJvdzE+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMTI2NzBBQzg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+ZGVidWdnZXJndWkuZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0xMjY3MEFDOD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MT4NCisgICAgICAgICAgICAgICAgPFJvdzI+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMTI2NzBDNTg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+YXJtamxpbmsuZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0xMjY3MEM1OD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93Mj4NCisgICAgICAgICAgICA8L1RvcD4NCisgICAgICAgICAgICA8TGVmdD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjYzMTwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjIzMTwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MjAwPC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjAwPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTM4NjkwPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NjQzMjkzPC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvTGVmdD4NCisgICAgICAgICAgICA8UmlnaHQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1JpZ2h0Pg0KKyAgICAgICAgICAgIDxCb3R0b20+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT4yNjE8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4xNjgyPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4xNjg0PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjYzPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjI2NzI3Njwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0JvdHRvbT4NCisgICAgICAgICAgICA8RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxTaXplcyAvPg0KKyAgICAgICAgICAgIDwvRmxvYXQ+DQorICAgICAgICA8L1Bvc2l0aW9ucz4NCisgICAgPC9EZXNrdG9wPg0KKyAgICA8V2luZG93U3RvcmFnZSAvPg0KIDwvUHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby53c2R0CmluZGV4IDllOGFhNDMuLmRlYTA2NjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby53c2R0CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby53c2R0CkBAIC0xLDc2ICsxLDU2MyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KIDxXb3Jrc3BhY2U+DQotICA8Q29uZmlnRGljdGlvbmFyeT4NCi0gICAgDQotICA8Q3VycmVudENvbmZpZ3M+PFByb2plY3Q+UlRPU0RlbW8vRGVidWc8L1Byb2plY3Q+PC9DdXJyZW50Q29uZmlncz48L0NvbmZpZ0RpY3Rpb25hcnk+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4yMzc8L0NvbHVtbjA+PENvbHVtbjE+Mjc8L0NvbHVtbjE+PENvbHVtbjI+Mjc8L0NvbHVtbjI+PENvbHVtbjM+Mjc8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPEJ1aWxkPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPjwvQnVpbGQ+DQotICAgICAgPERlYnVnLUxvZz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPg0KLSAgICA8VGVybWluYWxJTy8+PEZpbmQtaW4tRmlsZXM+PENvbHVtbldpZHRoMD40OTc8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjMzMTwvQ29sdW1uV2lkdGgzPjwvRmluZC1pbi1GaWxlcz48L1N0YXRpYz4NCi0gICAgPFdpbmRvd3M+DQotICAgICAgDQotICAgICAgDQotICAgIDxXbmQxPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTIzMjg4LTk2OTQ8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDE+PFduZDM+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTM2NDktMjAzMTM8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE1OTUwLTIzMzQwPC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8VGFiPjxJZGVudGl0eT5UYWJJRC0zMDMxNS0xOTg1NjwvSWRlbnRpdHk+PFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT48RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQzPjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj42NDExPC9TZWxTdGFydDI+PFNlbEVuZDI+NjQxMTwvU2VsRW5kMj48L1RhYj48QWN0aXZlVGFiPjA8L0FjdGl2ZVRhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY5PC9ZUG9zMj48U2VsU3RhcnQyPjExMzA0PC9TZWxTdGFydDI+PFNlbEVuZDI+MTEzMDQ8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjY8L1lQb3MyPjxTZWxTdGFydDI+NzMxNDwvU2VsU3RhcnQyPjxTZWxFbmQyPjczMTQ8L1NlbEVuZDI+PC9UYWI+PC9QYW5lPjxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+PFNpemVzPjxQYW5lPjxYPjEwMDAwMDA8L1g+PFk+MTAwMDAwMDwvWT48L1BhbmU+PC9TaXplcz48U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT48L0VkaXRvcj4NCi0gICAgPFBvc2l0aW9ucz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFRvcD48Um93MD48U2l6ZXM+PFRvb2xiYXItMDBEQzE5OTg+PGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+PC9Ub29sYmFyLTAwREMxOTk4PjwvU2l6ZXM+PC9Sb3cwPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMT48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT44OTQ8L0JvdHRvbT48UmlnaHQ+MzExPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMjk8L3hzY3JlZW4+PHlzY3JlZW4+MjAxPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTI3MTwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xNzcyNDk8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTYzMDIxPC9zaXplVmVydENYPjxzaXplVmVydENZPjc5MDEyMzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQxPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzLz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMz48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4xOTY8L0JvdHRvbT48UmlnaHQ+MTkyMjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTkyNDwveHNjcmVlbj48eXNjcmVlbj4xOTg8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjA4Mzwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xNzQ2MDM8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTE5MjcxPC9zaXplVmVydENYPjxzaXplVmVydENZPjE3NzI0OTwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQzPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxDb25maWdEaWN0aW9uYXJ5Pg0KKyAgICAgICAgPEN1cnJlbnRDb25maWdzPg0KKyAgICAgICAgICAgIDxQcm9qZWN0PlJUT1NEZW1vL0RlYnVnPC9Qcm9qZWN0Pg0KKyAgICAgICAgPC9DdXJyZW50Q29uZmlncz4NCisgICAgPC9Db25maWdEaWN0aW9uYXJ5Pg0KKyAgICA8RGVza3RvcD4NCisgICAgICAgIDxTdGF0aWM+DQorICAgICAgICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjIzNzwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjI3PC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4yNzwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9CdWlsZD4NCisgICAgICAgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgIDwvRGVidWctTG9nPg0KKyAgICAgICAgICAgIDxUZXJtaW5hbElPIC8+DQorICAgICAgICAgICAgPEZpbmQtaW4tRmlsZXM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+NDk3PC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICA8L0ZpbmQtaW4tRmlsZXM+DQorICAgICAgICA8L1N0YXRpYz4NCisgICAgICAgIDxXaW5kb3dzPg0KKyAgICAgICAgICAgIDxXbmQxPg0KKyAgICAgICAgICAgICAgICA8VGFicz4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTIzMjg4LTk2OTQ8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ob2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Nlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgIDxXbmQzPg0KKyAgICAgICAgICAgICAgICA8VGFicz4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTEzNjQ5LTIwMzEzPC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNTk1MC0yMzM0MDwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0zMDMxNS0xOTg1NjwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQzPg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjM8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42NDExPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42NDExPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjY5PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+MTEzMDQ8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjExMzA0PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjY2PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NzMxNDwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NzMxNDwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+DQorICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgICAgIDxYPjEwMDAwMDA8L1g+DQorICAgICAgICAgICAgICAgICAgICA8WT4xMDAwMDAwPC9ZPg0KKyAgICAgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICA8U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT4NCisgICAgICAgIDwvRWRpdG9yPg0KKyAgICAgICAgPFBvc2l0aW9ucz4NCisgICAgICAgICAgICA8VG9wPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhci0wMERDMTk5OD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyLTAwREMxOTk4Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvVG9wPg0KKyAgICAgICAgICAgIDxMZWZ0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+ODk0PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MzExPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMjk8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDE8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMTkyNzE8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4xNzcyNDk8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xNjMwMjE8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43OTAxMjM8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDE+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9MZWZ0Pg0KKyAgICAgICAgICAgIDxSaWdodD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvUmlnaHQ+DQorICAgICAgICAgICAgPEJvdHRvbT4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDM+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjE5NjwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE5MjI8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4xOTg8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDAyMDgzPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTc0NjAzPC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTE5MjcxPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+MTc3MjQ5PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQzPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvQm90dG9tPg0KKyAgICAgICAgICAgIDxGbG9hdD4NCisgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgPC9GbG9hdD4NCisgICAgICAgIDwvUG9zaXRpb25zPg0KKyAgICA8L0Rlc2t0b3A+DQorICAgIDxXaW5kb3dTdG9yYWdlPg0KKyAgICAgICAgPENoaWxkSWRNYXA+DQorICAgICAgICAgICAgPFRCX0NNU0lTUEFDSz4zNDA0ODwvVEJfQ01TSVNQQUNLPg0KKyAgICAgICAgICAgIDxUQl9NQUlOPjM0MDQ5PC9UQl9NQUlOPg0KKyAgICAgICAgICAgIDxXSU5fQlJFQUtQT0lOVFM+MzQwNTA8L1dJTl9CUkVBS1BPSU5UUz4NCisgICAgICAgICAgICA8V0lOX0JVSUxEPjM0MDUxPC9XSU5fQlVJTEQ+DQorICAgICAgICAgICAgPFdJTl9DQUxMX0dSQVBIPjM0MDUyPC9XSU5fQ0FMTF9HUkFQSD4NCisgICAgICAgICAgICA8V0lOX0NNU0lTUEFDS19BR0VOVF9MT0c+MzQwNTM8L1dJTl9DTVNJU1BBQ0tfQUdFTlRfTE9HPg0KKyAgICAgICAgICAgIDxXSU5fQ1VTVE9NX1NGUj4zNDA1NDwvV0lOX0NVU1RPTV9TRlI+DQorICAgICAgICAgICAgPFdJTl9DX1NUQVQ+MzQwNTU8L1dJTl9DX1NUQVQ+DQorICAgICAgICAgICAgPFdJTl9ERUJVR19MT0c+MzQwNTY8L1dJTl9ERUJVR19MT0c+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+MzQwNTc8L1dJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9SRUZFUkVOQ0VTPjM0MDU4PC9XSU5fRklORF9BTExfUkVGRVJFTkNFUz4NCisgICAgICAgICAgICA8V0lOX0ZJTkRfSU5fRklMRVM+MzQwNTk8L1dJTl9GSU5EX0lOX0ZJTEVTPg0KKyAgICAgICAgICAgIDxXSU5fU0VMRUNUX0FNQklHVU9VU19ERUZJTklUSU9OUz4zNDA2MDwvV0lOX1NFTEVDVF9BTUJJR1VPVVNfREVGSU5JVElPTlM+DQorICAgICAgICAgICAgPFdJTl9TT1VSQ0VfQlJPV1NFUj4zNDA2MTwvV0lOX1NPVVJDRV9CUk9XU0VSPg0KKyAgICAgICAgICAgIDxXSU5fVE9PTF9PVVRQVVQ+MzQwNjI8L1dJTl9UT09MX09VVFBVVD4NCisgICAgICAgICAgICA8V0lOX1dPUktTUEFDRT4zNDA2MzwvV0lOX1dPUktTUEFDRT4NCisgICAgICAgIDwvQ2hpbGRJZE1hcD4NCisgICAgICAgIDxEZXNrdG9wPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0MDAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzQwMDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDI0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjA3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQ0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDkwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAyNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDY1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDUzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0Mzk5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM4PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIxPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTg2MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT48L0xpdmVGaWxlPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUxvZ0VuYWJsZWQ+MDwvTGl2ZUxvZ0VuYWJsZWQ+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsdGVyTGV2ZWw+LTE8L0xpdmVGaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNTY+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMDg8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4zMDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjMwPC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+MzA8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDwvQ29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxDb250cm9sQmFyVmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPE1ham9yPjE0PC9NYWpvcj4NCisgICAgICAgICAgICAgICAgPE1pbm9yPjEwPC9NaW5vcj4NCisgICAgICAgICAgICA8L0NvbnRyb2xCYXJWZXJzaW9uPg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyUGFyYW1ldGVycz4NCisgICAgICAgICAgICAgICAgPFRvb2x0aXBzPjE8L1Rvb2x0aXBzPg0KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXRLZXlzPjE8L1Nob3J0Y3V0S2V5cz4NCisgICAgICAgICAgICAgICAgPExhcmdlSWNvbnM+MDwvTGFyZ2VJY29ucz4NCisgICAgICAgICAgICAgICAgPE1lbnVBbmltYXRpb24+MDwvTWVudUFuaW1hdGlvbj4NCisgICAgICAgICAgICAgICAgPFJlY2VudGx5VXNlZE1lbnVzPjE8L1JlY2VudGx5VXNlZE1lbnVzPg0KKyAgICAgICAgICAgICAgICA8TWVudVNoYWRvd3M+MTwvTWVudVNoYWRvd3M+DQorICAgICAgICAgICAgICAgIDxTaG93QWxsTWVudXNBZnRlckRlbGF5PjE8L1Nob3dBbGxNZW51c0FmdGVyRGVsYXk+DQorICAgICAgICAgICAgICAgIDxDb21tYW5kc1VzYWdlPjAwMDAwMDAwMDAwMDwvQ29tbWFuZHNVc2FnZT4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXJQYXJhbWV0ZXJzPg0KKyAgICAgICAgICAgIDxDb21tYW5kTWFuYWdlcj4NCisgICAgICAgICAgICAgICAgPENvbW1hbmRzV2l0aG91dEltYWdlcz4wNjAwMjBGMTAwMDAxMEYwMDAwMDAwRjAwMDAwMjBGMDAwMDAzMEYwMDAwMDYwRjAwMDAwPC9Db21tYW5kc1dpdGhvdXRJbWFnZXM+DQorICAgICAgICAgICAgICAgIDxNZW51VXNlckltYWdlcz4wMDAwPC9NZW51VXNlckltYWdlcz4NCisgICAgICAgICAgICA8L0NvbW1hbmRNYW5hZ2VyPg0KKyAgICAgICAgICAgIDxQYW5lLTU5MzkzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDBEQzAzMDAwMDgwMDcwMDAwRjUwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTU5MzkzPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUwPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUwPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MCAvPg0KKyAgICAgICAgICAgIDxQYW5lLS0xPg0KKyAgICAgICAgICAgICAgICA8SUQ+NDI5NDk2NzI5NTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAzOTAwMDAwMDE4MDEwMDAwRkQwMjAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLS0xPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0tMT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0tMT4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUxPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEzOTk8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zNzM8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz45MzwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT5DOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcQnVpbGRMb2cubG9nPC9MaXZlRmlsZT4NCisgICAgICAgICAgICAgICAgPExpdmVMb2dFbmFibGVkPjA8L0xpdmVMb2dFbmFibGVkPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbHRlckxldmVsPi0xPC9MaXZlRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMUUwMzAwMDA4MDA3MDAwMERDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTMgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU2PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTY+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTc8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Nz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTcgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU4IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTk+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1OTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1OSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2MD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjAgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2Mj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYyPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjI+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYyIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMEFEMDIwMDAwRDAwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMEFEMDIwMDAwQjMwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mj4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTIgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU0PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTU8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDAzNjAxMDAwMERCMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTU+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU1IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjE+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA1QTAwMDAwMDE0MDEwMDAwRDAwMTAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwNTYwMDAwMDAxODAxMDAwMEZEMDIwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgPERvY2tpbmdNYW5hZ2VyLTI1Nj4NCisgICAgICAgICAgICAgICAgPERvY2tpbmdQYW5lQW5kUGFuZURpdmlkZXJzPjAwMDAwMDAwMEMwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMTgwMTAwMDAzOTAwMDAwMDFDMDEwMDAwRkQwMjAwMDAwMTAwMDAwMDAyMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRjAyMDAwMDAwMEQ4NTAwMDAwRjg1MDAwMEZGRkYwMjAwMEIwMDQzNTQ2MTYyNjI2NTY0NTA2MTZFNjUwMDEwMDAwMDAxMDAwMDAwMDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDAwMDAwMDAwMDM5MDAwMDAwMTgwMTAwMDBGRDAyMDAwMDAwMDAwMDAwNDAxMDAwNTYwMjAwMDAwMEZGRkVGRjBFNTMwMDZGMDA3NTAwNzIwMDYzMDA2NTAwMjAwMDQyMDA3MjAwNkYwMDc3MDA3MzAwNjUwMDcyMDAwMDAwMDAwMDBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk1NzAwNkYwMDcyMDA2QjAwNzMwMDcwMDA2MTAwNjMwMDY1MDAwMTAwMDAwMDBGODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDc4NTAwMDAwMTAwMDAwMDA3ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDY4NTAwMDAwMTAwMDAwMDA2ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDQ4NTAwMDAwMTAwMDAwMDA0ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwRkQwMjAwMDA4MDA3MDAwMDAxMDMwMDAwMDEwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYwODAwMDAwMDAzODUwMDAwMDU4NTAwMDAwODg1MDAwMDA5ODUwMDAwMEE4NTAwMDAwQjg1MDAwMDBDODUwMDAwMEU4NTAwMDAwMTgwMDA4MDAwMDAwMTAwMDAwMDAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwMDAwMDAwMDAwMTAzMDAwMDgwMDcwMDAwREMwMzAwMDAwMDAwMDAwMDQwODAwMDU2MDgwMDAwMDBGRkZFRkYwNTQyMDA3NTAwNjkwMDZDMDA2NDAwMDEwMDAwMDAwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBFNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMDIwMDA0QzAwNkYwMDY3MDAwMDAwMDAwMDA1ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk0NDAwNjUwMDYyMDA3NTAwNjcwMDIwMDA0QzAwNkYwMDY3MDAwMTAwMDAwMDA4ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEM0NDAwNjUwMDYzMDA2QzAwNjEwMDcyMDA2MTAwNzQwMDY5MDA2RjAwNkUwMDczMDAwMDAwMDAwMDA5ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEE1MjAwNjUwMDY2MDA2NTAwNzIwMDY1MDA2RTAwNjMwMDY1MDA3MzAwMDAwMDAwMDAwQTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBENDYwMDY5MDA2RTAwNjQwMDIwMDA2OTAwNkUwMDIwMDA0NjAwNjkwMDZDMDA2NTAwNzMwMDAwMDAwMDAwMEI4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYxNTQxMDA2RDAwNjIwMDY5MDA2NzAwNzUwMDZGMDA3NTAwNzMwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNzMwMDAwMDAwMDAwMEM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwQjU0MDA2RjAwNkYwMDZDMDAyMDAwNEYwMDc1MDA3NDAwNzAwMDc1MDA3NDAwMDAwMDAwMDAwRTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAyODUwMDAwMDEwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwvRG9ja2luZ1BhbmVBbmRQYW5lRGl2aWRlcnM+DQorICAgICAgICAgICAgPC9Eb2NraW5nTWFuYWdlci0yNTY+DQorICAgICAgICAgICAgPE1GQ1Rvb2xCYXItMzQwNDg+DQorICAgICAgICAgICAgICAgIDxOYW1lPkNNU0lTLVBhY2s8L05hbWU+DQorICAgICAgICAgICAgICAgIDxCdXR0b25zPjAwMjAwMDAwMDEwMDAwMDAwMjAwRkZGRjAxMDAxMTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQyNzU3NDc0NkY2RUQwODQwMDAwMDAwMDA0MDAwQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODBEMTg0MDAwMDAwMDAwMDAwMEQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjBBNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OD4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAzMDAwMDFDMDAwMDAwNDcwMzAwMDAzODAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8TmFtZT5NYWluPC9OYW1lPg0KKyAgICAgICAgICAgICAgICA8QnV0dG9ucz4wMDIwMDAwMDAxMDAwMDAwMjAwMEZGRkYwMTAwMTEwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0Mjc1NzQ3NDZGNkUwMEUxMDAwMDAwMDAwMDAwMzYwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDFFMTAwMDAwMDAwMDAwMDM3MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAzRTEwMDAwMDAwMDA0MDAzOTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDgxMDAwMDAwMDAwMDAwMUEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDA3RTEwMDAwMDAwMDA0MDAzQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjNFMTAwMDAwMDAwMDQwMDNFMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDIyRTEwMDAwMDAwMDA0MDAzRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNUUxMDAwMDAwMDAwNDAwNDAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDJCRTEwMDAwMDAwMDA0MDA0MzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyQ0UxMDAwMDAwMDAwNDAwNDQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwRkZGRjAxMDAxOTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQzNkY2RDYyNkY0MjZGNzg0Mjc1NzQ3NDZGNkU0MjgxMDAwMDAwMDAwNDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDEwMDAwMDA3ODAwMDAwMDAyMDAyMDUwRkZGRkZGRkZGRkZFRkYwMDk2MDAwMDAwMDAwMDAwMDAwMDAwMDE4MDIxODEwMDAwMDAwMDA0MDAyRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNEUxMDAwMDAwMDAwNDAwM0YwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjhFMTAwMDAwMDAwMDQwMDQxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI5RTEwMDAwMDAwMDA0MDA0MjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMjgxMDAwMDAwMDAwNDAwMUMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjk4MTAwMDAwMDAwMDQwMDMxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI3ODEwMDAwMDAwMDA0MDAyRjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyODgxMDAwMDAwMDAwNDAwMzAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMUQ4MTAwMDAwMDAwMDQwMDI5MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDFFODEwMDAwMDAwMDA0MDAyQTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEI4MTAwMDAwMDAwMDQwMDIwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBDODEwMDAwMDAwMDAwMDAyMTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODA1Rjg2MDAwMDAwMDAwMDAwMzUwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBFODEwMDAwMDAwMDAwMDAyMzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwRjgxMDAwMDAwMDAwMDAwMjQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjA0NEQwMDYxMDA2OTAwNkUwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OT4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ5PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDFDMDAwMDAwMDAwMzAwMDAzOTAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDk+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgPC9EZXNrdG9wPg0KKyAgICAgICAgPE1ESVdpbmRvd3M+DQorICAgICAgICAgICAgPE1ESUNsaWVudEFyZWEtMD4NCisgICAgICAgICAgICAgICAgPE1ESVRhYnNTdGF0ZT4wMTAwMDAwMDAzMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAyODAwMDAwMDI4MDAwMDAwMDAwMDAwMDA8L01ESVRhYnNTdGF0ZT4NCisgICAgICAgICAgICA8L01ESUNsaWVudEFyZWEtMD4NCisgICAgICAgIDwvTURJV2luZG93cz4NCisgICAgPC9XaW5kb3dTdG9yYWdlPg0KIDwvV29ya3NwYWNlPg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1MmU3MzQ0Li4yZmVhODFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaAppbmRleCBkYzQzMWI1Li41MDM5Y2U0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDgyNjczODIuLmMwYWRmN2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zCmluZGV4IDA2MjkzYjcuLjE4NzQ1MGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9LZWlsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0tlaWwuYwppbmRleCAxMWVhMWE2Li4zNTc2ZjFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0tlaWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0tlaWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogX19hc20gdm9pZCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbiggdm9pZCApDQogew0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZGYyNjU3YS4uMjMxZDNkNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL21haW4uYwppbmRleCA4NTliODM1Li4zYWE2ZWI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGY3MWNkZS4uMzZkZmQ3MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9QYXJUZXN0LmMKaW5kZXggMWY5YjM3Yi4uNTgxMjk4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluLWZ1bGwuYwppbmRleCBlOWU4YWVkLi4xNzMzMzNiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluX2JsaW5reS5jCmluZGV4IDBkYjNjN2EuLmU4NTEwYTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvc2VyaWFsLmMKaW5kZXggMTIzYWFlMi4uNjEzZTZkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDUzNmU3ZjIuLjg2NDEwMTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvUGFyVGVzdC5jCmluZGV4IDk0ZDQ2YjIuLmE2NzQ1OTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbi1mdWxsLmMKaW5kZXggNmMzN2Q3YS4uM2QwNjJlYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYwppbmRleCA0NmJjNWI1Li4xZDQ1ZGEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL3NlcmlhbC5jCmluZGV4IGVkZGE2ZmUuLjYwMTRiMjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMmY3MDk4ZS4uMmY4ODQ3MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CmluZGV4IDc1MzliNDAuLjIzODkwNTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CkBAIC0xLDYwMCArMSw2MDIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyIgPz4NCi08UHJvamVjdE9wdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0icHJvamVjdF9vcHR4LnhzZCI+DQotDQotICA8U2NoZW1hVmVyc2lvbj4xLjA8L1NjaGVtYVZlcnNpb24+DQotDQotICA8SGVhZGVyPiMjIyB1VmlzaW9uIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlPC9IZWFkZXI+DQotDQotICA8RXh0ZW5zaW9ucz4NCi0gICAgPGNFeHQ+Ki5jOyouUzwvY0V4dD4NCi0gICAgPGFFeHQ+PC9hRXh0Pg0KLSAgICA8b0V4dD4qLm9iajwvb0V4dD4NCi0gICAgPGxFeHQ+Ki5saWI8L2xFeHQ+DQotICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0Pg0KLSAgICA8cEV4dD4qLnBsbTwvcEV4dD4NCi0gICAgPENwcFg+Ki5jcHA8L0NwcFg+DQotICAgIDxuTWlncmF0ZT4wPC9uTWlncmF0ZT4NCi0gIDwvRXh0ZW5zaW9ucz4NCi0NCi0gIDxEYXZlVG0+DQotICAgIDxkd0xvd0RhdGVUaW1lPjA8L2R3TG93RGF0ZVRpbWU+DQotICAgIDxkd0hpZ2hEYXRlVGltZT4wPC9kd0hpZ2hEYXRlVGltZT4NCi0gIDwvRGF2ZVRtPg0KLQ0KLSAgPFRhcmdldD4NCi0gICAgPFRhcmdldE5hbWU+UlRPU0RlbW9fR0NDX01QVTwvVGFyZ2V0TmFtZT4NCi0gICAgPFRvb2xzZXROdW1iZXI+MHgzPC9Ub29sc2V0TnVtYmVyPg0KLSAgICA8VG9vbHNldE5hbWU+QVJNLUdOVTwvVG9vbHNldE5hbWU+DQotICAgIDxUYXJnZXRPcHRpb24+DQotICAgICAgPENMS0FSTT4xMjAwMDAwMDwvQ0xLQVJNPg0KLSAgICAgIDxPUFRUVD4NCi0gICAgICAgIDxnRmxhZ3M+MTwvZ0ZsYWdzPg0KLSAgICAgICAgPEJlZXBBdEVuZD4xPC9CZWVwQXRFbmQ+DQotICAgICAgICA8UnVuU2ltPjA8L1J1blNpbT4NCi0gICAgICAgIDxSdW5UYXJnZXQ+MTwvUnVuVGFyZ2V0Pg0KLSAgICAgICAgPFJ1bkFiVWM+MDwvUnVuQWJVYz4NCi0gICAgICA8L09QVFRUPg0KLSAgICAgIDxPUFRIWD4NCi0gICAgICAgIDxIZXhTZWxlY3Rpb24+MTwvSGV4U2VsZWN0aW9uPg0KLSAgICAgICAgPEZsYXNoQnl0ZT42NTUzNTwvRmxhc2hCeXRlPg0KLSAgICAgICAgPEhleFJhbmdlTG93QWRkcmVzcz4wPC9IZXhSYW5nZUxvd0FkZHJlc3M+DQotICAgICAgICA8SGV4UmFuZ2VIaWdoQWRkcmVzcz4wPC9IZXhSYW5nZUhpZ2hBZGRyZXNzPg0KLSAgICAgICAgPEhleE9mZnNldD4wPC9IZXhPZmZzZXQ+DQotICAgICAgPC9PUFRIWD4NCi0gICAgICA8T1BUTEVYPg0KLSAgICAgICAgPFBhZ2VXaWR0aD4xMjA8L1BhZ2VXaWR0aD4NCi0gICAgICAgIDxQYWdlTGVuZ3RoPjY1PC9QYWdlTGVuZ3RoPg0KLSAgICAgICAgPFRhYlN0b3A+ODwvVGFiU3RvcD4NCi0gICAgICAgIDxMaXN0aW5nUGF0aD4uXExpc3RpbmdzXDwvTGlzdGluZ1BhdGg+DQotICAgICAgPC9PUFRMRVg+DQotICAgICAgPExpc3RpbmdQYWdlPg0KLSAgICAgICAgPENyZWF0ZUNMaXN0aW5nPjE8L0NyZWF0ZUNMaXN0aW5nPg0KLSAgICAgICAgPENyZWF0ZUFMaXN0aW5nPjE8L0NyZWF0ZUFMaXN0aW5nPg0KLSAgICAgICAgPENyZWF0ZUxMaXN0aW5nPjE8L0NyZWF0ZUxMaXN0aW5nPg0KLSAgICAgICAgPENyZWF0ZUlMaXN0aW5nPjA8L0NyZWF0ZUlMaXN0aW5nPg0KLSAgICAgICAgPEFzbUNvbmQ+MTwvQXNtQ29uZD4NCi0gICAgICAgIDxBc21TeW1iPjE8L0FzbVN5bWI+DQotICAgICAgICA8QXNtWHJlZj4wPC9Bc21YcmVmPg0KLSAgICAgICAgPENDb25kPjE8L0NDb25kPg0KLSAgICAgICAgPENDb2RlPjA8L0NDb2RlPg0KLSAgICAgICAgPENMaXN0SW5jPjA8L0NMaXN0SW5jPg0KLSAgICAgICAgPENTeW1iPjA8L0NTeW1iPg0KLSAgICAgICAgPExpbmtlckNvZGVMaXN0aW5nPjA8L0xpbmtlckNvZGVMaXN0aW5nPg0KLSAgICAgIDwvTGlzdGluZ1BhZ2U+DQotICAgICAgPE9QVFhMPg0KLSAgICAgICAgPExNYXA+MTwvTE1hcD4NCi0gICAgICAgIDxMQ29tbWVudHM+MTwvTENvbW1lbnRzPg0KLSAgICAgICAgPExHZW5lcmF0ZVN5bWJvbHM+MTwvTEdlbmVyYXRlU3ltYm9scz4NCi0gICAgICAgIDxMTGliU3ltPjE8L0xMaWJTeW0+DQotICAgICAgICA8TExpbmVzPjE8L0xMaW5lcz4NCi0gICAgICAgIDxMTG9jU3ltPjE8L0xMb2NTeW0+DQotICAgICAgICA8TFB1YlN5bT4xPC9MUHViU3ltPg0KLSAgICAgICAgPExYcmVmPjA8L0xYcmVmPg0KLSAgICAgICAgPExFeHBTZWw+MDwvTEV4cFNlbD4NCi0gICAgICA8L09QVFhMPg0KLSAgICAgIDxPUFRGTD4NCi0gICAgICAgIDx0dkV4cD4xPC90dkV4cD4NCi0gICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICAgIDxJc0N1cnJlbnRUYXJnZXQ+MTwvSXNDdXJyZW50VGFyZ2V0Pg0KLSAgICAgIDwvT1BURkw+DQotICAgICAgPENwdUNvZGU+NzwvQ3B1Q29kZT4NCi0gICAgICA8RGVidWdPcHQ+DQotICAgICAgICA8dVNpbT4wPC91U2ltPg0KLSAgICAgICAgPHVUcmc+MTwvdVRyZz4NCi0gICAgICAgIDxzTGRBcHA+MTwvc0xkQXBwPg0KLSAgICAgICAgPHNHb21haW4+MTwvc0dvbWFpbj4NCi0gICAgICAgIDxzUmJyZWFrPjE8L3NSYnJlYWs+DQotICAgICAgICA8c1J3YXRjaD4xPC9zUndhdGNoPg0KLSAgICAgICAgPHNSbWVtPjE8L3NSbWVtPg0KLSAgICAgICAgPHNSZnVuYz4xPC9zUmZ1bmM+DQotICAgICAgICA8c1Jib3g+MTwvc1Jib3g+DQotICAgICAgICA8dExkQXBwPjE8L3RMZEFwcD4NCi0gICAgICAgIDx0R29tYWluPjE8L3RHb21haW4+DQotICAgICAgICA8dFJicmVhaz4xPC90UmJyZWFrPg0KLSAgICAgICAgPHRSd2F0Y2g+MTwvdFJ3YXRjaD4NCi0gICAgICAgIDx0Um1lbT4xPC90Um1lbT4NCi0gICAgICAgIDx0UmZ1bmM+MDwvdFJmdW5jPg0KLSAgICAgICAgPHRSYm94PjE8L3RSYm94Pg0KLSAgICAgICAgPHRSdHJhY2U+MTwvdFJ0cmFjZT4NCi0gICAgICAgIDxzUlN5c1Z3PjE8L3NSU3lzVnc+DQotICAgICAgICA8dFJTeXNWdz4xPC90UlN5c1Z3Pg0KLSAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4NCi0gICAgICAgIDxzTHJ0aW1lPjA8L3NMcnRpbWU+DQotICAgICAgICA8blRzZWw+MTwvblRzZWw+DQotICAgICAgICA8c0RsbD48L3NEbGw+DQotICAgICAgICA8c0RsbFBhPjwvc0RsbFBhPg0KLSAgICAgICAgPHNEbGdEbGw+PC9zRGxnRGxsPg0KLSAgICAgICAgPHNEbGdQYT48L3NEbGdQYT4NCi0gICAgICAgIDxzSWZpbGU+PC9zSWZpbGU+DQotICAgICAgICA8dERsbD48L3REbGw+DQotICAgICAgICA8dERsbFBhPjwvdERsbFBhPg0KLSAgICAgICAgPHREbGdEbGw+PC90RGxnRGxsPg0KLSAgICAgICAgPHREbGdQYT48L3REbGdQYT4NCi0gICAgICAgIDx0SWZpbGU+aW5pdF9hcHAuaW5pPC90SWZpbGU+DQotICAgICAgICA8cE1vbj5CSU5cVUwyQ00zLkRMTDwvcE1vbj4NCi0gICAgICA8L0RlYnVnT3B0Pg0KLSAgICAgIDxUYXJnZXREcml2ZXJEbGxSZWdpc3RyeT4NCi0gICAgICAgIDxTZXRSZWdFbnRyeT4NCi0gICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+DQotICAgICAgICAgIDxLZXk+SkwyQ00zPC9LZXk+DQotICAgICAgICAgIDxOYW1lPi1VNTkxMDE3ODkgLU8zMDQ3IC1TMiAtWlRJRlNwZWVkU2VsNTAwMCAtQTAgLUMwIC1KVTEgLUpJMTI3LjAuMC4xIC1KUDAgLVJTVDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMkJBMDE0NzcpIC1MMDAoMCkgLVRPMTkgLVRDNDgwMDAwMDAgLVRQMjEgLVREUzgwMDYgLVREVDAgLVREQzFGIC1USUUxIC1USVA4IC1UQjEgLVRGRTAgLUZPMTEgLUZEMTE4MDAwIC1GQzgwMDAgLUZOMSAtRkYwTkVXX0RFVklDRS5GTE0gLUZTMEUwMDAwIC1GTDAzODAwMCAtRlAwKCQkRGV2aWNlOkFSTUNNNF9GUCREZXZpY2VcQVJNXEZsYXNoXE5FV19ERVZJQ0UuRkxNKTwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkRMR0RBUk08L0tleT4NCi0gICAgICAgICAgPE5hbWU+KDEwMTA9LTEsLTEsLTEsLTEsMCkoMTAwNz0tMSwtMSwtMSwtMSwwKSgxMDA4PS0xLC0xLC0xLC0xLDApKDEwMDk9LTEsLTEsLTEsLTEsMCkoMTAxMj0tMSwtMSwtMSwtMSwwKTwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkFSTVJUWEVWRU5URkxBR1M8L0tleT4NCi0gICAgICAgICAgPE5hbWU+LUw3MCAtWjE4IC1DMCAtTTAgLVQxPC9OYW1lPg0KLSAgICAgICAgPC9TZXRSZWdFbnRyeT4NCi0gICAgICAgIDxTZXRSZWdFbnRyeT4NCi0gICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+DQotICAgICAgICAgIDxLZXk+RExHVEFSTTwvS2V5Pg0KLSAgICAgICAgICA8TmFtZT4oMTAxMD0tMSwtMSwtMSwtMSwwKSgxMDA3PS0xLC0xLC0xLC0xLDApKDEwMDg9LTEsLTEsLTEsLTEsMCkoMTAwOT0xMjAsMTQ5LDM1NCw2ODMsMCkoMTAxMj0xMzc3LDEzMSwxODQyLDQzMSwwKTwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkFSTURCR0ZMQUdTPC9LZXk+DQotICAgICAgICAgIDxOYW1lPi1UMDwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkRMR1VBUk08L0tleT4NCi0gICAgICAgICAgPE5hbWU+KDEwNT0tMSwtMSwtMSwtMSwwKTwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PlVMMkNNMzwvS2V5Pg0KLSAgICAgICAgICA8TmFtZT4tVVYxMTE1U0FFIC1PMzA0NyAtUzAgLUMwIC1QMDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMkJBMDE0NzcpIC1MMDAoMCkgLVRPMTkgLVRDNDgwMDAwMDAgLVRQMjEgLVREUzgwMjggLVREVDAgLVREQzFGIC1USUUxIC1USVA4IC1GTzExIC1GRDExODAwMCAtRkM4MDAwIC1GTjEgLUZGME5FV19ERVZJQ0UuRkxNIC1GUzBFMDAwMCAtRkwwMzgwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSk8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgIDwvVGFyZ2V0RHJpdmVyRGxsUmVnaXN0cnk+DQotICAgICAgPEJyZWFrcG9pbnQ+DQotICAgICAgICA8QnA+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICA8TGluZU51bWJlcj4yNDI4PC9MaW5lTnVtYmVyPg0KLSAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+DQotICAgICAgICAgIDxBZGRyZXNzPjkyNjE4NDwvQWRkcmVzcz4NCi0gICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4NCi0gICAgICAgICAgPEh0eFR5cGU+MDwvSHR4VHlwZT4NCi0gICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPg0KLSAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4NCi0gICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4NCi0gICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4NCi0gICAgICAgICAgPEZpbGVuYW1lPkM6XEVcRGV2XEZyZWVSVE9TXFRyaWFsXEFjdGl2ZVxNaWNyb2NoaXBfQ0VDMTMwMlxXb3JraW5nQ29weVxTb3VyY2VcdGFza3MuYzwvRmlsZW5hbWU+DQotICAgICAgICAgIDxFeGVjQ29tbWFuZD48L0V4ZWNDb21tYW5kPg0KLSAgICAgICAgICA8RXhwcmVzc2lvbj5cXFJUT1NEZW1vXC4uLy4uLy4uL1NvdXJjZS90YXNrcy5jXDI0Mjg8L0V4cHJlc3Npb24+DQotICAgICAgICA8L0JwPg0KLSAgICAgICAgPEJwPg0KLSAgICAgICAgICA8TnVtYmVyPjE8L051bWJlcj4NCi0gICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgPExpbmVOdW1iZXI+ODUxPC9MaW5lTnVtYmVyPg0KLSAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+DQotICAgICAgICAgIDxBZGRyZXNzPjk1MzE0MDwvQWRkcmVzcz4NCi0gICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4NCi0gICAgICAgICAgPEh0eFR5cGU+MDwvSHR4VHlwZT4NCi0gICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPg0KLSAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4NCi0gICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4NCi0gICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4NCi0gICAgICAgICAgPEZpbGVuYW1lPkM6XEVcRGV2XEZyZWVSVE9TXFRyaWFsXEFjdGl2ZVxNaWNyb2NoaXBfQ0VDMTMwMlxXb3JraW5nQ29weVxEZW1vXENPUlRFWF9NUFVfTUVDMTcwMV9LZWlsX0dDQ1xtYWluLmM8L0ZpbGVuYW1lPg0KLSAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4NCi0gICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi9tYWluLmNcODUxPC9FeHByZXNzaW9uPg0KLSAgICAgICAgPC9CcD4NCi0gICAgICAgIDxCcD4NCi0gICAgICAgICAgPE51bWJlcj4yPC9OdW1iZXI+DQotICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgIDxMaW5lTnVtYmVyPjMwNzwvTGluZU51bWJlcj4NCi0gICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPg0KLSAgICAgICAgICA8QWRkcmVzcz45MzkxNDg8L0FkZHJlc3M+DQotICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+DQotICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+DQotICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4NCi0gICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+DQotICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+DQotICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+DQotICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVuYW1lPg0KLSAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4NCi0gICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnQuY1wzMDc8L0V4cHJlc3Npb24+DQotICAgICAgICA8L0JwPg0KLSAgICAgICAgPEJwPg0KLSAgICAgICAgICA8TnVtYmVyPjM8L051bWJlcj4NCi0gICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgPExpbmVOdW1iZXI+OTE2PC9MaW5lTnVtYmVyPg0KLSAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+DQotICAgICAgICAgIDxBZGRyZXNzPjk1MzIzMjwvQWRkcmVzcz4NCi0gICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4NCi0gICAgICAgICAgPEh0eFR5cGU+MDwvSHR4VHlwZT4NCi0gICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPg0KLSAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4NCi0gICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4NCi0gICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4NCi0gICAgICAgICAgPEZpbGVuYW1lPkM6XEVcRGV2XEZyZWVSVE9TXFRyaWFsXEFjdGl2ZVxNaWNyb2NoaXBfQ0VDMTMwMlxXb3JraW5nQ29weVxEZW1vXENPUlRFWF9NUFVfTUVDMTcwMV9LZWlsX0dDQ1xtYWluLmM8L0ZpbGVuYW1lPg0KLSAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4NCi0gICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi9tYWluLmNcOTE2PC9FeHByZXNzaW9uPg0KLSAgICAgICAgPC9CcD4NCi0gICAgICA8L0JyZWFrcG9pbnQ+DQotICAgICAgPFdhdGNoV2luZG93MT4NCi0gICAgICAgIDxXdz4NCi0gICAgICAgICAgPGNvdW50PjA8L2NvdW50Pg0KLSAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4NCi0gICAgICAgICAgPEl0ZW1UZXh0PnhUaWNrQ291bnQ8L0l0ZW1UZXh0Pg0KLSAgICAgICAgPC9Xdz4NCi0gICAgICAgIDxXdz4NCi0gICAgICAgICAgPGNvdW50PjE8L2NvdW50Pg0KLSAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4NCi0gICAgICAgICAgPEl0ZW1UZXh0PnB4Q3VycmVudFRDQjwvSXRlbVRleHQ+DQotICAgICAgICA8L1d3Pg0KLSAgICAgICAgPFd3Pg0KLSAgICAgICAgICA8Y291bnQ+MjwvY291bnQ+DQotICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPg0KLSAgICAgICAgICA8SXRlbVRleHQ+KnBjU3RyaW5nPC9JdGVtVGV4dD4NCi0gICAgICAgIDwvV3c+DQotICAgICAgICA8V3c+DQotICAgICAgICAgIDxjb3VudD4zPC9jb3VudD4NCi0gICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+DQotICAgICAgICAgIDxJdGVtVGV4dD4mYW1wO3hTY2hlZHVsZXJSdW5uaW5nPC9JdGVtVGV4dD4NCi0gICAgICAgIDwvV3c+DQotICAgICAgICA8V3c+DQotICAgICAgICAgIDxjb3VudD40PC9jb3VudD4NCi0gICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+DQotICAgICAgICAgIDxJdGVtVGV4dD54U2NoZWR1bGVyUnVubmluZzwvSXRlbVRleHQ+DQotICAgICAgICA8L1d3Pg0KLSAgICAgIDwvV2F0Y2hXaW5kb3cxPg0KLSAgICAgIDxNZW1vcnlXaW5kb3cxPg0KLSAgICAgICAgPE1tPg0KLSAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4NCi0gICAgICAgICAgPFN1YlR5cGU+MjwvU3ViVHlwZT4NCi0gICAgICAgICAgPEl0ZW1UZXh0PjB4MTAwMDAwPC9JdGVtVGV4dD4NCi0gICAgICAgICAgPEFjY1NpemVYPjQ8L0FjY1NpemVYPg0KLSAgICAgICAgPC9NbT4NCi0gICAgICA8L01lbW9yeVdpbmRvdzE+DQotICAgICAgPFRyYWNlcG9pbnQ+DQotICAgICAgICA8VEhEZWxheT4wPC9USERlbGF5Pg0KLSAgICAgIDwvVHJhY2Vwb2ludD4NCi0gICAgICA8RGVidWdGbGFnPg0KLSAgICAgICAgPHRyYWNlPjA8L3RyYWNlPg0KLSAgICAgICAgPHBlcmlvZGljPjE8L3BlcmlvZGljPg0KLSAgICAgICAgPGFMd2luPjE8L2FMd2luPg0KLSAgICAgICAgPGFDb3Zlcj4wPC9hQ292ZXI+DQotICAgICAgICA8YVNlcjE+MDwvYVNlcjE+DQotICAgICAgICA8YVNlcjI+MDwvYVNlcjI+DQotICAgICAgICA8YVBhPjA8L2FQYT4NCi0gICAgICAgIDx2aWV3bW9kZT4xPC92aWV3bW9kZT4NCi0gICAgICAgIDx2clNlbD4wPC92clNlbD4NCi0gICAgICAgIDxhU3ltPjA8L2FTeW0+DQotICAgICAgICA8YVRib3g+MDwvYVRib3g+DQotICAgICAgICA8QXNjUzE+MDwvQXNjUzE+DQotICAgICAgICA8QXNjUzI+MDwvQXNjUzI+DQotICAgICAgICA8QXNjUzM+MDwvQXNjUzM+DQotICAgICAgICA8YVNlcjM+MDwvYVNlcjM+DQotICAgICAgICA8ZVByb2Y+MDwvZVByb2Y+DQotICAgICAgICA8YUxhPjA8L2FMYT4NCi0gICAgICAgIDxhUGExPjA8L2FQYTE+DQotICAgICAgICA8QXNjUzQ+MDwvQXNjUzQ+DQotICAgICAgICA8YVNlcjQ+MTwvYVNlcjQ+DQotICAgICAgICA8U3RrTG9jPjA8L1N0a0xvYz4NCi0gICAgICAgIDxUcmNXaW4+MDwvVHJjV2luPg0KLSAgICAgICAgPG5ld0NwdT4wPC9uZXdDcHU+DQotICAgICAgICA8dVByb3Q+MDwvdVByb3Q+DQotICAgICAgPC9EZWJ1Z0ZsYWc+DQotICAgICAgPExpbnRFeGVjdXRhYmxlPjwvTGludEV4ZWN1dGFibGU+DQotICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+DQotICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+DQotICAgICAgPERlYnVnRGVzY3JpcHRpb24+DQotICAgICAgICA8RW5hYmxlPjE8L0VuYWJsZT4NCi0gICAgICAgIDxFbmFibGVMb2c+MDwvRW5hYmxlTG9nPg0KLSAgICAgICAgPFByb3RvY29sPjI8L1Byb3RvY29sPg0KLSAgICAgICAgPERiZ0Nsb2NrPjEwMDAwMDAwPC9EYmdDbG9jaz4NCi0gICAgICA8L0RlYnVnRGVzY3JpcHRpb24+DQotICAgIDwvVGFyZ2V0T3B0aW9uPg0KLSAgPC9UYXJnZXQ+DQotDQotICA8R3JvdXA+DQotICAgIDxHcm91cE5hbWU+U3lzdGVtPC9Hcm91cE5hbWU+DQotICAgIDx0dkV4cD4xPC90dkV4cD4NCi0gICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICA8Y2JTZWw+MDwvY2JTZWw+DQotICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxzeXN0ZW0uYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zeXN0ZW0uYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4xPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4yPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4yPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXHN0YXJ0dXBfQVJNQ000LlM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RhcnR1cF9BUk1DTTQuUzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICA8L0dyb3VwPg0KLQ0KLSAgPEdyb3VwPg0KLSAgICA8R3JvdXBOYW1lPm1haW5fYW5kX2NvbmZpZzwvR3JvdXBOYW1lPg0KLSAgICA8dHZFeHA+MTwvdHZFeHA+DQotICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgPGNiU2VsPjA8L2NiU2VsPg0KLSAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjI8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjM8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXG1haW4uYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5tYWluLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MjwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+NDwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+NTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cRnJlZVJUT1NDb25maWcuaDwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5GcmVlUlRPU0NvbmZpZy5oPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjI8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjU8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi5cUmVnVGVzdC5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPlJlZ1Rlc3QuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICA8L0dyb3VwPg0KLQ0KLSAgPEdyb3VwPg0KLSAgICA8R3JvdXBOYW1lPkZyZWVSVE9TX1NvdXJjZTwvR3JvdXBOYW1lPg0KLSAgICA8dHZFeHA+MTwvdHZFeHA+DQotICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgPGNiU2VsPjA8L2NiU2VsPg0KLSAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjY8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5ldmVudF9ncm91cHMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj43PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcbGlzdC5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmxpc3QuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj44PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccXVldWUuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5xdWV1ZS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjk8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnRhc2tzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTA8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD50aW1lcnMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xMTwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+aGVhcF80LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTI8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxDb21tb25cbXB1X3dyYXBwZXJzLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+bXB1X3dyYXBwZXJzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTM8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnBvcnQuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICA8L0dyb3VwPg0KLQ0KLSAgPEdyb3VwPg0KLSAgICA8R3JvdXBOYW1lPnBlcmlwaGVyYWxfbGlicmFyeTwvR3JvdXBOYW1lPg0KLSAgICA8dHZFeHA+MTwvdHZFeHA+DQotICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgPGNiU2VsPjA8L2NiU2VsPg0KLSAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjE0PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmJ0aW1lcl9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xNTwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5idGltZXJfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTY8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmludGVycnVwdF9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xNzwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5pbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xODwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5pbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xOTwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfYXBpLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cGNyX2FwaS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjIwPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5wY3JfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MjE8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxzeXN0ZW1faW50ZXJuYWwuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zeXN0ZW1faW50ZXJuYWwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICA8L0dyb3VwPg0KLQ0KLTwvUHJvamVjdE9wdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+Cis8UHJvamVjdE9wdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0icHJvamVjdF9vcHR4LnhzZCI+CisKKyAgPFNjaGVtYVZlcnNpb24+MS4wPC9TY2hlbWFWZXJzaW9uPgorCisgIDxIZWFkZXI+IyMjIHVWaXNpb24gUHJvamVjdCwgKEMpIEtlaWwgU29mdHdhcmU8L0hlYWRlcj4KKworICA8RXh0ZW5zaW9ucz4KKyAgICA8Y0V4dD4qLmM7Ki5TPC9jRXh0PgorICAgIDxhRXh0PjwvYUV4dD4KKyAgICA8b0V4dD4qLm9iajsgKi5vPC9vRXh0PgorICAgIDxsRXh0PioubGliPC9sRXh0PgorICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0PgorICAgIDxwRXh0PioucGxtPC9wRXh0PgorICAgIDxDcHBYPiouY3BwPC9DcHBYPgorICAgIDxuTWlncmF0ZT4wPC9uTWlncmF0ZT4KKyAgPC9FeHRlbnNpb25zPgorCisgIDxEYXZlVG0+CisgICAgPGR3TG93RGF0ZVRpbWU+MDwvZHdMb3dEYXRlVGltZT4KKyAgICA8ZHdIaWdoRGF0ZVRpbWU+MDwvZHdIaWdoRGF0ZVRpbWU+CisgIDwvRGF2ZVRtPgorCisgIDxUYXJnZXQ+CisgICAgPFRhcmdldE5hbWU+UlRPU0RlbW9fR0NDX01QVTwvVGFyZ2V0TmFtZT4KKyAgICA8VG9vbHNldE51bWJlcj4weDM8L1Rvb2xzZXROdW1iZXI+CisgICAgPFRvb2xzZXROYW1lPkFSTS1HTlU8L1Rvb2xzZXROYW1lPgorICAgIDxUYXJnZXRPcHRpb24+CisgICAgICA8Q0xLQVJNPjEyMDAwMDAwPC9DTEtBUk0+CisgICAgICA8T1BUVFQ+CisgICAgICAgIDxnRmxhZ3M+MTwvZ0ZsYWdzPgorICAgICAgICA8QmVlcEF0RW5kPjE8L0JlZXBBdEVuZD4KKyAgICAgICAgPFJ1blNpbT4wPC9SdW5TaW0+CisgICAgICAgIDxSdW5UYXJnZXQ+MTwvUnVuVGFyZ2V0PgorICAgICAgICA8UnVuQWJVYz4wPC9SdW5BYlVjPgorICAgICAgPC9PUFRUVD4KKyAgICAgIDxPUFRIWD4KKyAgICAgICAgPEhleFNlbGVjdGlvbj4xPC9IZXhTZWxlY3Rpb24+CisgICAgICAgIDxGbGFzaEJ5dGU+NjU1MzU8L0ZsYXNoQnl0ZT4KKyAgICAgICAgPEhleFJhbmdlTG93QWRkcmVzcz4wPC9IZXhSYW5nZUxvd0FkZHJlc3M+CisgICAgICAgIDxIZXhSYW5nZUhpZ2hBZGRyZXNzPjA8L0hleFJhbmdlSGlnaEFkZHJlc3M+CisgICAgICAgIDxIZXhPZmZzZXQ+MDwvSGV4T2Zmc2V0PgorICAgICAgPC9PUFRIWD4KKyAgICAgIDxPUFRMRVg+CisgICAgICAgIDxQYWdlV2lkdGg+MTIwPC9QYWdlV2lkdGg+CisgICAgICAgIDxQYWdlTGVuZ3RoPjY1PC9QYWdlTGVuZ3RoPgorICAgICAgICA8VGFiU3RvcD44PC9UYWJTdG9wPgorICAgICAgICA8TGlzdGluZ1BhdGg+LlxMaXN0aW5nc1w8L0xpc3RpbmdQYXRoPgorICAgICAgPC9PUFRMRVg+CisgICAgICA8TGlzdGluZ1BhZ2U+CisgICAgICAgIDxDcmVhdGVDTGlzdGluZz4xPC9DcmVhdGVDTGlzdGluZz4KKyAgICAgICAgPENyZWF0ZUFMaXN0aW5nPjE8L0NyZWF0ZUFMaXN0aW5nPgorICAgICAgICA8Q3JlYXRlTExpc3Rpbmc+MTwvQ3JlYXRlTExpc3Rpbmc+CisgICAgICAgIDxDcmVhdGVJTGlzdGluZz4wPC9DcmVhdGVJTGlzdGluZz4KKyAgICAgICAgPEFzbUNvbmQ+MTwvQXNtQ29uZD4KKyAgICAgICAgPEFzbVN5bWI+MTwvQXNtU3ltYj4KKyAgICAgICAgPEFzbVhyZWY+MDwvQXNtWHJlZj4KKyAgICAgICAgPENDb25kPjE8L0NDb25kPgorICAgICAgICA8Q0NvZGU+MDwvQ0NvZGU+CisgICAgICAgIDxDTGlzdEluYz4wPC9DTGlzdEluYz4KKyAgICAgICAgPENTeW1iPjA8L0NTeW1iPgorICAgICAgICA8TGlua2VyQ29kZUxpc3Rpbmc+MDwvTGlua2VyQ29kZUxpc3Rpbmc+CisgICAgICA8L0xpc3RpbmdQYWdlPgorICAgICAgPE9QVFhMPgorICAgICAgICA8TE1hcD4xPC9MTWFwPgorICAgICAgICA8TENvbW1lbnRzPjE8L0xDb21tZW50cz4KKyAgICAgICAgPExHZW5lcmF0ZVN5bWJvbHM+MTwvTEdlbmVyYXRlU3ltYm9scz4KKyAgICAgICAgPExMaWJTeW0+MTwvTExpYlN5bT4KKyAgICAgICAgPExMaW5lcz4xPC9MTGluZXM+CisgICAgICAgIDxMTG9jU3ltPjE8L0xMb2NTeW0+CisgICAgICAgIDxMUHViU3ltPjE8L0xQdWJTeW0+CisgICAgICAgIDxMWHJlZj4wPC9MWHJlZj4KKyAgICAgICAgPExFeHBTZWw+MDwvTEV4cFNlbD4KKyAgICAgIDwvT1BUWEw+CisgICAgICA8T1BURkw+CisgICAgICAgIDx0dkV4cD4xPC90dkV4cD4KKyAgICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgICA8SXNDdXJyZW50VGFyZ2V0PjE8L0lzQ3VycmVudFRhcmdldD4KKyAgICAgIDwvT1BURkw+CisgICAgICA8Q3B1Q29kZT43PC9DcHVDb2RlPgorICAgICAgPERlYnVnT3B0PgorICAgICAgICA8dVNpbT4wPC91U2ltPgorICAgICAgICA8dVRyZz4xPC91VHJnPgorICAgICAgICA8c0xkQXBwPjE8L3NMZEFwcD4KKyAgICAgICAgPHNHb21haW4+MTwvc0dvbWFpbj4KKyAgICAgICAgPHNSYnJlYWs+MTwvc1JicmVhaz4KKyAgICAgICAgPHNSd2F0Y2g+MTwvc1J3YXRjaD4KKyAgICAgICAgPHNSbWVtPjE8L3NSbWVtPgorICAgICAgICA8c1JmdW5jPjE8L3NSZnVuYz4KKyAgICAgICAgPHNSYm94PjE8L3NSYm94PgorICAgICAgICA8dExkQXBwPjE8L3RMZEFwcD4KKyAgICAgICAgPHRHb21haW4+MTwvdEdvbWFpbj4KKyAgICAgICAgPHRSYnJlYWs+MTwvdFJicmVhaz4KKyAgICAgICAgPHRSd2F0Y2g+MTwvdFJ3YXRjaD4KKyAgICAgICAgPHRSbWVtPjE8L3RSbWVtPgorICAgICAgICA8dFJmdW5jPjA8L3RSZnVuYz4KKyAgICAgICAgPHRSYm94PjE8L3RSYm94PgorICAgICAgICA8dFJ0cmFjZT4xPC90UnRyYWNlPgorICAgICAgICA8c1JTeXNWdz4xPC9zUlN5c1Z3PgorICAgICAgICA8dFJTeXNWdz4xPC90UlN5c1Z3PgorICAgICAgICA8c1J1bkRlYj4wPC9zUnVuRGViPgorICAgICAgICA8c0xydGltZT4wPC9zTHJ0aW1lPgorICAgICAgICA8YkV2UmVjT24+MTwvYkV2UmVjT24+CisgICAgICAgIDxuVHNlbD4wPC9uVHNlbD4KKyAgICAgICAgPHNEbGw+PC9zRGxsPgorICAgICAgICA8c0RsbFBhPjwvc0RsbFBhPgorICAgICAgICA8c0RsZ0RsbD48L3NEbGdEbGw+CisgICAgICAgIDxzRGxnUGE+PC9zRGxnUGE+CisgICAgICAgIDxzSWZpbGU+PC9zSWZpbGU+CisgICAgICAgIDx0RGxsPjwvdERsbD4KKyAgICAgICAgPHREbGxQYT48L3REbGxQYT4KKyAgICAgICAgPHREbGdEbGw+PC90RGxnRGxsPgorICAgICAgICA8dERsZ1BhPjwvdERsZ1BhPgorICAgICAgICA8dElmaWxlPmluaXRfYXBwLmluaTwvdElmaWxlPgorICAgICAgICA8cE1vbj5CSU5cVUwyQ00zLkRMTDwvcE1vbj4KKyAgICAgIDwvRGVidWdPcHQ+CisgICAgICA8VGFyZ2V0RHJpdmVyRGxsUmVnaXN0cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkpMMkNNMzwvS2V5PgorICAgICAgICAgIDxOYW1lPi1VNTkxMDE3ODkgLU8zMDQ3IC1TMiAtWlRJRlNwZWVkU2VsNTAwMCAtQTAgLUMwIC1KVTEgLUpJMTI3LjAuMC4xIC1KUDAgLVJTVDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMkJBMDE0NzcpIC1MMDAoMCkgLVRPMTkgLVRDNDgwMDAwMDAgLVRQMjEgLVREUzgwMDYgLVREVDAgLVREQzFGIC1USUUxIC1USVA4IC1UQjEgLVRGRTAgLUZPMTEgLUZEMTE4MDAwIC1GQzgwMDAgLUZOMSAtRkYwTkVXX0RFVklDRS5GTE0gLUZTMEUwMDAwIC1GTDAzODAwMCAtRlAwKCQkRGV2aWNlOkFSTUNNNF9GUCREZXZpY2VcQVJNXEZsYXNoXE5FV19ERVZJQ0UuRkxNKTwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+RExHREFSTTwvS2V5PgorICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD0tMSwtMSwtMSwtMSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApKDEwMTI9LTEsLTEsLTEsLTEsMCk8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkFSTVJUWEVWRU5URkxBR1M8L0tleT4KKyAgICAgICAgICA8TmFtZT4tTDcwIC1aMTggLUMwIC1NMCAtVDE8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkRMR1RBUk08L0tleT4KKyAgICAgICAgICA8TmFtZT4oMTAxMD0tMSwtMSwtMSwtMSwwKSgxMDA3PS0xLC0xLC0xLC0xLDApKDEwMDg9LTEsLTEsLTEsLTEsMCkoMTAwOT0xMjAsMTQ5LDM1NCw2ODMsMCkoMTAxMj0xMzc3LDEzMSwxODQyLDQzMSwwKTwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+QVJNREJHRkxBR1M8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVDA8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkRMR1VBUk08L0tleT4KKyAgICAgICAgICA8TmFtZT4oMTA1PS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5VTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVVYxMTE1U0FFIC1PMzA0NyAtUzAgLUMwIC1QMDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMkJBMDE0NzcpIC1MMDAoMCkgLVRPMTkgLVRDNDgwMDAwMDAgLVRQMjEgLVREUzgwMjggLVREVDAgLVREQzFGIC1USUUxIC1USVA4IC1GTzExIC1GRDExODAwMCAtRkM4MDAwIC1GTjEgLUZGME5FV19ERVZJQ0UuRkxNIC1GUzBFMDAwMCAtRkwwMzgwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSk8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICA8L1RhcmdldERyaXZlckRsbFJlZ2lzdHJ5PgorICAgICAgPEJyZWFrcG9pbnQ+CisgICAgICAgIDxCcD4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgIDxMaW5lTnVtYmVyPjI0Mjg8L0xpbmVOdW1iZXI+CisgICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPgorICAgICAgICAgIDxBZGRyZXNzPjkyNjE4NDwvQWRkcmVzcz4KKyAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0PgorICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+CisgICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPgorICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0PgorICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+CisgICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4KKyAgICAgICAgICA8RmlsZW5hbWU+QzpcRVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXE1pY3JvY2hpcF9DRUMxMzAyXFdvcmtpbmdDb3B5XFNvdXJjZVx0YXNrcy5jPC9GaWxlbmFtZT4KKyAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4KKyAgICAgICAgICA8RXhwcmVzc2lvbj5cXFJUT1NEZW1vXC4uLy4uLy4uL1NvdXJjZS90YXNrcy5jXDI0Mjg8L0V4cHJlc3Npb24+CisgICAgICAgIDwvQnA+CisgICAgICAgIDxCcD4KKyAgICAgICAgICA8TnVtYmVyPjE8L051bWJlcj4KKyAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgIDxMaW5lTnVtYmVyPjg1MTwvTGluZU51bWJlcj4KKyAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+CisgICAgICAgICAgPEFkZHJlc3M+OTUzMTQwPC9BZGRyZXNzPgorICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+CisgICAgICAgICAgPEh0eFR5cGU+MDwvSHR4VHlwZT4KKyAgICAgICAgICA8TWFueU9iamVjdHM+MDwvTWFueU9iamVjdHM+CisgICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+CisgICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4KKyAgICAgICAgICA8QnJlYWtJZlJDb3VudD4xPC9CcmVha0lmUkNvdW50PgorICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcRGVtb1xDT1JURVhfTVBVX01FQzE3MDFfS2VpbF9HQ0NcbWFpbi5jPC9GaWxlbmFtZT4KKyAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4KKyAgICAgICAgICA8RXhwcmVzc2lvbj5cXFJUT1NEZW1vXC4uL21haW4uY1w4NTE8L0V4cHJlc3Npb24+CisgICAgICAgIDwvQnA+CisgICAgICAgIDxCcD4KKyAgICAgICAgICA8TnVtYmVyPjI8L051bWJlcj4KKyAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgIDxMaW5lTnVtYmVyPjMwNzwvTGluZU51bWJlcj4KKyAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+CisgICAgICAgICAgPEFkZHJlc3M+OTM5MTQ4PC9BZGRyZXNzPgorICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+CisgICAgICAgICAgPEh0eFR5cGU+MDwvSHR4VHlwZT4KKyAgICAgICAgICA8TWFueU9iamVjdHM+MDwvTWFueU9iamVjdHM+CisgICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+CisgICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4KKyAgICAgICAgICA8QnJlYWtJZlJDb3VudD4xPC9CcmVha0lmUkNvdW50PgorICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVuYW1lPgorICAgICAgICAgIDxFeGVjQ29tbWFuZD48L0V4ZWNDb21tYW5kPgorICAgICAgICAgIDxFeHByZXNzaW9uPlxcUlRPU0RlbW9cLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmNcMzA3PC9FeHByZXNzaW9uPgorICAgICAgICA8L0JwPgorICAgICAgICA8QnA+CisgICAgICAgICAgPE51bWJlcj4zPC9OdW1iZXI+CisgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICA8TGluZU51bWJlcj45MTY8L0xpbmVOdW1iZXI+CisgICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPgorICAgICAgICAgIDxBZGRyZXNzPjk1MzIzMjwvQWRkcmVzcz4KKyAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0PgorICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+CisgICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPgorICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0PgorICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+CisgICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4KKyAgICAgICAgICA8RmlsZW5hbWU+QzpcRVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXE1pY3JvY2hpcF9DRUMxMzAyXFdvcmtpbmdDb3B5XERlbW9cQ09SVEVYX01QVV9NRUMxNzAxX0tlaWxfR0NDXG1haW4uYzwvRmlsZW5hbWU+CisgICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+CisgICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi9tYWluLmNcOTE2PC9FeHByZXNzaW9uPgorICAgICAgICA8L0JwPgorICAgICAgPC9CcmVha3BvaW50PgorICAgICAgPFdhdGNoV2luZG93MT4KKyAgICAgICAgPFd3PgorICAgICAgICAgIDxjb3VudD4wPC9jb3VudD4KKyAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4KKyAgICAgICAgICA8SXRlbVRleHQ+eFRpY2tDb3VudDwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MTwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PnB4Q3VycmVudFRDQjwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MjwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PipwY1N0cmluZzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MzwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PiZhbXA7eFNjaGVkdWxlclJ1bm5pbmc8L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjQ8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD54U2NoZWR1bGVyUnVubmluZzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICA8L1dhdGNoV2luZG93MT4KKyAgICAgIDxNZW1vcnlXaW5kb3cxPgorICAgICAgICA8TW0+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPFN1YlR5cGU+MjwvU3ViVHlwZT4KKyAgICAgICAgICA8SXRlbVRleHQ+MHgxMDAwMDA8L0l0ZW1UZXh0PgorICAgICAgICAgIDxBY2NTaXplWD40PC9BY2NTaXplWD4KKyAgICAgICAgPC9NbT4KKyAgICAgIDwvTWVtb3J5V2luZG93MT4KKyAgICAgIDxUcmFjZXBvaW50PgorICAgICAgICA8VEhEZWxheT4wPC9USERlbGF5PgorICAgICAgPC9UcmFjZXBvaW50PgorICAgICAgPERlYnVnRmxhZz4KKyAgICAgICAgPHRyYWNlPjA8L3RyYWNlPgorICAgICAgICA8cGVyaW9kaWM+MTwvcGVyaW9kaWM+CisgICAgICAgIDxhTHdpbj4xPC9hTHdpbj4KKyAgICAgICAgPGFDb3Zlcj4wPC9hQ292ZXI+CisgICAgICAgIDxhU2VyMT4wPC9hU2VyMT4KKyAgICAgICAgPGFTZXIyPjA8L2FTZXIyPgorICAgICAgICA8YVBhPjA8L2FQYT4KKyAgICAgICAgPHZpZXdtb2RlPjE8L3ZpZXdtb2RlPgorICAgICAgICA8dnJTZWw+MDwvdnJTZWw+CisgICAgICAgIDxhU3ltPjA8L2FTeW0+CisgICAgICAgIDxhVGJveD4wPC9hVGJveD4KKyAgICAgICAgPEFzY1MxPjA8L0FzY1MxPgorICAgICAgICA8QXNjUzI+MDwvQXNjUzI+CisgICAgICAgIDxBc2NTMz4wPC9Bc2NTMz4KKyAgICAgICAgPGFTZXIzPjA8L2FTZXIzPgorICAgICAgICA8ZVByb2Y+MDwvZVByb2Y+CisgICAgICAgIDxhTGE+MDwvYUxhPgorICAgICAgICA8YVBhMT4wPC9hUGExPgorICAgICAgICA8QXNjUzQ+MDwvQXNjUzQ+CisgICAgICAgIDxhU2VyND4xPC9hU2VyND4KKyAgICAgICAgPFN0a0xvYz4wPC9TdGtMb2M+CisgICAgICAgIDxUcmNXaW4+MDwvVHJjV2luPgorICAgICAgICA8bmV3Q3B1PjA8L25ld0NwdT4KKyAgICAgICAgPHVQcm90PjA8L3VQcm90PgorICAgICAgPC9EZWJ1Z0ZsYWc+CisgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KKyAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgorICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+CisgICAgICA8YkF1dG9HZW5EPjA8L2JBdXRvR2VuRD4KKyAgICAgIDxMbnRFeEZsYWdzPjA8L0xudEV4RmxhZ3M+CisgICAgICA8cE1pc3JhTmFtZT48L3BNaXNyYU5hbWU+CisgICAgICA8cHN6TXJ1bGU+PC9wc3pNcnVsZT4KKyAgICAgIDxwU2luZ0NtZHM+PC9wU2luZ0NtZHM+CisgICAgICA8cE11bHRDbWRzPjwvcE11bHRDbWRzPgorICAgICAgPHBNaXNyYU5hbWVwPjwvcE1pc3JhTmFtZXA+CisgICAgICA8cHN6TXJ1bGVwPjwvcHN6TXJ1bGVwPgorICAgICAgPHBTaW5nQ21kc3A+PC9wU2luZ0NtZHNwPgorICAgICAgPHBNdWx0Q21kc3A+PC9wTXVsdENtZHNwPgorICAgICAgPERlYnVnRGVzY3JpcHRpb24+CisgICAgICAgIDxFbmFibGU+MTwvRW5hYmxlPgorICAgICAgICA8RW5hYmxlTG9nPjA8L0VuYWJsZUxvZz4KKyAgICAgICAgPFByb3RvY29sPjI8L1Byb3RvY29sPgorICAgICAgICA8RGJnQ2xvY2s+MTAwMDAwMDA8L0RiZ0Nsb2NrPgorICAgICAgPC9EZWJ1Z0Rlc2NyaXB0aW9uPgorICAgIDwvVGFyZ2V0T3B0aW9uPgorICA8L1RhcmdldD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5TeXN0ZW08L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4xPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi5cc3lzdGVtLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zeXN0ZW0uYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjI8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXHN0YXJ0dXBfQVJNQ000LlM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdGFydHVwX0FSTUNNNC5TPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5tYWluX2FuZF9jb25maWc8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4yPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXG1haW4uYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm1haW4uYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MjwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj40PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjU8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxGcmVlUlRPU0NvbmZpZy5oPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+RnJlZVJUT1NDb25maWcuaDwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MjwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj41PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXFJlZ1Rlc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPlJlZ1Rlc3QuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+RnJlZVJUT1NfU291cmNlPC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjE8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj42PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5ldmVudF9ncm91cHMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj43PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcbGlzdC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+bGlzdC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjg8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cXVldWUuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj45PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcdGFza3MuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnRhc2tzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTA8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnRpbWVycy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjExPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmhlYXBfNC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEyPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcQ29tbW9uXG1wdV93cmFwcGVycy5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+bXB1X3dyYXBwZXJzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cG9ydC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE0PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RyZWFtX2J1ZmZlci5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5wZXJpcGhlcmFsX2xpYnJhcnk8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE1PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+YnRpbWVyX2FwaS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE2PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX3BlcnBobC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+YnRpbWVyX3BlcnBobC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE3PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmludGVycnVwdF9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xODwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmludGVycnVwdF9lY2lhX3BlcnBobC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE5PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9udmljX3BlcnBobC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+aW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjA8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxwY3JccGNyX2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cGNyX2FwaS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjIxPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnBjcl9wZXJwaGwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yMjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHN5c3RlbV9pbnRlcm5hbC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3lzdGVtX2ludGVybmFsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICA8L0dyb3VwPgorCis8L1Byb2plY3RPcHQ+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvanggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKaW5kZXggZjM1YjVlMS4uMWExMzdlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeApAQCAtMSw0NDMgKzEsNDE0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+DQotPFByb2plY3QgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InByb2plY3RfcHJvangueHNkIj4NCi0NCi0gIDxTY2hlbWFWZXJzaW9uPjIuMTwvU2NoZW1hVmVyc2lvbj4NCi0NCi0gIDxIZWFkZXI+IyMjIHVWaXNpb24gUHJvamVjdCwgKEMpIEtlaWwgU29mdHdhcmU8L0hlYWRlcj4NCi0NCi0gIDxUYXJnZXRzPg0KLSAgICA8VGFyZ2V0Pg0KLSAgICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vX0dDQ19NUFU8L1RhcmdldE5hbWU+DQotICAgICAgPFRvb2xzZXROdW1iZXI+MHgzPC9Ub29sc2V0TnVtYmVyPg0KLSAgICAgIDxUb29sc2V0TmFtZT5BUk0tR05VPC9Ub29sc2V0TmFtZT4NCi0gICAgICA8VGFyZ2V0T3B0aW9uPg0KLSAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4NCi0gICAgICAgICAgPERldmljZT5BUk1DTTRfRlA8L0RldmljZT4NCi0gICAgICAgICAgPFZlbmRvcj5BUk08L1ZlbmRvcj4NCi0gICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNC4zLjA8L1BhY2tJRD4NCi0gICAgICAgICAgPFBhY2tVUkw+aHR0cDovL3d3dy5rZWlsLmNvbS9wYWNrLzwvUGFja1VSTD4NCi0gICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1Pg0KLSAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+DQotICAgICAgICAgIDxTdGFydHVwRmlsZT48L1N0YXJ0dXBGaWxlPg0KLSAgICAgICAgICA8Rmxhc2hEcml2ZXJEbGw+VUwyQ00zKC1TMCAtQzAgLVAwIC1GRDIwMDAwMDAwIC1GQzEwMDAgLUZOMSAtRkYwTkVXX0RFVklDRSAtRlMwMCAtRkwwODAwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSkpPC9GbGFzaERyaXZlckRsbD4NCi0gICAgICAgICAgPERldmljZUlkPjA8L0RldmljZUlkPg0KLSAgICAgICAgICA8UmVnaXN0ZXJGaWxlPiQkRGV2aWNlOkFSTUNNNF9GUCREZXZpY2VcQVJNXEFSTUNNNFxJbmNsdWRlXEFSTUNNNF9GUC5oPC9SZWdpc3RlckZpbGU+DQotICAgICAgICAgIDxNZW1vcnlFbnY+PC9NZW1vcnlFbnY+DQotICAgICAgICAgIDxDbXA+PC9DbXA+DQotICAgICAgICAgIDxBc20+PC9Bc20+DQotICAgICAgICAgIDxMaW5rZXI+PC9MaW5rZXI+DQotICAgICAgICAgIDxPSFN0cmluZz48L09IU3RyaW5nPg0KLSAgICAgICAgICA8SW5maW5pb25PcHRpb25EbGw+PC9JbmZpbmlvbk9wdGlvbkRsbD4NCi0gICAgICAgICAgPFNMRTY2Q01pc2M+PC9TTEU2NkNNaXNjPg0KLSAgICAgICAgICA8U0xFNjZBTWlzYz48L1NMRTY2QU1pc2M+DQotICAgICAgICAgIDxTTEU2Nkxpbmtlck1pc2M+PC9TTEU2Nkxpbmtlck1pc2M+DQotICAgICAgICAgIDxTRkRGaWxlPiQkRGV2aWNlOkFSTUNNNF9GUCREZXZpY2VcQVJNXFNWRFxBUk1DTTQuc3ZkPC9TRkRGaWxlPg0KLSAgICAgICAgICA8YkN1c3RTdmQ+MDwvYkN1c3RTdmQ+DQotICAgICAgICAgIDxVc2VFbnY+MDwvVXNlRW52Pg0KLSAgICAgICAgICA8QmluUGF0aD48L0JpblBhdGg+DQotICAgICAgICAgIDxJbmNsdWRlUGF0aD48L0luY2x1ZGVQYXRoPg0KLSAgICAgICAgICA8TGliUGF0aD48L0xpYlBhdGg+DQotICAgICAgICAgIDxSZWdpc3RlckZpbGVQYXRoPjwvUmVnaXN0ZXJGaWxlUGF0aD4NCi0gICAgICAgICAgPERCUmVnaXN0ZXJGaWxlUGF0aD48L0RCUmVnaXN0ZXJGaWxlUGF0aD4NCi0gICAgICAgICAgPFRhcmdldFN0YXR1cz4NCi0gICAgICAgICAgICA8RXJyb3I+MDwvRXJyb3I+DQotICAgICAgICAgICAgPEV4aXRDb2RlU3RvcD4wPC9FeGl0Q29kZVN0b3A+DQotICAgICAgICAgICAgPEJ1dHRvblN0b3A+MDwvQnV0dG9uU3RvcD4NCi0gICAgICAgICAgICA8Tm90R2VuZXJhdGVkPjA8L05vdEdlbmVyYXRlZD4NCi0gICAgICAgICAgICA8SW52YWxpZEZsYXNoPjE8L0ludmFsaWRGbGFzaD4NCi0gICAgICAgICAgPC9UYXJnZXRTdGF0dXM+DQotICAgICAgICAgIDxPdXRwdXREaXJlY3Rvcnk+LlxPYmplY3RzXDwvT3V0cHV0RGlyZWN0b3J5Pg0KLSAgICAgICAgICA8T3V0cHV0TmFtZT5SVE9TRGVtbzwvT3V0cHV0TmFtZT4NCi0gICAgICAgICAgPENyZWF0ZUV4ZWN1dGFibGU+MTwvQ3JlYXRlRXhlY3V0YWJsZT4NCi0gICAgICAgICAgPENyZWF0ZUxpYj4wPC9DcmVhdGVMaWI+DQotICAgICAgICAgIDxDcmVhdGVIZXhGaWxlPjA8L0NyZWF0ZUhleEZpbGU+DQotICAgICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uPjE8L0RlYnVnSW5mb3JtYXRpb24+DQotICAgICAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj4wPC9Ccm93c2VJbmZvcm1hdGlvbj4NCi0gICAgICAgICAgPExpc3RpbmdQYXRoPi5cTGlzdGluZ3NcPC9MaXN0aW5nUGF0aD4NCi0gICAgICAgICAgPEhleEZvcm1hdFNlbGVjdGlvbj4xPC9IZXhGb3JtYXRTZWxlY3Rpb24+DQotICAgICAgICAgIDxNZXJnZTMySz4wPC9NZXJnZTMySz4NCi0gICAgICAgICAgPENyZWF0ZUJhdGNoRmlsZT4wPC9DcmVhdGVCYXRjaEZpbGU+DQotICAgICAgICAgIDxCZWZvcmVDb21waWxlPg0KLSAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MDwvUnVuVXNlclByb2cxPg0KLSAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzI+MDwvUnVuVXNlclByb2cyPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzFOYW1lPjwvVXNlclByb2cxTmFtZT4NCi0gICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+DQotICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+DQotICAgICAgICAgICAgPFVzZXJQcm9nMkRvczE2TW9kZT4wPC9Vc2VyUHJvZzJEb3MxNk1vZGU+DQotICAgICAgICAgICAgPG5TdG9wVTFYPjA8L25TdG9wVTFYPg0KLSAgICAgICAgICAgIDxuU3RvcFUyWD4wPC9uU3RvcFUyWD4NCi0gICAgICAgICAgPC9CZWZvcmVDb21waWxlPg0KLSAgICAgICAgICA8QmVmb3JlTWFrZT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cxPjA8L1J1blVzZXJQcm9nMT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4NCi0gICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+DQotICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxuU3RvcEIxWD4wPC9uU3RvcEIxWD4NCi0gICAgICAgICAgICA8blN0b3BCMlg+MDwvblN0b3BCMlg+DQotICAgICAgICAgIDwvQmVmb3JlTWFrZT4NCi0gICAgICAgICAgPEFmdGVyTWFrZT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cxPjA8L1J1blVzZXJQcm9nMT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4NCi0gICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+DQotICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxuU3RvcEExWD4wPC9uU3RvcEExWD4NCi0gICAgICAgICAgICA8blN0b3BBMlg+MDwvblN0b3BBMlg+DQotICAgICAgICAgIDwvQWZ0ZXJNYWtlPg0KLSAgICAgICAgICA8U2VsZWN0ZWRGb3JCYXRjaEJ1aWxkPjA8L1NlbGVjdGVkRm9yQmF0Y2hCdWlsZD4NCi0gICAgICAgICAgPFNWQ1NJZFN0cmluZz48L1NWQ1NJZFN0cmluZz4NCi0gICAgICAgIDwvVGFyZ2V0Q29tbW9uT3B0aW9uPg0KLSAgICAgICAgPENvbW1vblByb3BlcnR5Pg0KLSAgICAgICAgICA8VXNlQ1BQQ29tcGlsZXI+MDwvVXNlQ1BQQ29tcGlsZXI+DQotICAgICAgICAgIDxSVkNUQ29kZUNvbnN0PjA8L1JWQ1RDb2RlQ29uc3Q+DQotICAgICAgICAgIDxSVkNUWkk+MDwvUlZDVFpJPg0KLSAgICAgICAgICA8UlZDVE90aGVyRGF0YT4wPC9SVkNUT3RoZXJEYXRhPg0KLSAgICAgICAgICA8TW9kdWxlU2VsZWN0aW9uPjA8L01vZHVsZVNlbGVjdGlvbj4NCi0gICAgICAgICAgPEluY2x1ZGVJbkJ1aWxkPjE8L0luY2x1ZGVJbkJ1aWxkPg0KLSAgICAgICAgICA8QWx3YXlzQnVpbGQ+MDwvQWx3YXlzQnVpbGQ+DQotICAgICAgICAgIDxHZW5lcmF0ZUFzc2VtYmx5RmlsZT4wPC9HZW5lcmF0ZUFzc2VtYmx5RmlsZT4NCi0gICAgICAgICAgPEFzc2VtYmxlQXNzZW1ibHlGaWxlPjA8L0Fzc2VtYmxlQXNzZW1ibHlGaWxlPg0KLSAgICAgICAgICA8UHVibGljc09ubHk+MDwvUHVibGljc09ubHk+DQotICAgICAgICAgIDxTdG9wT25FeGl0Q29kZT4zPC9TdG9wT25FeGl0Q29kZT4NCi0gICAgICAgICAgPEN1c3RvbUFyZ3VtZW50PjwvQ3VzdG9tQXJndW1lbnQ+DQotICAgICAgICAgIDxJbmNsdWRlTGlicmFyeU1vZHVsZXM+PC9JbmNsdWRlTGlicmFyeU1vZHVsZXM+DQotICAgICAgICAgIDxDb21wckltZz4xPC9Db21wckltZz4NCi0gICAgICAgIDwvQ29tbW9uUHJvcGVydHk+DQotICAgICAgICA8RGxsT3B0aW9uPg0KLSAgICAgICAgICA8U2ltRGxsTmFtZT5TQVJNQ00zLkRMTDwvU2ltRGxsTmFtZT4NCi0gICAgICAgICAgPFNpbURsbEFyZ3VtZW50cz4gIC1NUFU8L1NpbURsbEFyZ3VtZW50cz4NCi0gICAgICAgICAgPFNpbURsZ0RsbD5EQ00uRExMPC9TaW1EbGdEbGw+DQotICAgICAgICAgIDxTaW1EbGdEbGxBcmd1bWVudHM+LXBDTTQ8L1NpbURsZ0RsbEFyZ3VtZW50cz4NCi0gICAgICAgICAgPFRhcmdldERsbE5hbWU+U0FSTUNNMy5ETEw8L1RhcmdldERsbE5hbWU+DQotICAgICAgICAgIDxUYXJnZXREbGxBcmd1bWVudHM+IC1NUFU8L1RhcmdldERsbEFyZ3VtZW50cz4NCi0gICAgICAgICAgPFRhcmdldERsZ0RsbD5UQ00uRExMPC9UYXJnZXREbGdEbGw+DQotICAgICAgICAgIDxUYXJnZXREbGdEbGxBcmd1bWVudHM+LXBDTTQ8L1RhcmdldERsZ0RsbEFyZ3VtZW50cz4NCi0gICAgICAgIDwvRGxsT3B0aW9uPg0KLSAgICAgICAgPERlYnVnT3B0aW9uPg0KLSAgICAgICAgICA8T1BUSFg+DQotICAgICAgICAgICAgPEhleFNlbGVjdGlvbj4xPC9IZXhTZWxlY3Rpb24+DQotICAgICAgICAgICAgPEhleFJhbmdlTG93QWRkcmVzcz4wPC9IZXhSYW5nZUxvd0FkZHJlc3M+DQotICAgICAgICAgICAgPEhleFJhbmdlSGlnaEFkZHJlc3M+MDwvSGV4UmFuZ2VIaWdoQWRkcmVzcz4NCi0gICAgICAgICAgICA8SGV4T2Zmc2V0PjA8L0hleE9mZnNldD4NCi0gICAgICAgICAgICA8T2gxNjZSZWNMZW4+MTY8L09oMTY2UmVjTGVuPg0KLSAgICAgICAgICA8L09QVEhYPg0KLSAgICAgICAgICA8U2ltdWxhdG9yPg0KLSAgICAgICAgICAgIDxVc2VTaW11bGF0b3I+MDwvVXNlU2ltdWxhdG9yPg0KLSAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPg0KLSAgICAgICAgICAgIDxSdW5Ub01haW4+MTwvUnVuVG9NYWluPg0KLSAgICAgICAgICAgIDxSZXN0b3JlQnJlYWtwb2ludHM+MTwvUmVzdG9yZUJyZWFrcG9pbnRzPg0KLSAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPg0KLSAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4NCi0gICAgICAgICAgICA8UmVzdG9yZUZ1bmN0aW9ucz4xPC9SZXN0b3JlRnVuY3Rpb25zPg0KLSAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4NCi0gICAgICAgICAgICA8TGltaXRTcGVlZFRvUmVhbFRpbWU+MDwvTGltaXRTcGVlZFRvUmVhbFRpbWU+DQotICAgICAgICAgICAgPFJlc3RvcmVTeXNWdz4xPC9SZXN0b3JlU3lzVnc+DQotICAgICAgICAgIDwvU2ltdWxhdG9yPg0KLSAgICAgICAgICA8VGFyZ2V0Pg0KLSAgICAgICAgICAgIDxVc2VUYXJnZXQ+MTwvVXNlVGFyZ2V0Pg0KLSAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPg0KLSAgICAgICAgICAgIDxSdW5Ub01haW4+MTwvUnVuVG9NYWluPg0KLSAgICAgICAgICAgIDxSZXN0b3JlQnJlYWtwb2ludHM+MTwvUmVzdG9yZUJyZWFrcG9pbnRzPg0KLSAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPg0KLSAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4NCi0gICAgICAgICAgICA8UmVzdG9yZUZ1bmN0aW9ucz4wPC9SZXN0b3JlRnVuY3Rpb25zPg0KLSAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4NCi0gICAgICAgICAgICA8UmVzdG9yZVRyYWNlcG9pbnRzPjE8L1Jlc3RvcmVUcmFjZXBvaW50cz4NCi0gICAgICAgICAgICA8UmVzdG9yZVN5c1Z3PjE8L1Jlc3RvcmVTeXNWdz4NCi0gICAgICAgICAgPC9UYXJnZXQ+DQotICAgICAgICAgIDxSdW5EZWJ1Z0FmdGVyQnVpbGQ+MDwvUnVuRGVidWdBZnRlckJ1aWxkPg0KLSAgICAgICAgICA8VGFyZ2V0U2VsZWN0aW9uPjE8L1RhcmdldFNlbGVjdGlvbj4NCi0gICAgICAgICAgPFNpbURsbHM+DQotICAgICAgICAgICAgPENwdURsbD48L0NwdURsbD4NCi0gICAgICAgICAgICA8Q3B1RGxsQXJndW1lbnRzPjwvQ3B1RGxsQXJndW1lbnRzPg0KLSAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4NCi0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbEFyZ3VtZW50cz48L1BlcmlwaGVyYWxEbGxBcmd1bWVudHM+DQotICAgICAgICAgICAgPEluaXRpYWxpemF0aW9uRmlsZT48L0luaXRpYWxpemF0aW9uRmlsZT4NCi0gICAgICAgICAgPC9TaW1EbGxzPg0KLSAgICAgICAgICA8VGFyZ2V0RGxscz4NCi0gICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPg0KLSAgICAgICAgICAgIDxDcHVEbGxBcmd1bWVudHM+PC9DcHVEbGxBcmd1bWVudHM+DQotICAgICAgICAgICAgPFBlcmlwaGVyYWxEbGw+PC9QZXJpcGhlcmFsRGxsPg0KLSAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4NCi0gICAgICAgICAgICA8SW5pdGlhbGl6YXRpb25GaWxlPmluaXRfYXBwLmluaTwvSW5pdGlhbGl6YXRpb25GaWxlPg0KLSAgICAgICAgICAgIDxEcml2ZXI+QklOXFVMMkNNMy5ETEw8L0RyaXZlcj4NCi0gICAgICAgICAgPC9UYXJnZXREbGxzPg0KLSAgICAgICAgPC9EZWJ1Z09wdGlvbj4NCi0gICAgICAgIDxVdGlsaXRpZXM+DQotICAgICAgICAgIDxGbGFzaDE+DQotICAgICAgICAgICAgPFVzZVRhcmdldERsbD4xPC9Vc2VUYXJnZXREbGw+DQotICAgICAgICAgICAgPFVzZUV4dGVybmFsVG9vbD4wPC9Vc2VFeHRlcm5hbFRvb2w+DQotICAgICAgICAgICAgPFJ1bkluZGVwZW5kZW50PjA8L1J1bkluZGVwZW5kZW50Pg0KLSAgICAgICAgICAgIDxVcGRhdGVGbGFzaEJlZm9yZURlYnVnZ2luZz4xPC9VcGRhdGVGbGFzaEJlZm9yZURlYnVnZ2luZz4NCi0gICAgICAgICAgICA8Q2FwYWJpbGl0eT4xPC9DYXBhYmlsaXR5Pg0KLSAgICAgICAgICAgIDxEcml2ZXJTZWxlY3Rpb24+NDA5NjwvRHJpdmVyU2VsZWN0aW9uPg0KLSAgICAgICAgICA8L0ZsYXNoMT4NCi0gICAgICAgICAgPGJVc2VURFI+MTwvYlVzZVREUj4NCi0gICAgICAgICAgPEZsYXNoMj5CSU5cVUwyQ00zLkRMTDwvRmxhc2gyPg0KLSAgICAgICAgICA8Rmxhc2gzPiIiICgpPC9GbGFzaDM+DQotICAgICAgICAgIDxGbGFzaDQ+PC9GbGFzaDQ+DQotICAgICAgICAgIDxwRmNhcm1PdXQ+PC9wRmNhcm1PdXQ+DQotICAgICAgICAgIDxwRmNhcm1HcnA+PC9wRmNhcm1HcnA+DQotICAgICAgICAgIDxwRmNBcm1Sb290PjwvcEZjQXJtUm9vdD4NCi0gICAgICAgICAgPEZjQXJtTHN0PjA8L0ZjQXJtTHN0Pg0KLSAgICAgICAgPC9VdGlsaXRpZXM+DQotICAgICAgICA8VGFyZ2V0QXJtPg0KLSAgICAgICAgICA8QXJtTWlzYz4NCi0gICAgICAgICAgICA8YXNMc3Q+MTwvYXNMc3Q+DQotICAgICAgICAgICAgPGFzSGxsPjE8L2FzSGxsPg0KLSAgICAgICAgICAgIDxhc0FzbT4xPC9hc0FzbT4NCi0gICAgICAgICAgICA8YXNNYWNYPjE8L2FzTWFjWD4NCi0gICAgICAgICAgICA8YXNTeW1zPjE8L2FzU3ltcz4NCi0gICAgICAgICAgICA8YXNGYWxzPjE8L2FzRmFscz4NCi0gICAgICAgICAgICA8YXNEYmdEPjE8L2FzRGJnRD4NCi0gICAgICAgICAgICA8YXNGb3JtPjE8L2FzRm9ybT4NCi0gICAgICAgICAgICA8bGRMc3Q+MTwvbGRMc3Q+DQotICAgICAgICAgICAgPGxkbW0+MTwvbGRtbT4NCi0gICAgICAgICAgICA8bGRYcmVmPjE8L2xkWHJlZj4NCi0gICAgICAgICAgICA8QmlnRW5kPjA8L0JpZ0VuZD4NCi0gICAgICAgICAgICA8R0NQVVRZUD4iQ29ydGV4LU00IjwvR0NQVVRZUD4NCi0gICAgICAgICAgICA8bU9TPjA8L21PUz4NCi0gICAgICAgICAgICA8dW9jUm9tPjA8L3VvY1JvbT4NCi0gICAgICAgICAgICA8dW9jUmFtPjA8L3VvY1JhbT4NCi0gICAgICAgICAgICA8aGFkSVJPTT4xPC9oYWRJUk9NPg0KLSAgICAgICAgICAgIDxoYWRJUkFNPjE8L2hhZElSQU0+DQotICAgICAgICAgICAgPGhhZFhSQU0+MDwvaGFkWFJBTT4NCi0gICAgICAgICAgICA8dW9jWFJhbT4wPC91b2NYUmFtPg0KLSAgICAgICAgICAgIDxSdmRzVlA+MjwvUnZkc1ZQPg0KLSAgICAgICAgICAgIDxoYWRJUkFNMj4wPC9oYWRJUkFNMj4NCi0gICAgICAgICAgICA8aGFkSVJPTTI+MDwvaGFkSVJPTTI+DQotICAgICAgICAgICAgPE9uQ2hpcE1lbW9yaWVzPg0KLSAgICAgICAgICAgICAgPE9jbTE+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvT2NtMT4NCi0gICAgICAgICAgICAgIDxPY20yPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+DQotICAgICAgICAgICAgICA8L09jbTI+DQotICAgICAgICAgICAgICA8T2NtMz4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9PY20zPg0KLSAgICAgICAgICAgICAgPE9jbTQ+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvT2NtND4NCi0gICAgICAgICAgICAgIDxPY201Pg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+DQotICAgICAgICAgICAgICA8L09jbTU+DQotICAgICAgICAgICAgICA8T2NtNj4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9PY202Pg0KLSAgICAgICAgICAgICAgPElSQU0+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgyMDAwMDAwMDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDIwMDAwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9JUkFNPg0KLSAgICAgICAgICAgICAgPElST00+DQotICAgICAgICAgICAgICAgIDxUeXBlPjE8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4ODAwMDA8L1NpemU+DQotICAgICAgICAgICAgICA8L0lST00+DQotICAgICAgICAgICAgICA8WFJBTT4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9YUkFNPg0KLSAgICAgICAgICAgICAgPElSQU0yPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+DQotICAgICAgICAgICAgICA8L0lSQU0yPg0KLSAgICAgICAgICAgICAgPElST00yPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4NDAwMDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvSVJPTTI+DQotICAgICAgICAgICAgPC9PbkNoaXBNZW1vcmllcz4NCi0gICAgICAgICAgPC9Bcm1NaXNjPg0KLSAgICAgICAgICA8Q2FybT4NCi0gICAgICAgICAgICA8YXJwY3M+MTwvYXJwY3M+DQotICAgICAgICAgICAgPHN0a2Noaz4wPC9zdGtjaGs+DQotICAgICAgICAgICAgPHJlZW50cj4wPC9yZWVudHI+DQotICAgICAgICAgICAgPGludGVydz4xPC9pbnRlcnc+DQotICAgICAgICAgICAgPGJpZ2VuZD4wPC9iaWdlbmQ+DQotICAgICAgICAgICAgPFN0cmljdD4wPC9TdHJpY3Q+DQotICAgICAgICAgICAgPE9wdGltPjE8L09wdGltPg0KLSAgICAgICAgICAgIDx3TGV2ZWw+Mzwvd0xldmVsPg0KLSAgICAgICAgICAgIDx1VGh1bWI+MTwvdVRodW1iPg0KLSAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+DQotICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPi1tZmxvYXQtYWJpPXNvZnRmcCAtbWZwdT1mcHY0LXNwLWQxNiAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtTzAgLWc8L01pc2NDb250cm9scz4NCi0gICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+DQotICAgICAgICAgICAgICA8VW5kZWZpbmU+PC9VbmRlZmluZT4NCi0gICAgICAgICAgICAgIDxJbmNsdWRlUGF0aD4uLjsuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZTsuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTRfTVBVOy4uXC4uXENvbW1vblxpbmNsdWRlOy4uXHBlcmlwaGVyYWxfbGlicmFyeTsuLlxDTVNJUzsuLlxtYWluX2Z1bGw7Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdDwvSW5jbHVkZVBhdGg+DQotICAgICAgICAgICAgPC9WYXJpb3VzQ29udHJvbHM+DQotICAgICAgICAgIDwvQ2FybT4NCi0gICAgICAgICAgPEFhcm0+DQotICAgICAgICAgICAgPGJCRT4wPC9iQkU+DQotICAgICAgICAgICAgPGludGVydz4xPC9pbnRlcnc+DQotICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4NCi0gICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+DQotICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPg0KLSAgICAgICAgICAgICAgPFVuZGVmaW5lPjwvVW5kZWZpbmU+DQotICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+PC9JbmNsdWRlUGF0aD4NCi0gICAgICAgICAgICA8L1ZhcmlvdXNDb250cm9scz4NCi0gICAgICAgICAgPC9BYXJtPg0KLSAgICAgICAgICA8TERhcm0+DQotICAgICAgICAgICAgPHVtZlRhcmc+MTwvdW1mVGFyZz4NCi0gICAgICAgICAgICA8ZW5hR2FyYj4wPC9lbmFHYXJiPg0KLSAgICAgICAgICAgIDxub1N0YXJ0PjE8L25vU3RhcnQ+DQotICAgICAgICAgICAgPG5vU3RMaWI+MDwvbm9TdExpYj4NCi0gICAgICAgICAgICA8dU1hdGhMaWI+MDwvdU1hdGhMaWI+DQotICAgICAgICAgICAgPFRleHRBZGRyZXNzUmFuZ2U+PC9UZXh0QWRkcmVzc1JhbmdlPg0KLSAgICAgICAgICAgIDxEYXRhQWRkcmVzc1JhbmdlPjwvRGF0YUFkZHJlc3NSYW5nZT4NCi0gICAgICAgICAgICA8QlNTQWRkcmVzc1JhbmdlPjwvQlNTQWRkcmVzc1JhbmdlPg0KLSAgICAgICAgICAgIDxJbmNsdWRlTGlicz48L0luY2x1ZGVMaWJzPg0KLSAgICAgICAgICAgIDxJbmNsdWRlRGlyPjwvSW5jbHVkZURpcj4NCi0gICAgICAgICAgICA8TWlzYz4tWGxpbmtlciAtLWdjLXNlY3Rpb25zPC9NaXNjPg0KLSAgICAgICAgICAgIDxTY2F0dGVyRmlsZT4uXHNlY3Rpb25zLmxkPC9TY2F0dGVyRmlsZT4NCi0gICAgICAgICAgPC9MRGFybT4NCi0gICAgICAgIDwvVGFyZ2V0QXJtPg0KLSAgICAgIDwvVGFyZ2V0T3B0aW9uPg0KLSAgICAgIDxHcm91cHM+DQotICAgICAgICA8R3JvdXA+DQotICAgICAgICAgIDxHcm91cE5hbWU+U3lzdGVtPC9Hcm91cE5hbWU+DQotICAgICAgICAgIDxGaWxlcz4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5zeXN0ZW0uYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+LlxzeXN0ZW0uYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0YXJ0dXBfQVJNQ000LlM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjI8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cc3RhcnR1cF9BUk1DTTQuUzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICA8L0ZpbGVzPg0KLSAgICAgICAgPC9Hcm91cD4NCi0gICAgICAgIDxHcm91cD4NCi0gICAgICAgICAgPEdyb3VwTmFtZT5tYWluX2FuZF9jb25maWc8L0dyb3VwTmFtZT4NCi0gICAgICAgICAgPEZpbGVzPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPm1haW4uYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cbWFpbi5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+RnJlZVJUT1NDb25maWcuaDwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+NTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cRnJlZVJUT1NDb25maWcuaDwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPlJlZ1Rlc3QuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+LlxSZWdUZXN0LmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgPC9GaWxlcz4NCi0gICAgICAgIDwvR3JvdXA+DQotICAgICAgICA8R3JvdXA+DQotICAgICAgICAgIDxHcm91cE5hbWU+RnJlZVJUT1NfU291cmNlPC9Hcm91cE5hbWU+DQotICAgICAgICAgIDxGaWxlcz4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5ldmVudF9ncm91cHMuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+bGlzdC5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcbGlzdC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+cXVldWUuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHF1ZXVlLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT50YXNrcy5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcdGFza3MuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnRpbWVycy5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5oZWFwXzQuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5tcHVfd3JhcHBlcnMuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnBvcnQuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgPC9GaWxlcz4NCi0gICAgICAgIDwvR3JvdXA+DQotICAgICAgICA8R3JvdXA+DQotICAgICAgICAgIDxHcm91cE5hbWU+cGVyaXBoZXJhbF9saWJyYXJ5PC9Hcm91cE5hbWU+DQotICAgICAgICAgIDxGaWxlcz4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5idGltZXJfYXBpLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfYXBpLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5idGltZXJfcGVycGhsLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfcGVycGhsLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5pbnRlcnJ1cHRfYXBpLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2FwaS5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5pbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnBjcl9hcGkuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfYXBpLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5wY3JfcGVycGhsLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxwY3JccGNyX3BlcnBobC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+c3lzdGVtX2ludGVybmFsLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxzeXN0ZW1faW50ZXJuYWwuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICA8L0ZpbGVzPg0KLSAgICAgICAgPC9Hcm91cD4NCi0gICAgICA8L0dyb3Vwcz4NCi0gICAgPC9UYXJnZXQ+DQotICA8L1RhcmdldHM+DQotDQotPC9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyIgPz4KKzxQcm9qZWN0IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJwcm9qZWN0X3Byb2p4LnhzZCI+CisKKyAgPFNjaGVtYVZlcnNpb24+Mi4xPC9TY2hlbWFWZXJzaW9uPgorCisgIDxIZWFkZXI+IyMjIHVWaXNpb24gUHJvamVjdCwgKEMpIEtlaWwgU29mdHdhcmU8L0hlYWRlcj4KKworICA8VGFyZ2V0cz4KKyAgICA8VGFyZ2V0PgorICAgICAgPFRhcmdldE5hbWU+UlRPU0RlbW9fR0NDX01QVTwvVGFyZ2V0TmFtZT4KKyAgICAgIDxUb29sc2V0TnVtYmVyPjB4MzwvVG9vbHNldE51bWJlcj4KKyAgICAgIDxUb29sc2V0TmFtZT5BUk0tR05VPC9Ub29sc2V0TmFtZT4KKyAgICAgIDx1QUM2PjA8L3VBQzY+CisgICAgICA8VGFyZ2V0T3B0aW9uPgorICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgorICAgICAgICAgIDxEZXZpY2U+QVJNQ000X0ZQPC9EZXZpY2U+CisgICAgICAgICAgPFZlbmRvcj5BUk08L1ZlbmRvcj4KKyAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMTwvUGFja0lEPgorICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+CisgICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1PgorICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KKyAgICAgICAgICA8U3RhcnR1cEZpbGU+PC9TdGFydHVwRmlsZT4KKyAgICAgICAgICA8Rmxhc2hEcml2ZXJEbGw+VUwyQ00zKC1TMCAtQzAgLVAwIC1GRDIwMDAwMDAwIC1GQzEwMDAgLUZOMSAtRkYwTkVXX0RFVklDRSAtRlMwMCAtRkwwODAwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSkpPC9GbGFzaERyaXZlckRsbD4KKyAgICAgICAgICA8RGV2aWNlSWQ+MDwvRGV2aWNlSWQ+CisgICAgICAgICAgPFJlZ2lzdGVyRmlsZT4kJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxBUk1DTTRcSW5jbHVkZVxBUk1DTTRfRlAuaDwvUmVnaXN0ZXJGaWxlPgorICAgICAgICAgIDxNZW1vcnlFbnY+PC9NZW1vcnlFbnY+CisgICAgICAgICAgPENtcD48L0NtcD4KKyAgICAgICAgICA8QXNtPjwvQXNtPgorICAgICAgICAgIDxMaW5rZXI+PC9MaW5rZXI+CisgICAgICAgICAgPE9IU3RyaW5nPjwvT0hTdHJpbmc+CisgICAgICAgICAgPEluZmluaW9uT3B0aW9uRGxsPjwvSW5maW5pb25PcHRpb25EbGw+CisgICAgICAgICAgPFNMRTY2Q01pc2M+PC9TTEU2NkNNaXNjPgorICAgICAgICAgIDxTTEU2NkFNaXNjPjwvU0xFNjZBTWlzYz4KKyAgICAgICAgICA8U0xFNjZMaW5rZXJNaXNjPjwvU0xFNjZMaW5rZXJNaXNjPgorICAgICAgICAgIDxTRkRGaWxlPiQkRGV2aWNlOkFSTUNNNF9GUCREZXZpY2VcQVJNXFNWRFxBUk1DTTQuc3ZkPC9TRkRGaWxlPgorICAgICAgICAgIDxiQ3VzdFN2ZD4wPC9iQ3VzdFN2ZD4KKyAgICAgICAgICA8VXNlRW52PjA8L1VzZUVudj4KKyAgICAgICAgICA8QmluUGF0aD48L0JpblBhdGg+CisgICAgICAgICAgPEluY2x1ZGVQYXRoPjwvSW5jbHVkZVBhdGg+CisgICAgICAgICAgPExpYlBhdGg+PC9MaWJQYXRoPgorICAgICAgICAgIDxSZWdpc3RlckZpbGVQYXRoPjwvUmVnaXN0ZXJGaWxlUGF0aD4KKyAgICAgICAgICA8REJSZWdpc3RlckZpbGVQYXRoPjwvREJSZWdpc3RlckZpbGVQYXRoPgorICAgICAgICAgIDxUYXJnZXRTdGF0dXM+CisgICAgICAgICAgICA8RXJyb3I+MDwvRXJyb3I+CisgICAgICAgICAgICA8RXhpdENvZGVTdG9wPjA8L0V4aXRDb2RlU3RvcD4KKyAgICAgICAgICAgIDxCdXR0b25TdG9wPjA8L0J1dHRvblN0b3A+CisgICAgICAgICAgICA8Tm90R2VuZXJhdGVkPjA8L05vdEdlbmVyYXRlZD4KKyAgICAgICAgICAgIDxJbnZhbGlkRmxhc2g+MTwvSW52YWxpZEZsYXNoPgorICAgICAgICAgIDwvVGFyZ2V0U3RhdHVzPgorICAgICAgICAgIDxPdXRwdXREaXJlY3Rvcnk+LlxPYmplY3RzXDwvT3V0cHV0RGlyZWN0b3J5PgorICAgICAgICAgIDxPdXRwdXROYW1lPlJUT1NEZW1vPC9PdXRwdXROYW1lPgorICAgICAgICAgIDxDcmVhdGVFeGVjdXRhYmxlPjE8L0NyZWF0ZUV4ZWN1dGFibGU+CisgICAgICAgICAgPENyZWF0ZUxpYj4wPC9DcmVhdGVMaWI+CisgICAgICAgICAgPENyZWF0ZUhleEZpbGU+MDwvQ3JlYXRlSGV4RmlsZT4KKyAgICAgICAgICA8RGVidWdJbmZvcm1hdGlvbj4xPC9EZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj4wPC9Ccm93c2VJbmZvcm1hdGlvbj4KKyAgICAgICAgICA8TGlzdGluZ1BhdGg+LlxMaXN0aW5nc1w8L0xpc3RpbmdQYXRoPgorICAgICAgICAgIDxIZXhGb3JtYXRTZWxlY3Rpb24+MTwvSGV4Rm9ybWF0U2VsZWN0aW9uPgorICAgICAgICAgIDxNZXJnZTMySz4wPC9NZXJnZTMySz4KKyAgICAgICAgICA8Q3JlYXRlQmF0Y2hGaWxlPjA8L0NyZWF0ZUJhdGNoRmlsZT4KKyAgICAgICAgICA8QmVmb3JlQ29tcGlsZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MDwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPgorICAgICAgICAgICAgPG5TdG9wVTFYPjA8L25TdG9wVTFYPgorICAgICAgICAgICAgPG5TdG9wVTJYPjA8L25TdG9wVTJYPgorICAgICAgICAgIDwvQmVmb3JlQ29tcGlsZT4KKyAgICAgICAgICA8QmVmb3JlTWFrZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MDwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPgorICAgICAgICAgICAgPG5TdG9wQjFYPjA8L25TdG9wQjFYPgorICAgICAgICAgICAgPG5TdG9wQjJYPjA8L25TdG9wQjJYPgorICAgICAgICAgIDwvQmVmb3JlTWFrZT4KKyAgICAgICAgICA8QWZ0ZXJNYWtlPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMT4wPC9SdW5Vc2VyUHJvZzE+CisgICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFOYW1lPjwvVXNlclByb2cxTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPgorICAgICAgICAgICAgPFVzZXJQcm9nMkRvczE2TW9kZT4wPC9Vc2VyUHJvZzJEb3MxNk1vZGU+CisgICAgICAgICAgICA8blN0b3BBMVg+MDwvblN0b3BBMVg+CisgICAgICAgICAgICA8blN0b3BBMlg+MDwvblN0b3BBMlg+CisgICAgICAgICAgPC9BZnRlck1ha2U+CisgICAgICAgICAgPFNlbGVjdGVkRm9yQmF0Y2hCdWlsZD4wPC9TZWxlY3RlZEZvckJhdGNoQnVpbGQ+CisgICAgICAgICAgPFNWQ1NJZFN0cmluZz48L1NWQ1NJZFN0cmluZz4KKyAgICAgICAgPC9UYXJnZXRDb21tb25PcHRpb24+CisgICAgICAgIDxDb21tb25Qcm9wZXJ0eT4KKyAgICAgICAgICA8VXNlQ1BQQ29tcGlsZXI+MDwvVXNlQ1BQQ29tcGlsZXI+CisgICAgICAgICAgPFJWQ1RDb2RlQ29uc3Q+MDwvUlZDVENvZGVDb25zdD4KKyAgICAgICAgICA8UlZDVFpJPjA8L1JWQ1RaST4KKyAgICAgICAgICA8UlZDVE90aGVyRGF0YT4wPC9SVkNUT3RoZXJEYXRhPgorICAgICAgICAgIDxNb2R1bGVTZWxlY3Rpb24+MDwvTW9kdWxlU2VsZWN0aW9uPgorICAgICAgICAgIDxJbmNsdWRlSW5CdWlsZD4xPC9JbmNsdWRlSW5CdWlsZD4KKyAgICAgICAgICA8QWx3YXlzQnVpbGQ+MDwvQWx3YXlzQnVpbGQ+CisgICAgICAgICAgPEdlbmVyYXRlQXNzZW1ibHlGaWxlPjA8L0dlbmVyYXRlQXNzZW1ibHlGaWxlPgorICAgICAgICAgIDxBc3NlbWJsZUFzc2VtYmx5RmlsZT4wPC9Bc3NlbWJsZUFzc2VtYmx5RmlsZT4KKyAgICAgICAgICA8UHVibGljc09ubHk+MDwvUHVibGljc09ubHk+CisgICAgICAgICAgPFN0b3BPbkV4aXRDb2RlPjM8L1N0b3BPbkV4aXRDb2RlPgorICAgICAgICAgIDxDdXN0b21Bcmd1bWVudD48L0N1c3RvbUFyZ3VtZW50PgorICAgICAgICAgIDxJbmNsdWRlTGlicmFyeU1vZHVsZXM+PC9JbmNsdWRlTGlicmFyeU1vZHVsZXM+CisgICAgICAgICAgPENvbXBySW1nPjE8L0NvbXBySW1nPgorICAgICAgICA8L0NvbW1vblByb3BlcnR5PgorICAgICAgICA8RGxsT3B0aW9uPgorICAgICAgICAgIDxTaW1EbGxOYW1lPlNBUk1DTTMuRExMPC9TaW1EbGxOYW1lPgorICAgICAgICAgIDxTaW1EbGxBcmd1bWVudHM+ICAtTVBVPC9TaW1EbGxBcmd1bWVudHM+CisgICAgICAgICAgPFNpbURsZ0RsbD5EQ00uRExMPC9TaW1EbGdEbGw+CisgICAgICAgICAgPFNpbURsZ0RsbEFyZ3VtZW50cz4tcENNNDwvU2ltRGxnRGxsQXJndW1lbnRzPgorICAgICAgICAgIDxUYXJnZXREbGxOYW1lPlNBUk1DTTMuRExMPC9UYXJnZXREbGxOYW1lPgorICAgICAgICAgIDxUYXJnZXREbGxBcmd1bWVudHM+IC1NUFU8L1RhcmdldERsbEFyZ3VtZW50cz4KKyAgICAgICAgICA8VGFyZ2V0RGxnRGxsPlRDTS5ETEw8L1RhcmdldERsZ0RsbD4KKyAgICAgICAgICA8VGFyZ2V0RGxnRGxsQXJndW1lbnRzPi1wQ000PC9UYXJnZXREbGdEbGxBcmd1bWVudHM+CisgICAgICAgIDwvRGxsT3B0aW9uPgorICAgICAgICA8RGVidWdPcHRpb24+CisgICAgICAgICAgPE9QVEhYPgorICAgICAgICAgICAgPEhleFNlbGVjdGlvbj4xPC9IZXhTZWxlY3Rpb24+CisgICAgICAgICAgICA8SGV4UmFuZ2VMb3dBZGRyZXNzPjA8L0hleFJhbmdlTG93QWRkcmVzcz4KKyAgICAgICAgICAgIDxIZXhSYW5nZUhpZ2hBZGRyZXNzPjA8L0hleFJhbmdlSGlnaEFkZHJlc3M+CisgICAgICAgICAgICA8SGV4T2Zmc2V0PjA8L0hleE9mZnNldD4KKyAgICAgICAgICAgIDxPaDE2NlJlY0xlbj4xNjwvT2gxNjZSZWNMZW4+CisgICAgICAgICAgPC9PUFRIWD4KKyAgICAgICAgPC9EZWJ1Z09wdGlvbj4KKyAgICAgICAgPFV0aWxpdGllcz4KKyAgICAgICAgICA8Rmxhc2gxPgorICAgICAgICAgICAgPFVzZVRhcmdldERsbD4xPC9Vc2VUYXJnZXREbGw+CisgICAgICAgICAgICA8VXNlRXh0ZXJuYWxUb29sPjA8L1VzZUV4dGVybmFsVG9vbD4KKyAgICAgICAgICAgIDxSdW5JbmRlcGVuZGVudD4wPC9SdW5JbmRlcGVuZGVudD4KKyAgICAgICAgICAgIDxVcGRhdGVGbGFzaEJlZm9yZURlYnVnZ2luZz4xPC9VcGRhdGVGbGFzaEJlZm9yZURlYnVnZ2luZz4KKyAgICAgICAgICAgIDxDYXBhYmlsaXR5PjE8L0NhcGFiaWxpdHk+CisgICAgICAgICAgICA8RHJpdmVyU2VsZWN0aW9uPjQwOTY8L0RyaXZlclNlbGVjdGlvbj4KKyAgICAgICAgICA8L0ZsYXNoMT4KKyAgICAgICAgICA8YlVzZVREUj4xPC9iVXNlVERSPgorICAgICAgICAgIDxGbGFzaDI+QklOXFVMMkNNMy5ETEw8L0ZsYXNoMj4KKyAgICAgICAgICA8Rmxhc2gzPiIiICgpPC9GbGFzaDM+CisgICAgICAgICAgPEZsYXNoND48L0ZsYXNoND4KKyAgICAgICAgICA8cEZjYXJtT3V0PjwvcEZjYXJtT3V0PgorICAgICAgICAgIDxwRmNhcm1HcnA+PC9wRmNhcm1HcnA+CisgICAgICAgICAgPHBGY0FybVJvb3Q+PC9wRmNBcm1Sb290PgorICAgICAgICAgIDxGY0FybUxzdD4wPC9GY0FybUxzdD4KKyAgICAgICAgPC9VdGlsaXRpZXM+CisgICAgICAgIDxUYXJnZXRBcm0+CisgICAgICAgICAgPEFybU1pc2M+CisgICAgICAgICAgICA8YXNMc3Q+MTwvYXNMc3Q+CisgICAgICAgICAgICA8YXNIbGw+MTwvYXNIbGw+CisgICAgICAgICAgICA8YXNBc20+MTwvYXNBc20+CisgICAgICAgICAgICA8YXNNYWNYPjE8L2FzTWFjWD4KKyAgICAgICAgICAgIDxhc1N5bXM+MTwvYXNTeW1zPgorICAgICAgICAgICAgPGFzRmFscz4xPC9hc0ZhbHM+CisgICAgICAgICAgICA8YXNEYmdEPjE8L2FzRGJnRD4KKyAgICAgICAgICAgIDxhc0Zvcm0+MTwvYXNGb3JtPgorICAgICAgICAgICAgPGxkTHN0PjE8L2xkTHN0PgorICAgICAgICAgICAgPGxkbW0+MTwvbGRtbT4KKyAgICAgICAgICAgIDxsZFhyZWY+MTwvbGRYcmVmPgorICAgICAgICAgICAgPEJpZ0VuZD4wPC9CaWdFbmQ+CisgICAgICAgICAgICA8R0NQVVRZUD4iQ29ydGV4LU00IjwvR0NQVVRZUD4KKyAgICAgICAgICAgIDxtT1M+MDwvbU9TPgorICAgICAgICAgICAgPHVvY1JvbT4wPC91b2NSb20+CisgICAgICAgICAgICA8dW9jUmFtPjA8L3VvY1JhbT4KKyAgICAgICAgICAgIDxoYWRJUk9NPjE8L2hhZElST00+CisgICAgICAgICAgICA8aGFkSVJBTT4xPC9oYWRJUkFNPgorICAgICAgICAgICAgPGhhZFhSQU0+MDwvaGFkWFJBTT4KKyAgICAgICAgICAgIDx1b2NYUmFtPjA8L3VvY1hSYW0+CisgICAgICAgICAgICA8UnZkc1ZQPjI8L1J2ZHNWUD4KKyAgICAgICAgICAgIDxoYWRJUkFNMj4wPC9oYWRJUkFNMj4KKyAgICAgICAgICAgIDxoYWRJUk9NMj4wPC9oYWRJUk9NMj4KKyAgICAgICAgICAgIDxPbkNoaXBNZW1vcmllcz4KKyAgICAgICAgICAgICAgPE9jbTE+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY20xPgorICAgICAgICAgICAgICA8T2NtMj4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTI+CisgICAgICAgICAgICAgIDxPY20zPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtMz4KKyAgICAgICAgICAgICAgPE9jbTQ+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY200PgorICAgICAgICAgICAgICA8T2NtNT4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTU+CisgICAgICAgICAgICAgIDxPY202PgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtNj4KKyAgICAgICAgICAgICAgPElSQU0+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDIwMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lSQU0+CisgICAgICAgICAgICAgIDxJUk9NPgorICAgICAgICAgICAgICAgIDxUeXBlPjE8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDgwMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lST00+CisgICAgICAgICAgICAgIDxYUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvWFJBTT4KKyAgICAgICAgICAgICAgPElSQU0yPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvSVJBTTI+CisgICAgICAgICAgICAgIDxJUk9NMj4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgyMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDQwMDA8L1NpemU+CisgICAgICAgICAgICAgIDwvSVJPTTI+CisgICAgICAgICAgICA8L09uQ2hpcE1lbW9yaWVzPgorICAgICAgICAgIDwvQXJtTWlzYz4KKyAgICAgICAgICA8Q2FybT4KKyAgICAgICAgICAgIDxhcnBjcz4xPC9hcnBjcz4KKyAgICAgICAgICAgIDxzdGtjaGs+MDwvc3RrY2hrPgorICAgICAgICAgICAgPHJlZW50cj4wPC9yZWVudHI+CisgICAgICAgICAgICA8aW50ZXJ3PjE8L2ludGVydz4KKyAgICAgICAgICAgIDxiaWdlbmQ+MDwvYmlnZW5kPgorICAgICAgICAgICAgPFN0cmljdD4wPC9TdHJpY3Q+CisgICAgICAgICAgICA8T3B0aW0+MTwvT3B0aW0+CisgICAgICAgICAgICA8d0xldmVsPjM8L3dMZXZlbD4KKyAgICAgICAgICAgIDx1VGh1bWI+MTwvdVRodW1iPgorICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KKyAgICAgICAgICAgICAgPE1pc2NDb250cm9scz4tbWZsb2F0LWFiaT1zb2Z0ZnAgLW1mcHU9ZnB2NC1zcC1kMTYgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLU8wIC1nPC9NaXNjQ29udHJvbHM+CisgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CisgICAgICAgICAgICAgIDxVbmRlZmluZT48L1VuZGVmaW5lPgorICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+Li47Li5cLi5cLi5cU291cmNlXGluY2x1ZGU7Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVTsuLlwuLlxDb21tb25caW5jbHVkZTsuLlxwZXJpcGhlcmFsX2xpYnJhcnk7Li5cQ01TSVM7Li5cbWFpbl9mdWxsOy4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHQ8L0luY2x1ZGVQYXRoPgorICAgICAgICAgICAgPC9WYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgPC9DYXJtPgorICAgICAgICAgIDxBYXJtPgorICAgICAgICAgICAgPGJCRT4wPC9iQkU+CisgICAgICAgICAgICA8aW50ZXJ3PjE8L2ludGVydz4KKyAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CisgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CisgICAgICAgICAgICAgIDxVbmRlZmluZT48L1VuZGVmaW5lPgorICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+PC9JbmNsdWRlUGF0aD4KKyAgICAgICAgICAgIDwvVmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgIDwvQWFybT4KKyAgICAgICAgICA8TERhcm0+CisgICAgICAgICAgICA8dW1mVGFyZz4xPC91bWZUYXJnPgorICAgICAgICAgICAgPGVuYUdhcmI+MDwvZW5hR2FyYj4KKyAgICAgICAgICAgIDxub1N0YXJ0PjE8L25vU3RhcnQ+CisgICAgICAgICAgICA8bm9TdExpYj4wPC9ub1N0TGliPgorICAgICAgICAgICAgPHVNYXRoTGliPjA8L3VNYXRoTGliPgorICAgICAgICAgICAgPFRleHRBZGRyZXNzUmFuZ2U+PC9UZXh0QWRkcmVzc1JhbmdlPgorICAgICAgICAgICAgPERhdGFBZGRyZXNzUmFuZ2U+PC9EYXRhQWRkcmVzc1JhbmdlPgorICAgICAgICAgICAgPEJTU0FkZHJlc3NSYW5nZT48L0JTU0FkZHJlc3NSYW5nZT4KKyAgICAgICAgICAgIDxJbmNsdWRlTGlicz48L0luY2x1ZGVMaWJzPgorICAgICAgICAgICAgPEluY2x1ZGVEaXI+PC9JbmNsdWRlRGlyPgorICAgICAgICAgICAgPE1pc2M+LVhsaW5rZXIgLS1nYy1zZWN0aW9uczwvTWlzYz4KKyAgICAgICAgICAgIDxTY2F0dGVyRmlsZT4uXHNlY3Rpb25zLmxkPC9TY2F0dGVyRmlsZT4KKyAgICAgICAgICA8L0xEYXJtPgorICAgICAgICA8L1RhcmdldEFybT4KKyAgICAgIDwvVGFyZ2V0T3B0aW9uPgorICAgICAgPEdyb3Vwcz4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+U3lzdGVtPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zeXN0ZW0uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cc3lzdGVtLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdGFydHVwX0FSTUNNNC5TPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjI8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+LlxzdGFydHVwX0FSTUNNNC5TPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5tYWluX2FuZF9jb25maWc8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm1haW4uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXG1haW4uYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPkZyZWVSVE9TQ29uZmlnLmg8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+NTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxGcmVlUlRPU0NvbmZpZy5oPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+UmVnVGVzdC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+LlxSZWdUZXN0LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPkZyZWVSVE9TX1NvdXJjZTwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+ZXZlbnRfZ3JvdXBzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5saXN0LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcbGlzdC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+cXVldWUuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+dGFza3MuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+dGltZXJzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5oZWFwXzQuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+bXB1X3dyYXBwZXJzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcQ29tbW9uXG1wdV93cmFwcGVycy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+cG9ydC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5wZXJpcGhlcmFsX2xpYnJhcnk8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmJ0aW1lcl9hcGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfYXBpLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5idGltZXJfcGVycGhsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX3BlcnBobC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X2FwaS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfYXBpLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5pbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5pbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5wY3JfYXBpLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9hcGkuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnBjcl9wZXJwaGwuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxwY3JccGNyX3BlcnBobC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3lzdGVtX2ludGVybmFsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcc3lzdGVtX2ludGVybmFsLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICA8L0dyb3Vwcz4KKyAgICA8L1RhcmdldD4KKyAgPC9UYXJnZXRzPgorCisgIDxSVEU+CisgICAgPGFwaXMvPgorICAgIDxjb21wb25lbnRzLz4KKyAgICA8ZmlsZXMvPgorICA8L1JURT4KKworPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCA1YjQ1Y2UxLi5iMTA5OGVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CmluZGV4IDc5MGIxYzQuLmRkMzI0OGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKQEAgLTgsNyArOCw3IEBACiAgIDxFeHRlbnNpb25zPgogICAgIDxjRXh0PiouYzwvY0V4dD4KICAgICA8YUV4dD4qLnMqOyAqLnNyYzsgKi5hKjwvYUV4dD4KLSAgICA8b0V4dD4qLm9iajwvb0V4dD4KKyAgICA8b0V4dD4qLm9iajsgKi5vPC9vRXh0PgogICAgIDxsRXh0PioubGliPC9sRXh0PgogICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0PgogICAgIDxwRXh0PioucGxtPC9wRXh0PgpAQCAtMTAwLDcgKzEwMCw4IEBACiAgICAgICAgIDx0UlN5c1Z3PjE8L3RSU3lzVnc+CiAgICAgICAgIDxzUnVuRGViPjA8L3NSdW5EZWI+CiAgICAgICAgIDxzTHJ0aW1lPjA8L3NMcnRpbWU+Ci0gICAgICAgIDxuVHNlbD4xPC9uVHNlbD4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgorICAgICAgICA8blRzZWw+MDwvblRzZWw+CiAgICAgICAgIDxzRGxsPjwvc0RsbD4KICAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KICAgICAgICAgPHNEbGdEbGw+PC9zRGxnRGxsPgpAQCAtMTkzLDYgKzE5NCwxNiBAQAogICAgICAgPExpbnRFeGVjdXRhYmxlPjwvTGludEV4ZWN1dGFibGU+CiAgICAgICA8TGludENvbmZpZ0ZpbGU+PC9MaW50Q29uZmlnRmlsZT4KICAgICAgIDxiTGludEF1dG8+MDwvYkxpbnRBdXRvPgorICAgICAgPGJBdXRvR2VuRD4wPC9iQXV0b0dlbkQ+CisgICAgICA8TG50RXhGbGFncz4wPC9MbnRFeEZsYWdzPgorICAgICAgPHBNaXNyYU5hbWU+PC9wTWlzcmFOYW1lPgorICAgICAgPHBzek1ydWxlPjwvcHN6TXJ1bGU+CisgICAgICA8cFNpbmdDbWRzPjwvcFNpbmdDbWRzPgorICAgICAgPHBNdWx0Q21kcz48L3BNdWx0Q21kcz4KKyAgICAgIDxwTWlzcmFOYW1lcD48L3BNaXNyYU5hbWVwPgorICAgICAgPHBzek1ydWxlcD48L3Bzek1ydWxlcD4KKyAgICAgIDxwU2luZ0NtZHNwPjwvcFNpbmdDbWRzcD4KKyAgICAgIDxwTXVsdENtZHNwPjwvcE11bHRDbWRzcD4KICAgICA8L1RhcmdldE9wdGlvbj4KICAgPC9UYXJnZXQ+CiAKQEAgLTIwNyw3ICsyMTgsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4yPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxzdGFydHVwX01QU19DTTQuUzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTIyOCw3ICsyMzgsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MjwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cbWFpbi5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMjQxLDcgKzI1MCw2IEBACiAgICAgICA8RmlsZU51bWJlcj4zPC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjU8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxGcmVlUlRPU0NvbmZpZy5oPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMjU0LDcgKzI2Miw2IEBACiAgICAgICA8RmlsZU51bWJlcj40PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXFJlZ1Rlc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTI3NSw3ICsyODIsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+NTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMjg4LDcgKzI5NCw2IEBACiAgICAgICA8RmlsZU51bWJlcj42PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcbGlzdC5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMzAxLDcgKzMwNiw2IEBACiAgICAgICA8RmlsZU51bWJlcj43PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccXVldWUuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTMxNCw3ICszMTgsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+ODwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHRhc2tzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0zMjcsNyArMzMwLDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjk8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTM0MCw3ICszNDIsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MTA8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMzUzLDcgKzM1NCw2IEBACiAgICAgICA8RmlsZU51bWJlcj4xMTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXFJWRFNcQVJNX0NNNF9NUFVccG9ydC5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMzY2LDcgKzM2Niw2IEBACiAgICAgICA8RmlsZU51bWJlcj4xMjwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTM3NCw2ICszNzMsMTggQEAKICAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgogICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KICAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xMzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0cmVhbV9idWZmZXIuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CiAgIDwvR3JvdXA+CiAKICAgPEdyb3VwPgpAQCAtMzg0LDEwICszOTUsOSBAQAogICAgIDxSdGVGbGc+MDwvUnRlRmxnPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNDwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfYXBpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0zOTcsMTAgKzQwNyw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTQ8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTQxMCwxMCArNDE5LDkgQEAKICAgICA8L0ZpbGU+CiAgICAgPEZpbGU+CiAgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+Ci0gICAgICA8RmlsZU51bWJlcj4xNTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE2PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9udmljX3BlcnBobC5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtNDIzLDEwICs0MzEsOSBAQAogICAgIDwvRmlsZT4KICAgICA8RmlsZT4KICAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KLSAgICAgIDxGaWxlTnVtYmVyPjE2PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTc8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfYXBpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC00MzYsMTAgKzQ0Myw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTc8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xODwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTQ0OSwxMCArNDU1LDkgQEAKICAgICA8L0ZpbGU+CiAgICAgPEZpbGU+CiAgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+Ci0gICAgICA8RmlsZU51bWJlcj4xODwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE5PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTQ2MiwxMCArNDY3LDkgQEAKICAgICA8L0ZpbGU+CiAgICAgPEZpbGU+CiAgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+Ci0gICAgICA8RmlsZU51bWJlcj4xOTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjIwPC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTQ3NSwxMCArNDc5LDkgQEAKICAgICA8L0ZpbGU+CiAgICAgPEZpbGU+CiAgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+Ci0gICAgICA8RmlsZU51bWJlcj4yMDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjIxPC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcc3lzdGVtX2ludGVybmFsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAppbmRleCA0YWQ4ZWFlLi5iZTk4NzUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKQEAgLTEwLDExICsxMCwxMyBAQAogICAgICAgPFRhcmdldE5hbWU+UlRPU0RlbW88L1RhcmdldE5hbWU+CiAgICAgICA8VG9vbHNldE51bWJlcj4weDQ8L1Rvb2xzZXROdW1iZXI+CiAgICAgICA8VG9vbHNldE5hbWU+QVJNLUFEUzwvVG9vbHNldE5hbWU+CisgICAgICA8cENDVXNlZD41MDYwNTI4OjpWNS4wNiB1cGRhdGUgNSAoYnVpbGQgNTI4KTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8dUFDNj4wPC91QUM2PgogICAgICAgPFRhcmdldE9wdGlvbj4KICAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KICAgICAgICAgICA8RGV2aWNlPkFSTUNNNF9GUDwvRGV2aWNlPgogICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+Ci0gICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNC4zLjA8L1BhY2tJRD4KKyAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMTwvUGFja0lEPgogICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+CiAgICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1PgogICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KQEAgLTEyNCw0NyArMTI2LDYgQEAKICAgICAgICAgICAgIDxIZXhPZmZzZXQ+MDwvSGV4T2Zmc2V0PgogICAgICAgICAgICAgPE9oMTY2UmVjTGVuPjE2PC9PaDE2NlJlY0xlbj4KICAgICAgICAgICA8L09QVEhYPgotICAgICAgICAgIDxTaW11bGF0b3I+Ci0gICAgICAgICAgICA8VXNlU2ltdWxhdG9yPjA8L1VzZVNpbXVsYXRvcj4KLSAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPgotICAgICAgICAgICAgPFJ1blRvTWFpbj4xPC9SdW5Ub01haW4+Ci0gICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4KLSAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPgotICAgICAgICAgICAgPFJlc3RvcmVNZW1vcnlEaXNwbGF5PjE8L1Jlc3RvcmVNZW1vcnlEaXNwbGF5PgotICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MTwvUmVzdG9yZUZ1bmN0aW9ucz4KLSAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4KLSAgICAgICAgICAgIDxMaW1pdFNwZWVkVG9SZWFsVGltZT4wPC9MaW1pdFNwZWVkVG9SZWFsVGltZT4KLSAgICAgICAgICAgIDxSZXN0b3JlU3lzVnc+MTwvUmVzdG9yZVN5c1Z3PgotICAgICAgICAgIDwvU2ltdWxhdG9yPgotICAgICAgICAgIDxUYXJnZXQ+Ci0gICAgICAgICAgICA8VXNlVGFyZ2V0PjE8L1VzZVRhcmdldD4KLSAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPgotICAgICAgICAgICAgPFJ1blRvTWFpbj4wPC9SdW5Ub01haW4+Ci0gICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4KLSAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPgotICAgICAgICAgICAgPFJlc3RvcmVNZW1vcnlEaXNwbGF5PjE8L1Jlc3RvcmVNZW1vcnlEaXNwbGF5PgotICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MDwvUmVzdG9yZUZ1bmN0aW9ucz4KLSAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4KLSAgICAgICAgICAgIDxSZXN0b3JlVHJhY2Vwb2ludHM+MTwvUmVzdG9yZVRyYWNlcG9pbnRzPgotICAgICAgICAgICAgPFJlc3RvcmVTeXNWdz4xPC9SZXN0b3JlU3lzVnc+Ci0gICAgICAgICAgPC9UYXJnZXQ+Ci0gICAgICAgICAgPFJ1bkRlYnVnQWZ0ZXJCdWlsZD4wPC9SdW5EZWJ1Z0FmdGVyQnVpbGQ+Ci0gICAgICAgICAgPFRhcmdldFNlbGVjdGlvbj4xPC9UYXJnZXRTZWxlY3Rpb24+Ci0gICAgICAgICAgPFNpbURsbHM+Ci0gICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPgotICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4KLSAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4KLSAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4KLSAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+PC9Jbml0aWFsaXphdGlvbkZpbGU+Ci0gICAgICAgICAgPC9TaW1EbGxzPgotICAgICAgICAgIDxUYXJnZXREbGxzPgotICAgICAgICAgICAgPENwdURsbD48L0NwdURsbD4KLSAgICAgICAgICAgIDxDcHVEbGxBcmd1bWVudHM+PC9DcHVEbGxBcmd1bWVudHM+Ci0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbD48L1BlcmlwaGVyYWxEbGw+Ci0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbEFyZ3VtZW50cz48L1BlcmlwaGVyYWxEbGxBcmd1bWVudHM+Ci0gICAgICAgICAgICA8SW5pdGlhbGl6YXRpb25GaWxlPmluaXRfYXBwLmluaTwvSW5pdGlhbGl6YXRpb25GaWxlPgotICAgICAgICAgICAgPERyaXZlcj5CSU5cVUwyQ00zLkRMTDwvRHJpdmVyPgotICAgICAgICAgIDwvVGFyZ2V0RGxscz4KICAgICAgICAgPC9EZWJ1Z09wdGlvbj4KICAgICAgICAgPFV0aWxpdGllcz4KICAgICAgICAgICA8Rmxhc2gxPgpAQCAtMjI5LDYgKzE5MCw3IEBACiAgICAgICAgICAgICA8dXNlVWxpYj4xPC91c2VVbGliPgogICAgICAgICAgICAgPEVuZFNlbD4xPC9FbmRTZWw+CiAgICAgICAgICAgICA8dUx0Y2c+MDwvdUx0Y2c+CisgICAgICAgICAgICA8blNlY3VyZT4wPC9uU2VjdXJlPgogICAgICAgICAgICAgPFJvU2VsRD4zPC9Sb1NlbEQ+CiAgICAgICAgICAgICA8UndTZWxEPjM8L1J3U2VsRD4KICAgICAgICAgICAgIDxDb2RlU2VsPjA8L0NvZGVTZWw+CkBAIC0zNjUsNiArMzI3LDExIEBACiAgICAgICAgICAgICA8dXNlWE8+MDwvdXNlWE8+CiAgICAgICAgICAgICA8djZMYW5nPjA8L3Y2TGFuZz4KICAgICAgICAgICAgIDx2NkxhbmdQPjA8L3Y2TGFuZ1A+CisgICAgICAgICAgICA8dlNob3J0RW4+MTwvdlNob3J0RW4+CisgICAgICAgICAgICA8dlNob3J0V2NoPjE8L3ZTaG9ydFdjaD4KKyAgICAgICAgICAgIDx2Nkx0bz4wPC92Nkx0bz4KKyAgICAgICAgICAgIDx2Nld0RT4wPC92Nld0RT4KKyAgICAgICAgICAgIDx2NlJ0dGk+MDwvdjZSdHRpPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTM4Miw2ICszNDksNyBAQAogICAgICAgICAgICAgPE5vV2Fybj4wPC9Ob1dhcm4+CiAgICAgICAgICAgICA8dVN1cnBJbmM+MDwvdVN1cnBJbmM+CiAgICAgICAgICAgICA8dXNlWE8+MDwvdXNlWE8+CisgICAgICAgICAgICA8dUNsYW5nQXM+MDwvdUNsYW5nQXM+CiAgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgogICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgogICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgpAQCAtNDgyLDYgKzQ1MCwxMSBAQAogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcQ29tbW9uXG1wdV93cmFwcGVycy5jPC9GaWxlUGF0aD4KICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RyZWFtX2J1ZmZlci5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgPC9GaWxlcz4KICAgICAgICAgPC9Hcm91cD4KICAgICAgICAgPEdyb3VwPgpAQCAtNTMzLDQgKzUwNiwxMCBAQAogICAgIDwvVGFyZ2V0PgogICA8L1RhcmdldHM+CiAKKyAgPFJURT4KKyAgICA8YXBpcy8+CisgICAgPGNvbXBvbmVudHMvPgorICAgIDxmaWxlcy8+CisgIDwvUlRFPgorCiA8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggOTBlMTYyNS4uMTg5ZDA1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMKaW5kZXggMGIwZDg0Ni4uNGZjNzNiNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCA1YTcwYTY2Li41ZjhkMzliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpAQCAtOTAsNyArNDksNyBAQAogLyogVGhlIE1QVSB2ZXJzaW9uIG9mIHBvcnQuYyBpbmNsdWRlcyBhbmQgZXhjbHVkZXMgZnVuY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUNCiBzZXR0aW5ncyB3aXRoaW4gdGhpcyBmaWxlLiAgVGhlcmVmb3JlLCB0byBlbnN1cmUgYWxsIHRoZSBmdW5jdGlvbnMgaW4gcG9ydC5jDQogYnVpbGQsIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGhhcyBhbGwgb3B0aW9ucyB0dXJuZWQgb24uICovDQotCQ0KKw0KICNkZWZpbmUgY29uZmlnVVNFX1BSRUVNUFRJT04JCQkJCTENCiAjZGVmaW5lIGNvbmZpZ1RJQ0tfUkFURV9IWgkJCQkJCSggMTAwMCApDQogI2RlZmluZSBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04JMQ0KQEAgLTExMiw3ICs3MSw3IEBACiAjZGVmaW5lIGNvbmZpZ1VTRV9NQUxMT0NfRkFJTEVEX0hPT0sJCQkxDQogI2RlZmluZSBjb25maWdVU0VfQVBQTElDQVRJT05fVEFTS19UQUcJCQkxDQogI2RlZmluZSBjb25maWdVU0VfQ09VTlRJTkdfU0VNQVBIT1JFUwkJCTENCi0jZGVmaW5lIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04JCQkxDQorI2RlZmluZSBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OCQkJMA0KICNkZWZpbmUgY29uZmlnVVNFX1RJQ0tMRVNTX0lETEUJCQkJCTANCiAjZGVmaW5lIGNvbmZpZ05VTV9USFJFQURfTE9DQUxfU1RPUkFHRV9QT0lOVEVSUwkyDQogDQpAQCAtMTYyLDcgKzEyMSw3IEBACiAJLyogX19CVklDX1BSSU9fQklUUyB3aWxsIGJlIHNwZWNpZmllZCB3aGVuIENNU0lTIGlzIGJlaW5nIHVzZWQuICovDQogCSNkZWZpbmUgY29uZmlnUFJJT19CSVRTCQkgICAgICAgX19OVklDX1BSSU9fQklUUw0KICNlbHNlDQotCSNkZWZpbmUgY29uZmlnUFJJT19CSVRTCQkgICAgICAgNAkvKiAxNSBwcmlvcml0eSBsZXZlbHMgKi8NCisJI2RlZmluZSBjb25maWdQUklPX0JJVFMJCSAgICAgICA4CS8qIDE1IHByaW9yaXR5IGxldmVscyAqLw0KICNlbmRpZg0KIA0KIC8qIFRoZSBsb3dlc3QgaW50ZXJydXB0IHByaW9yaXR5IHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBjYWxsIHRvIGEgInNldCBwcmlvcml0eSINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKaW5kZXggYjE5ZWEyZi4uMzY1ZWI2OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eApAQCAtOCw3ICs4LDcgQEAKICAgPEV4dGVuc2lvbnM+CiAgICAgPGNFeHQ+Ki5jOyouUzwvY0V4dD4KICAgICA8YUV4dD48L2FFeHQ+Ci0gICAgPG9FeHQ+Ki5vYmo8L29FeHQ+CisgICAgPG9FeHQ+Ki5vYmo7ICoubzwvb0V4dD4KICAgICA8bEV4dD4qLmxpYjwvbEV4dD4KICAgICA8dEV4dD4qLnR4dDsgKi5oOyAqLmluYzwvdEV4dD4KICAgICA8cEV4dD4qLnBsbTwvcEV4dD4KQEAgLTEwMCw2ICsxMDAsNyBAQAogICAgICAgICA8dFJTeXNWdz4xPC90UlN5c1Z3PgogICAgICAgICA8c1J1bkRlYj4wPC9zUnVuRGViPgogICAgICAgICA8c0xydGltZT4wPC9zTHJ0aW1lPgorICAgICAgICA8YkV2UmVjT24+MTwvYkV2UmVjT24+CiAgICAgICAgIDxuVHNlbD4wPC9uVHNlbD4KICAgICAgICAgPHNEbGw+PC9zRGxsPgogICAgICAgICA8c0RsbFBhPjwvc0RsbFBhPgpAQCAtMTcyLDcgKzE3Myw3IEBACiAgICAgICA8RGVidWdGbGFnPgogICAgICAgICA8dHJhY2U+MDwvdHJhY2U+CiAgICAgICAgIDxwZXJpb2RpYz4xPC9wZXJpb2RpYz4KLSAgICAgICAgPGFMd2luPjA8L2FMd2luPgorICAgICAgICA8YUx3aW4+MTwvYUx3aW4+CiAgICAgICAgIDxhQ292ZXI+MDwvYUNvdmVyPgogICAgICAgICA8YVNlcjE+MDwvYVNlcjE+CiAgICAgICAgIDxhU2VyMj4wPC9hU2VyMj4KQEAgLTE5OCw5ICsxOTksMTYgQEAKICAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgogICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CiAgICAgICA8YkxpbnRBdXRvPjA8L2JMaW50QXV0bz4KLSAgICAgIDxMaW4yRXhlY3V0YWJsZT48L0xpbjJFeGVjdXRhYmxlPgotICAgICAgPExpbjJDb25maWdGaWxlPjwvTGluMkNvbmZpZ0ZpbGU+Ci0gICAgICA8YkxpbjJBdXRvPjA8L2JMaW4yQXV0bz4KKyAgICAgIDxiQXV0b0dlbkQ+MDwvYkF1dG9HZW5EPgorICAgICAgPExudEV4RmxhZ3M+MDwvTG50RXhGbGFncz4KKyAgICAgIDxwTWlzcmFOYW1lPjwvcE1pc3JhTmFtZT4KKyAgICAgIDxwc3pNcnVsZT48L3Bzek1ydWxlPgorICAgICAgPHBTaW5nQ21kcz48L3BTaW5nQ21kcz4KKyAgICAgIDxwTXVsdENtZHM+PC9wTXVsdENtZHM+CisgICAgICA8cE1pc3JhTmFtZXA+PC9wTWlzcmFOYW1lcD4KKyAgICAgIDxwc3pNcnVsZXA+PC9wc3pNcnVsZXA+CisgICAgICA8cFNpbmdDbWRzcD48L3BTaW5nQ21kc3A+CisgICAgICA8cE11bHRDbWRzcD48L3BNdWx0Q21kc3A+CiAgICAgICA8RGVidWdEZXNjcmlwdGlvbj4KICAgICAgICAgPEVuYWJsZT4xPC9FbmFibGU+CiAgICAgICAgIDxFbmFibGVMb2c+MDwvRW5hYmxlTG9nPgpAQCAtMzc2LDYgKzM4NCwxOCBAQAogICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CiAgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgogICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RyZWFtX2J1ZmZlci5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KICAgPC9Hcm91cD4KIAogPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKaW5kZXggYzQ5Y2RjNC4uYTcwZTk2OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CkBAIC0xMSwxMSArMTEsMTIgQEAKICAgICAgIDxUb29sc2V0TnVtYmVyPjB4MzwvVG9vbHNldE51bWJlcj4KICAgICAgIDxUb29sc2V0TmFtZT5BUk0tR05VPC9Ub29sc2V0TmFtZT4KICAgICAgIDxwQ0NVc2VkPjUwNjAwNjE6OlY1LjA2IHVwZGF0ZSAxIChidWlsZCA2MSk6OkFSTUNDPC9wQ0NVc2VkPgorICAgICAgPHVBQzY+MDwvdUFDNj4KICAgICAgIDxUYXJnZXRPcHRpb24+CiAgICAgICAgIDxUYXJnZXRDb21tb25PcHRpb24+CiAgICAgICAgICAgPERldmljZT5BUk1DTTRfRlA8L0RldmljZT4KICAgICAgICAgICA8VmVuZG9yPkFSTTwvVmVuZG9yPgotICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjQuNS4wPC9QYWNrSUQ+CisgICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjE8L1BhY2tJRD4KICAgICAgICAgICA8UGFja1VSTD5odHRwOi8vd3d3LmtlaWwuY29tL3BhY2svPC9QYWNrVVJMPgogICAgICAgICAgIDxDcHU+SVJPTSgweDAwMDAwMDAwLDB4ODAwMDApIElSQU0oMHgyMDAwMDAwMCwweDIwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTQiKSBGUFUyIENMT0NLKDEyMDAwMDAwKSBFU0VMIEVMSVRUTEU8L0NwdT4KICAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+CkBAIC0zNDQsMTAgKzM0NSwyMSBAQAogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTRfTVBVXHBvcnQuYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0cmVhbV9idWZmZXIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICA8L0dyb3Vwcz4KICAgICA8L1RhcmdldD4KICAgPC9UYXJnZXRzPgogCisgIDxSVEU+CisgICAgPGFwaXMvPgorICAgIDxjb21wb25lbnRzLz4KKyAgICA8ZmlsZXMvPgorICA8L1JURT4KKwogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCmluZGV4IDViNDVjZTEuLmIxMDk4ZWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CmluZGV4IGZmZTU4YTAuLmUwN2ZjZDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eApAQCAtOCw3ICs4LDcgQEAKICAgPEV4dGVuc2lvbnM+CiAgICAgPGNFeHQ+Ki5jPC9jRXh0PgogICAgIDxhRXh0Pioucyo7ICouc3JjOyAqLmEqPC9hRXh0PgotICAgIDxvRXh0Pioub2JqPC9vRXh0PgorICAgIDxvRXh0Pioub2JqOyAqLm88L29FeHQ+CiAgICAgPGxFeHQ+Ki5saWI8L2xFeHQ+CiAgICAgPHRFeHQ+Ki50eHQ7ICouaDsgKi5pbmM8L3RFeHQ+CiAgICAgPHBFeHQ+Ki5wbG08L3BFeHQ+CkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4KICAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KICAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgogICAgICAgICA8blRzZWw+MDwvblRzZWw+CiAgICAgICAgIDxzRGxsPjwvc0RsbD4KICAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KQEAgLTIwMyw5ICsyMDQsMTYgQEAKICAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgogICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CiAgICAgICA8YkxpbnRBdXRvPjA8L2JMaW50QXV0bz4KLSAgICAgIDxMaW4yRXhlY3V0YWJsZT48L0xpbjJFeGVjdXRhYmxlPgotICAgICAgPExpbjJDb25maWdGaWxlPjwvTGluMkNvbmZpZ0ZpbGU+Ci0gICAgICA8YkxpbjJBdXRvPjA8L2JMaW4yQXV0bz4KKyAgICAgIDxiQXV0b0dlbkQ+MDwvYkF1dG9HZW5EPgorICAgICAgPExudEV4RmxhZ3M+MDwvTG50RXhGbGFncz4KKyAgICAgIDxwTWlzcmFOYW1lPjwvcE1pc3JhTmFtZT4KKyAgICAgIDxwc3pNcnVsZT48L3Bzek1ydWxlPgorICAgICAgPHBTaW5nQ21kcz48L3BTaW5nQ21kcz4KKyAgICAgIDxwTXVsdENtZHM+PC9wTXVsdENtZHM+CisgICAgICA8cE1pc3JhTmFtZXA+PC9wTWlzcmFOYW1lcD4KKyAgICAgIDxwc3pNcnVsZXA+PC9wc3pNcnVsZXA+CisgICAgICA8cFNpbmdDbWRzcD48L3BTaW5nQ21kc3A+CisgICAgICA8cE11bHRDbWRzcD48L3BNdWx0Q21kc3A+CiAgICAgPC9UYXJnZXRPcHRpb24+CiAgIDwvVGFyZ2V0PgogCkBAIC0zNzUsNiArMzgzLDE4IEBACiAgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KICAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CiAgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgogICA8L0dyb3VwPgogCiA8L1Byb2plY3RPcHQ+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CmluZGV4IDcwNTZlMjUuLmExZWY2NDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CkBAIC0xMCwxMiArMTAsMTMgQEAKICAgICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vPC9UYXJnZXROYW1lPgogICAgICAgPFRvb2xzZXROdW1iZXI+MHg0PC9Ub29sc2V0TnVtYmVyPgogICAgICAgPFRvb2xzZXROYW1lPkFSTS1BRFM8L1Rvb2xzZXROYW1lPgotICAgICAgPHBDQ1VzZWQ+NTA2MDA2MTo6VjUuMDYgdXBkYXRlIDEgKGJ1aWxkIDYxKTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8cENDVXNlZD41MDYwNTI4OjpWNS4wNiB1cGRhdGUgNSAoYnVpbGQgNTI4KTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8dUFDNj4wPC91QUM2PgogICAgICAgPFRhcmdldE9wdGlvbj4KICAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KICAgICAgICAgICA8RGV2aWNlPkFSTUNNNF9GUDwvRGV2aWNlPgogICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+Ci0gICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNC41LjA8L1BhY2tJRD4KKyAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMTwvUGFja0lEPgogICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+CiAgICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1PgogICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KQEAgLTMyOCw2ICszMjksOSBAQAogICAgICAgICAgICAgPHY2TGFuZ1A+MDwvdjZMYW5nUD4KICAgICAgICAgICAgIDx2U2hvcnRFbj4wPC92U2hvcnRFbj4KICAgICAgICAgICAgIDx2U2hvcnRXY2g+MDwvdlNob3J0V2NoPgorICAgICAgICAgICAgPHY2THRvPjA8L3Y2THRvPgorICAgICAgICAgICAgPHY2V3RFPjA8L3Y2V3RFPgorICAgICAgICAgICAgPHY2UnR0aT4wPC92NlJ0dGk+CiAgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgogICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgogICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgpAQCAtMzQ1LDYgKzM0OSw3IEBACiAgICAgICAgICAgICA8Tm9XYXJuPjA8L05vV2Fybj4KICAgICAgICAgICAgIDx1U3VycEluYz4wPC91U3VycEluYz4KICAgICAgICAgICAgIDx1c2VYTz4wPC91c2VYTz4KKyAgICAgICAgICAgIDx1Q2xhbmdBcz4wPC91Q2xhbmdBcz4KICAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CkBAIC00NDUsMTAgKzQ1MCwyMSBAQAogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcQ29tbW9uXG1wdV93cmFwcGVycy5jPC9GaWxlUGF0aD4KICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RyZWFtX2J1ZmZlci5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgPC9GaWxlcz4KICAgICAgICAgPC9Hcm91cD4KICAgICAgIDwvR3JvdXBzPgogICAgIDwvVGFyZ2V0PgogICA8L1RhcmdldHM+CiAKKyAgPFJURT4KKyAgICA8YXBpcy8+CisgICAgPGNvbXBvbmVudHMvPgorICAgIDxmaWxlcy8+CisgIDwvUlRFPgorCiA8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCA5MGUxNjI1Li4xODlkMDViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9tYWluLmMKaW5kZXggOWQxMmM0NS4uMDI0NDJjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpAQCAtOTEsNiArNTAsNyBAQAogI2luY2x1ZGUgInNlbXBoci5oIg0KICNpbmNsdWRlICJ0aW1lcnMuaCINCiAjaW5jbHVkZSAiZXZlbnRfZ3JvdXBzLmgiDQorI2luY2x1ZGUgInN0cmVhbV9idWZmZXIuaCINCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCkBAIC0xOTgsNiArMTU4LDcgQEAKIHN0YXRpYyB2b2lkIHBydkV4ZXJjaXNlRXZlbnRHcm91cEFQSSggdm9pZCApOw0KIHN0YXRpYyB2b2lkIHBydkV4ZXJjaXNlU2VtYXBob3JlQVBJKCB2b2lkICk7DQogc3RhdGljIHZvaWQgcHJ2RXhlcmNpc2VUYXNrTm90aWZpY2F0aW9uQVBJKCB2b2lkICk7DQorc3RhdGljIHZvaWQgcHJ2RXhlcmNpc2VTdHJlYW1CdWZmZXJBUEkoIHZvaWQgKTsNCiANCiAvKg0KICAqIEp1c3QgY29uZmlndXJlcyBhbnkgY2xvY2tzIGFuZCBJTyBuZWNlc3NhcnkuDQpAQCAtMjUyLDcgKzIxMywxMSBAQAogLyogVGhlIHRpbWVyIHRoYXQgcGVyaW9kaWNhbGx5IHNlbmRzIGRhdGEgdG8gdGhlIGNoZWNrIHRhc2sgb24gdGhlIHF1ZXVlLiAqLw0KIHN0YXRpYyBUaW1lckhhbmRsZV90IHhUaW1lciA9IE5VTEw7DQogDQorLyogSnVzdCB1c2VkIHRvIGNoZWNrIHN0YXJ0IHVwIGNvZGUgZm9yIGluaXRpYWxpc2VkIGFuIHVuaW5pdGlhbGlzZWQgZGF0YS4gKi8NCit2b2xhdGlsZSB1aW50MzJfdCB1bDEgPSAweDEyMywgdWwyID0gMDsNCisNCiAjaWYgZGVmaW5lZCAoIF9fR05VQ19fICkNCisJLyogTWVtb3J5IG1hcCByZWFkIGRpcmVjdGwgZnJvbSBsaW5rZXIgdmFyaWFibGVzLiAqLw0KIAlleHRlcm4gdWludDMyX3QgX19GTEFTSF9zZWdtZW50X3N0YXJ0X19bXTsNCiAJZXh0ZXJuIHVpbnQzMl90IF9fRkxBU0hfc2VnbWVudF9lbmRfX1tdOw0KIAlleHRlcm4gdWludDMyX3QgX19TUkFNX3NlZ21lbnRfc3RhcnRfX1tdOw0KQEAgLTI2NCw2ICsyMjksNyBAQAogCWV4dGVybiB1aW50MzJfdCBfX3ByaXZpbGVnZWRfZnVuY3Rpb25zX2FjdHVhbF9lbmRfX1tdOw0KIAlleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2RhdGFfYWN0dWFsX2VuZF9fW107DQogI2Vsc2UNCisJLyogTXVzdCBiZSBzZXQgbWFudWFsbHkgdG8gbWF0Y2ggbWVtb3J5IG1hcC4gKi8NCiAJY29uc3QgdWludDMyX3QgKiBfX0ZMQVNIX3NlZ21lbnRfc3RhcnRfXyA9ICggdWludDMyX3QgKiApIDB4MDBVTDsNCiAJY29uc3QgdWludDMyX3QgKiBfX0ZMQVNIX3NlZ21lbnRfZW5kX18gPSAoIHVpbnQzMl90ICogKSAweDAwMDgwMDAwVUw7DQogCWNvbnN0IHVpbnQzMl90ICogX19TUkFNX3NlZ21lbnRfc3RhcnRfXyA9ICggdWludDMyX3QgKiApIDB4MjAwMDAwMDBVTDsNCkBAIC00MjgsMTAgKzM5NCw5IEBACiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCi12b2xhdGlsZSB1aW50MzJfdCB1bDEgPSAweDEyMywgdWwyID0gMDsNCi0NCiBpbnQgbWFpbiggdm9pZCApDQogew0KKwkvKiBVc2VkIHRvIGNoZWNrIGxpbmtlciBjb25maWd1cmF0aW9uLiAqLw0KIAljb25maWdBU1NFUlQoIHVsMSA9PSAweDEyMyApOw0KIAljb25maWdBU1NFUlQoIHVsMiA9PSAwICk7DQogCXBydlNldHVwSGFyZHdhcmUoKTsNCkBAIC01MTUsNyArNDgwLDcgQEAKIHRoYXQgdGhpcyB0YXNrIGhhcyBhY2Nlc3MgdG8uICovDQogdm9sYXRpbGUgdWludDMyX3QgKnB1bE92ZXJsYWlkQ291bnRlcjMgPSAoIHVpbnQzMl90ICogKSAmKCBjUmVhZFdyaXRlQXJyYXlbIDAgXSApLCAqcHVsT3ZlcmxhaWRDb3VudGVyNCA9ICggdWludDMyX3QgKiApICYoIGNSZWFkV3JpdGVBcnJheVsgNCBdICk7DQogDQotLyogdWxDeWNsZUNvdW50IGlzIGluY3JlbWVudGVkIG9uIGVhY2ggY3ljbGUgb2YgdGhlIGNoZWNrIHRhc2suICBJdCBjYW4gYmUgDQorLyogdWxDeWNsZUNvdW50IGlzIGluY3JlbWVudGVkIG9uIGVhY2ggY3ljbGUgb2YgdGhlIGNoZWNrIHRhc2suICBJdCBjYW4gYmUNCiB2aWV3ZWQgdXBkYXRpbmcgaW4gdGhlIEtlaWwgd2F0Y2ggd2luZG93IGFzIHRoZSBzaW11bGF0b3IgZG9lcyBub3QgcHJpbnQgdG8NCiB0aGUgSVRNIHBvcnQuICovDQogdm9sYXRpbGUgdWludDMyX3QgdWxDeWNsZUNvdW50ID0gMDsNCkBAIC01ODUsNyArNTUwLDcgQEAKIA0KIAkJCQkJLyoqKiogUHJpbnQgcGNTdGF0dXNNZXNzYWdlIGhlcmUuICoqKiovDQogCQkJCQkoIHZvaWQgKSBwY1N0YXR1c01lc3NhZ2U7DQotCQkJCQkNCisNCiAJCQkJCS8qIFRoZSBjeWNsZSBjb3VudCBjYW4gYmUgdmlld2VkIHVwZGF0aW5nIGluIHRoZSBLZWlsIHdhdGNoDQogCQkJCQl3aW5kb3cgaWYgSVRNIHByaW50ZiBpcyBub3QgYmVpbmcgdXNlZC4gKi8NCiAJCQkJCXVsQ3ljbGVDb3VudCsrOw0KQEAgLTc5OCw2ICs3NjMsNyBAQAogCXBydkV4ZXJjaXNlRXZlbnRHcm91cEFQSSgpOw0KIAlwcnZFeGVyY2lzZVNlbWFwaG9yZUFQSSgpOw0KIAlwcnZFeGVyY2lzZVRhc2tOb3RpZmljYXRpb25BUEkoKTsNCisJcHJ2RXhlcmNpc2VTdHJlYW1CdWZmZXJBUEkoKTsNCiANCiAJLyogRm9yIGNvZGUgY292ZXJhZ2UgdGVzdCBwdXJwb3NlcyBpdCBpcyBkZWxldGVkIGJ5IHRoZSBJZGxlIHRhc2suICovDQogCWNvbmZpZ0FTU0VSVCggdXhUYXNrR2V0U3RhY2tIaWdoV2F0ZXJNYXJrKCBOVUxMICkgPiAwICk7DQpAQCAtODA1LDYgKzc3MSw2MSBAQAogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KK3N0YXRpYyB2b2lkIHBydkV4ZXJjaXNlU3RyZWFtQnVmZmVyQVBJKCB2b2lkICkNCit7DQordWludDhfdCB1Y0J1ZmZlclsgMTAgXTsNCitCYXNlVHlwZV90IHgsIHhSZWFkOw0KK3NpemVfdCB4UmV0dXJuZWQ7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlcjsNCisNCisJLyogSnVzdCBtYWtlcyBBUEkgY2FsbHMgdG8gZW5zdXJlIHRoZSBNUFUgdmVyc2lvbnMgYXJlIHVzZWQuICovDQorDQorCXhTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCBzaXplb2YoIHVjQnVmZmVyICkgLCAxICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlciApOw0KKw0KKwlmb3IoIHggPSAwOyB4IDwgKCBzaXplb2YoIHVjQnVmZmVyICkgKiAyICk7IHgrKyApDQorCXsNCisJCS8qIFdyaXRlIGFuZCBjaGVjayB0aGUgdmFsdWUgaXMgd3JpdHRlbiwgdGhlbiByZWFkIGFuZCBjaGVjayB0aGUgdmFsdWUNCisJCXJlYWQgaXMgZXhwZWN0ZWQuICovDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkgICAoIHZvaWQgKiApICZ4LA0KKwkJCQkJCQkJCSAgIHNpemVvZiggeCApLA0KKwkJCQkJCQkJCSAgIDAgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNpemVvZiggeCApICk7DQorDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkJICAoIHZvaWQgKiApICZ4UmVhZCwNCisJCQkJCQkJCQkJICBzaXplb2YoIHhSZWFkICksDQorCQkJCQkJCQkJCSAgMCApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gc2l6ZW9mKCB4UmVhZCApICk7DQorCQljb25maWdBU1NFUlQoIHhSZWFkID09IHggKTsNCisNCisJCXhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCSAoIHZvaWQgKiApICZ4LA0KKwkJCQkJCQkJIHNpemVvZiggeCApLA0KKwkJCQkJCQkJIE5VTEwgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNpemVvZiggeCApICk7DQorDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCQkJICggdm9pZCAqICkgJnhSZWFkLA0KKwkJCQkJCQkJCQkJCSBzaXplb2YoIHhSZWFkICksDQorCQkJCQkJCQkJCQkJIE5VTEwgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNpemVvZiggeFJlYWQgKSApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmVhZCA9PSB4ICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKSA9PSBzaXplb2YoIHVjQnVmZmVyICkgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICkgPT0gMCApOw0KKwl9DQorDQorCS8qIENhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gZXhlcmNpc2VkIHlldCBiZWZvcmUgZmluaXNoaW5nIGJ5DQorCWRlbGV0aW5nIHRoZSBzdHJlYW0gYnVmZmVyLiAqLw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIHhTdHJlYW1CdWZmZXIsIDAgKSA9PSBwZFRSVUUgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyUmVzZXQoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFBBU1MgKTsNCisJdlN0cmVhbUJ1ZmZlckRlbGV0ZSggeFN0cmVhbUJ1ZmZlciApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCiB2b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICkNCiB7DQogdm9sYXRpbGUgY29uc3QgdWludDMyX3QgKnB1bDsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCA2YzZmZDJmLi5jMjk0NjBhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAppbmRleCBjOTY3OWQyLi5jZGM1NjEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKQEAgLTgsNyArOCw3IEBACiAgIDxFeHRlbnNpb25zPgogICAgIDxjRXh0PiouYzsqLlM8L2NFeHQ+CiAgICAgPGFFeHQ+PC9hRXh0PgotICAgIDxvRXh0Pioub2JqPC9vRXh0PgorICAgIDxvRXh0Pioub2JqOyAqLm88L29FeHQ+CiAgICAgPGxFeHQ+Ki5saWI8L2xFeHQ+CiAgICAgPHRFeHQ+Ki50eHQ7ICouaDsgKi5pbmM8L3RFeHQ+CiAgICAgPHBFeHQ+Ki5wbG08L3BFeHQ+CkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4KICAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KICAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgogICAgICAgICA8blRzZWw+MDwvblRzZWw+CiAgICAgICAgIDxzRGxsPjwvc0RsbD4KICAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KQEAgLTE5OCw5ICsxOTksMTYgQEAKICAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgogICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CiAgICAgICA8YkxpbnRBdXRvPjA8L2JMaW50QXV0bz4KLSAgICAgIDxMaW4yRXhlY3V0YWJsZT48L0xpbjJFeGVjdXRhYmxlPgotICAgICAgPExpbjJDb25maWdGaWxlPjwvTGluMkNvbmZpZ0ZpbGU+Ci0gICAgICA8YkxpbjJBdXRvPjA8L2JMaW4yQXV0bz4KKyAgICAgIDxiQXV0b0dlbkQ+MDwvYkF1dG9HZW5EPgorICAgICAgPExudEV4RmxhZ3M+MDwvTG50RXhGbGFncz4KKyAgICAgIDxwTWlzcmFOYW1lPjwvcE1pc3JhTmFtZT4KKyAgICAgIDxwc3pNcnVsZT48L3Bzek1ydWxlPgorICAgICAgPHBTaW5nQ21kcz48L3BTaW5nQ21kcz4KKyAgICAgIDxwTXVsdENtZHM+PC9wTXVsdENtZHM+CisgICAgICA8cE1pc3JhTmFtZXA+PC9wTWlzcmFOYW1lcD4KKyAgICAgIDxwc3pNcnVsZXA+PC9wc3pNcnVsZXA+CisgICAgICA8cFNpbmdDbWRzcD48L3BTaW5nQ21kc3A+CisgICAgICA8cE11bHRDbWRzcD48L3BNdWx0Q21kc3A+CiAgICAgICA8RGVidWdEZXNjcmlwdGlvbj4KICAgICAgICAgPEVuYWJsZT4xPC9FbmFibGU+CiAgICAgICAgIDxFbmFibGVMb2c+MDwvRW5hYmxlTG9nPgpAQCAtMzY0LDYgKzM3MiwxOCBAQAogICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CiAgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgogICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEyPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RyZWFtX2J1ZmZlci5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KICAgPC9Hcm91cD4KIAogPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvanggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAppbmRleCA2NDVkNDgyLi5iNzFkNDQ5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeApAQCAtMTEsMTEgKzExLDEyIEBACiAgICAgICA8VG9vbHNldE51bWJlcj4weDM8L1Rvb2xzZXROdW1iZXI+CiAgICAgICA8VG9vbHNldE5hbWU+QVJNLUdOVTwvVG9vbHNldE5hbWU+CiAgICAgICA8cENDVXNlZD41MDYwMDYxOjpWNS4wNiB1cGRhdGUgMSAoYnVpbGQgNjEpOjpBUk1DQzwvcENDVXNlZD4KKyAgICAgIDx1QUM2PjA8L3VBQzY+CiAgICAgICA8VGFyZ2V0T3B0aW9uPgogICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgogICAgICAgICAgIDxEZXZpY2U+QVJNQ000X0ZQPC9EZXZpY2U+CiAgICAgICAgICAgPFZlbmRvcj5BUk08L1ZlbmRvcj4KLSAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMC1CZXRhNDwvUGFja0lEPgorICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjUuMC4xPC9QYWNrSUQ+CiAgICAgICAgICAgPFBhY2tVUkw+aHR0cDovL3d3dy5rZWlsLmNvbS9wYWNrLzwvUGFja1VSTD4KICAgICAgICAgICA8Q3B1PklST00oMHgwMDAwMDAwMCwweDgwMDAwKSBJUkFNKDB4MjAwMDAwMDAsMHgyMDAwMCkgQ1BVVFlQRSgiQ29ydGV4LU00IikgRlBVMiBDTE9DSygxMjAwMDAwMCkgRVNFTCBFTElUVExFPC9DcHU+CiAgICAgICAgICAgPEZsYXNoVXRpbFNwZWM+PC9GbGFzaFV0aWxTcGVjPgpAQCAtMzM5LDEwICszNDAsMjEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICA8L0ZpbGVzPgogICAgICAgICA8L0dyb3VwPgogICAgICAgPC9Hcm91cHM+CiAgICAgPC9UYXJnZXQ+CiAgIDwvVGFyZ2V0cz4KIAorICA8UlRFPgorICAgIDxhcGlzLz4KKyAgICA8Y29tcG9uZW50cy8+CisgICAgPGZpbGVzLz4KKyAgPC9SVEU+CisKIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCmluZGV4IDViNDVjZTEuLmIxMDk4ZWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAppbmRleCA1OGNmOTUyLi43ZDQ0YjkyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eApAQCAtOCw3ICs4LDcgQEAKICAgPEV4dGVuc2lvbnM+CiAgICAgPGNFeHQ+Ki5jPC9jRXh0PgogICAgIDxhRXh0Pioucyo7ICouc3JjOyAqLmEqPC9hRXh0PgotICAgIDxvRXh0Pioub2JqPC9vRXh0PgorICAgIDxvRXh0Pioub2JqOyAqLm88L29FeHQ+CiAgICAgPGxFeHQ+Ki5saWI8L2xFeHQ+CiAgICAgPHRFeHQ+Ki50eHQ7ICouaDsgKi5pbmM8L3RFeHQ+CiAgICAgPHBFeHQ+Ki5wbG08L3BFeHQ+CkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4KICAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KICAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgogICAgICAgICA8blRzZWw+MDwvblRzZWw+CiAgICAgICAgIDxzRGxsPjwvc0RsbD4KICAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KQEAgLTE5Myw5ICsxOTQsMTYgQEAKICAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgogICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CiAgICAgICA8YkxpbnRBdXRvPjA8L2JMaW50QXV0bz4KLSAgICAgIDxMaW4yRXhlY3V0YWJsZT48L0xpbjJFeGVjdXRhYmxlPgotICAgICAgPExpbjJDb25maWdGaWxlPjwvTGluMkNvbmZpZ0ZpbGU+Ci0gICAgICA8YkxpbjJBdXRvPjA8L2JMaW4yQXV0bz4KKyAgICAgIDxiQXV0b0dlbkQ+MDwvYkF1dG9HZW5EPgorICAgICAgPExudEV4RmxhZ3M+MDwvTG50RXhGbGFncz4KKyAgICAgIDxwTWlzcmFOYW1lPjwvcE1pc3JhTmFtZT4KKyAgICAgIDxwc3pNcnVsZT48L3Bzek1ydWxlPgorICAgICAgPHBTaW5nQ21kcz48L3BTaW5nQ21kcz4KKyAgICAgIDxwTXVsdENtZHM+PC9wTXVsdENtZHM+CisgICAgICA8cE1pc3JhTmFtZXA+PC9wTWlzcmFOYW1lcD4KKyAgICAgIDxwc3pNcnVsZXA+PC9wc3pNcnVsZXA+CisgICAgICA8cFNpbmdDbWRzcD48L3BTaW5nQ21kc3A+CisgICAgICA8cE11bHRDbWRzcD48L3BNdWx0Q21kc3A+CiAgICAgPC9UYXJnZXRPcHRpb24+CiAgIDwvVGFyZ2V0PgogCkBAIC0zNTMsNiArMzYxLDE4IEBACiAgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KICAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CiAgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTI8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgogICA8L0dyb3VwPgogCiA8L1Byb2plY3RPcHQ+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvanggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKaW5kZXggM2EyNTRkYS4uOTRhZjE3OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeApAQCAtMTAsMTIgKzEwLDEzIEBACiAgICAgICA8VGFyZ2V0TmFtZT5SVE9TRGVtbzwvVGFyZ2V0TmFtZT4KICAgICAgIDxUb29sc2V0TnVtYmVyPjB4NDwvVG9vbHNldE51bWJlcj4KICAgICAgIDxUb29sc2V0TmFtZT5BUk0tQURTPC9Ub29sc2V0TmFtZT4KLSAgICAgIDxwQ0NVc2VkPjUwNjAxODM6OlY1LjA2IHVwZGF0ZSAyIChidWlsZCAxODMpOjpBUk1DQzwvcENDVXNlZD4KKyAgICAgIDxwQ0NVc2VkPjUwNjA1Mjg6OlY1LjA2IHVwZGF0ZSA1IChidWlsZCA1MjgpOjpBUk1DQzwvcENDVXNlZD4KKyAgICAgIDx1QUM2PjA8L3VBQzY+CiAgICAgICA8VGFyZ2V0T3B0aW9uPgogICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgogICAgICAgICAgIDxEZXZpY2U+QVJNQ000X0ZQPC9EZXZpY2U+CiAgICAgICAgICAgPFZlbmRvcj5BUk08L1ZlbmRvcj4KLSAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMC1CZXRhNDwvUGFja0lEPgorICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjUuMC4xPC9QYWNrSUQ+CiAgICAgICAgICAgPFBhY2tVUkw+aHR0cDovL3d3dy5rZWlsLmNvbS9wYWNrLzwvUGFja1VSTD4KICAgICAgICAgICA8Q3B1PklST00oMHgwMDAwMDAwMCwweDgwMDAwKSBJUkFNKDB4MjAwMDAwMDAsMHgyMDAwMCkgQ1BVVFlQRSgiQ29ydGV4LU00IikgRlBVMiBDTE9DSygxMjAwMDAwMCkgRVNFTCBFTElUVExFPC9DcHU+CiAgICAgICAgICAgPEZsYXNoVXRpbFNwZWM+PC9GbGFzaFV0aWxTcGVjPgpAQCAtMzMwLDYgKzMzMSw3IEBACiAgICAgICAgICAgICA8dlNob3J0V2NoPjA8L3ZTaG9ydFdjaD4KICAgICAgICAgICAgIDx2Nkx0bz4wPC92Nkx0bz4KICAgICAgICAgICAgIDx2Nld0RT4wPC92Nld0RT4KKyAgICAgICAgICAgIDx2NlJ0dGk+MDwvdjZSdHRpPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTM0Nyw2ICszNDksNyBAQAogICAgICAgICAgICAgPE5vV2Fybj4wPC9Ob1dhcm4+CiAgICAgICAgICAgICA8dVN1cnBJbmM+MDwvdVN1cnBJbmM+CiAgICAgICAgICAgICA8dXNlWE8+MDwvdXNlWE8+CisgICAgICAgICAgICA8dUNsYW5nQXM+MDwvdUNsYW5nQXM+CiAgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgogICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgogICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgpAQCAtNDQyLDEwICs0NDUsMjEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0cmVhbV9idWZmZXIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICA8L0dyb3Vwcz4KICAgICA8L1RhcmdldD4KICAgPC9UYXJnZXRzPgogCisgIDxSVEU+CisgICAgPGFwaXMvPgorICAgIDxjb21wb25lbnRzLz4KKyAgICA8ZmlsZXMvPgorICA8L1JURT4KKwogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCA5MGUxNjI1Li4xODlkMDViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IDUwZjY2NzkuLmIxYjFlYjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9TeXN0ZW0vSUFSL0ludGVycnVwdF9FbnRyeV9TdHVicy5hc20gYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL1N5c3RlbS9JQVIvSW50ZXJydXB0X0VudHJ5X1N0dWJzLmFzbQppbmRleCAyYjhjMTExLi43NDZkNzU1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL1N5c3RlbS9JQVIvSW50ZXJydXB0X0VudHJ5X1N0dWJzLmFzbQorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL1N5c3RlbS9JQVIvSW50ZXJydXB0X0VudHJ5X1N0dWJzLmFzbQpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogCVNFQ1RJT04gaW50dmVjOkNPREU6Uk9PVCgyKQ0KIAlBUk0NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1MDNhZjMwLi4yOWMzNmZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggODI1YmUxOC4uYjkyNWVhMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmluZGV4IDAxN2I0ZGUuLjM3YTIwZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggN2IyNGNlNi4uZDcwZjlkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlovVCBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggMmQxNzEzNy4uZjNmNmFjMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3RfR0NDLlMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3RfR0NDLlMKaW5kZXggMTNlZjdjZi4uZmY4YzJiNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0dDQy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9HQ0MuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCS5nbG9iYWwgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJLmdsb2JhbCB2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9JQVIuYXNtIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0lBUi5hc20KaW5kZXggZGU1YjIzYS4uZmJlMWNlZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0lBUi5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0lBUi5hc20KQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlQVUJMSUMgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvbWFpbi5jCmluZGV4IGJjZWFkNTkuLjk2YmIyZjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhhMDUxYWQuLjI4NzFkNWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoZSBmb2xsb3dpbmcgI2Vycm9yIGRpcmVjdGl2ZSBpcyB0byByZW1pbmQgdXNlcnMgdGhhdCBhIGJhdGNoIGZpbGUgbXVzdCBiZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuYwppbmRleCAyYWQyZjIwLi4yNWI3ZDE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9MaWJyYXJ5L2hldC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuaAppbmRleCA0OTEzNzMzLi5iMjg1NDEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9MaWJyYXJ5L2hldC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIF9fSEVUX0hfXw0KICNkZWZpbmUgX19IRVRfSF9fDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L1BhclRlc3QuYwppbmRleCA0Y2VlYzk4Li5iMGFkNGVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvZmxvcF9oZXJjdWxlcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmMKaW5kZXggNGM5ZWM3Ny4uMzBjOTMyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBlaWdodCB0YXNrcywgZWFjaCBvZiB3aGljaCBsb29wcyBjb250aW51b3VzbHkgcGVyZm9ybWluZyBhbiAoZW11bGF0ZWQpDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L2Zsb3BfaGVyY3VsZXMuaAppbmRleCBmMGQ5ZTQ0Li41MmU3YTczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L2Zsb3BfaGVyY3VsZXMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L2Zsb3BfaGVyY3VsZXMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTE9QX1RBU0tTX0gNCiAjZGVmaW5lIEZMT1BfVEFTS1NfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluLmMKaW5kZXggNGQzZTA4NC4uMDViODM4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2JsaW5reS5jCmluZGV4IGUxNGQ2ZTQuLmFiMGZiYjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9mdWxsLmMKaW5kZXggMTZmZjQwOC4uOGI3NDNiNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvcmVnX3Rlc3QuYXNtIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9yZWdfdGVzdC5hc20KaW5kZXggNjNhNjBlNy4uYjdhOTM0MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9yZWdfdGVzdC5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9yZWdfdGVzdC5hc20KQEAgLTEsNjggKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsgICAgDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCB0cmFpbmluZywgbGF0ZXN0IGluZm9ybWF0aW9uLCANCi07ICAgIGxpY2Vuc2UgYW5kIGNvbnRhY3QgZGV0YWlscy4NCi07ICAgIA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wuDQotOw0KLTsgICAgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCANCi07ICAgIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24sIGFuZCBtaWRkbGV3YXJlLCB1bmRlciANCi07ICAgIHRoZSBPcGVuUlRPUyBicmFuZDogaHR0cDovL3d3dy5PcGVuUlRPUy5jb20uICBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28NCi07ICAgIHByb3ZpZGUgYSBzYWZldHkgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIHVuZGVyIA0KLTsgICAgdGhlIFNhZmVSVE9TIGJyYW5kOiBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbS4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogOw0KQEAgLTg3LDcgKzQ5LDcgQEAKIAkJbW92CQlyMSwgICMweDExDQogCQltb3YJCXIyLCAgIzB4MjINCiAJCW1vdgkJcjMsICAjMHgzMw0KLQkJbW92ICAgICByNCwgICMweDQ0CQkNCisJCW1vdiAgICAgcjQsICAjMHg0NA0KIAkJbW92ICAgICByNSwgICMweDU1DQogCQltb3YgICAgIHI2LCAgIzB4NjYNCiAJCW1vdiAgICAgcjcsICAjMHg3Nw0KQEAgLTExOCw3ICs4MCw3IEBACiAJCXZtb3YgCWQxNSwgcjYsIHI3DQogCS5lbmRpZg0KIA0KLQkNCisNCiB2UmVnVGVzdExvb3AxOg0KIA0KIAkJOyBGb3JjZSB5ZWlsZA0KQEAgLTIyOSwzNCArMTkxLDM0IEBACiAJCTsgZXhwZWN0ZWQga25vd24gdmFsdWUsIGp1bXBpbmcgdG8gdlJlZ1Rlc3RFcnJvcjEgaWYgYW55IHJlZ2lzdGVyIGNvbnRhaW5zDQogCQk7IGFuIHVuZXhwZWN0ZWQgdmFsdWUuDQogCQljbXAJCXIwLCAjMHhGRg0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIxLCAjMHgxMQ0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIyLCAjMHgyMg0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIzLCAjMHgzMw0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI0LCAjMHg0NA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI1LCAjMHg1NQ0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI2LCAjMHg2Ng0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI3LCAjMHg3Nw0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI4LCAjMHg4OA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXI5LCAjMHg5OQ0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIxMCwgIzB4QUENCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMTEsICMweEJCDQotCQlibmUJCXZSZWdUZXN0RXJyb3IxCQkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjENCiAJCWNtcAkJcjEyLCAjMHhDQw0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIxNCwgIzB4RUUNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KLQkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjENCisNCiAJCTsgVGhpcyB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcgd2l0aG91dCBqdW1waW5nIHRvIHZSZWdUZXN0RXJyb3IxLCBzbyBpbmNyZW1lbnQNCiAJCTsgdGhlIGxvb3AgY291bnRlciBzbyB0aGUgY2hlY2sgdGFzayBrbm93cyB0aGUgdGFzayBpcyBydW5uaW5nIGVycm9yIGZyZWUuDQogCQlzdG1mZCAgIHNwISwgeyByMC1yMSB9DQpAQCAtMjY1LDEyICsyMjcsMTIgQEAKIAkJYWRkCQlyMSwgcjEsICMxDQogCQlzdHIgICAgIHIxLCBbcjBdDQogCQlsZG1mZCAgIHNwISwgeyByMC1yMSB9DQotCQkNCisNCiAJCTsgTG9vcCBhZ2FpbiwgcGVyZm9ybWluZyB0aGUgc2FtZSB0ZXN0cy4NCiAJCWIJCXZSZWdUZXN0TG9vcDENCiANCiBDb3VudDFDb25zdAkud29yZAl1bFJlZ1Rlc3QxQ291bnRlcg0KLQkNCisNCiB2UmVnVGVzdEVycm9yMToNCiAJCWIgICAgICAgdlJlZ1Rlc3RFcnJvcjENCiANCkBAIC0yOTMsNyArMjU1LDcgQEAKIAkJbW92CQlyMSwgICMweDExMDAwMDAwDQogCQltb3YJCXIyLCAgIzB4MjIwMDAwMDANCiAJCW1vdgkJcjMsICAjMHgzMzAwMDAwMA0KLQkJbW92ICAgICByNCwgICMweDQ0MDAwMDAwCQkNCisJCW1vdiAgICAgcjQsICAjMHg0NDAwMDAwMA0KIAkJbW92ICAgICByNSwgICMweDU1MDAwMDAwDQogCQltb3YgICAgIHI2LCAgIzB4NjYwMDAwMDANCiAJCW1vdiAgICAgcjcsICAjMHg3NzAwMDAwMA0KQEAgLTMwMyw3ICsyNjUsNyBAQAogCQltb3YgICAgIHIxMSwgIzB4QkIwMDAwMDANCiAJCW1vdiAgICAgcjEyLCAjMHhDQzAwMDAwMA0KIAkJbW92ICAgICByMTQsICMweEVFMDAwMDAwDQotCQ0KKw0KIAkuaWYgKF9fVElfVkZQX1NVUFBPUlRfXykNCiANCiAJCTsgRmlsbCBlYWNoIEZQVSByZWdpc3RlciB3aXRoIGEga25vd24gdmFsdWUuDQpAQCAtNDMyLDM0ICszOTQsMzQgQEAKIAkJOyBleHBlY3RlZCBrbm93biB2YWx1ZSwganVtcGluZyB0byB2UmVnVGVzdEVycm9yMiBpZiBhbnkgcmVnaXN0ZXIgY29udGFpbnMNCiAJCTsgYW4gdW5leHBlY3RlZCB2YWx1ZS4NCiAJCWNtcAkJcjAsICMweEZGMDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjEsICMweDExMDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyMiwgIzB4MjIwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXIzLCAjMHgzMzAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjQsICMweDQ0MDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyNSwgIzB4NTUwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXI2LCAjMHg2NjAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjcsICMweDc3MDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyOCwgIzB4ODgwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXI5LCAjMHg5OTAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjEwLCAjMHhBQTAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjExLCAjMHhCQjAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjEyLCAjMHhDQzAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcCAgICAgcjE0LCAjMHhFRTAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCi0JDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQorDQogCQk7IFRoaXMgdGFzayBpcyBzdGlsbCBydW5uaW5nIHdpdGhvdXQganVtcGluZyB0byB2UmVnVGVzdEVycm9yMiwgc28gaW5jcmVtZW50DQogCQk7IHRoZSBsb29wIGNvdW50ZXIgc28gdGhlIGNoZWNrIHRhc2sga25vd3MgdGhlIHRhc2sgaXMgcnVubmluZyBlcnJvciBmcmVlLg0KIAkJc3RtZmQgICBzcCEsIHsgcjAtcjEgfQ0KQEAgLTQ2OCwxNiArNDMwLDE2IEBACiAJCWFkZAkJcjEsIHIxLCAjMQ0KIAkJc3RyICAgICByMSwgW3IwXQ0KIAkJbGRtZmQgICBzcCEsIHsgcjAtcjEgfQ0KLQkJDQorDQogCQk7IExvb3AgYWdhaW4sIHBlcmZvcm1pbmcgdGhlIHNhbWUgdGVzdHMuDQogCQliCQl2UmVnVGVzdExvb3AyDQogDQogQ291bnQyQ29uc3QJLndvcmQJdWxSZWdUZXN0MkNvdW50ZXINCi0JDQorDQogdlJlZ1Rlc3RFcnJvcjI6DQogCQliICAgICAgIHZSZWdUZXN0RXJyb3IyDQogDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0JDQotCQ0KLQkNCisNCisNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9zZXJpYWwuYwppbmRleCAxNDYxZjYwLi40OTY1YWE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBjMzYzY2E0Li4xMGQ3Y2Y4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2Y5NmNhMi4uZmI1N2I3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmluZGV4IDJmMDM0OWMuLmU2MDM1OGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMjhkMWVmMy4uZmUzZTQ4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDkyOTRhOTguLjFlZjY5MjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3QuUwppbmRleCA4NWUwYTYxLi44NTkwMmQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3QuUwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkuZ2xvYmFsIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9tYWluLmMKaW5kZXggNWEzMDRkMi4uNmU1OWRmMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwMF9BdG9sbGljL1NpbXBsZV9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGU0ZTNhN2QuLjI3Y2U3OTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwMF9BdG9sbGljL1NpbXBsZV9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwMF9BdG9sbGljL1NpbXBsZV9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBUaGUgZm9sbG93aW5nICNlcnJvciBkaXJlY3RpdmUgaXMgdG8gcmVtaW5kIHVzZXJzIHRoYXQgYSBiYXRjaCBmaWxlIG11c3QgYmUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAwX0F0b2xsaWMvU2ltcGxlX0RlbW9fU291cmNlL21haW4uYwppbmRleCA4ZjdkYTdhLi43MGExMjFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwMF9BdG9sbGljL1NpbXBsZV9EZW1vX1NvdXJjZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogVGhpcyBzaW1wbGUgZGVtbyBwcm9qZWN0IHJ1bnMgb24gdGhlIFNUTTMyIERpc2NvdmVyeSBib2FyZCwgd2hpY2ggaXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9Ecml2ZXJzL1NUTTMyX1VTQVJULmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9Ecml2ZXJzL1NUTTMyX1VTQVJULmMKaW5kZXggN2EwMzFlZS4uZWFjOThjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0RyaXZlcnMvU1RNMzJfVVNBUlQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5oCmluZGV4IGM2OGE3YWYuLmEwYTlhN2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0RyaXZlcnMvU1RNMzJfVVNBUlQuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9Ecml2ZXJzL1NUTTMyX1VTQVJULmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU1RNXzMyX1NFUklBTF9DT01NU19IDQogI2RlZmluZSBTVE1fMzJfU0VSSUFMX0NPTU1TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAppbmRleCAwZjc3YjBmLi41YjVkYTVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X01DQlNUTTMyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfTUNCU1RNMzIuYwppbmRleCAzNzM1Zjg4Li4wMDJlYzI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfTUNCU1RNMzIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfTUNCU1RNMzIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdF9TVF9FdmFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfU1RfRXZhbC5jCmluZGV4IGVmOTE2NmIuLjNlY2FhZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdF9TVF9FdmFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X1NUX0V2YWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L21haW4uYwppbmRleCAxZDI3MjE4Li5kOGQwNjZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA4ZjUwZDJjLi5iNzJmMzU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGVmOTE2NmIuLjNlY2FhZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9tYWluLmMKaW5kZXggYmNjZDBhNC4uY2FhMzYzNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCBkOGI2YTU5Li4wYTNmMTcyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3RpbWVydGVzdC5jCmluZGV4IDhkNGFkMjEuLmM1ZDhhMDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGY1MGQyYy4uYjcyZjM1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZWY5MTY2Yi4uM2VjYWFkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9tYWluLmMKaW5kZXggYmNjZDBhNC4uY2FhMzYzNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZDhiNmE1OS4uMGEzZjE3MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvdGltZXJ0ZXN0LmMKaW5kZXggOGQ0YWQyMS4uYzVkOGEwNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDNiOThlOTcuLmFiYTE3YTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDFmMTM2NGMuLjMzZjM4MzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvYml0bWFwLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9iaXRtYXAuaAppbmRleCA2NmRkNzRiLi42YjlkMzEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9iaXRtYXAuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9iaXRtYXAuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1Mub3JnIExvZ28gYXMgYSAxNmJpdCBiaXRtYXAuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvbWFpbi5jCmluZGV4IDJiNDNkZmYuLjg0ZjYwMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy90aW1lcnRlc3QuYwppbmRleCA4ZDRhZDIxLi5jNWQ4YTA0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDM0OWFmNi4uY2Q0Y2RhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggNzNjOTQzYS4uMTBiNDQ1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9tYWluLmMKaW5kZXggNGFhMjFlYi4uYWM4OTgxMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9zY3NjLnRtcCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3Njc2MudG1wCmluZGV4IDE0MzZlZmMuLmYyNzQxNDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3Njc2MudG1wCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3Njc2MudG1wCkBAIC0xLDQ5ICsxLDMwIEBACiAvKg0KLQlGcmVlUlRPUyBWNS40LjIgLSBDb3B5cmlnaHQgKEMpIDIwMDkgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotCVRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotCUZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQJdW5kZXIgDQotCXRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZSANCi0JRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBtb2RpZmllZCBieSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQkqKk5PVEUqKiBUaGUgZXhjZXB0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUgYQ0KLQljb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIA0KLQlzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICANCi0JQWx0ZXJuYXRpdmUgY29tbWVyY2lhbCBsaWNlbnNlIGFuZCBzdXBwb3J0IHRlcm1zIGFyZSBhbHNvIGF2YWlsYWJsZSB1cG9uIA0KLQlyZXF1ZXN0LiAgU2VlIHRoZSBsaWNlbnNpbmcgc2VjdGlvbiBvZiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBmb3IgZnVsbCANCi0JbGljZW5zZSBkZXRhaWxzLg0KLQ0KLQlGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAlidXQgV0lUSE9VVA0KLQlBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCi0JRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLQltb3JlIGRldGFpbHMuDQotDQotCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQotCXdpdGggRnJlZVJUT1M7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkNCi0JVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQS4NCi0NCi0NCi0JKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLQkqIExvb2tpbmcgZm9yIGEgcXVpY2sgc3RhcnQ/ICBUaGVuIGNoZWNrIG91dCB0aGUgRnJlZVJUT1MgZUJvb2shICAgICAgICAgICoNCi0JKiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyAgICAgICAgICAgICAgICAgICAqDQotCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLQkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0JMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotCVBsZWFzZSBlbnN1cmUgdG8gcmVhZCB0aGUgY29uZmlndXJhdGlvbiBhbmQgcmVsZXZhbnQgcG9ydCBzZWN0aW9ucyBvZiB0aGUNCi0Jb25saW5lIGRvY3VtZW50YXRpb24uDQotDQotCWh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLQljb250YWN0IGRldGFpbHMuDQotDQotCWh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotCWNyaXRpY2FsIHN5c3RlbXMuDQotDQotCWh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0JbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvdGltZXJ0ZXN0LmMKaW5kZXggOTg4ZTllOC4uODljMGFlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCmluZGV4IDFhMTNjNGMuLjc3YzVlMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYy5zY3NjIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYy5zY3NjCmluZGV4IGJiZTcwMGEuLjA5NmIzYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMuc2NzYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jLnNjc2MKQEAgLTEsNDkgKzEsMzAgQEAKIC8qDQotCUZyZWVSVE9TIFY1LjQuMiAtIENvcHlyaWdodCAoQykgMjAwOSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0JVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0JRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAl1bmRlciANCi0JdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlIA0KLQlGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gYW5kIG1vZGlmaWVkIGJ5IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotCSoqTk9URSoqIFRoZSBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZSBhDQotCWNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgDQotCXNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gIA0KLQlBbHRlcm5hdGl2ZSBjb21tZXJjaWFsIGxpY2Vuc2UgYW5kIHN1cHBvcnQgdGVybXMgYXJlIGFsc28gYXZhaWxhYmxlIHVwb24gDQotCXJlcXVlc3QuICBTZWUgdGhlIGxpY2Vuc2luZyBzZWN0aW9uIG9mIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIGZvciBmdWxsIA0KLQlsaWNlbnNlIGRldGFpbHMuDQotDQotCUZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCWJ1dCBXSVRIT1VUDQotCUFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcg0KLQlGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotCW1vcmUgZGV0YWlscy4NCi0NCi0JWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCi0Jd2l0aCBGcmVlUlRPUzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OQ0KLQlUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBLg0KLQ0KLQ0KLQkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0JKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotCSogTG9va2luZyBmb3IgYSBxdWljayBzdGFydD8gIFRoZW4gY2hlY2sgb3V0IHRoZSBGcmVlUlRPUyBlQm9vayEgICAgICAgICAgKg0KLQkqIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzICAgICAgICAgICAgICAgICAgICoNCi0JKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQkxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0JUGxlYXNlIGVuc3VyZSB0byByZWFkIHRoZSBjb25maWd1cmF0aW9uIGFuZCByZWxldmFudCBwb3J0IHNlY3Rpb25zIG9mIHRoZQ0KLQlvbmxpbmUgZG9jdW1lbnRhdGlvbi4NCi0NCi0JaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotCWNvbnRhY3QgZGV0YWlscy4NCi0NCi0JaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0JY3JpdGljYWwgc3lzdGVtcy4NCi0NCi0JaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLQlsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmgKaW5kZXggNTQ5ZGU1ZC4uNjIzOTFiYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEVNQUNfX0gNCiAjZGVmaW5lIEVNQUNfX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5oLnNjc2MgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5oLnNjc2MKaW5kZXggMWI4ZTFkNy4uNmUzYmJjZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaC5zY3NjCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmguc2NzYwpAQCAtMSw0OSArMSwzMCBAQAogLyoNCi0JRnJlZVJUT1MgVjUuNC4yIC0gQ29weXJpZ2h0IChDKSAyMDA5IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLQlUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLQlGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CXVuZGVyIA0KLQl0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUgDQotCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgbW9kaWZpZWQgYnkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0JKipOT1RFKiogVGhlIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlIGENCi0JY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlIHRoZSANCi0Jc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgDQotCUFsdGVybmF0aXZlIGNvbW1lcmNpYWwgbGljZW5zZSBhbmQgc3VwcG9ydCB0ZXJtcyBhcmUgYWxzbyBhdmFpbGFibGUgdXBvbiANCi0JcmVxdWVzdC4gIFNlZSB0aGUgbGljZW5zaW5nIHNlY3Rpb24gb2YgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgZm9yIGZ1bGwgDQotCWxpY2Vuc2UgZGV0YWlscy4NCi0NCi0JRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwJYnV0IFdJVEhPVVQNCi0JQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yDQotCUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0JbW9yZSBkZXRhaWxzLg0KLQ0KLQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZw0KLQl3aXRoIEZyZWVSVE9TOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5DQotCVRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EuDQotDQotDQotCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0JKiBMb29raW5nIGZvciBhIHF1aWNrIHN0YXJ0PyAgVGhlbiBjaGVjayBvdXQgdGhlIEZyZWVSVE9TIGVCb29rISAgICAgICAgICAqDQotCSogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgICAgICAgICAgICAgICAgICAgKg0KLQkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0JKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotCTEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLQlQbGVhc2UgZW5zdXJlIHRvIHJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHJlbGV2YW50IHBvcnQgc2VjdGlvbnMgb2YgdGhlDQotCW9ubGluZSBkb2N1bWVudGF0aW9uLg0KLQ0KLQlodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0JY29udGFjdCBkZXRhaWxzLg0KLQ0KLQlodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLQljcml0aWNhbCBzeXN0ZW1zLg0KLQ0KLQlodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotCWxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEVNQUNfX0gNCiAjZGVmaW5lIEVNQUNfX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IGYxYjNiMTcuLmYyMDJmZjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvU1RNMzJMX2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL1NUTTMyTF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMKaW5kZXggYjFhMGFjZi4uNjM2ZDVlOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvU1RNMzJMX2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnQuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9TVE0zMkxfbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvaW5jbHVkZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvaW5jbHVkZS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDEwMjFiZGIuLjhhMzQ2ZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL2luY2x1ZGUvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9pbmNsdWRlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbi5jCmluZGV4IDE5NTIyNWMuLjhkNjYzZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgcHJvamVjdCB0aGF0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2Z1bGwuYwppbmRleCBmMDdkYjVhLi5mOTRhMmM0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIGxvdyBwb3dlciB0aWNrbGVzcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW5fbG93X3Bvd2VyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2xvd19wb3dlci5jCmluZGV4IDZiODQwYTIuLjRhM2VmZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9sb3dfcG93ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFdoZW4gY29uZmlnQ1JFQVRFX0xPV19QT1dFUl9ERU1PIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmggbWFpbigpIHdpbGwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNGVmZjA0ZS4uYWNmYzBiNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUGFyVGVzdC5jCmluZGV4IDM4MDIzZDQuLjgwMzRlZGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL21haW4uYwppbmRleCA0ODczZGJhLi40NzRhNmQ5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gYXZhaWxhYmxlIG9uIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2VyaWFsLmMKaW5kZXggZDYzNTMzYy4uOGY2YjU0OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9DcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzhiOGUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9DcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLVJFTSBUaGlzIGZpbGUgc2hvdWxkIGJlIGV4ZWN1dGVkIGZyb20gdGhlIGNvbW1hbmQgbGluZSBwcmlvciB0byB0aGUgZmlyc3QNCi1SRU0gYnVpbGQuICBJdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byByZWZyZXNoIHRoZSBFY2xpcHNlIHByb2plY3Qgb25jZSB0aGUNCi1SRU0gLmJhdCBmaWxlIGhhcyBiZWVuIGV4ZWN1dGVkIChub3JtYWxseSBqdXN0IHByZXNzIEY1IHRvIHJlZnJlc2gpLg0KLQ0KLVJFTSBDb3BpZXMgYWxsIHRoZSByZXF1aXJlZCBmaWxlcyBmcm9tIHRoZWlyIGxvY2F0aW9uIHdpdGhpbiB0aGUgc3RhbmRhcmQNCi1SRU0gRnJlZVJUT1MgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byB1bmRlciB0aGUgRWNsaXBzZSBwcm9qZWN0IGRpcmVjdG9yeS4NCi1SRU0gVGhpcyBwZXJtaXRzIHRoZSBFY2xpcHNlIHByb2plY3QgdG8gYmUgdXNlZCBpbiAnbWFuYWdlZCcgbW9kZSBhbmQgd2l0aG91dA0KLVJFTSBoYXZpbmcgdG8gc2V0dXAgYW55IGxpbmtlZCByZXNvdXJjZXMuDQotDQotUkVNIFN0YW5kYXJkIHBhdGhzDQotU0VUIEZSRUVSVE9TX1NPVVJDRT0uLlwuLlxTb3VyY2UNCi1TRVQgQ09NTU9OX1NPVVJDRT0uLlxDb21tb25cbWluaW1hbA0KLVNFVCBDT01NT05fSU5DTFVERT0uLlxDb21tb25caW5jbHVkZQ0KLVNFVCBDTElfU09VUkNFPS4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJDQotU0VUIEZBVF9TT1VSQ0U9Li5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0wNCi0NCi1SRU0gSGF2ZSB0aGUgZmlsZXMgYWxyZWFkeSBiZWVuIGNvcGllZD8NCi1JRiBFWElTVCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2UgR290byBFTkQNCi0NCi0gICAgUkVNIENyZWF0ZSB0aGUgcmVxdWlyZWQgZGlyZWN0b3J5IHN0cnVjdHVyZS4NCi0gICAgTUQgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlDQotICAgIE1EIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZVxpbmNsdWRlDQotICAgIE1EIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZVxwb3J0YWJsZQ0KLSAgICBNRCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGVcR0NDDQotICAgIE1EIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNMw0KLSAgICBNRCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGVcTWVtTWFuZw0KLQ0KLSAgICBSRU0gQ29weSB0aGUgY29yZSBrZXJuZWwgZmlsZXMgaW50byB0aGUgcHJvamVjdCBkaXJlY3RvcnkNCi0gICAgY29weSAlRlJFRVJUT1NfU09VUkNFJVx0YXNrcy5jIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXHF1ZXVlLmMgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlDQotICAgIGNvcHkgJUZSRUVSVE9TX1NPVVJDRSVcbGlzdC5jIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXHRpbWVycy5jIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZQ0KLQ0KLSAgICBSRU0gQ29weSB0aGUgY29tbW9uIGhlYWRlciBmaWxlcyBpbnRvIHRoZSBwcm9qZWN0IGRpcmVjdG9yeQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXGluY2x1ZGVcKi4qIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZVxpbmNsdWRlDQotDQotICAgIFJFTSBDb3B5IHRoZSBwb3J0YWJsZSBsYXllciBmaWxlcyBpbnRvIHRoZSBwcm9qZWN0IGRpcmVjdG9yeQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXHBvcnRhYmxlXEdDQ1xBUk1fQ00zXCouKiBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTMNCi0NCi0gICAgUkVNIENvcHkgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZpbGVzIGludG8gdGhlIHByb2plY3QgZGlyZWN0b3J5DQotICAgIGNvcHkgJUZSRUVSVE9TX1NPVVJDRSVccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYyBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGVcTWVtTWFuZw0KLQ0KLSAgICBSRU0gQ29weSB0aGUgZmlsZXMgdGhhdCBkZWZpbmUgdGhlIGNvbW1vbiBkZW1vIHRhc2tzLg0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxkeW5hbWljLmMgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXEJsb2NrUS5jICAgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcZmxhc2hfdGltZXIuYyAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxkZWF0aC5jICAgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXGJsb2NrdGltLmMgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcc2VtdGVzdC5jICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxQb2xsUS5jICAgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXEdlblFUZXN0LmMgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVccmVjbXV0ZXguYyAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxjb3VudHNlbS5jICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXGludGVnZXIuYyAgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0NCi0gICAgUkVNIENvcHkgdGhlIGNvbW1vbiBkZW1vIGZpbGUgaGVhZGVycy4NCi0gICAgY29weSAlQ09NTU9OX0lOQ0xVREUlXCouaCAgICAgICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZVxpbmNsdWRlDQotDQotCVJFTSBDb3B5IHRoZSBGcmVlUlRPUytDTEkgc291cmNlLg0KLQljb3B5ICVDTElfU09VUkNFJVwqLiogICAgICAgICAgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cRnJlZVJUT1MtUGx1cy1DTEktU291cmNlDQotDQotCVJFTSBDb3B5IHRoZSBGcmVlUlRPUytGQVQgU0wgc291cmNlLg0KLQl4Y29weSAlRkFUX1NPVVJDRSVcKi4qICAgICAgICAgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cRnJlZVJUT1MtUGx1cy1GQVQtU0wtU291cmNlIC9TDQotDQotOiBFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9EZXZlbG9wbWVudEtpdF9oYXJkd2FyZS9ERVZfS0lUX0RFTU9fdG9wX0RhdGFTaGVldC54bWwgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9EZXZlbG9wbWVudEtpdF9oYXJkd2FyZS9ERVZfS0lUX0RFTU9fdG9wX0RhdGFTaGVldC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZmI2YzIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvRGV2ZWxvcG1lbnRLaXRfaGFyZHdhcmUvREVWX0tJVF9ERU1PX3RvcF9EYXRhU2hlZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzU1OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/Pg0KLTw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9ImRhdGFzaGVldC54c2wiPz4NCi08ZGF0YXNoZWV0Pg0KLSAgPGhlYWRlcj5ERVZfS0lUX0RFTU9fdG9wPC9oZWFkZXI+DQotICA8cHJvamVjdC1zZXR0aW5ncz4NCi0gICAgPGZhbT5TbWFydEZ1c2lvbjI8L2ZhbT4NCi0gICAgPGRpZT5NMlMwNTBUX0VTPC9kaWU+DQotICAgIDxwYWNrYWdlPjg5NiBGQkdBPC9wYWNrYWdlPg0KLSAgICA8c3BlZWQtZ3JhZGU+LTE8L3NwZWVkLWdyYWRlPg0KLSAgICA8dm9sdGFnZT4xLjI8L3ZvbHRhZ2U+DQotICAgIDxoZGwtdHlwZT5WZXJpbG9nPC9oZGwtdHlwZT4NCi0gICAgPHByb2plY3QtZGVzY3JpcHRpb24+DQotICAgIDwvcHJvamVjdC1kZXNjcmlwdGlvbj4NCi0gICAgPGxvY2F0aW9uPkQ6L0FjdGVscHJqL1NGMl9ERVZLSVRfREVNTy9jb21wb25lbnQvd29yay9ERVZfS0lUX0RFTU9fdG9wPC9sb2NhdGlvbj4NCi0gICAgPHN0YXRlPkdFTkVSQVRFRCAoIFdlZCBBcHIgMjQgMTc6MDY6MTUgMjAxMyApPC9zdGF0ZT4NCi0gICAgPHN3aWRlLXRvb2xjaGFpbj5Tb2Z0Q29uc29sZSB3b3Jrc3BhY2UgZ2VuZXJhdGVkIHRvIEQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xTb2Z0Q29uc29sZTwvc3dpZGUtdG9vbGNoYWluPg0KLSAgPC9wcm9qZWN0LXNldHRpbmdzPg0KLSAgPHNpdGUtbWFwPg0KLSAgPC9zaXRlLW1hcD4NCi0gIDxmaWxlc2V0Pg0KLSAgICA8bmFtZT5IREwgRmlsZShzKTwvbmFtZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFxBY3RlbFxEaXJlY3RDb3JlXENvcmVBUEIzXDQuMC4xMDBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGNvcmVhcGIzLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDb3JlQVBCM1w0LjAuMTAwXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3JlYXBiM19pYWRkcl9yZWcudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFxBY3RlbFxEaXJlY3RDb3JlXENvcmVBUEIzXDQuMC4xMDBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGNvcmVhcGIzX211eHB0b2IzLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDT1JFQVhJXDIuMC4xMDNccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGF4aV9pbnRlcmNvbm5lY3QudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFxBY3RlbFxEaXJlY3RDb3JlXENPUkVBWElcMi4wLjEwM1xydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcbWFzdGVyX3N0YWdlLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDT1JFQVhJXDIuMC4xMDNccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHNsYXZlX3N0YWdlLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDb3JlU0YyQ29uZmlnXDIuMC4xMDBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGNvcmVzZjJjb25maWcudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFxBY3RlbFxEaXJlY3RDb3JlXENvcmVTRjJSZXNldFwxLjAuMTAxXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3Jlc2YycmVzZXQudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFxBY3RlbFxTZ0NvcmVcT1NDXDEuMC4xMDBcb3NjX2NvbXBzLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9cQ0NDXzBcREVWX0tJVF9ERU1PX0NDQ18wX0ZDQ0MudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT1xDT1JFQVhJXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGNvcmVheGkudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT1xERVZfS0lUX0RFTU8udjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT1xGQUJPU0NfMFxERVZfS0lUX0RFTU9fRkFCT1NDXzBfT1NDLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fTVNTXERFVl9LSVRfREVNT19NU1MudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT19NU1NcREVWX0tJVF9ERU1PX01TU190bXBfc3luLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxjb3JlcGFyYW1ldGVyc190Z2kudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxhY210YWJsZS52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGNvcmVhYmMudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxkZWJ1Z2Jsay52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGluc3RydWN0aW9ucy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGluc3RydWN0bnZtX2JiLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcaW5zdHJ1Y3RyYW0udjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxpcmFtNTEyeDlfcnRsLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRccmFtMTI4eDhfc21hcnRmdXNpb24yLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRccmFtMjU2eDE2X3J0bC52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHJhbTI1Nng4X3J0bC52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHJhbWJsb2Nrcy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHN1cHBvcnQudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcREVWX0tJVF9ERU1PX3RvcC52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxTRVJERVNfSUZfMFxERVZfS0lUX0RFTU9fdG9wX1NFUkRFU19JRl8wX1NFUkRFU19JRi52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxTRVJERVNfSUZfMFxERVZfS0lUX0RFTU9fdG9wX1NFUkRFU19JRl8wX1NFUkRFU19JRl9zeW4udjwvZmlsZT4NCi0gIDwvZmlsZXNldD4NCi0gIDxmaWxlc2V0Pg0KLSAgICA8bmFtZT5GbGFzaCBNZW1vcnkgRmlsZShzKTwvbmFtZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXC4vRU5WTS9FTlZNLmVmYzwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXC4vRU5WTS9FTlZNLmVmY1xEOi9BY3RlbHByai9TRjJfREVWS0lUX0RFTU8vY29tcG9uZW50L3dvcmsvREVWX0tJVF9ERU1PX01TUy9FTlZNL0VOVk0uZWZjPC9maWxlPg0KLSAgPC9maWxlc2V0Pg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbM108L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJFRkNMSzBfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlszXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTVdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMTBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+STJDXzBfU0NMPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+U1BJXzBfREk8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMF9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbNl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQzX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT18xM19GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzhdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TEVEXzY8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+RkZfRVhJVDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RJUjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDNfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMTVdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzZdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMTVfTTJGPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUls4XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5TUElfMF9TUzA8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5UWEQxX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9XRV9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQ1NfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfUkVTRVRfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5UWEQwX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVsxXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbNl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NTVVBUlRfMV9UWERfTTJGPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTX05bMV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbOV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMTNdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzVdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkxFRF8xPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlNQSV8wX0NMSzwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX1hDTEs8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX1JFU0VUX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT180X0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUls3XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzNdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+UlhEMV9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMTRdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VVNCX1VMUElfU1RQPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9PRFQ8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+UlhEMF9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMl9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzFfRjJNPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+Q0xLMF9QQUQ8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTJdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlNQSV8wX0RPPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlsxNF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT18yX0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbNV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RNX1JEUVNbMV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0JBWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTX1RNQVRDSF8wX0lOPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9DTEtfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzRdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9DQVNfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzhfRjJNPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVNfTlswXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkkyQ18xX1NEQTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMTFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+REVWUlNUX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5UWEQxX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9CQVsyXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzExX0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDFfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRE1fUkRRU1swXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTX1RNQVRDSF8wX09VVDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0NLRTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NTVVBUlRfMV9SWERfRjJNPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVNbMF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0JBWzBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbNV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5JMkNfMF9TREE8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTNdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQ0xLPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDJfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUls0XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzEyXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbNF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5JMkNfMV9TQ0w8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX1JBU19OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlRYRDNfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SRUZDTEswX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzEyX0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlsxMF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzJdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDJfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbMF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5UWEQyX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VVNCX1VMUElfREFUQVsyXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX05YVDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMTRfTTJGPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbN108L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzldPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEM19QPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDBfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbN108L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxjb3JlIHR5cGU9IlNwaXJpdE1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5TcGlyaXRNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkRpcmVjdENvcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPkNPUkVBQkM8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjMuNC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPkNvcmVBQkMgKEFQQiBCdXMgQ29udHJvbGxlcikgaXMgYSBzaW1wbGUsIGNvbmZpZ3VyYWJsZSwgbG93IGdhdGUgY291bnQsIHByb2dyYW1tYWJsZSBzdGF0ZSBtYWNoaW5lL2NvbnRyb2xsZXIgcHJpbWFyaWx5IHRhcmdldGVkIHRvd2FyZHMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEFNQkEgKEFkdmFuY2VkIE1pY3JvY29udHJvbGxlciBCdXMgQXJjaGl0ZWN0dXJlKSBBUEIgKEFkdmFuY2VkIFBlcmlwaGVyYWwgQnVzKSBiYXNlZCBkZXNpZ25zLiBJdCBpcyBwYXJ0aWN1bGFybHkgc3VpdGFibGUgd2hlcmU6DQotDQotLSBhIHByb2dyYW1tYWJsZSBjb250cm9sbGVyIGlzIHJlcXVpcmVkIGJ1dCBhICJmdWxsIGJsb3duIiBDUFUgc3VjaCBhcyBhIENvcmU4MDUxcyBvciBDb3J0ZXgtTTEgaXMgbm90IG5lZWRlZCBvciBjYW5ub3QgYmUganVzdGlmaWVkIGR1ZSB0byBjb3N0IG9yIHJlc291cmNlL3NpemUgY29uc3RyYWludHM7DQotLSBhICJmdWxsIGJsb3duIiBDUFUgYmFzZWQgc3lzdGVtIHJlcXVpcmVzIGEgQ29yZUFCQyBiYXNlZCBwcm9ncmFtbWFibGUgIm9mZmxvYWQgZW5naW5lL2NvcHJvY2Vzc29yIiBzdWJzeXN0ZW0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnM7DQotLSBhbiBBY3RlbCBGdXNpb24gc3lzdGVtIHVzaW5nLCBmb3IgZXhhbXBsZSwgQ29yZUFJLCBDb3JlUFdNIGV0Yy4gcmVxdWlyZXMgcHJvZ3JhbW1hYmxlIGNvbnRyb2wgZWl0aGVyIGFzIGEgc3RhbmRhbG9uZSBkZXNpZ24gb3IgYXMgYSBGdXNpb24gYW5hbG9nICJvZmZsb2FkIGVuZ2luZS9jb3Byb2Nlc3NvciIgZm9yIGEgbGFyZ2VyIENQVSBiYXNlZCBzeXN0ZW0uDQotDQotQ29yZUFCQyBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgTGliZXJvIElERSBJUCBDYXRhbG9nIHRocm91Z2ggd2hpY2ggaXQgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBhIHJlbW90ZSB3ZWIgYmFzZWQgcmVwb3NpdG9yeSBhbmQgaW5zdGFsbGVkIGludG8gdGhlIHVzZXIncyBsb2NhbCB2YXVsdCByZWFkeSBmb3IgdXNlLiBJdCBvcGVyYXRlcyBuYXRpdmVseSB3aXRoaW4gdGhlIFNtYXJ0RGVzaWduIGRlc2lnbiBlbnRyeSBlbnZpcm9ubWVudCBhbGxvd2luZyBpdCB0byBiZSBlYXNpbHkgaW5zdGFudGlhdGVkLCBjb25maWd1cmVkLCBjb25uZWN0ZWQgdG8gb3RoZXIgSVAgY29yZSBpbnN0YW5jZXMgYW5kIGdlbmVyYXRlZCByZWFkeSBmb3Igc2ltdWxhdGlvbiwgc3ludGhlc2lzIGV0Yy4NCi1Db3JlQUJDIGlzIGFuIEFNQkEzIEFQQiBtYXN0ZXIgd2hpY2ggY2FuIGNvbm5lY3QgdG8gYW5kIG1hbmFnZSBhbnkgQVBCIHNsYXZlIHBlcmlwaGVyYWxzIHZpYSBhbiBBTUJBMyBBUEIgYnVzIGZhYnJpYyBjb21wb25lbnQgc3VjaCBhcyBDb3JlQVBCMy4NCi0NCi1Db3JlQUJDIHN1cHBvcnRzIGEgY29tcHJlaGVuc2l2ZSBhc3NlbWJsZXIgYmFzZWQgY29uZmlndXJhYmxlIGluc3RydWN0aW9uIHNldCBhcmNoaXRlY3R1cmUgYW5kIGV4dGVuc2l2ZSBhbmQgZmxleGlibGUgY29uZmlndXJhdGlvbiBvZiBzaXplIGFuZCBmZWF0dXJlIG9wdGlvbnMgYWxsb3dpbmcgaXQgdG8gYmUgdHVuZWQgdG8gbWVldCB0aGUgcmVzb3VyY2UgY29uc3RyYWludHMgYW5kIHByb2Nlc3NpbmcgcG93ZXIgcmVxdWlyZW1lbnRzIG9mIGEgd2lkZSB2YXJpZXR5IG9mIGFwcGxpY2F0aW9ucy4NCi1Db3JlQUJDIHN1cHBvcnRzIHRocmVlIHByb2dyYW0gc3RvcmFnZSBtb2RlczoNCi0NCi0tICJIYXJkIiBtb2RlOiBwcm9ncmFtIGltYWdlIHN0b3JlZCBpbiBhbiBpbnRlcm5hbCBST00gaW1wbGVtZW50ZWQgaW4gRlBHQSBmYWJyaWMgdGlsZXM7DQotLSAiU29mdCIgbW9kZTogcHJvZ3JhbSBpbWFnZSBzdG9yZWQgaW4gQWN0ZWwgRlBHQSBSQU0gYmxvY2tzIHdoaWNoIGFyZSBpbml0aWFsaXplZCBhdCBydW50aW1lIGZyb20gdGhlIGJpbmFyeSBpbWFnZSBzdG9yZWQgaW4gRnVzaW9uIE5WTSBvciBhbiBleHRlcm5hbCBmbGFzaCBtZW1vcnk7DQotLSAiTlZNIiBtb2RlIChGdXNpb24gb25seSk6IHByb2dyYW0gaW1hZ2Ugc3RvcmVkIGluIGFuZCBleGVjdXRlZCBkaXJlY3RseSBmcm9tIEZ1c2lvbiBOVk0uDQotPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk5WTSB3aXRoIGNhbGlicmF0aW9uIGRhdGE6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BQ1RfQ0FMSUJSQVRJT05EQVRBPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkFQQiBTbG90IFNpemU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT42NGsgbG9jYXRpb25zPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJfQVdJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xNjwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BUEIgRGF0YSBCdXMgV2lkdGg6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4zMjwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCX0RXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MzI8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+TnVtYmVyIG9mIEFQQiBTbG90czo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjE2PC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJfU0RFUFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xNjwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5WZXJib3NlIFNpbXVsYXRpb24gTG9nOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+REVCVUc8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QVBCV1JUIEFDTTwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX0FDTTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BREQsIFNVQiwgREVDLCBDTVBMRVE8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX0FERDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BTFUgT3BlcmF0aW9ucyBmcm9tIE1lbW9yeTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9BTFVSQU08L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QU5ELCBCSVRDTFIsIEJJVFRTVDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fQU5EPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkNBTEwsIFJFVFVSTiwgUkVUSVNSPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9DQUxMPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlN1cHBvcnRlZCBEYXRhIFNvdXJjZXM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5BY2N1bXVsYXRvciBhbmQgSW1tZWRpYXRlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9EQVRBTTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MjwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5JTkM8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX0lOQzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BUEIgSW5kaXJlY3QgQWRkcmVzc2luZzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9JTkRJUkVDVDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5JbnRlcnJ1cHQgU3VwcG9ydDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPkRpc2FibGVkPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9JTlQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SU9SRUFEPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9JT1JFQUQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SU9XUlQ8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX0lPV1JUPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk1VTFQ8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPk5vdCBJbXBsZW1lbnRlZDwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fTVVMVDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5PUiwgQklUU0VUPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9PUjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5QVVNILCBQT1A8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX1BVU0g8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SW50ZXJuYWwgRGF0YS9TdGFjayBNZW1vcnk6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9SQU08L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U0hMLCBST0w8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX1NITDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TSFIsIFJPUjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fU0hSPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlhPUiwgQ01QPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9YT1I8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+RlBHQSBGYW1pbHk6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5TbWFydEZ1c2lvbjI8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkZBTUlMWTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTk8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+TWF4aW11bSBOdW1iZXIgb2YgSW5zdHJ1Y3Rpb25zOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+NjQ8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklDV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjY8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+TnVtYmVyIG9mIEkvTyBGbGFnczo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjA8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklGV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+TnVtYmVyIG9mIEkvTyBJbnB1dHM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4xPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JSVdJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkluc3RydWN0aW9uIE1lbW9yeSBBY2Nlc3M8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPk5vbmU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklNRU1fQVBCX0FDQ0VTUzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5Jbml0aWFsaXphdGlvbiBXaWR0aDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjExPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JTklUV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjExPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkluc3RydWN0aW9uIFN0b3JlOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+SGFyZCAoRlBHQSBUaWxlcyk8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklOU01PREU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+TnVtYmVyIG9mIEkvTyBPdXRwdXRzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+MTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+SU9XSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5JU1IgQWRkcmVzczo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjE8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklTUkFERFI8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+DQotICAgICAgPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4zMjwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+TUFYX05WTURXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MzI8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U3RhY2sgU2l6ZTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjE2PC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5TVFdJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT40PC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlRlc3QgTW9kZTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPlVzZXIgIGNvbmZpZ3VyZWQgY29kZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+VEVTVE1PREU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+DQotICAgICAgPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4yNjwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+VU5JUV9TVFJJTkdfTEVOR1RIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4yNjwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5aIFJlZ2lzdGVyIFNpemUgKEJpdHMpOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+RGlzYWJsZWQ8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlpSV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtbmFtZT5DT1JFQUJDXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxjb3JlIHR5cGU9IlNwaXJpdE1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5TcGlyaXRNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkRpcmVjdENvcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPkNvcmVBUEIzPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj40LjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz4NCi1UaGUgQ29yZUFQQjMgY29tcG9uZW50IGltcGxlbWVudHMgYW4gQVBCMyAoQU1CQTMgQVBCKSBmYWJyaWMsIHdoaWNoIGlzIGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggQVBCMiBzbGF2ZSBwZXJpcGhlcmFscy4NCi0NCi1UaGVyZSBpcyBvbmUgQVBCMyBNYXN0ZXIgaW50ZXJmYWNlLg0KLQ0KLSAgICAgICAgPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkFQQiBNYXN0ZXIgRGF0YSBCdXMgV2lkdGg8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjMyLWJpdDwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCX0RXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MzI8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAwOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDBFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1QxRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMjo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMkVOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDNFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA0OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1Q0RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgNTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UNUVOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDY6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDZFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA3OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1Q3RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgODo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UOEVOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDk6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDlFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTBFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTFFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMjo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTJFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTNFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxNDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTRFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxNTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMTVFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SW5kaXJlY3QgQWRkcmVzc2luZzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPkluZGlyZWN0IGFkZHJlc3Mgc291cmNlZCBmcm9tIHJlZ2lzdGVyKHMpIGluIHNsb3QgNCBzcGFjZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+SUFERFJfT1BUSU9OPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT42PC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk51bWJlciBvZiBhZGRyZXNzIGJpdHMgZHJpdmVuIGJ5IG1hc3Rlcjo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjIwPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5NQUREUl9CSVRTPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4yMDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDA6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDE6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDI6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDQ6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfNDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfNTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDY6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfNjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDc6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfNzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDg6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfODwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDk6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfOTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDEwOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzEwPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTE6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMTE8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMjo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5TQ18xMjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDEzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzEzPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTQ6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMTQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxNTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5TQ18xNTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5Qb3NpdGlvbiBpbiBzbGF2ZSBhZGRyZXNzIG9mIHVwcGVyIDQgYml0cyBvZiBtYXN0ZXIgYWRkcmVzczo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPlsxOToxNl0gKElnbm9yZWQgaWYgbWFzdGVyIGFkZHJlc3Mgd2lkdGggPj0gMjQgYml0cyk8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlVQUl9OSUJCTEVfUE9TTjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+NDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1uYW1lPkNvcmVBUEIzXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxjb3JlIHR5cGU9IkNvbXBvbmVudE1vZHVsZSI+DQotICAgIDxjb3JlLXR5cGU+Q29tcG9uZW50TW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLWV4dHR5cGU+U21hcnREZXNpZ248L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtbG9jYXRpb24+RDovQWN0ZWxwcmovU0YyX0RFVktJVF9ERU1PL2NvbXBvbmVudC93b3JrL0RFVl9LSVRfREVNTzwvY29yZS1sb2NhdGlvbj4NCi0gICAgPGNvcmUtbmFtZT5ERVZfS0lUX0RFTU9fMDwvY29yZS1uYW1lPg0KLSAgPC9jb3JlPg0KLSAgPGNvcmUgdHlwZT0iU3Bpcml0TW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPlNwaXJpdE1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+U2dDb3JlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TRVJERVNfSUY8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjEuMC4xMDA8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBIaWdoIFNwZWVkIFNlcmlhbCBJbnRlcmZhY2U8L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TRVJERVNfSUZfMDwvY29yZS1uYW1lPg0KLSAgPC9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfQ01TSVM8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMS4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBDb3J0ZXggTWljcm9jb250cm9sbGVyIFNvZnR3YXJlIEludGVyZmFjZSBTdGFuZGFyZCAoQ01TSVMpLg0KLQ0KLVRoZSBmaXJtd2FyZSBwYWNrYWdlIHByb3ZpZGVzOg0KLS0gQ29ydGV4LU0zIHN0YXJ0dXAgY29kZS4NCi0tIENNU0lTIHN0YW5kYXJkIG5hbWluZyBmb3IgZXhjZXB0aW9uIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMuDQotLSBDTVNJUyBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBDb3J0ZXgtTTMgTmVzdGVkIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyIChOVklDKS4NCi0tIHBlcmlwaGVyYWxzIHJlZ2lzdGVycyBkZXNjcmlwdGlvbi4NCi0tIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpIGZvciBGUEdBIGZhYnJpYyBzb2Z0LUlQIHBlcmlwaGVyaXJhbHMuDQotDQotVGhlc2UgZmlsZXMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBTbWFydEZ1c2lvbjIgYmFyZSBtZXRhbCBwZXJpcGhlcmFsIGRyaXZlcnMgdG8gYnVpbGQgY29ycmVjdGx5Lg0KLTwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5Tb2Z0d2FyZSBUb29sIENoYWluOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+U29mdENvbnNvbGU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlRvb2xDaGFpbjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5hY3RlbC1jYzp2YXJpYW50UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfQ01TSVNfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0dQSU9fRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBHUElPIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfR1BJT19Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0hQRE1BX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgSGlnaCBQZXJmb3JtYW5jZSBETUEgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19IUERNQV9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0kyQ19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDA8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIEkyQyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX0kyQ19Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0kyQ19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDA8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIEkyQyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX0kyQ19Ecml2ZXJfMTwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX01NVUFSVF9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIE1NVUFSVCBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX01NVUFSVF9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX1BETUFfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAyPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBQZXJpcGhlcmFsIERNQSBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1BETUFfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19SVENfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBSVEMgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19SVENfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19TUElfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAzPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBTUEkgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19TUElfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19TeXN0ZW1fU2VydmljZXNfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAzPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9zb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBTeXN0ZW0gU2VydmljZXMgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfU3lzdGVtX1NlcnZpY2VzX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfVGltZXJfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBUaW1lciBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1RpbWVyX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfVVNCX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4xLjEwMDwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgVVNCIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoZSBmaXJtd2FyZSBwYWNrYWdlIHByb3ZpZGVzOg0KLS0gTVNTIFVTQiBEZXZpY2UgQ29yZSBEcml2ZXIgDQotLSBVU0IgTVNDIERldmljZSBDbGFzcyBkcml2ZXIgd2l0aCBleGFtcGxlIHByb2plY3QuDQotLSBVU0IgQ0RDIERldmljZSBDbGFzcyBkcml2ZXIgd2l0aCBleGFtcGxlIHByb2plY3QuDQotLSBVU0IgSElEIERldmljZSBDbGFzcyBkcml2ZXIgd2l0aCBleGFtcGxlIHByb2plY3QuDQotDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19VU0JfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19XYXRjaGRvZ19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDI8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIFdhdGNoZG9nIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfV2F0Y2hkb2dfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxtZW1vcnlzeXN0ZW0+DQotICAgIDx0aXRsZT5NZW1vcnkgTWFwIGZvciBERVZfS0lUX0RFTU9fdG9wPC90aXRsZT4NCi0gICAgPGRlc2NyaXB0aW9uPlRoZSBwcm9qZWN0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc3Vic3lzdGVtczo8L2Rlc2NyaXB0aW9uPg0KLSAgICA8c3Vic3lzdGVtcz4NCi0gICAgICA8c3Vic3lzdGVtPg0KLSAgICAgICAgPG5hbWU+Q00zPC9uYW1lPg0KLSAgICAgICAgPG1hc3Rlcj5DTTM8L21hc3Rlcj4NCi0gICAgICAgIDxtYXN0ZXI+RkFCUklDMk1TU0ZJQzI8L21hc3Rlcj4NCi0gICAgICAgIDxtYXN0ZXI+RkFCUklDVE9NU1NGSUMwX0FQQl9CUklER0U8L21hc3Rlcj4NCi0gICAgICAgIDxhZGRyZXNzTmFtZXM+DQotICAgICAgICAgIDxjb3VudD4xPC9jb3VudD4NCi0gICAgICAgICAgPG5hbWU+DQotICAgICAgICAgIDwvbmFtZT4NCi0gICAgICAgIDwvYWRkcmVzc05hbWVzPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl9SRUdJT041PC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhGMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEYwMDAwMDAwIC0gMHhGRkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RERSXzBfU1BBQ0VfMzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4RDAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhEMDAwMDAwMCAtIDB4REZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzI8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEMwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4QzAwMDAwMDAgLSAweENGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5ERFJfMF9TUEFDRV8xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhCMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEIwMDAwMDAwIC0gMHhCRkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RERSXzBfU1BBQ0VfMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4QTAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhBMDAwMDAwMCAtIDB4QUZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyX1JFR0lPTjQ8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDkwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4OTAwMDAwMDAgLSAweDlGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl9SRUdJT04zPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg4MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDgwMDAwMDAwIC0gMHg4RkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+QUhCMkVOVk0xX1JFR0lTVEVSUzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NjAwQzAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg2MDBDMDAwMCAtIDB4NjAwRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDQwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkFIQjJFTlZNMF9SRUdJU1RFUlM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMDgwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwODAwMDAgLSAweDYwMEJGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FTlZNMTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NjAwNDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg2MDA0MDAwMCAtIDB4NjAwN0ZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDQwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkVOVk0wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg2MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDYwMDAwMDAwIC0gMHg2MDAzRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwNDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9OMTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NTAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg1MDAwMDAwMCAtIDB4NUZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkNBQ0hFX0JBQ0tET09SPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDQwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwNDAwMDAwIC0gMHg0MDQwRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMTAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+VVNCPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDA0MzAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDQzMDAwIC0gMHg0MDA0M0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+U1lTUkVHPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAzODAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDM4MDAwIC0gMHg0MDAzOEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDEwMDA8L3JhbmdlPg0KLSAgICAgICAgICA8bWVtb3J5TWFwPg0KLSAgICAgICAgICAgIDxuYW1lPlJlZ2lzdGVyTWFwPC9uYW1lPg0KLSAgICAgICAgICAgIDxhZGRyZXNzQmxvY2s+DQotICAgICAgICAgICAgICA8YmFzZUFkZHJlc3M+MHgwPC9iYXNlQWRkcmVzcz4NCi0gICAgICAgICAgICAgIDxyYW5nZSBmb3JtYXQ9ImxvbmciPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICAgICAgICA8d2lkdGggZm9ybWF0PSJsb25nIiBpZD0id2lkdGgiPjMyPC93aWR0aD4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RVNSQU1fQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfRVNSQU1TSVpFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDozPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX1RFU1RFU1JBTTFSRU1BUF9TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9URVNUUkVNQVBFTkFCTEVfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VTUkFNRldSRU1BUDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDA0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX1NJWF9DWUNMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9QSVBFX0JZUEFTUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfRU5WTVBPV0VSRURET1dOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fRU5WTVJFTUFQU0laRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX1JFTUFQX0JBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4ODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDA4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fRU5WTVJFTUFQQkFTRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9GQUJfUkVNQVA8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDBDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fRU5WTUZBQlJFTUFQQkFTRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RkFCX1BST1RfU0laRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgxMDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDEwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fUFJPVFJFR0lPTlNJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RkFCX1BST1RfQkFTRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgxNDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDE0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fUFJPVFJFR0lPTkJBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zMTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPk1BVFJJWF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MTg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX1dFSUdIVEVETU9ERTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX01BU1RFUkVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5EU1NfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDFDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMUM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBMTExPQ0tMT1NUSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UExMTE9DS0lOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VSUk9SU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODo0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJST1dOT1VUM18zVklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlJPV05PVVQxXzVWSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5XRE9HVElNRU9VVEVWRU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SVENNQVRDSEVWRU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DTFJfRFNTX1NUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgyMDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDIwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJQTExMT0NLTE9TVElOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUlBMTExPQ0tJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9DTEVBUlNUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg6NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJCUk9XTk9VVDNfM1ZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUkJST1dOT1VUMV81VklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSV0RPR1RJTUVPVVRFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSUlRDTUFUQ0hFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RlJPTV9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MjQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1lTX1RPUFQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+SUFQX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgyODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDI4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TWVNfRkNGRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5TT0ZUX0lOVEVSUlVQVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgyQzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDJDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TT0ZUSU5URVJSVVBUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5TT0ZUX1JFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDMwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMzA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBBRFJFU0VURU5BQkxFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VVNFUlJFU0VUQUNUSVZFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RlBHQV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FWFRfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+SUFQX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdQSU9fU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QUNFX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkkyQzFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+STJDMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TUEkxX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNQSTBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5VQVJUMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlVBUlQwX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VElNRVJfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QRE1BX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+TUFDX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1DX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RVNSQU0xX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RVNSQU0wX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkRFVklDRV9TVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MzQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAzNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RlBHQUdPT0RfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RlBHQVBST0dSQU1NSU5HX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX1BDX0FDQ0VTU19TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDozPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZDQ0lCR09PRF9TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDNfM1ZfU1lOQ048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJST1dOT1VUMV81Vl9TWU5DTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+U1lTVElDS19DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4Mzg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAzODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RDTEtfRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI5OjI4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQ0FMSUI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVNX01VWF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4M0M8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAzQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTV9DT05GSUdfMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDQwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9DU0ZFMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1dFTkJFTjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SV1BPTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QSVBFV1JOMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BJUEVSRE4wPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fSUREMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2OjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1dSSVRFTEFUMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0OjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JETEFUUkVTVDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDo3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JETEFURklSU1QwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjozPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BPUlRTSVpFMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fTUVNVFlQRTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU1fQ09ORklHXzE8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NDQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA0NDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fQ1NGRTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XRU5CRU4xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUldQT0wxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVdSTjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QSVBFUkROMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0lERDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjoxNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XUklURUxBVDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDoxMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVFJFU1QxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA6NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVEZJUlNUMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QT1JUU0laRTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX01FTVRZUEUxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNMS19DVFJMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQ4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNDg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdMQkRJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzoxMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SVENJRl9BQ01ESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE6ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5BQ0xLRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc6NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QQ0xLMURJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41OjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UENMSzBESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzoyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJNSUlDTEtTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNDQ19ESVZfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDRDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNEM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWUlNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVZIQUxGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVZSU1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVkhBTEY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVZSU1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWSEFMRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNDQ19NVVhfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDUwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNTA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk1PREU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zMTozMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdMTVVYQ0ZHMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdMTVVYQ0ZHMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdMTVVYU0VMMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkdMTVVYU0VMMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJZUEFTU19QTEwzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNVVgyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNVVgxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNVVgwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFlOQ1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJYQ1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQVRDU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QllQQVNTX1BMTDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQk1VWDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQk1VWDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQk1VWDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EWU5CU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlhCU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVEFUQlNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QllQQVNTX1BMTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BTVVYMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FNVVgxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQU1VWDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRZTkFTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJYQVNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RBVEFTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNDQ19QTExfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDU0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNTQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBPV0VSRE9XTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjMxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZDT1NFTDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ09TRUwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkNPU0VMMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlhETFlTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRMWTQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRMWTM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRMWTI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRMWTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRMWTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQlNFTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQlNFTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVY2PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVY1PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GSU5ESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfRExZX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1ODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDU4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMTQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMTM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMTI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMDQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMDM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlBMDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0M0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0MxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQTQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQTM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQTI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNDQ19TVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NUM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA1QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UExMTE9DS19TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5WVEdfQ1RSTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg2NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDY0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CR1BTTUVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkJBVFNFTEVDVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfQ0xSUFVCSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SVENJRl9WUk9ORU5BQkxFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SVENJRl9GV1ZST048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9JRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg2QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDZDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJDQUxJQkZBSUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQkNBTElCU1RBUlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0xBUkdFX0NUX1hTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJfQVBCMzI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9BSEJJRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfQUhCQ0FQQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCX0FIQl9CWVBBU1M8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkFQQl9FWFROPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDcwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNzA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkFQQjE2X1hIT0xEPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5MT09QQkFDS19DVFJMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDc0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNzQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19FTUFDTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElPTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19JMkNMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX1NQSUxPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfVUFSVExPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5JT19CQU5LX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3ODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDc4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CVFdFU1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zOjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlRFQVNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkdQSU5fU1JDX1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDdDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxNV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxNF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxM108L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxMl08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxMV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxMF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs5XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbOF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzddPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs2XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbNV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzRdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVszXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMl08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzFdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVswXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICA8L2FkZHJlc3NCbG9jaz4NCi0gICAgICAgICAgPC9tZW1vcnlNYXA+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5DRkdNPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+REVWX0tJVF9ERU1PX01TU18wOk1ERFJfQVBCX1NMQVZFPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDIwODAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMjA4MDAgLSAweDQwMDIwRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHg4MDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+Q09SRVNGMkNPTkZJR18wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+REVWX0tJVF9ERU1POlNESUYxX0FQQm1zbGF2ZTwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAyQzAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDJDMDAwIC0gMHg0MDAyRTNGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MjQwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5SVEM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDE3MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTcwMDAgLSAweDQwMDE3RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkNPTUJMSzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMTYwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAxNjAwMCAtIDB4NDAwMTZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+SERNQTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMTQwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAxNDAwMCAtIDB4NDAwMTRGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+R1BJTzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMTMwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAxMzAwMCAtIDB4NDAwMTNGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+STJDXzE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDEyMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTIwMDAgLSAweDQwMDEyRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPk1NVUFSVF8xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDEwMDAwIC0gMHg0MDAxMEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5IMkZJTlRFUlJVUFQ8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDA2MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDYwMDAgLSAweDQwMDA2RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPldBVENIRE9HPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwNTAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDA1MDAwIC0gMHg0MDAwNUZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5USU1FUjwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDQwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwNDAwMCAtIDB4NDAwMDRGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UERNQTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDMwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwMzAwMCAtIDB4NDAwMDNGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+STJDXzA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDAyMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDIwMDAgLSAweDQwMDAyRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlNQSV8wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwMTAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDAxMDAwIC0gMHg0MDAwMUZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5SRUNZQ0xFRF9FU1JBTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDEyMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMTIwMDAgLSAweDIwMDEzRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwMjAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5SRUNZQ0xFRF9FU1JBTTA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDEwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMTAwMDAgLSAweDIwMDExRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwMjAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FU1JBTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDA4MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMDgwMDAgLSAweDIwMDBGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwODAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FU1JBTTA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDAwMDgwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MDAwODAwMDAgLSAweDAwMDg3RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwODAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgIDwvc3Vic3lzdGVtPg0KLSAgICAgIDxzdWJzeXN0ZW0+DQotICAgICAgICA8bmFtZT5DT1JFQUJDXzA8L25hbWU+DQotICAgICAgICA8bWFzdGVyPkNPUkVBQkNfMDwvbWFzdGVyPg0KLSAgICAgICAgPGFkZHJlc3NOYW1lcz4NCi0gICAgICAgICAgPGNvdW50PjE8L2NvdW50Pg0KLSAgICAgICAgICA8bmFtZT4NCi0gICAgICAgICAgPC9uYW1lPg0KLSAgICAgICAgPC9hZGRyZXNzTmFtZXM+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyXzA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT5ERVZfS0lUX0RFTU9fMDpGSUNfMF9BUEJfU0xBVkU8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4MDAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHgwMDAwMDAwMCAtIDB4MDAwMEZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDEwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgPC9zdWJzeXN0ZW0+DQotICAgIDwvc3Vic3lzdGVtcz4NCi0gIDwvbWVtb3J5c3lzdGVtPg0KLTwvZGF0YXNoZWV0Pg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvTGliZXJvT3V0cHV0L0RldmVsb3BtZW50S2l0X2hhcmR3YXJlL2RhdGFzaGVldC54c2wgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9EZXZlbG9wbWVudEtpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGNhNDJkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvTGliZXJvT3V0cHV0L0RldmVsb3BtZW50S2l0X2hhcmR3YXJlL2RhdGFzaGVldC54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwxMDc3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiID8+DQotDQotPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJkYXRhc2hlZXQiPg0KLSAgICAgICAgPGh0bWw+DQotICAgICAgICAgICAgPGhlYWQ+DQotICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjc3MiLz4NCi0gICAgICAgICAgICA8L2hlYWQ+DQotICAgICAgICAgICAgPGJvZHk+DQotICAgICAgICAgICAgICAgIDxhIG5hbWU9InRvcCIvPg0KLSAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJoZWFkZXIiLz4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRzaGVldCI+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icHJvamVjdC1zZXR0aW5ncyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+VGFibGUgb2YgQ29udGVudHM8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50IiA+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZW5lcmF0ZWRfZmlsZXMiPkdlbmVyYXRlZCBGaWxlczwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lvcyI+SU8nczwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvcmVzIj5IYXJkd2FyZSBJbnN0YW5jZXM8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNmaXJtd2FyZV9jb3JlcyI+RmlybXdhcmU8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtZW1tYXAiPk1lbW9yeSBNYXA8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGEgaHJlZj0ie2hlYWRlcn1fTWVtb3J5TWFwLnhtbCIgPk1lbW9yeSBNYXA8L2E+IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgICAgICA8IS0tID09PT09PT0gR2VuZXJhdGVkIEZpbGUncyA9PT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8cD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iZ2VuZXJhdGVkX2ZpbGVzIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+R2VuZXJhdGVkIEZpbGVzPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJnZW5lcmF0ZWRfZmlsZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PT09IElPJ3MgPT09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImlvcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPklPJ3M8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3A+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImlvcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PSBDT1JFUyA9PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImNvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZXMNCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY29yZXMiLz4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PT09IEZpcndtYXJlID09PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJmaXJtd2FyZV9jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPkZpcm13YXJlPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJmaXJtd2FyZV9jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgICAgICA8IS0tID09PT09IE1FTU9SWSBNQVAgPT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJtZW1tYXAiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnkgTWFwDQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJtZW1vcnlzeXN0ZW0iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICA8L2JvZHk+DQotICAgICAgICA8L2h0bWw+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJoZWFkZXIiPg0KLSAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPg0KLSAgICAgICAgICAgIDxoMT4NCi0gICAgICAgICAgICAgICAgRGF0YSBTaGVldDogPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgICAgICAgICA8L2gxPg0KLSAgICAgICAgICAgIDwhLS0gPT09PT09PSBJTydzID09PT09PT0gDQotICAgICAgPGRpdiBjbGFzcz0iY29weXJpZ2h0Ij4NCi0gICAgICAgIENvcHlyaWdodCAyMDA4IEFjdGVsIENvcnBvcmF0aW9uDQotICAgICAgPC9kaXY+DQotCSAgLS0+DQotICAgICAgICA8L2Rpdj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InByb2plY3Qtc2V0dGluZ3MiPg0KLSAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5Qcm9qZWN0IFNldHRpbmdzPC9kaXY+DQotDQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNCI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5GQU06IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJmYW0iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5EaWU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJkaWUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5QYWNrYWdlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGFja2FnZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlNwZWVkIEdyYWRlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic3BlZWQtZ3JhZGUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5Wb2x0YWdlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0idm9sdGFnZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPkhETDogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImhkbC10eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+UHJvamVjdCBEZXNjcmlwdGlvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InByb2plY3QtZGVzY3JpcHRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5Mb2NhdGlvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImxvY2F0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+U3RhdGUgKFRpbWUpOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic3RhdGUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPGJyLz4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDwhLS0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAtLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJnZW5lcmF0ZWRfZmlsZXMiPg0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZpbGVzZXQiPg0KLSAgICAgICAgICAgICAgICA8Yj5GaWxlIHNldDogIDwvYj4NCi0gICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0NCi0gICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZpbGUiPg0KLSAgICAgICAgICAgICAgICAgICAgPGxpPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2xpPg0KLSAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtaW9zIj4NCi0gICAgICAgIDx0ZD4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBvcnQtbmFtZSIvPg0KLSAgICAgICAgPC90ZD4NCi0gICAgICAgIDx0ZD4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImRpcmVjdGlvbiIvPg0KLSAgICAgICAgPC90ZD4NCi0gICAgICAgIDx0ZD4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBpbi1udW1iZXIiLz4NCi0gICAgICAgIDwvdGQ+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJpby1zdGFuZGFyZCIvPg0KLSAgICAgICAgPC90ZD4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iaW9zIj4NCi0gICAgICAgIDx4c2w6Y2hvb3NlPg0KLSAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb3VudChpbykgJmd0OyAwIj4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJpb3MiICBhbGlnbj0iY2VudGVyIiAgYm9yZGVyPSIxIiB3aWR0aD0iNzUlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjQiPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydCBOYW1lDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSS9PIFN0YW5kYXJkDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iaW8iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWlvcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgIDx4c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICA8aT5ObyBJTydzIDwvaT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotICAgIDwhLS0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAtLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJmaXJtd2FyZV9jb3JlcyI+DQotICAgICAgICA8eHNsOmNob29zZT4NCi0gICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iY291bnQoZmlybXdhcmVfY29yZSkgJmd0OyAwIj4NCi0gICAgICAgICAgICAgICAgPCEtLSBDb3JlIFRPQyAtLT4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICA8Yj5Tb2Z0d2FyZSBJREU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIvZGF0YXNoZWV0L3Byb2plY3Qtc2V0dGluZ3Mvc3dpZGUtdG9vbGNoYWluIi8+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbnN0YW5jZXMiPkRyaXZlcnM6PC9zcGFuPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaXJtd2FyZV9jb3JlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIje2NvcmUtbmFtZX0iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iY29yZS1uYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BsaW5rcyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaXJtd2FyZV9jb3JlIj4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0ie2NvcmUtbmFtZX0iLz4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImNvcmVzIiB3aWR0aD0iOTclIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYm9yZGVyPSIxIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxNCI+IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNob29zZT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iRmlybVdhcmVNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtc3Bpcml0Ii8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BsaW5rcyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlcyI+aW5zdGFuY2UgbGlzdDwvYT4sIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgIDx4c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8aT5ObyBGaXJtd2FyZSBHZW5lcmF0ZWQuICBEZXNpZ24gbWF5IG5vdCBjb250YWluIGFueSBwcm9jZXNzb3Igc3Vic3lzdGVtcywgb3IgZmlybXdhcmUgaGF2ZSBub3QgYmVlbiBkb3dubG9hZGVkIHRvIHlvdXIgdmF1bHQ8L2k+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOm90aGVyd2lzZT4NCi0gICAgICAgIDwveHNsOmNob29zZT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotDQotICAgIDwhLS0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAtLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjb3JlcyI+DQotICAgICAgICA8eHNsOmNob29zZT4NCi0NCi0gICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iY291bnQoY29yZSkgJmd0OyAwIj4NCi0gICAgICAgICAgICAgICAgPCEtLSBDb3JlIFRPQyAtLT4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5zdGFuY2VzIj5JbnN0YW5jZXM6PC9zcGFuPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJjb3JlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIje2NvcmUtbmFtZX0iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iY29yZS1uYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BsaW5rcyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJjb3JlIj4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0ie2NvcmUtbmFtZX0iLz4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImNvcmVzIiB3aWR0aD0iOTclIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYm9yZGVyPSIxIiAgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxNCI+IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNob29zZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iQ29tcG9uZW50TW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWNvbXAiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IlNwaXJpdE1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1zcGlyaXQiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkFkbGliTW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWFkbGliIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJIZGxNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtaGRsIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BsaW5rcyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlcyI+aW5zdGFuY2UgbGlzdDwvYT4sIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgIDx4c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8aT5ObyBJbnN0YW5jZXM8L2k+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOm90aGVyd2lzZT4NCi0gICAgICAgIDwveHNsOmNob29zZT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtY29tcCI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHlwZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZXh0dHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+TG9jYXRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWxvY2F0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLXNwaXJpdCI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VHlwZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZXh0dHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VmVuZG9yOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS12ZW5kb3IiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkxpYnJhcnk6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWxpYiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+Q29yZSBOYW1lOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1pbnRuYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5WZXJzaW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS12ZXIiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkRlc2NyaXB0aW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1kZXNjIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5QYXJhbWV0ZXJzOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1zcGlyaXQtcGFyYW1zIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LXNwaXJpdC1wYXJhbXMiID4NCi0gICAgICAgIDx4c2w6aWYgdGVzdD0iY291bnQoY29yZS1wYXJhbSkgPiAwIj4NCi0gICAgICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOyAiID4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPHRhYmxlPg0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA8dHI+DQotICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgTmFtZQ0KLSAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgVmFsdWUNCi0gICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICA8L3RyPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJjb3JlLXBhcmFtIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZS1wYXJhbXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPC94c2w6aWY+DQotICAgICAgICA8eHNsOmlmIHRlc3Q9ImNvdW50KGNvcmUtcGFyYW0pICZsdDsgMSI+DQotICAgICAgICAgICAgPGk+Tm8gcGFyYW1ldGVyczwvaT4NCi0gICAgICAgIDwveHNsOmlmPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1hZGxpYiI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+Q2VsbCBUeXBlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1leHR0eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotDQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWhkbCI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+TW9kdWxlIE5hbWU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkhETCBGaWxlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1sb2NhdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlcyI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkIHdpZHRoPSIyMDAiPg0KLSAgICAgICAgICAgICAgICA8Yj5JbnN0YW5jZSBOYW1lOiA8L2I+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1uYW1lIi8+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmUtcGFyYW1zIj4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJwYXJhbXMtbmFtZSI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhcmFtLWhkbG5hbWUiLz4gWyA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhcmFtLW5hbWUiLz4gXQ0KLSAgICAgICAgICAgICAgICA8L2I+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGFyYW0taGRsdmFsdWUiLz4gWyA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhcmFtLXZhbHVlIi8+IF0NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotDQotDQotICAgIDwhLS0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8tLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icG9ydC1uYW1lfGRpcmVjdGlvbnxwaW4tbnVtYmVyfGlvLXN0YW5kYXJkIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29yZS1uYW1lfGNvcmUtdHlwZXxjb3JlLWV4dHR5cGUiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JlLXZlbmRvcnxjb3JlLWxpYnxjb3JlLWludG5hbWV8Y29yZS12ZXJ8Y29yZS1kZXNjIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29yZS1sb2NhdGlvbiI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImZhbXxkaWV8cGFja2FnZXxoZGwtdHlwZXxsb2NhdGlvbnxzdGF0ZSI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InBhcmFtLW5hbWV8cGFyYW0tdmFsdWV8cGFyYW0tdGFnfHBhcmFtLWhkbG5hbWV8cGFyYW0taGRsdmFsdWUiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InRvcC1saW5rIj4NCi0gICAgICAgIDxhIGhyZWY9IiN0b3AiPnRvcCBvZiBwYWdlPC9hPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0NCi0gICAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09TUVNT1JZIE1BUD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im1lbW9yeXN5c3RlbSI+DQotDQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImRlc2NyaXB0aW9uIi8+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDxkaXY+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzdWJzeXN0ZW1zIi8+DQotICAgICAgICA8L2Rpdj4NCi0NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnN5c3RlbXMiPg0KLQ0KLSAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9InN1YnN5c3RlbSI+DQotICAgICAgICAgICAgPGxpPg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN7bmFtZX0gTWVtb3J5IE1hcCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5vZGUoKSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICA8L2xpPg0KLSAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotDQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BsaW5rcyI+DQotICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8YnIvPg0KLQ0KLSAgICAgICAgPGhyPjwvaHI+DQotICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InN1YnN5c3RlbSIvPg0KLQ0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3Vic3lzdGVtIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDxoMj4NCi0gICAgICAgICAgICAgICAgPGEgbmFtZT0ie25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgPC9hPiBTdWJzeXN0ZW0NCi0gICAgICAgICAgICA8L2gyPg0KLSAgICAgICAgICAgIE1hc3RlcihzKSBvbiB0aGlzIGJ1czoNCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im1hc3RlciIvPg0KLSAgICAgICAgICAgIDxicj48L2JyPjxicj48L2JyPg0KLQ0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iYWRkcmVzc05hbWVzIiAvPg0KLSAgICAgICAgICAgIDxhIGhyZWY9IiNtZW1tYXAiPnN1YnN5c3RlbSBsaXN0PC9hPiwNCi0gICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0NCi0gICAgICAgICAgICA8YnIvPjxici8+DQotICAgICAgICAgICAgPGhyPjwvaHI+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzbGF2ZSIvPg0KLSAgICAgICAgPC9kaXY+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJ0aXRsZSI+DQotICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IzAwMDAwMCI+DQotICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICAgICAgPC9zcGFuPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZGVzY3JpcHRpb24iPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibWFzdGVyIj4NCi0gICAgICAgIDxsaT4NCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPC9saT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFkZHJlc3NOYW1lcyI+DQotICAgICAgICA8dGFibGUgY2xhc3M9InJlZ3MiIGJvcmRlcj0iMSIgY2VsbHNwYWNlPSIwIiBjZWxscGFkZGluZz0iMTAiICBhbGlnbj0iY2VudGVyIiA+DQotICAgICAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudCA9IDEiPg0KLSAgICAgICAgICAgICAgICA8dHIgYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMSI+PC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPSIyIj5BZGRyZXNzIFJhbmdlPC90aD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDppZj4NCi0gICAgICAgICAgICA8eHNsOmlmIHRlc3Q9ImNvdW50ICZndDsgMSI+DQotICAgICAgICAgICAgICAgIDx0ciBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIyIj48L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49IjIiPkFkZHJlc3MgUmFuZ2U8L3RoPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0ibmFtZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwveHNsOmlmPg0KLQ0KLSAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSIuLi9zbGF2ZSI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCBjZWxsc3BhY2U9IjAiIGNvbHNwYW49IjEiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7bmFtZX1fe21lbW9yeU1hcC9uYW1lfSBSZWdpc3RlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPiA6IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJtZW1vcnlNYXAvbmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmdWxsQWRkcmVzc1NwYWNlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotDQotICAgICAgICA8L3RhYmxlPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic2xhdmUiPg0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPGgzPg0KLSAgICAgICAgICAgICAgICA8YSBuYW1lPSJ7bmFtZX1fe21lbW9yeU1hcC9uYW1lfSBSZWdpc3RlciI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPiA6IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJtZW1vcnlNYXAvbmFtZSIvPiBNZW1vcnkgTWFwIFsNCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJmdWxsQWRkcmVzc1NwYWNlIi8+IF0NCi0gICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgIDwvaDM+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDxkaXYgY2xhc3M9Im1tcmFuZ2UiPg0KLQ0KLSAgICAgICAgICAgIDxpPnJhbmdlOiA8L2k+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJyYW5nZSIvPg0KLQ0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8eHNsOmlmIHRlc3Q9Im1lbW9yeU1hcC9hZGRyZXNzQmxvY2svcmVnaXN0ZXIiPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibWVtb3J5TWFwL2FkZHJlc3NCbG9jayIvPg0KLSAgICAgICAgPC94c2w6aWY+DQotICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7Li4vbmFtZX0gTWVtb3J5IE1hcCI+DQotICAgICAgICAgICAgYmFjayB0byA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLi4vbmFtZSIvPiBNZW1vcnkgTWFwDQotICAgICAgICA8L2E+DQotICAgICAgICA8YnIvPg0KLSAgICAgICAgPGJyLz4NCi0gICAgICAgIDxocj48L2hyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWRkcmVzc0Jsb2NrIj4NCi0gICAgICAgIDx0YWJsZSBjbGFzcz0icmVncyIgYm9yZGVyPSIyIiBjZWxsc3BhY2U9IjAiIGNlbGxwYWRkaW5nPSI0IiBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICA8dHIgYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgIDx0aD5BZGRyZXNzPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPg0KLSAgICAgICAgICAgICAgICA8dGg+Ui9XPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPldpZHRoPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPlJlc2V0IFZhbHVlPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4NCi0gICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJyZWdpc3RlciI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBub3dyYXA9InRydWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhYnNvbHV0ZUFkZHJlc3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNob29zZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iZmllbGQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7Li4vLi4vLi4vbmFtZX1fe25hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpvdGhlcndpc2U+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Y2hvb3NlPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIG5vd3JhcD0idHJ1ZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImFjY2VzcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ic2l6ZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0icmVzZXRWYWx1ZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImRlc2NyaXB0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgPC90YWJsZT4NCi0NCi0gICAgICAgIDx4c2w6aWYgdGVzdD0icmVnaXN0ZXIvZmllbGQiPg0KLSAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BsaW5rcyIgaHJlZj0iI3suLi8uLi8uLi9uYW1lfSBNZW1vcnkgTWFwIj4NCi0gICAgICAgICAgICAgICAgYmFjayB0byA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLi4vLi4vLi4vbmFtZSIvPiBNZW1vcnkgTWFwDQotICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJyZWdpc3RlciI+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGg0Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJyZWdpc3Rlci1kZXRhaWxzIiBuYW1lPSJ7Li4vLi4vLi4vbmFtZX1fe25hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4gcmVnaXN0ZXIgZGV0YWlscyBbIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhYnNvbHV0ZUFkZHJlc3MiLz4gXSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgPC9oND4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ3dpZHRoIj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDxpPndpZHRoOiA8L2k+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InNpemUiLz4tYml0DQotDQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InJlZ3MiIGJvcmRlcj0iMiIgY2VsbHNwYWNlPSIwIiBjZWxscGFkZGluZz0iNCIgYWxpZ249ImNlbnRlciIgPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBhbGlnbj0ibGVmdCI+Qml0IE51bWJlcjwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5SL1c8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZpZWxkIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYml0TnVtYmVyIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBub3dyYXA9InRydWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImFjY2VzcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImRlc2NyaXB0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLQ0KLSAgICAgICAgICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7Li4vLi4vLi4vbmFtZX1fey4uLy4uLy4uL21lbW9yeU1hcC9uYW1lfSBSZWdpc3RlciI+DQotICAgICAgICAgICAgICAgICAgICBiYWNrIHRvIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuLi8uLi8uLi9uYW1lIi8+IFJlZ2lzdGVycw0KLSAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgPC94c2w6aWY+DQotDQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJyYW5nZSI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PUVORCBNRU1PUlkgTUFQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4NCi0NCi0NCi0NCi0gICAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IENTUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPg0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImNzcyI+DQotICAgICAgICA8c3R5bGU+DQotDQotICAgICAgICAgICAgaHRtbA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOmRhcmtncmF5Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBib2R5DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGZvbnQtZmFtaWx5OmFyaWFsOw0KLSAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFwdDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsNCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgdGgNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUuY29yZXMNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNCMEIwQjA7DQotICAgICAgICAgICAgYm9yZGVyLXN0eWxlOnNvbGlkOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDoxcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLmNvcmVzIHRkDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOnRvcDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUucmVncywNCi0gICAgICAgICAgICB0YWJsZS5pb3MNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjQjBCMEIwOw0KLSAgICAgICAgICAgIGJvcmRlci1zdHlsZTpzb2xpZDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIGJvcmRlci1zcGFjaW5nOjBweDsNCi0gICAgICAgICAgICBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7DQotICAgICAgICAgICAgd2lkdGg9NzUlOw0KLSAgICAgICAgICAgIGZvbnQtZmFtaWx5OmNvdXJpZXJuZXc7DQotICAgICAgICAgICAgZm9udC1zaXplOiAxMXB0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5yZWdzIHRoDQotICAgICAgICAgICAgdGFibGUuaW9zIHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0IwQjBCMDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIGNvbG9yOiBkYXJrc2xhdGVncmF5Ow0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLmlvcyB0ZA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsNCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgdGFibGUucGFyYW1zDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0QwRDBEMDsNCi0gICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjBweDsNCi0gICAgICAgICAgICBib3JkZXItc3BhY2luZzowcHg7DQotICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOw0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICB0YWJsZS5wYXJhbXMgdGgNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjRDBEMEQwOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDoxcHg7DQotICAgICAgICAgICAgY29sb3I6IGJsYWNrOw0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnBhcmFtcyB0ZA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgYi5wYXJhbXMtbmFtZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBjb2xvcjogIzUwNTA1MCAgIDsNCi0NCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgZGl2LmhlYWRlcg0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBwYWRkaW5nLXRvcDogN3B4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA3cHg7DQotICAgICAgICAgICAgY29sb3I6IzAwMzM5OTsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDBEMEQwOw0KLSAgICAgICAgICAgIHdpZHRoPTEwMCU7DQotICAgICAgICAgICAgZm9udC1mYW1pbHk6YXJpYWw7DQotICAgICAgICAgICAgZm9udC1zaXplOjE0cHQ7DQotICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYudGl0bGUNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDMwcHg7DQotICAgICAgICAgICAgbWFyZ2luOiBhdXRvOw0KLSAgICAgICAgICAgIGNvbG9yOiNEMEQwRDA7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojMDAzMzk5IDsNCi0NCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQotICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MzBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OjMwcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi5kc2hlZXQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsNCi0gICAgICAgICAgICBtYXJnaW46IGF1dG87DQotICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdA0KLQ0KLSAgICAgICAgICAgIGNvbG9yOiMwMDMzOTk7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQotDQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDMwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjMwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1yaWdodDozMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYuY29udGVudA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MTBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OjEwcHg7DQotDQotICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsNCi0gICAgICAgICAgICBmb250LXNpemU6IDEzcHQ7DQotICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmNvcHlyaWdodA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOnJpZ2h0Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZTo5cHQ7DQotICAgICAgICAgICAgZm9udC1zdHlsZTppdGFsaWM7DQotICAgICAgICAgICAgZm9udC13ZWlnaHQ6bm9ybWFsOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYubGlua3MNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBiDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGNvbG9yOmRhcmtzbGF0ZWdyYXkNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgaHINCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgd2lkdGg9MTAwJTsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLmluc3RhbmNlcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBmb250LXNpemU6MTRwdDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC50b3BsaW5rcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBmb250LXNpemU6MTBwdDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5yZWdpc3Rlci1kZXRhaWxzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtaW5kZW50OjIwcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5tbXJhbmdlDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtaW5kZW50OjEwcHg7DQotICAgICAgICAgICAgZm9udC1zaXplOjExcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsNCi0gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsNCi0NCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLnJlZ3dpZHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtaW5kZW50OjI0cHQ7DQotICAgICAgICAgICAgZm9udC1zaXplOjExcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsNCi0gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICA8L3N0eWxlPg0KLQ0KLSAgICAgICAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEVORCBDU1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotPC94c2w6c3R5bGVzaGVldD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9TdGFydGVyS2l0X2hhcmR3YXJlL1JUT1NEZW1vX0RhdGFTaGVldC54bWwgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9TdGFydGVyS2l0X2hhcmR3YXJlL1JUT1NEZW1vX0RhdGFTaGVldC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMzJkNTQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9SVE9TRGVtb19EYXRhU2hlZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIyMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/Pg0KLTw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9ImRhdGFzaGVldC54c2wiPz4NCi08ZGF0YXNoZWV0Pg0KLSAgPGhlYWRlcj5SVE9TRGVtbzwvaGVhZGVyPg0KLSAgPHByb2plY3Qtc2V0dGluZ3M+DQotICAgIDxmYW0+U21hcnRGdXNpb24yPC9mYW0+DQotICAgIDxkaWU+TTJTMDUwVF9FUzwvZGllPg0KLSAgICA8cGFja2FnZT44OTYgRkJHQTwvcGFja2FnZT4NCi0gICAgPHNwZWVkLWdyYWRlPlNURDwvc3BlZWQtZ3JhZGU+DQotICAgIDx2b2x0YWdlPjEuMjwvdm9sdGFnZT4NCi0gICAgPGhkbC10eXBlPlZlcmlsb2c8L2hkbC10eXBlPg0KLSAgICA8cHJvamVjdC1kZXNjcmlwdGlvbj4NCi0gICAgPC9wcm9qZWN0LWRlc2NyaXB0aW9uPg0KLSAgICA8bG9jYXRpb24+YzovZGV2L0ZyZWVSVE9TL1NtYXJ0RnVzdGlvbjIvTGliZXJvL1JUT1NEZW1vL2NvbXBvbmVudC93b3JrL1JUT1NEZW1vPC9sb2NhdGlvbj4NCi0gICAgPHN0YXRlPkdFTkVSQVRFRCAoIFN1biBNYXkgMDUgMTM6MjM6MjIgMjAxMyApPC9zdGF0ZT4NCi0gICAgPHN3aWRlLXRvb2xjaGFpbj5Tb2Z0Q29uc29sZSB3b3Jrc3BhY2UgZ2VuZXJhdGVkIHRvIGM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xTb2Z0Q29uc29sZTwvc3dpZGUtdG9vbGNoYWluPg0KLSAgPC9wcm9qZWN0LXNldHRpbmdzPg0KLSAgPHNpdGUtbWFwPg0KLSAgPC9zaXRlLW1hcD4NCi0gIDxmaWxlc2V0Pg0KLSAgICA8bmFtZT5IREwgRmlsZShzKTwvbmFtZT4NCi0gICAgPGZpbGU+YzpcZGV2XEZyZWVSVE9TXFNtYXJ0RnVzdGlvbjJcTGliZXJvXFJUT1NEZW1vXGNvbXBvbmVudFxBY3RlbFxTZ0NvcmVcT1NDXDEuMC4xMDBcb3NjX2NvbXBzLnY8L2ZpbGU+DQotICAgIDxmaWxlPmM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xjb21wb25lbnRcd29ya1xSVE9TRGVtb1xGQ0NDXzBcUlRPU0RlbW9fRkNDQ18wX0ZDQ0MudjwvZmlsZT4NCi0gICAgPGZpbGU+YzpcZGV2XEZyZWVSVE9TXFNtYXJ0RnVzdGlvbjJcTGliZXJvXFJUT1NEZW1vXGNvbXBvbmVudFx3b3JrXFJUT1NEZW1vXE9TQ18wXFJUT1NEZW1vX09TQ18wX09TQy52PC9maWxlPg0KLSAgICA8ZmlsZT5jOlxkZXZcRnJlZVJUT1NcU21hcnRGdXN0aW9uMlxMaWJlcm9cUlRPU0RlbW9cY29tcG9uZW50XHdvcmtcUlRPU0RlbW9cUlRPU0RlbW8udjwvZmlsZT4NCi0gICAgPGZpbGU+YzpcZGV2XEZyZWVSVE9TXFNtYXJ0RnVzdGlvbjJcTGliZXJvXFJUT1NEZW1vXGNvbXBvbmVudFx3b3JrXFJUT1NEZW1vX01TU1xSVE9TRGVtb19NU1MudjwvZmlsZT4NCi0gICAgPGZpbGU+YzpcZGV2XEZyZWVSVE9TXFNtYXJ0RnVzdGlvbjJcTGliZXJvXFJUT1NEZW1vXGNvbXBvbmVudFx3b3JrXFJUT1NEZW1vX01TU1xSVE9TRGVtb19NU1NfdG1wX3N5bi52PC9maWxlPg0KLSAgPC9maWxlc2V0Pg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMF9NMkY8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5OL0E8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT184X0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMV9NMkY8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5OL0E8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TU1VQVJUXzBfUlhEPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TU1VQVJUXzBfVFhEPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+Ti9BPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICA8L2lvPg0KLSAgPGNvcmUgdHlwZT0iU3Bpcml0TW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPlNwaXJpdE1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+U2dDb3JlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5GQ0NDPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz4gICJTbWFydEZ1c2lvbjIgQ2xvY2sgQ29uZGl0aW9uaW5nIENpcmN1aXQgKENDQykiICA8L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5GQ0NDXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxjb3JlIHR5cGU9IlNwaXJpdE1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5TcGlyaXRNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPlNnQ29yZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+T1NDPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4xLjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz4NCi0gICAgPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+T1NDXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxjb3JlIHR5cGU9IkNvbXBvbmVudE1vZHVsZSI+DQotICAgIDxjb3JlLXR5cGU+Q29tcG9uZW50TW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLWV4dHR5cGU+SGllclNwaXJpdERlc2lnbjwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS1sb2NhdGlvbj5jOi9kZXYvRnJlZVJUT1MvU21hcnRGdXN0aW9uMi9MaWJlcm8vUlRPU0RlbW8vY29tcG9uZW50L3dvcmsvUlRPU0RlbW9fTVNTPC9jb3JlLWxvY2F0aW9uPg0KLSAgICA8Y29yZS1uYW1lPlJUT1NEZW1vX01TU18wPC9jb3JlLW5hbWU+DQotICA8L2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9DTVNJUzwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4xLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIENvcnRleCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgSW50ZXJmYWNlIFN0YW5kYXJkIChDTVNJUykuDQotDQotVGhlIGZpcm13YXJlIHBhY2thZ2UgcHJvdmlkZXM6DQotLSBDb3J0ZXgtTTMgc3RhcnR1cCBjb2RlLg0KLS0gQ01TSVMgc3RhbmRhcmQgbmFtaW5nIGZvciBleGNlcHRpb24gYW5kIGludGVycnVwdCBoYW5kbGVycy4NCi0tIENNU0lTIHN0YW5kYXJkIGZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIENvcnRleC1NMyBOZXN0ZWQgVmVjdG9yZWQgSW50ZXJydXB0IENvbnRyb2xsZXIgKE5WSUMpLg0KLS0gcGVyaXBoZXJhbHMgcmVnaXN0ZXJzIGRlc2NyaXB0aW9uLg0KLS0gaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgZm9yIEZQR0EgZmFicmljIHNvZnQtSVAgcGVyaXBoZXJpcmFscy4NCi0NCi1UaGVzZSBmaWxlcyBhcmUgcmVxdWlyZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBiYXJlIG1ldGFsIHBlcmlwaGVyYWwgZHJpdmVycyB0byBidWlsZCBjb3JyZWN0bHkuDQotPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNvZnR3YXJlIFRvb2wgQ2hhaW46PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5Tb2Z0Q29uc29sZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+VG9vbENoYWluPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPmFjdGVsLWNjOnZhcmlhbnRQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9DTVNJU18wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfR1BJT19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIEdQSU8gYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19HUElPX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfSFBETUFfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBIaWdoIFBlcmZvcm1hbmNlIERNQSBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX0hQRE1BX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfTU1VQVJUX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgTU1VQVJUIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfTU1VQVJUX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfTlZNX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMzwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgZU5WTSBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX05WTV9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX1JUQ19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIFJUQyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1JUQ19Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX1N5c3RlbV9TZXJ2aWNlc19Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDM8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb3NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIFN5c3RlbSBTZXJ2aWNlcyBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19TeXN0ZW1fU2VydmljZXNfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19UaW1lcl9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIFRpbWVyIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfVGltZXJfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxtZW1vcnlzeXN0ZW0+DQotICAgIDx0aXRsZT5NZW1vcnkgTWFwIGZvciBSVE9TRGVtbzwvdGl0bGU+DQotICAgIDxkZXNjcmlwdGlvbj5UaGUgcHJvamVjdCBjb250YWlucyB0aGUgZm9sbG93aW5nIHN1YnN5c3RlbXM6PC9kZXNjcmlwdGlvbj4NCi0gICAgPHN1YnN5c3RlbXM+DQotICAgICAgPHN1YnN5c3RlbT4NCi0gICAgICAgIDxuYW1lPkNNMzwvbmFtZT4NCi0gICAgICAgIDxtYXN0ZXI+Q00zPC9tYXN0ZXI+DQotICAgICAgICA8YWRkcmVzc05hbWVzPg0KLSAgICAgICAgICA8Y291bnQ+MTwvY291bnQ+DQotICAgICAgICAgIDxuYW1lPg0KLSAgICAgICAgICA8L25hbWU+DQotICAgICAgICA8L2FkZHJlc3NOYW1lcz4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9ONTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4RjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhGMDAwMDAwMCAtIDB4RkZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEQwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4RDAwMDAwMDAgLSAweERGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5ERFJfMF9TUEFDRV8yPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhDMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEMwMDAwMDAwIC0gMHhDRkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RERSXzBfU1BBQ0VfMTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4QjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhCMDAwMDAwMCAtIDB4QkZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEEwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4QTAwMDAwMDAgLSAweEFGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl9SRUdJT040PC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg5MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDkwMDAwMDAwIC0gMHg5RkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9OMzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4ODAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg4MDAwMDAwMCAtIDB4OEZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkFIQjJFTlZNMV9SRUdJU1RFUlM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMEMwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwQzAwMDAgLSAweDYwMEZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5BSEIyRU5WTTBfUkVHSVNURVJTPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg2MDA4MDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDYwMDgwMDAwIC0gMHg2MDBCRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwNDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RU5WTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMDQwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwNDAwMDAgLSAweDYwMDdGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FTlZNMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg2MDAwMDAwMCAtIDB4NjAwM0ZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDQwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyX1JFR0lPTjE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDUwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NTAwMDAwMDAgLSAweDVGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5DQUNIRV9CQUNLRE9PUjwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDA0MDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDQwMDAwMCAtIDB4NDA0MEZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDEwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlNZU1JFRzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMzgwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAzODAwMCAtIDB4NDAwMzhGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDAxMDAwPC9yYW5nZT4NCi0gICAgICAgICAgPG1lbW9yeU1hcD4NCi0gICAgICAgICAgICA8bmFtZT5SZWdpc3Rlck1hcDwvbmFtZT4NCi0gICAgICAgICAgICA8YWRkcmVzc0Jsb2NrPg0KLSAgICAgICAgICAgICAgPGJhc2VBZGRyZXNzPjB4MDwvYmFzZUFkZHJlc3M+DQotICAgICAgICAgICAgICA8cmFuZ2UgZm9ybWF0PSJsb25nIj4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgICAgICAgPHdpZHRoIGZvcm1hdD0ibG9uZyIgaWQ9IndpZHRoIj4zMjwvd2lkdGg+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMDA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0VTUkFNU0laRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9URVNURVNSQU0xUkVNQVBfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfVEVTVFJFTUFQRU5BQkxFX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FU1JBTUZXUkVNQVA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9TSVhfQ1lDTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fUElQRV9CWVBBU1M8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0VOVk1QT1dFUkVERE9XTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1SRU1BUFNJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9SRU1BUF9CQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1SRU1BUEJBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fRkFCX1JFTUFQPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weEM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1GQUJSRU1BUEJBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9QUk9UX1NJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MTA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX1BST1RSRUdJT05TSVpFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9QUk9UX0JBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MTQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX1BST1RSRUdJT05CQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5NQVRSSVhfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDE4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMTg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9XRUlHSFRFRE1PREU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9NQVNURVJFTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RFNTX1NUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgxQzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDFDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QTExMT0NLTE9TVElOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBMTExPQ0tJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FUlJPUlNUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg6NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDNfM1ZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJST1dOT1VUMV81VklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+V0RPR1RJTUVPVVRFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDTUFUQ0hFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0xSX0RTU19TVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MjA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSUExMTE9DS0xPU1RJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJQTExMT0NLSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fQ0xFQVJTVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44OjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSQlJPV05PVVQzXzNWSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJCUk9XTk9VVDFfNVZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUldET0dUSU1FT1VURVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUlJUQ01BVENIRVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZST01fQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDI0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMjQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNZU19UT1BUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPklBUF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4Mjg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1lTX0ZDRkc8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+U09GVF9JTlRFUlJVUFQ8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MkM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U09GVElOVEVSUlVQVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+U09GVF9SRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgzMDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDMwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QQURSRVNFVEVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlVTRVJSRVNFVEFDVElWRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RVhUX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPklBUF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HUElPX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkFDRV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5JMkMxX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkkyQzBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1BJMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TUEkwX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VUFSVDFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5VQVJUMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlRJTUVSX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UERNQV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk1BQ19TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNQ19TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5ERVZJQ0VfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDM0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMzQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FHT09EX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FQUk9HUkFNTUlOR19TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9QQ19BQ0NFU1NfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ0NJQkdPT0RfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlJPV05PVVQzXzNWX1NZTkNOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDFfNVZfU1lOQ048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPlNZU1RJQ0tfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDM4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMzg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQ0xLX0RJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOToyODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVENBTElCPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjU6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTV9NVVhfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDNDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwM0M8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU1fQ09ORklHXzA8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NDA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA0MDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fQ1NGRTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XRU5CRU4wPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUldQT0wwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVdSTjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QSVBFUkROMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0lERDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjoxNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XUklURUxBVDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDoxMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVFJFU1QwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA6NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVEZJUlNUMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QT1JUU0laRTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX01FTVRZUEUwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NPTkZJR18xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQ0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNDQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NTRkUxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV0VOQkVOMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JXUE9MMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BJUEVXUk4xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVJETjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9JREQxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY6MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV1JJVEVMQVQxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ6MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRSRVNUMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwOjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRGSVJTVDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42OjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUE9SVFNJWkUxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9NRU1UWVBFMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DTEtfQ1RSTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0ODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDQ4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTEJESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM6MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfQUNNRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExOjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QUNMS0RJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43OjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UENMSzFESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTo0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBDTEswRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM6MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5STUlJQ0xLU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfRElWX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDRDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVlJTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWSEFMRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWUlNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVZIQUxGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWUlNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVkhBTEY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfTVVYX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDUwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5NT0RFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzE6MzA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU48L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWENGRzE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWENGRzA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWFNFTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWFNFTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CWVBBU1NfUExMMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRZTkNTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SWENTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVEFUQ1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJZUEFTU19QTEwyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFlOQlNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJYQlNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RBVEJTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJZUEFTU19QTEwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQU1VWDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BTVVYMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FNVVgwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EWU5BU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SWEFTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQVRBU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfUExMX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDU0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QT1dFUkRPV048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ09TRUwyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkNPU0VMMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZDT1NFTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5YRExZU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFk0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJTRUwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJTRUwwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY2PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY1PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX0RMWV9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NTg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA1ODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTE0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTExPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTA0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0MyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0I0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0E0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0ExPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDVDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNUM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBMTExPQ0tfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+VlRHX0NUUkw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NjQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA2NDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QkdQU01FTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZCQVRTRUxFQ1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ0lGX0NMUlBVQklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfVlJPTkVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfRldWUk9OPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5GQUJfSUY8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NkM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA2QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCQ0FMSUJGQUlMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJDQUxJQlNUQVJUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9MQVJHRV9DVF9YUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCX0FQQjMyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJfQUhCSUY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0FIQkNBUEFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9BSEJfQllQQVNTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5BUEJfRVhUTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDcwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5BUEIxNl9YSE9MRDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+TE9PUEJBQ0tfQ1RSTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDc0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfRU1BQ0xPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJT0xPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfSTJDTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19TUElMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX1VBUlRMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+SU9fQkFOS19DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4Nzg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3ODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlRXRVNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzoyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJURUFTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5HUElOX1NSQ19TRUw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4N0M8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTVdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTRdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTNdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTJdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTFdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTBdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbOV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzhdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs3XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbNl08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzVdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs0XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbM108L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzJdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgPC9hZGRyZXNzQmxvY2s+DQotICAgICAgICAgIDwvbWVtb3J5TWFwPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UlRDPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxNzAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDE3MDAwIC0gMHg0MDAxN0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5DT01CTEs8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDE2MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTYwMDAgLSAweDQwMDE2RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkhETUE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDE0MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTQwMDAgLSAweDQwMDE0RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkdQSU88L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDEzMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTMwMDAgLSAweDQwMDEzRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkgyRklOVEVSUlVQVDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDYwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwNjAwMCAtIDB4NDAwMDZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+VElNRVI8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDA0MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDQwMDAgLSAweDQwMDA0RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPk1NVUFSVF8wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDAwMDAwIC0gMHg0MDAwMEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5SRUNZQ0xFRF9FU1JBTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDEyMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMTIwMDAgLSAweDIwMDEzRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwMjAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5SRUNZQ0xFRF9FU1JBTTA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDEwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMTAwMDAgLSAweDIwMDExRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwMjAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FU1JBTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDIwMDA4MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MjAwMDgwMDAgLSAweDIwMDBGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwODAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FU1JBTTA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDAwMDgwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MDAwODAwMDAgLSAweDAwMDg3RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwODAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgIDwvc3Vic3lzdGVtPg0KLSAgICA8L3N1YnN5c3RlbXM+DQotICA8L21lbW9yeXN5c3RlbT4NCi08L2RhdGFzaGVldD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9TdGFydGVyS2l0X2hhcmR3YXJlL2RhdGFzaGVldC54c2wgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9TdGFydGVyS2l0X2hhcmR3YXJlL2RhdGFzaGVldC54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4Y2E0MmQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMTA3NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIiA/Pg0KLQ0KLTx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZGF0YXNoZWV0Ij4NCi0gICAgICAgIDxodG1sPg0KLSAgICAgICAgICAgIDxoZWFkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY3NzIi8+DQotICAgICAgICAgICAgPC9oZWFkPg0KLSAgICAgICAgICAgIDxib2R5Pg0KLSAgICAgICAgICAgICAgICA8YSBuYW1lPSJ0b3AiLz4NCi0gICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaGVhZGVyIi8+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkc2hlZXQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InByb2plY3Qtc2V0dGluZ3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPlRhYmxlIG9mIENvbnRlbnRzPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGVkX2ZpbGVzIj5HZW5lcmF0ZWQgRmlsZXM8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpb3MiPklPJ3M8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlcyI+SGFyZHdhcmUgSW5zdGFuY2VzPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZmlybXdhcmVfY29yZXMiPkZpcm13YXJlPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWVtbWFwIj5NZW1vcnkgTWFwPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9IntoZWFkZXJ9X01lbW9yeU1hcC54bWwiID5NZW1vcnkgTWFwPC9hPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PT09IEdlbmVyYXRlZCBGaWxlJ3MgPT09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImdlbmVyYXRlZF9maWxlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPkdlbmVyYXRlZCBGaWxlczwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZ2VuZXJhdGVkX2ZpbGVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PSBJTydzID09PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJpb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5JTydzPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJpb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT0gQ09SRVMgPT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJjb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVzDQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNvcmVzIi8+DQotDQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PSBGaXJ3bWFyZSA9PT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8cD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iZmlybXdhcmVfY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5GaXJtd2FyZTwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZmlybXdhcmVfY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PSBNRU1PUlkgTUFQID09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0ibWVtbWFwIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5IE1hcA0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibWVtb3J5c3lzdGVtIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgPC9ib2R5Pg0KLSAgICAgICAgPC9odG1sPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iaGVhZGVyIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4NCi0gICAgICAgICAgICA8aDE+DQotICAgICAgICAgICAgICAgIERhdGEgU2hlZXQ6IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgICAgICAgICAgPC9oMT4NCi0gICAgICAgICAgICA8IS0tID09PT09PT0gSU8ncyA9PT09PT09IA0KLSAgICAgIDxkaXYgY2xhc3M9ImNvcHlyaWdodCI+DQotICAgICAgICBDb3B5cmlnaHQgMjAwOCBBY3RlbCBDb3Jwb3JhdGlvbg0KLSAgICAgIDwvZGl2Pg0KLQkgIC0tPg0KLSAgICAgICAgPC9kaXY+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwcm9qZWN0LXNldHRpbmdzIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+UHJvamVjdCBTZXR0aW5nczwvZGl2Pg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjQiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+RkFNOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZmFtIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+RGllOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZGllIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+UGFja2FnZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhY2thZ2UiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5TcGVlZCBHcmFkZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InNwZWVkLWdyYWRlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+Vm9sdGFnZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InZvbHRhZ2UiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5IREw6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJoZGwtdHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlByb2plY3QgRGVzY3JpcHRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwcm9qZWN0LWRlc2NyaXB0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+TG9jYXRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJsb2NhdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlN0YXRlIChUaW1lKTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InN0YXRlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDxici8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZ2VuZXJhdGVkX2ZpbGVzIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWxlc2V0Ij4NCi0gICAgICAgICAgICAgICAgPGI+RmlsZSBzZXQ6ICA8L2I+DQotICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgIDxici8+DQotDQotICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWxlIj4NCi0gICAgICAgICAgICAgICAgICAgIDxsaT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9saT4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0gICAgPCEtLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIC0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWlvcyI+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwb3J0LW5hbWUiLz4NCi0gICAgICAgIDwvdGQ+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJkaXJlY3Rpb24iLz4NCi0gICAgICAgIDwvdGQ+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwaW4tbnVtYmVyIi8+DQotICAgICAgICA8L3RkPg0KLSAgICAgICAgPHRkPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaW8tc3RhbmRhcmQiLz4NCi0gICAgICAgIDwvdGQ+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImlvcyI+DQotICAgICAgICA8eHNsOmNob29zZT4NCi0gICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iY291bnQoaW8pICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iaW9zIiAgYWxpZ249ImNlbnRlciIgIGJvcmRlcj0iMSIgd2lkdGg9Ijc1JSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0Ij4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQgTmFtZQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGluDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkvTyBTdGFuZGFyZA0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImlvIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1pb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gSU8ncyA8L2k+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgPC94c2w6Y2hvb3NlPg0KLSAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZmlybXdhcmVfY29yZXMiPg0KLSAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvdW50KGZpcm13YXJlX2NvcmUpICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGI+U29mdHdhcmUgSURFOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iL2RhdGFzaGVldC9wcm9qZWN0LXNldHRpbmdzL3N3aWRlLXRvb2xjaGFpbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotDQotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5zdGFuY2VzIj5Ecml2ZXJzOjwvc3Bhbj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlybXdhcmVfY29yZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3tjb3JlLW5hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlybXdhcmVfY29yZSI+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Intjb3JlLW5hbWV9Ii8+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjb3JlcyIgd2lkdGg9Ijk3JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJvcmRlcj0iMSIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkZpcm1XYXJlTW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLXNwaXJpdCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZXMiPmluc3RhbmNlIGxpc3Q8L2E+LCA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gRmlybXdhcmUgR2VuZXJhdGVkLiAgRGVzaWduIG1heSBub3QgY29udGFpbiBhbnkgcHJvY2Vzc29yIHN1YnN5c3RlbXMsIG9yIGZpcm13YXJlIGhhdmUgbm90IGJlZW4gZG93bmxvYWRlZCB0byB5b3VyIHZhdWx0PC9pPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iY29yZXMiPg0KLSAgICAgICAgPHhzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvdW50KGNvcmUpICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imluc3RhbmNlcyI+SW5zdGFuY2VzOjwvc3Bhbj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3tjb3JlLW5hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZSI+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Intjb3JlLW5hbWV9Ii8+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjb3JlcyIgd2lkdGg9Ijk3JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJvcmRlcj0iMSIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkNvbXBvbmVudE1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1jb21wIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJTcGlyaXRNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtc3Bpcml0Ii8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJBZGxpYk1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1hZGxpYiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iSGRsTW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWhkbCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZXMiPmluc3RhbmNlIGxpc3Q8L2E+LCA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gSW5zdGFuY2VzPC9pPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWNvbXAiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlR5cGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkxvY2F0aW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1sb2NhdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1zcGlyaXQiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlR5cGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlZlbmRvcjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtdmVuZG9yIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5MaWJyYXJ5OiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1saWIiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkNvcmUgTmFtZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtaW50bmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VmVyc2lvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtdmVyIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5EZXNjcmlwdGlvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZGVzYyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+UGFyYW1ldGVyczogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtc3Bpcml0LXBhcmFtcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1zcGlyaXQtcGFyYW1zIiA+DQotICAgICAgICA8eHNsOmlmIHRlc3Q9ImNvdW50KGNvcmUtcGFyYW0pID4gMCI+DQotICAgICAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsgIiA+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDx0YWJsZT4NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPHRyPg0KLSAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgIE5hbWUNCi0gICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgIFZhbHVlDQotICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgPC90cj4gLS0+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZS1wYXJhbSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmUtcGFyYW1zIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwveHNsOmlmPg0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudChjb3JlLXBhcmFtKSAmbHQ7IDEiPg0KLSAgICAgICAgICAgIDxpPk5vIHBhcmFtZXRlcnM8L2k+DQotICAgICAgICA8L3hzbDppZj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtYWRsaWIiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkNlbGwgVHlwZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZXh0dHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLQ0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1oZGwiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPk1vZHVsZSBOYW1lOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1leHR0eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5IREwgRmlsZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbG9jYXRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAwIj4NCi0gICAgICAgICAgICAgICAgPGI+SW5zdGFuY2UgTmFtZTogPC9iPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlLXBhcmFtcyI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8YiBjbGFzcz0icGFyYW1zLW5hbWUiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS1oZGxuYW1lIi8+IFsgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS1uYW1lIi8+IF0NCi0gICAgICAgICAgICAgICAgPC9iPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhcmFtLWhkbHZhbHVlIi8+IFsgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS12YWx1ZSIvPiBdDQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLQ0KLSAgICA8IS0tLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InBvcnQtbmFtZXxkaXJlY3Rpb258cGluLW51bWJlcnxpby1zdGFuZGFyZCI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcmUtbmFtZXxjb3JlLXR5cGV8Y29yZS1leHR0eXBlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29yZS12ZW5kb3J8Y29yZS1saWJ8Y29yZS1pbnRuYW1lfGNvcmUtdmVyfGNvcmUtZGVzYyI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcmUtbG9jYXRpb24iPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJmYW18ZGllfHBhY2thZ2V8aGRsLXR5cGV8bG9jYXRpb258c3RhdGUiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwYXJhbS1uYW1lfHBhcmFtLXZhbHVlfHBhcmFtLXRhZ3xwYXJhbS1oZGxuYW1lfHBhcmFtLWhkbHZhbHVlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayI+DQotICAgICAgICA8YSBocmVmPSIjdG9wIj50b3Agb2YgcGFnZTwvYT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotDQotICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PU1FTU9SWSBNQVA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJtZW1vcnlzeXN0ZW0iPg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic3Vic3lzdGVtcyIvPg0KLSAgICAgICAgPC9kaXY+DQotDQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJzeXN0ZW1zIj4NCi0NCi0gICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJzdWJzeXN0ZW0iPg0KLSAgICAgICAgICAgIDxsaT4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIje25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJub2RlKCkiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgPC9saT4NCi0gICAgICAgIDwveHNsOmZvci1lYWNoPg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPGJyLz4NCi0NCi0gICAgICAgIDxocj48L2hyPg0KLSAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzdWJzeXN0ZW0iLz4NCi0NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnN5c3RlbSI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8aDI+DQotICAgICAgICAgICAgICAgIDxhIG5hbWU9IntuYW1lfSBNZW1vcnkgTWFwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgIDwvYT4gU3Vic3lzdGVtDQotICAgICAgICAgICAgPC9oMj4NCi0gICAgICAgICAgICBNYXN0ZXIocykgb24gdGhpcyBidXM6DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJtYXN0ZXIiLz4NCi0gICAgICAgICAgICA8YnI+PC9icj48YnI+PC9icj4NCi0NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImFkZHJlc3NOYW1lcyIgLz4NCi0gICAgICAgICAgICA8YSBocmVmPSIjbWVtbWFwIj5zdWJzeXN0ZW0gbGlzdDwvYT4sDQotICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotDQotICAgICAgICAgICAgPGJyLz48YnIvPg0KLSAgICAgICAgICAgIDxocj48L2hyPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic2xhdmUiLz4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiPg0KLSAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiMwMDAwMDAiPg0KLSAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgIDwvc3Bhbj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImRlc2NyaXB0aW9uIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im1hc3RlciI+DQotICAgICAgICA8bGk+DQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwvbGk+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJhZGRyZXNzTmFtZXMiPg0KLSAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWdzIiBib3JkZXI9IjEiIGNlbGxzcGFjZT0iMCIgY2VsbHBhZGRpbmc9IjEwIiAgYWxpZ249ImNlbnRlciIgPg0KLSAgICAgICAgICAgIDx4c2w6aWYgdGVzdD0iY291bnQgPSAxIj4NCi0gICAgICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiPjwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iMiI+QWRkcmVzcyBSYW5nZTwvdGg+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC94c2w6aWY+DQotICAgICAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudCAmZ3Q7IDEiPg0KLSAgICAgICAgICAgICAgICA8dHIgYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMiI+PC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPSIyIj5BZGRyZXNzIFJhbmdlPC90aD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9Im5hbWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDppZj4NCi0NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iLi4vc2xhdmUiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGggY2VsbHNwYWNlPSIwIiBjb2xzcGFuPSIxIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIje25hbWV9X3ttZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4gOiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibWVtb3J5TWFwL25hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZnVsbEFkZHJlc3NTcGFjZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLQ0KLSAgICAgICAgPC90YWJsZT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InNsYXZlIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDxoMz4NCi0gICAgICAgICAgICAgICAgPGEgbmFtZT0ie25hbWV9X3ttZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4gOiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibWVtb3J5TWFwL25hbWUiLz4gTWVtb3J5IE1hcCBbDQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iZnVsbEFkZHJlc3NTcGFjZSIvPiBdDQotICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICA8L2gzPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8ZGl2IGNsYXNzPSJtbXJhbmdlIj4NCi0NCi0gICAgICAgICAgICA8aT5yYW5nZTogPC9pPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icmFuZ2UiLz4NCi0NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJtZW1vcnlNYXAvYWRkcmVzc0Jsb2NrL3JlZ2lzdGVyIj4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im1lbW9yeU1hcC9hZGRyZXNzQmxvY2siLz4NCi0gICAgICAgIDwveHNsOmlmPg0KLSAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uL25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgIGJhY2sgdG8gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4uL25hbWUiLz4gTWVtb3J5IE1hcA0KLSAgICAgICAgPC9hPg0KLSAgICAgICAgPGJyLz4NCi0gICAgICAgIDxici8+DQotICAgICAgICA8aHI+PC9ocj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFkZHJlc3NCbG9jayI+DQotICAgICAgICA8dGFibGUgY2xhc3M9InJlZ3MiIGJvcmRlcj0iMiIgY2VsbHNwYWNlPSIwIiBjZWxscGFkZGluZz0iNCIgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICA8dGg+QWRkcmVzczwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPlIvVzwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5XaWR0aDwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5SZXNldCBWYWx1ZTwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+DQotICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0icmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPSJ0cnVlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWJzb2x1dGVBZGRyZXNzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZpZWxkIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uLy4uLy4uL25hbWV9X3tuYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmNob29zZT4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBub3dyYXA9InRydWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhY2Nlc3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InNpemUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InJlc2V0VmFsdWUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgIDwvdGFibGU+DQotDQotICAgICAgICA8eHNsOmlmIHRlc3Q9InJlZ2lzdGVyL2ZpZWxkIj4NCi0gICAgICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7Li4vLi4vLi4vbmFtZX0gTWVtb3J5IE1hcCI+DQotICAgICAgICAgICAgICAgIGJhY2sgdG8gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4uLy4uLy4uL25hbWUiLz4gTWVtb3J5IE1hcA0KLSAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0icmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxoND4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icmVnaXN0ZXItZGV0YWlscyIgbmFtZT0iey4uLy4uLy4uL25hbWV9X3tuYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+IHJlZ2lzdGVyIGRldGFpbHMgWyA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWJzb2x1dGVBZGRyZXNzIi8+IF0gOg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgICAgIDwvaDQ+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWd3aWR0aCI+DQotDQotICAgICAgICAgICAgICAgICAgICA8aT53aWR0aDogPC9pPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzaXplIi8+LWJpdA0KLQ0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWdzIiBib3JkZXI9IjIiIGNlbGxzcGFjZT0iMCIgY2VsbHBhZGRpbmc9IjQiIGFsaWduPSJjZW50ZXIiID4NCi0gICAgICAgICAgICAgICAgICAgIDx0ciBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGggYWxpZ249ImxlZnQiPkJpdCBOdW1iZXI8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+Ui9XPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGVzY3JpcHRpb248L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWVsZCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImJpdE51bWJlciIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPSJ0cnVlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhY2Nlc3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0NCi0gICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uLy4uLy4uL25hbWV9X3suLi8uLi8uLi9tZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgYmFjayB0byA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLi4vLi4vLi4vbmFtZSIvPiBSZWdpc3RlcnMNCi0gICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgIDwveHNsOmlmPg0KLQ0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmFuZ2UiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT1FTkQgTUVNT1JZIE1BUD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotDQotDQotDQotICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBDU1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjc3MiPg0KLSAgICAgICAgPHN0eWxlPg0KLQ0KLSAgICAgICAgICAgIGh0bWwNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpkYXJrZ3JheTsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgYm9keQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBmb250LWZhbWlseTphcmlhbDsNCi0gICAgICAgICAgICBmb250LXNpemU6IDExcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLmNvcmVzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjQjBCMEIwOw0KLSAgICAgICAgICAgIGJvcmRlci1zdHlsZTpzb2xpZDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5jb3JlcyB0ZA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp0b3A7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnJlZ3MsDQotICAgICAgICAgICAgdGFibGUuaW9zDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0IwQjBCMDsNCi0gICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICBib3JkZXItc3BhY2luZzowcHg7DQotICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOw0KLSAgICAgICAgICAgIHdpZHRoPTc1JTsNCi0gICAgICAgICAgICBmb250LWZhbWlseTpjb3VyaWVybmV3Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFwdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUucmVncyB0aA0KLSAgICAgICAgICAgIHRhYmxlLmlvcyB0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNCMEIwQjA7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICBjb2xvcjogZGFya3NsYXRlZ3JheTsNCi0gICAgICAgICAgICBmb250LXdlaWdodDpib2xkOw0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICB0YWJsZS5pb3MgdGQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnBhcmFtcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNEMEQwRDA7DQotICAgICAgICAgICAgYm9yZGVyLXN0eWxlOnNvbGlkOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDowcHg7DQotICAgICAgICAgICAgYm9yZGVyLXNwYWNpbmc6MHB4Ow0KLSAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsNCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgdGFibGUucGFyYW1zIHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0QwRDBEMDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIGNvbG9yOiBibGFjazsNCi0gICAgICAgICAgICBmb250LXdlaWdodDpib2xkOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5wYXJhbXMgdGQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGIucGFyYW1zLW5hbWUNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgY29sb3I6ICM1MDUwNTAgICA7DQotDQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIGRpdi5oZWFkZXINCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDdweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogN3B4Ow0KLSAgICAgICAgICAgIGNvbG9yOiMwMDMzOTk7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0QwRDBEMDsNCi0gICAgICAgICAgICB3aWR0aD0xMDAlOw0KLSAgICAgICAgICAgIGZvbnQtZmFtaWx5OmFyaWFsOw0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxNHB0Ow0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LnRpdGxlDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMHB4Ow0KLSAgICAgICAgICAgIG1hcmdpbjogYXV0bzsNCi0gICAgICAgICAgICBjb2xvcjojRDBEMEQwOw0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IzAwMzM5OSA7DQotDQotICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KLSAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjMwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1yaWdodDozMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYuZHNoZWV0DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7DQotICAgICAgICAgICAgbWFyZ2luOiBhdXRvOw0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQNCi0NCi0gICAgICAgICAgICBjb2xvcjojMDAzMzk5Ow0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KLQ0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctbGVmdDozMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MzBweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmNvbnRlbnQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjEwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1yaWdodDoxMHB4Ow0KLQ0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgZm9udC1zaXplOiAxM3B0Ow0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi5jb3B5cmlnaHQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpyaWdodDsNCi0gICAgICAgICAgICBmb250LXNpemU6OXB0Ow0KLSAgICAgICAgICAgIGZvbnQtc3R5bGU6aXRhbGljOw0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0Om5vcm1hbDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmxpbmtzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtYWxpZ246bGVmdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgYg0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBjb2xvcjpkYXJrc2xhdGVncmF5DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGhyDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHdpZHRoPTEwMCU7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5pbnN0YW5jZXMNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgZm9udC1zaXplOjE0cHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAudG9wbGlua3MNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgZm9udC1zaXplOjEwcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAucmVnaXN0ZXItZGV0YWlscw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoyMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAubW1yYW5nZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoxMHB4Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxMXB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7DQotDQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5yZWd3aWR0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoyNHB0Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxMXB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgPC9zdHlsZT4NCi0NCi0gICAgICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFTkQgQ1NTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLTwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby8uY3Byb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vLy5jcHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMxMzg3NC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vLy5jcHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDQ4NSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4NCi08P2ZpbGVWZXJzaW9uIDQuMC4wPz4NCi0NCi08Y3Byb2plY3Qgc3RvcmFnZV90eXBlX2lkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5YbWxQcm9qZWN0RGVzY3JpcHRpb25TdG9yYWdlIj4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiPg0KLTxjY29uZmlndXJhdGlvbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjAiPg0KLTxzdG9yYWdlTW9kdWxlIGJ1aWxkU3lzdGVtSWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLmNvbmZpZ3VyYXRpb25EYXRhUHJvdmlkZXIiIGlkPSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjQzNzYxMTk2MCIgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIiBuYW1lPSJEZWJ1ZyI+DQotPGV4dGVybmFsU2V0dGluZ3MvPg0KLTxleHRlbnNpb25zPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVMRiIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkJpbmFyeVBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLk1ha2VFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0NDRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkdBU0Vycm9yUGFyc2VyIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRXJyb3JQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HTERFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPC9leHRlbnNpb25zPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0iY2R0QnVpbGRTeXN0ZW0iIHZlcnNpb249IjQuMC4wIj4NCi08Y29uZmlndXJhdGlvbiBhcnRpZmFjdE5hbWU9IlJUT1NEZW1vIiBidWlsZEFydGVmYWN0VHlwZT0ib3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGUuZXhlIiBidWlsZFByb3BlcnRpZXM9Im9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkVHlwZT1vcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGUuZGVidWcsb3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRBcnRlZmFjdFR5cGUuZXhlIiBjbGVhbkNvbW1hbmQ9InJtIC1yZiIgZGVzY3JpcHRpb249IiIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNDM3NjExOTYwIiBuYW1lPSJEZWJ1ZyIgcGFyZW50PSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIj4NCi08Zm9sZGVySW5mbyBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjAuIiBuYW1lPSIvIiByZXNvdXJjZVBhdGg9IiI+DQotPHRvb2xDaGFpbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sY2hhaW4uZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xNjQ4MTU2OTY1IiBuYW1lPSJNaWNyb3NlbWkgQ29ydGV4LU0zIFRvb2xzIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIj4NCi08dGFyZ2V0UGxhdGZvcm0gYXJjaExpc3Q9ImFsbCIgYmluYXJ5UGFyc2VyPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FTEYiIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUucGxhdGZvcm0uY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjc3NTQ1MTE5NyIgbmFtZT0iRGVidWcgUGxhdGZvcm0iIG9zTGlzdD0iYWxsIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUucGxhdGZvcm0uY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIi8+DQotPGJ1aWxkZXIgYnVpbGRQYXRoPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0RlYnVnfSIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5idWlsZGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xMjA0NDYxMTA2IiBrZWVwRW52aXJvbm1lbnRJbkJ1aWxkZmlsZT0iZmFsc2UiIG1hbmFnZWRCdWlsZE9uPSJ0cnVlIiBuYW1lPSJHbnUgTWFrZSBCdWlsZGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUuYnVpbGRlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy41MDM2NjMxNTIiIG5hbWU9IkdOVSBDIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIj4NCi08b3B0aW9uIGRlZmF1bHRWYWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIGlkPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbC4xNTg0ODM4OTg1IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsIiB2YWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxvcHRpb24gZGVmYXVsdFZhbHVlPSJnbnUuYy5vcHRpbWl6YXRpb24ubGV2ZWwubm9uZSIgaWQ9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsLjc0OTMxMDQwNiIgbmFtZT0iRGVidWcgTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB2YWx1ZT0iZ251LmMuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIub3B0aW9uLmluY2x1ZGUucGF0aHMuMjM3Mzg5MTM5IiBuYW1lPSJJbmNsdWRlIHBhdGhzICgtSSkiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5pbmNsdWRlLnBhdGhzIiB2YWx1ZVR5cGU9ImluY2x1ZGVQYXRoIj4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS99Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW8vRnVsbC1EZW1vfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUNMSS1Tb3VyY2V9JnF1b3Q7Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW8vRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNMLVNvdXJjZS9hcGl9JnF1b3Q7Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0ZyZWVSVE9TLVNvdXJjZS9pbmNsdWRlfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0ZyZWVSVE9TLVNvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM30mcXVvdDsiLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb30mcXVvdDsiLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJU30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djY30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW99Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfaHBkbWF9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfbnZtfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3J0Y30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdGltZXJ9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydH0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZ30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbH0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVX0iLz4NCi08L29wdGlvbj4NCi08b3B0aW9uIGlkPSJnbnUuYy5jb21waWxlci5vcHRpb24ubWlzYy52ZXJib3NlLjEzNTE3OTk3OTkiIG5hbWU9IlZlcmJvc2UgKC12KSIgc3VwZXJDbGFzcz0iZ251LmMuY29tcGlsZXIub3B0aW9uLm1pc2MudmVyYm9zZSIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLTxvcHRpb24gaWQ9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5vcHRpbWl6YXRpb24uZmxhZ3MuNDM1OTk4NDA4IiBuYW1lPSJPdGhlciBvcHRpbWl6YXRpb24gZmxhZ3MiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5vcHRpbWl6YXRpb24uZmxhZ3MiIHZhbHVlPSItZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi08b3B0aW9uIGlkPSJnbnUuYy5jb21waWxlci5vcHRpb24ubWlzYy5vdGhlci4xMDAxNzU0OTE0IiBuYW1lPSJPdGhlciBmbGFncyIgc3VwZXJDbGFzcz0iZ251LmMuY29tcGlsZXIub3B0aW9uLm1pc2Mub3RoZXIiIHZhbHVlPSItYyAtZm1lc3NhZ2UtbGVuZ3RoPTAgLVdleHRyYSIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi08aW5wdXRUeXBlIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQuMjAzNjIxNzY0NiIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmlucHV0Ii8+DQotPC90b29sPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNjEyNjQyMTMwIiBuYW1lPSJHTlUgQysrIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciPg0KLTxvcHRpb24gaWQ9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuMTQxNDY4OTM0IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsLjE4NzA0MDcxNTQiIG5hbWU9IkRlYnVnIExldmVsIiBzdXBlckNsYXNzPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB2YWx1ZT0iZ251LmNwcC5jb21waWxlci5kZWJ1Z2dpbmcubGV2ZWwubWF4IiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08L3Rvb2w+DQotPHRvb2wgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MgLW10aHVtYiAtbWNwdT1jb3J0ZXgtbTMgIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMjEwNTc4Mjc2NyIgbmFtZT0iR05VIEMgTGlua2VyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMubGlua2VyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyI+DQotPG9wdGlvbiBpZD0iZ251LmMubGluay5vcHRpb24ubGlicy4yNTk1NTg2NjYiIG5hbWU9IkxpYnJhcmllcyAoLWwpIiBzdXBlckNsYXNzPSJnbnUuYy5saW5rLm9wdGlvbi5saWJzIiB2YWx1ZVR5cGU9ImxpYnMiPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSJSVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybSIvPg0KLTwvb3B0aW9uPg0KLTxvcHRpb24gaWQ9ImdudS5jLmxpbmsub3B0aW9uLnBhdGhzLjcxMjk0MzI5IiBuYW1lPSJMaWJyYXJ5IHNlYXJjaCBwYXRoICgtTCkiIHN1cGVyQ2xhc3M9ImdudS5jLmxpbmsub3B0aW9uLnBhdGhzIiB2YWx1ZVR5cGU9ImxpYlBhdGhzIj4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9EZWJ1Z30mcXVvdDsiLz4NCi08L29wdGlvbj4NCi08b3B0aW9uIGlkPSJnbnUuYy5saW5rLm9wdGlvbi5sZGZsYWdzLjk4ODU0MzQ0NiIgbmFtZT0iTGlua2VyIGZsYWdzIiBzdXBlckNsYXNzPSJnbnUuYy5saW5rLm9wdGlvbi5sZGZsYWdzIiB2YWx1ZT0iLVQuLi8uLi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVudm0ubGQiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotPG9wdGlvbiBpZD0iZ251LmMubGluay5vcHRpb24udXNlcm9ianMuMTIyNzQ2NTE3OCIgbmFtZT0iT3RoZXIgb2JqZWN0cyIgc3VwZXJDbGFzcz0iZ251LmMubGluay5vcHRpb24udXNlcm9ianMiIHZhbHVlVHlwZT0idXNlck9ianMiPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0RlYnVnL0NNU0lTL3N0YXJ0dXBfZ2NjL3N0YXJ0dXBfbTJzeHh4Lm99JnF1b3Q7Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vRGVidWcvQ01TSVMvc3RhcnR1cF9nY2MvbmV3bGliX3N0dWJzLm99JnF1b3Q7Ii8+DQotPC9vcHRpb24+DQotPG9wdGlvbiBpZD0iZ251LmMubGluay5vcHRpb24ub3RoZXIuNzM3Mjc4ODA5IiBuYW1lPSJPdGhlciBvcHRpb25zICgtWGxpbmtlciBbb3B0aW9uXSkiIHN1cGVyQ2xhc3M9ImdudS5jLmxpbmsub3B0aW9uLm90aGVyIiB2YWx1ZVR5cGU9InN0cmluZ0xpc3QiPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSItZ2Mtc2VjdGlvbnMiLz4NCi08L29wdGlvbj4NCi08aW5wdXRUeXBlIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMubGlua2VyLmlucHV0LjE3NDk4OTM5NDEiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5saW5rZXIuaW5wdXQiPg0KLTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0ZGVwZW5kZW5jeSIgcGF0aHM9IiQoVVNFUl9PQkpTKSIvPg0KLTxhZGRpdGlvbmFsSW5wdXQga2luZD0iYWRkaXRpb25hbGlucHV0IiBwYXRocz0iJChMSUJTKSIvPg0KLTwvaW5wdXRUeXBlPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAubGlua2VyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xMzAyMTE2NzQ4IiBuYW1lPSJHTlUgQysrIExpbmtlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAubGlua2VyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyIvPg0KLTx0b29sIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIC1jIC1tdGh1bWIgLW1jcHU9Y29ydGV4LW0zIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjEyMzE3MDQ1MjQiIG5hbWU9IkdOVSBBc3NlbWJsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyI+DQotPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuaW5wdXQuMjA2MDAxODUwMiIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuaW5wdXQiLz4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5tZW1vcnktbWFwLmdlbi5jcm9zcy5jb3J0ZXhtMy54bWwuZGVidWcuMTUxNDU3MjA2NCIgbmFtZT0iTWVtb3J5IG1hcCBnZW5lcmF0b3IiIHN1cGVyQ2xhc3M9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5tZW1vcnktbWFwLmdlbi5jcm9zcy5jb3J0ZXhtMy54bWwuZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLmloZXguZGVidWcuMTgzNTc0MDcxNyIgbmFtZT0iR05VIEludGVsIEhleCBGaWxlIEdlbmVyYXRvciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLmloZXguZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLnNyZWMuZGVidWcuNDYwNDQzNDg2IiBuYW1lPSJHTlUgUy1SZWNvcmQgR2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamNvcHkuY3Jvc3MuY29ydGV4bTMuc3JlYy5kZWJ1ZyIvPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamR1bXAuY3Jvc3MuY29ydGV4bTMubHN0LmRlYnVnLjU0MTI3OTc0OSIgbmFtZT0iR05VIExpc3RpbmcgR2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamR1bXAuY3Jvc3MuY29ydGV4bTMubHN0LmRlYnVnIi8+DQotPC90b29sQ2hhaW4+DQotPC9mb2xkZXJJbmZvPg0KLTxmb2xkZXJJbmZvIGlkPSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjQzNzYxMTk2MC44ODExMzgwODQiIG5hbWU9Ii8iIHJlc291cmNlUGF0aD0iRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNMLVNvdXJjZSI+DQotPHRvb2xDaGFpbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sY2hhaW4uZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy42MjE1NjkwNjciIG5hbWU9Ik1pY3Jvc2VtaSBDb3J0ZXgtTTMgVG9vbHMiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciIHVudXNlZENoaWxkcmVuPSIiPg0KLTx0YXJnZXRQbGF0Zm9ybSBhcmNoTGlzdD0iYWxsIiBiaW5hcnlQYXJzZXI9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVMRiIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciIG5hbWU9IkRlYnVnIFBsYXRmb3JtIiBvc0xpc3Q9ImFsbCIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LnBsYXRmb3JtLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyIvPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjEzMDA2NDY1MTYiIG5hbWU9IkdOVSBDIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjUwMzY2MzE1MiI+DQotPG9wdGlvbiBkZWZhdWx0VmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiBpZD0iZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuNjk3NTgzMzM2IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsIiB2YWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxvcHRpb24gZGVmYXVsdFZhbHVlPSJnbnUuYy5vcHRpbWl6YXRpb24ubGV2ZWwubm9uZSIgaWQ9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsLjgwOTMzNzY2OSIgbmFtZT0iRGVidWcgTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB2YWx1ZT0iZ251LmMuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmlucHV0LjE1NzA2ODA2NzMiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjgzMDU0NjA0NSIgbmFtZT0iR05VIEMrKyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjYxMjY0MjEzMCI+DQotPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbC43NjM3MzEyMDgiIG5hbWU9Ik9wdGltaXphdGlvbiBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxvcHRpb24gaWQ9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwuMTA1ODY0ODc3OSIgbmFtZT0iRGVidWcgTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLmRlYnVnZ2luZy5sZXZlbC5tYXgiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTQwOTE0OTUwMyIgbmFtZT0iR05VIEMgTGlua2VyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMubGlua2VyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4yMTA1NzgyNzY3Ii8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTU5ODM5NzU4NyIgbmFtZT0iR05VIEMrKyBMaW5rZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTMwMjExNjc0OCIvPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTM1MDA4MTM1MSIgbmFtZT0iR05VIEFzc2VtYmxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjEyMzE3MDQ1MjQiPg0KLTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0LjE1MTAxODY4MjYiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0Ii8+DQotPC90b29sPg0KLTx0b29sIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUubWVtb3J5LW1hcC5nZW4uY3Jvc3MuY29ydGV4bTMueG1sLmRlYnVnLjU2MjQ2MTc2OCIgbmFtZT0iTWVtb3J5IG1hcCBnZW5lcmF0b3IiIHN1cGVyQ2xhc3M9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5tZW1vcnktbWFwLmdlbi5jcm9zcy5jb3J0ZXhtMy54bWwuZGVidWcuMTUxNDU3MjA2NCIvPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamNvcHkuY3Jvc3MuY29ydGV4bTMuaWhleC5kZWJ1Zy45MTE0MjIxNjYiIG5hbWU9IkdOVSBJbnRlbCBIZXggRmlsZSBHZW5lcmF0b3IiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqY29weS5jcm9zcy5jb3J0ZXhtMy5paGV4LmRlYnVnLjE4MzU3NDA3MTciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLnNyZWMuZGVidWcuMzgwMjEyMDM1IiBuYW1lPSJHTlUgUy1SZWNvcmQgR2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamNvcHkuY3Jvc3MuY29ydGV4bTMuc3JlYy5kZWJ1Zy40NjA0NDM0ODYiLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpkdW1wLmNyb3NzLmNvcnRleG0zLmxzdC5kZWJ1Zy43MzI0NjA4NTUiIG5hbWU9IkdOVSBMaXN0aW5nIEdlbmVyYXRvciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpkdW1wLmNyb3NzLmNvcnRleG0zLmxzdC5kZWJ1Zy41NDEyNzk3NDkiLz4NCi08L3Rvb2xDaGFpbj4NCi08L2ZvbGRlckluZm8+DQotPHNvdXJjZUVudHJpZXM+DQotPGVudHJ5IGZsYWdzPSJWQUxVRV9XT1JLU1BBQ0VfUEFUSHxSRVNPTFZFRCIga2luZD0ic291cmNlUGF0aCIgbmFtZT0iIi8+DQotPC9zb3VyY2VFbnRyaWVzPg0KLTwvY29uZmlndXJhdGlvbj4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9InNjYW5uZXJDb25maWd1cmF0aW9uIj4NCi08YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyUHJvamVjdFByb2ZpbGUiLz4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmFybS5BY3RlbEFSTU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29yZTgwNTFzLlNEQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJmYWxzZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0iZmFsc2UiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1WIC1FIC1XcCAtUCAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9InNkY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTEuQWN0ZWxDb3J0ZXhNMU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyRmlsZVByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9Im1ha2VmaWxlR2VuZXJhdG9yIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWYgJHtwcm9qZWN0X25hbWV9X3NjZC5tayIgY29tbWFuZD0ibWFrZSIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAiIGNvbW1hbmQ9ImcrKyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMiIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9JnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZysrIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHNjYW5uZXJDb25maWdCdWlsZEluZm8gaW5zdGFuY2VJZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjA7Y2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjAuIj4NCi08YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSIvPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuYXJtLkFjdGVsQVJNTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMS5BY3RlbENvcnRleE0xTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJGaWxlUHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ibWFrZWZpbGVHZW5lcmF0b3IiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItZiAke3Byb2plY3RfbmFtZX1fc2NkLm1rIiBjb21tYW5kPSJtYWtlIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCIgY29tbWFuZD0iZysrIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0mcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnKysgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08L3NjYW5uZXJDb25maWdCdWlsZEluZm8+DQotPHNjYW5uZXJDb25maWdCdWlsZEluZm8gaW5zdGFuY2VJZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5yZWxlYXNlLjE1ODY3ODgzMTk7Y2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5yZWxlYXNlLjE1ODY3ODgzMTkuIj4NCi08YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSIvPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuYXJtLkFjdGVsQVJNTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3JlODA1MXMuU0RDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9ImZhbHNlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJmYWxzZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLVYgLUUgLVdwIC1QIC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0ic2RjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMS5BY3RlbENvcnRleE0xTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJGaWxlUHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ibWFrZWZpbGVHZW5lcmF0b3IiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItZiAke3Byb2plY3RfbmFtZX1fc2NkLm1rIiBjb21tYW5kPSJtYWtlIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCIgY29tbWFuZD0iZysrIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0mcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnKysgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08L3NjYW5uZXJDb25maWdCdWlsZEluZm8+DQotPC9zdG9yYWdlTW9kdWxlPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5leHRlcm5hbFNldHRpbmdzIi8+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLmxhbmd1YWdlLm1hcHBpbmciLz4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmludGVybmFsLnVpLnRleHQuY29tbWVudE93bmVyUHJvamVjdE1hcHBpbmdzIi8+DQotPC9jY29uZmlndXJhdGlvbj4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQotPHByb2plY3QgaWQ9IlJUT1NEZW1vLmNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuMzQwMjAxODY2IiBuYW1lPSJFeGVjdXRhYmxlIChNYW5hZ2VkIE1ha2UpIiBwcm9qZWN0VHlwZT0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmNyb3NzLmNvcnRleG0zLmV4ZSIvPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08L2Nwcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vLnByb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjc0ZmNhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTxwcm9qZWN0RGVzY3JpcHRpb24+DQotCTxuYW1lPlJUT1NEZW1vPC9uYW1lPg0KLQk8Y29tbWVudD48L2NvbW1lbnQ+DQotCTxwcm9qZWN0cz4NCi0gICAgICAgIDxwcm9qZWN0PiBSVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybSA8L3Byb2plY3Q+DQotCTwvcHJvamVjdHM+DQotCTxidWlsZFNwZWM+DQotCQk8YnVpbGRDb21tYW5kPg0KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLmdlbm1ha2VidWlsZGVyPC9uYW1lPg0KLQkJCTxhcmd1bWVudHM+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT4/bmFtZT88L2tleT4NCi0JCQkJCTx2YWx1ZT48L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmFwcGVuZF9lbnZpcm9ubWVudDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmF1dG9CdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmFsbDwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRBcmd1bWVudHM8L2tleT4NCi0JCQkJCTx2YWx1ZT48L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkQ29tbWFuZDwva2V5Pg0KLQkJCQkJPHZhbHVlPm1ha2U8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkTG9jYXRpb248L2tleT4NCi0JCQkJCTx2YWx1ZT4ke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0RlYnVnfTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuY2xlYW5CdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmNsZWFuPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5jb250ZW50czwva2V5Pg0KLQkJCQkJPHZhbHVlPm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYWN0aXZlQ29uZmlnU2V0dGluZ3M8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUF1dG9CdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUNsZWFuQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVGdWxsQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5mdWxsQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5hbGw8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLnN0b3BPbkVycm9yPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUudXNlRGVmYXVsdEJ1aWxkQ21kPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQk8L2FyZ3VtZW50cz4NCi0JCTwvYnVpbGRDb21tYW5kPg0KLQkJPGJ1aWxkQ29tbWFuZD4NCi0JCQk8bmFtZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5TY2FubmVyQ29uZmlnQnVpbGRlcjwvbmFtZT4NCi0JCQk8YXJndW1lbnRzPg0KLQkJCTwvYXJndW1lbnRzPg0KLQkJPC9idWlsZENvbW1hbmQ+DQotCTwvYnVpbGRTcGVjPg0KLQk8bmF0dXJlcz4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0LmNvcmUuY25hdHVyZTwvbmF0dXJlPg0KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5tYW5hZ2VkQnVpbGROYXR1cmU8L25hdHVyZT4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuU2Nhbm5lckNvbmZpZ05hdHVyZTwvbmF0dXJlPg0KLQk8L25hdHVyZXM+DQotPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9CbGlua3ktRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9CbGlua3ktRGVtby9tYWluX2JsaW5reS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjcxMTA5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vQmxpbmt5LURlbW8vbWFpbl9ibGlua3kuYworKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KLSAqIHByb2plY3QsIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQotICogY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaW4gRnJlZVJUT1NDb25pZmcuaCBpcyB1c2VkIHRvDQotICogc2VsZWN0IGJldHdlZW4gdGhlIHR3by4gIFNlZSB0aGUgbm90ZXMgb24gdXNpbmcNCi0gKiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaW4gbWFpbi5jLiAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlDQotICogc2ltcGx5IGJsaW5reSBzdHlsZSB2ZXJzaW9uLg0KLSAqDQotICogTk9URSAyOiAgVGhpcyBmaWxlIG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBjb2RlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlDQotICogYmFzaWMgZGVtby4gIEdlbmVyaWMgZnVuY3Rpb25zLCBzdWNoIEZyZWVSVE9TIGhvb2sgZnVuY3Rpb25zLCBhbmQgZnVuY3Rpb25zDQotICogcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgYXJlIGRlZmluZWQgaW4gbWFpbi5jLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIG1haW5fYmxpbmt5KCkgY3JlYXRlcyBvbmUgcXVldWUsIGFuZCB0d28gdGFza3MuICBJdCB0aGVuIHN0YXJ0cyB0aGUNCi0gKiBzY2hlZHVsZXIuDQotICoNCi0gKiBUaGUgUXVldWUgU2VuZCBUYXNrOg0KLSAqIFRoZSBxdWV1ZSBzZW5kIHRhc2sgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIHBydlF1ZXVlU2VuZFRhc2soKSBmdW5jdGlvbiBpbg0KLSAqIHRoaXMgZmlsZS4gIHBydlF1ZXVlU2VuZFRhc2soKSBzaXRzIGluIGEgbG9vcCB0aGF0IGNhdXNlcyBpdCB0byByZXBlYXRlZGx5DQotICogYmxvY2sgZm9yIDIwMCBtaWxsaXNlY29uZHMsIGJlZm9yZSBzZW5kaW5nIHRoZSB2YWx1ZSAxMDAgdG8gdGhlIHF1ZXVlIHRoYXQNCi0gKiB3YXMgY3JlYXRlZCB3aXRoaW4gbWFpbl9ibGlua3koKS4gIE9uY2UgdGhlIHZhbHVlIGlzIHNlbnQsIHRoZSB0YXNrIGxvb3BzDQotICogYmFjayBhcm91bmQgdG8gYmxvY2sgZm9yIGFub3RoZXIgMjAwIG1pbGxpc2Vjb25kcy4NCi0gKg0KLSAqIFRoZSBRdWV1ZSBSZWNlaXZlIFRhc2s6DQotICogVGhlIHF1ZXVlIHJlY2VpdmUgdGFzayBpcyBpbXBsZW1lbnRlZCBieSB0aGUgcHJ2UXVldWVSZWNlaXZlVGFzaygpIGZ1bmN0aW9uDQotICogaW4gdGhpcyBmaWxlLiAgcHJ2UXVldWVSZWNlaXZlVGFzaygpIHNpdHMgaW4gYSBsb29wIHdoZXJlIGl0IHJlcGVhdGVkbHkNCi0gKiBibG9ja3Mgb24gYXR0ZW1wdHMgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHF1ZXVlIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aGluDQotICogbWFpbl9ibGlua3koKS4gIFdoZW4gZGF0YSBpcyByZWNlaXZlZCwgdGhlIHRhc2sgY2hlY2tzIHRoZSB2YWx1ZSBvZiB0aGUNCi0gKiBkYXRhLCBhbmQgaWYgdGhlIHZhbHVlIGVxdWFscyB0aGUgZXhwZWN0ZWQgMTAwLCB0b2dnbGVzIHRoZSBMRUQuICBUaGUgJ2Jsb2NrDQotICogdGltZScgcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgcXVldWUgcmVjZWl2ZSBmdW5jdGlvbiBzcGVjaWZpZXMgdGhhdCB0aGUNCi0gKiB0YXNrIHNob3VsZCBiZSBoZWxkIGluIHRoZSBCbG9ja2VkIHN0YXRlIGluZGVmaW5pdGVseSB0byB3YWl0IGZvciBkYXRhIHRvDQotICogYmUgYXZhaWxhYmxlIG9uIHRoZSBxdWV1ZS4gIFRoZSBxdWV1ZSByZWNlaXZlIHRhc2sgd2lsbCBvbmx5IGxlYXZlIHRoZQ0KLSAqIEJsb2NrZWQgc3RhdGUgd2hlbiB0aGUgcXVldWUgc2VuZCB0YXNrIHdyaXRlcyB0byB0aGUgcXVldWUuICBBcyB0aGUgcXVldWUNCi0gKiBzZW5kIHRhc2sgd3JpdGVzIHRvIHRoZSBxdWV1ZSBldmVyeSAyMDAgbWlsbGlzZWNvbmRzLCB0aGUgcXVldWUgcmVjZWl2ZQ0KLSAqIHRhc2sgbGVhdmVzIHRoZSBCbG9ja2VkIHN0YXRlIGV2ZXJ5IDIwMCBtaWxsaXNlY29uZHMsIGFuZCB0aGVyZWZvcmUgdG9nZ2xlcw0KLSAqIHRoZSBMRUQgZXZlcnkgMjAwIG1pbGxpc2Vjb25kcy4NCi0gKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0NCi0vKiBLZXJuZWwgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0jaW5jbHVkZSAic2VtcGhyLmgiDQotDQotLyogQ29tbW9uIGRlbW8gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInBhcnRlc3QuaCINCi0NCi0vKiBQcmlvcml0aWVzIGF0IHdoaWNoIHRoZSB0YXNrcyBhcmUgY3JlYXRlZC4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9SRUNFSVZFX1RBU0tfUFJJT1JJVFkJCSggdHNrSURMRV9QUklPUklUWSArIDIgKQ0KLSNkZWZpbmUJbWFpblFVRVVFX1NFTkRfVEFTS19QUklPUklUWQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMSApDQotDQotLyogVGhlIHJhdGUgYXQgd2hpY2ggZGF0YSBpcyBzZW50IHRvIHRoZSBxdWV1ZS4gIFRoZSAyMDBtcyB2YWx1ZSBpcyBjb252ZXJ0ZWQNCi10byB0aWNrcyB1c2luZyB0aGUgcG9ydFRJQ0tfUEVSSU9EX01TIGNvbnN0YW50LiAqLw0KLSNkZWZpbmUgbWFpblFVRVVFX1NFTkRfRlJFUVVFTkNZX01TCQkJKCAyMDAgLyBwb3J0VElDS19QRVJJT0RfTVMgKQ0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgaXRlbXMgdGhlIHF1ZXVlIGNhbiBob2xkLiAgVGhpcyBpcyAxIGFzIHRoZSByZWNlaXZlIHRhc2sNCi13aWxsIHJlbW92ZSBpdGVtcyBhcyB0aGV5IGFyZSBhZGRlZCwgbWVhbmluZyB0aGUgc2VuZCB0YXNrIHNob3VsZCBhbHdheXMgZmluZA0KLXRoZSBxdWV1ZSBlbXB0eS4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9MRU5HVEgJCQkJCSggMSApDQotDQotLyogVmFsdWVzIHBhc3NlZCB0byB0aGUgdHdvIHRhc2tzIGp1c3QgdG8gY2hlY2sgdGhlIHRhc2sgcGFyYW1ldGVyDQotZnVuY3Rpb25hbGl0eS4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9TRU5EX1BBUkFNRVRFUgkJCSggMHgxMTExVUwgKQ0KLSNkZWZpbmUgbWFpblFVRVVFX1JFQ0VJVkVfUEFSQU1FVEVSCQkJKCAweDIyVUwgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogVGhlIHRhc2tzIGFzIGRlc2NyaWJlZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQotICovDQotc3RhdGljIHZvaWQgcHJ2UXVldWVSZWNlaXZlVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotc3RhdGljIHZvaWQgcHJ2UXVldWVTZW5kVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotDQotLyoNCi0gKiBDYWxsZWQgYnkgbWFpbigpIHRvIGNyZWF0ZSB0aGUgc2ltcGx5IGJsaW5reSBzdHlsZSBhcHBsaWNhdGlvbiBpZg0KLSAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBzZXQgdG8gMS4NCi0gKi8NCi12b2lkIG1haW5fYmxpbmt5KCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogVGhlIHF1ZXVlIHVzZWQgYnkgYm90aCB0YXNrcy4gKi8NCi1zdGF0aWMgUXVldWVIYW5kbGVfdCB4UXVldWUgPSBOVUxMOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgbWFpbl9ibGlua3koIHZvaWQgKQ0KLXsNCi0JLyogQ3JlYXRlIHRoZSBxdWV1ZS4gKi8NCi0JeFF1ZXVlID0geFF1ZXVlQ3JlYXRlKCBtYWluUVVFVUVfTEVOR1RILCBzaXplb2YoIHVuc2lnbmVkIGxvbmcgKSApOw0KLQ0KLQlpZiggeFF1ZXVlICE9IE5VTEwgKQ0KLQl7DQotCQkvKiBTdGFydCB0aGUgdHdvIHRhc2tzIGFzIGRlc2NyaWJlZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzDQotCQlmaWxlLiAqLw0KLQkJeFRhc2tDcmVhdGUoIHBydlF1ZXVlUmVjZWl2ZVRhc2ssCQkJCQkvKiBUaGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSB0YXNrLiAqLw0KLQkJCQkJIlJ4IiwgCQkJCQkJCQkJLyogVGhlIHRleHQgbmFtZSBhc3NpZ25lZCB0byB0aGUgdGFzayAtIGZvciBkZWJ1ZyBvbmx5IGFzIGl0IGlzIG5vdCB1c2VkIGJ5IHRoZSBrZXJuZWwuICovDQotCQkJCQljb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIAkJCQkvKiBUaGUgc2l6ZSBvZiB0aGUgc3RhY2sgdG8gYWxsb2NhdGUgdG8gdGhlIHRhc2suICovDQotCQkJCQkoIHZvaWQgKiApIG1haW5RVUVVRV9SRUNFSVZFX1BBUkFNRVRFUiwgLyogVGhlIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIHRhc2sgLSBqdXN0IHRvIGNoZWNrIHRoZSBmdW5jdGlvbmFsaXR5LiAqLw0KLQkJCQkJbWFpblFVRVVFX1JFQ0VJVkVfVEFTS19QUklPUklUWSwgCQkvKiBUaGUgcHJpb3JpdHkgYXNzaWduZWQgdG8gdGhlIHRhc2suICovDQotCQkJCQlOVUxMICk7CQkJCQkJCQkJLyogVGhlIHRhc2sgaGFuZGxlIGlzIG5vdCByZXF1aXJlZCwgc28gTlVMTCBpcyBwYXNzZWQuICovDQotDQotCQl4VGFza0NyZWF0ZSggcHJ2UXVldWVTZW5kVGFzaywgIlRYIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApIG1haW5RVUVVRV9TRU5EX1BBUkFNRVRFUiwgbWFpblFVRVVFX1NFTkRfVEFTS19QUklPUklUWSwgTlVMTCApOw0KLQ0KLQkJLyogU3RhcnQgdGhlIHRhc2tzIGFuZCB0aW1lciBydW5uaW5nLiAqLw0KLQkJdlRhc2tTdGFydFNjaGVkdWxlcigpOw0KLQl9DQotDQotCS8qIElmIGFsbCBpcyB3ZWxsLCB0aGUgc2NoZWR1bGVyIHdpbGwgbm93IGJlIHJ1bm5pbmcsIGFuZCB0aGUgZm9sbG93aW5nDQotCWxpbmUgd2lsbCBuZXZlciBiZSByZWFjaGVkLiAgSWYgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgZXhlY3V0ZSwgdGhlbg0KLQl0aGVyZSB3YXMgaW5zdWZmaWNpZW50IEZyZWVSVE9TIGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgdGhlIGlkbGUgYW5kL29yDQotCXRpbWVyIHRhc2tzCXRvIGJlIGNyZWF0ZWQuICBTZWUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHNlY3Rpb24gb24gdGhlDQotCUZyZWVSVE9TIHdlYiBzaXRlIGZvciBtb3JlIGRldGFpbHMuICovDQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UXVldWVTZW5kVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCi17DQotVGlja1R5cGVfdCB4TmV4dFdha2VUaW1lOw0KLWNvbnN0IHVuc2lnbmVkIGxvbmcgdWxWYWx1ZVRvU2VuZCA9IDEwMFVMOw0KLQ0KLQkvKiBDaGVjayB0aGUgdGFzayBwYXJhbWV0ZXIgaXMgYXMgZXhwZWN0ZWQuICovDQotCWNvbmZpZ0FTU0VSVCggKCAoIHVuc2lnbmVkIGxvbmcgKSBwdlBhcmFtZXRlcnMgKSA9PSBtYWluUVVFVUVfU0VORF9QQVJBTUVURVIgKTsNCi0NCi0JLyogSW5pdGlhbGlzZSB4TmV4dFdha2VUaW1lIC0gdGhpcyBvbmx5IG5lZWRzIHRvIGJlIGRvbmUgb25jZS4gKi8NCi0JeE5leHRXYWtlVGltZSA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBQbGFjZSB0aGlzIHRhc2sgaW4gdGhlIGJsb2NrZWQgc3RhdGUgdW50aWwgaXQgaXMgdGltZSB0byBydW4gYWdhaW4uDQotCQlUaGUgYmxvY2sgdGltZSBpcyBzcGVjaWZpZWQgaW4gdGlja3MsIHRoZSBjb25zdGFudCB1c2VkIGNvbnZlcnRzIHRpY2tzDQotCQl0byBtcy4gIFdoaWxlIGluIHRoZSBCbG9ja2VkIHN0YXRlIHRoaXMgdGFzayB3aWxsIG5vdCBjb25zdW1lIGFueSBDUFUNCi0JCXRpbWUuICovDQotCQl2VGFza0RlbGF5VW50aWwoICZ4TmV4dFdha2VUaW1lLCBtYWluUVVFVUVfU0VORF9GUkVRVUVOQ1lfTVMgKTsNCi0NCi0JCS8qIFNlbmQgdG8gdGhlIHF1ZXVlIC0gY2F1c2luZyB0aGUgcXVldWUgcmVjZWl2ZSB0YXNrIHRvIHVuYmxvY2sgYW5kDQotCQl0b2dnbGUgdGhlIExFRC4gIDAgaXMgdXNlZCBhcyB0aGUgYmxvY2sgdGltZSBzbyB0aGUgc2VuZGluZyBvcGVyYXRpb24NCi0JCXdpbGwgbm90IGJsb2NrIC0gaXQgc2hvdWxkbid0IG5lZWQgdG8gYmxvY2sgYXMgdGhlIHF1ZXVlIHNob3VsZCBhbHdheXMNCi0JCWJlIGVtcHR5IGF0IHRoaXMgcG9pbnQgaW4gdGhlIGNvZGUuICovDQotCQl4UXVldWVTZW5kKCB4UXVldWUsICZ1bFZhbHVlVG9TZW5kLCAwVSApOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlUmVjZWl2ZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLXVuc2lnbmVkIGxvbmcgdWxSZWNlaXZlZFZhbHVlOw0KLQ0KLQkvKiBDaGVjayB0aGUgdGFzayBwYXJhbWV0ZXIgaXMgYXMgZXhwZWN0ZWQuICovDQotCWNvbmZpZ0FTU0VSVCggKCAoIHVuc2lnbmVkIGxvbmcgKSBwdlBhcmFtZXRlcnMgKSA9PSBtYWluUVVFVUVfUkVDRUlWRV9QQVJBTUVURVIgKTsNCi0NCi0JZm9yKCA7OyApDQotCXsNCi0JCS8qIFdhaXQgdW50aWwgc29tZXRoaW5nIGFycml2ZXMgaW4gdGhlIHF1ZXVlIC0gdGhpcyB0YXNrIHdpbGwgYmxvY2sNCi0JCWluZGVmaW5pdGVseSBwcm92aWRlZCBJTkNMVURFX3ZUYXNrU3VzcGVuZCBpcyBzZXQgdG8gMSBpbg0KLQkJRnJlZVJUT1NDb25maWcuaC4gKi8NCi0JCXhRdWV1ZVJlY2VpdmUoIHhRdWV1ZSwgJnVsUmVjZWl2ZWRWYWx1ZSwgcG9ydE1BWF9ERUxBWSApOw0KLQ0KLQkJLyogIFRvIGdldCBoZXJlIHNvbWV0aGluZyBtdXN0IGhhdmUgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBxdWV1ZSwgYnV0DQotCQlpcyBpdCB0aGUgZXhwZWN0ZWQgdmFsdWU/ICBJZiBpdCBpcywgdG9nZ2xlIHRoZSBMRUQuICovDQotCQlpZiggdWxSZWNlaXZlZFZhbHVlID09IDEwMFVMICkNCi0JCXsNCi0JCQl2UGFyVGVzdFRvZ2dsZUxFRCggMCApOw0KLQkJCXVsUmVjZWl2ZWRWYWx1ZSA9IDBVOw0KLQkJfQ0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA5M2JmZi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotDQotI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KLSNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCi0NCi0vKg0KLSAqIFRoZSBmb2xsb3dpbmcgI2Vycm9yIGRpcmVjdGl2ZSBpcyB0byByZW1pbmQgdXNlcnMgdGhhdCBhIGJhdGNoIGZpbGUgbXVzdCBiZQ0KLSAqIGV4ZWN1dGVkIHByaW9yIHRvIHRoaXMgcHJvamVjdCBiZWluZyBidWlsdC4gIE9uY2UgaXQgaGFzIGJlZW4gZXhlY3V0ZWQNCi0gKiByZW1vdmUgdGhlICNlcnJvciBsaW5lIGJlbG93Lg0KLSAqLw0KLS8vI2Vycm9yIEVuc3VyZSBDcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBoYXMgYmVlbiBleGVjdXRlZCBiZWZvcmUgYnVpbGRpbmcuICBTZWUgY29tbWVudCBpbW1lZGlhdGVseSBhYm92ZS4NCi0NCi0vKg0KLSAqIFNldCBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgdG8gb25lIHRvIHJ1biB0aGUgc2ltcGxlIGJsaW5reSBkZW1vLA0KLSAqIG9yIDAgdG8gcnVuIHRoZSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4NCi0gKi8NCi0jZGVmaW5lIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQkwDQotDQotLyoNCi0gKiBTZXQgY29uZmlnQlVJTERfRk9SX0RFVkVMT1BNRU5UX0tJVCB0byAxIHRvIHJ1biB0aGUgZGVtbyBvbiB0aGUgU21hcnRGdXNpb24yDQotICogZGV2ZWxvcG1lbnQga2l0LCBvciAwIHRvIHJ1biB0aGUgZGVtbyBvbiB0aGUgU21hcnRGdXNpb24yIHN0YXJ0ZXIga2l0LiAgUmVmZXINCi0gKiB0byB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gb24gdGhlIEZyZWVSVE9TLm9yZyB3ZWJzaXRlIGZvcg0KLSAqIGluc3RydWN0aW9uIG9uIHN3aXRjaGluZyBiZXR3ZWVuIHRoZSB0d28gaGFyZHdhcmUgcGxhdGZvcm1zLg0KLSAqLw0KLSNkZWZpbmUgY29uZmlnQlVJTERfRk9SX0RFVkVMT1BNRU5UX0tJVCAwDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIEFwcGxpY2F0aW9uIHNwZWNpZmljIGRlZmluaXRpb25zLg0KLSAqDQotICogVGhlc2UgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGFkanVzdGVkIGZvciB5b3VyIHBhcnRpY3VsYXIgaGFyZHdhcmUgYW5kDQotICogYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzLg0KLSAqDQotICogVEhFU0UgUEFSQU1FVEVSUyBBUkUgREVTQ1JJQkVEIFdJVEhJTiBUSEUgJ0NPTkZJR1VSQVRJT04nIFNFQ1RJT04gT0YgVEhFDQotICogRnJlZVJUT1MgQVBJIERPQ1VNRU5UQVRJT04gQVZBSUxBQkxFIE9OIFRIRSBGcmVlUlRPUy5vcmcgV0VCIFNJVEUuDQotICoNCi0gKiBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTEwLmh0bWwuDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotZXh0ZXJuIHVpbnQzMl90IFN5c3RlbUNvcmVDbG9jazsNCi0NCi0jZGVmaW5lIGNvbmZpZ1VTRV9QUkVFTVBUSU9OCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX0lETEVfSE9PSwkJCQkxDQotI2RlZmluZSBjb25maWdVU0VfVElDS19IT09LCQkJCTANCi0jZGVmaW5lIGNvbmZpZ0NQVV9DTE9DS19IWgkJCQkoIFN5c3RlbUNvcmVDbG9jayApDQotI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJKCAoIFRpY2tUeXBlX3QgKSAxMDAwICkNCi0jZGVmaW5lIGNvbmZpZ01BWF9QUklPUklUSUVTCQkJKCA1ICkNCi0jZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJKCAoIHVuc2lnbmVkIHNob3J0ICkgODAgKQ0KLSNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJKCAoIHNpemVfdCApICggMjUwMDAgKSApDQotI2RlZmluZSBjb25maWdNQVhfVEFTS19OQU1FX0xFTgkJCSggMTAgKQ0KLSNkZWZpbmUgY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZCQkxDQotI2RlZmluZSBjb25maWdVU0VfMTZfQklUX1RJQ0tTCQkJMA0KLSNkZWZpbmUgY29uZmlnSURMRV9TSE9VTERfWUlFTEQJCQkxDQotI2RlZmluZSBjb25maWdVU0VfTVVURVhFUwkJCQkxDQotI2RlZmluZSBjb25maWdRVUVVRV9SRUdJU1RSWV9TSVpFCQkwDQotI2RlZmluZSBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cJMg0KLSNkZWZpbmUgY29uZmlnVVNFX1JFQ1VSU0lWRV9NVVRFWEVTCQkxDQotI2RlZmluZSBjb25maWdVU0VfTUFMTE9DX0ZBSUxFRF9IT09LCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9BUFBMSUNBVElPTl9UQVNLX1RBRwkwDQotI2RlZmluZSBjb25maWdVU0VfQ09VTlRJTkdfU0VNQVBIT1JFUwkxDQotDQotLyogQ28tcm91dGluZSBkZWZpbml0aW9ucy4gKi8NCi0jZGVmaW5lIGNvbmZpZ1VTRV9DT19ST1VUSU5FUyAJCQkwDQotI2RlZmluZSBjb25maWdNQVhfQ09fUk9VVElORV9QUklPUklUSUVTICggMiApDQotDQotLyogU29mdHdhcmUgdGltZXIgZGVmaW5pdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfVElNRVJTCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1RJTUVSX1RBU0tfUFJJT1JJVFkJCSggMiApDQotI2RlZmluZSBjb25maWdUSU1FUl9RVUVVRV9MRU5HVEgJCTUNCi0jZGVmaW5lIGNvbmZpZ1RJTUVSX1RBU0tfU1RBQ0tfREVQVEgJKCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgKiAyICkNCi0NCi0vKiBSdW4gdGltZSBzdGF0cyBnYXRoZXJpbmcgZGVmaW5pdGlvbnMuICovDQotdm9pZCB2Q29uZmlndXJlVGltZXJGb3JSdW5UaW1lU3RhdHMoIHZvaWQgKTsNCi11aW50MzJfdCB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoIHZvaWQgKTsNCi0jZGVmaW5lIGNvbmZpZ0dFTkVSQVRFX1JVTl9USU1FX1NUQVRTCTENCi0jZGVmaW5lIHBvcnRDT05GSUdVUkVfVElNRVJfRk9SX1JVTl9USU1FX1NUQVRTKCkgdkNvbmZpZ3VyZVRpbWVyRm9yUnVuVGltZVN0YXRzKCkNCi0jZGVmaW5lIHBvcnRHRVRfUlVOX1RJTUVfQ09VTlRFUl9WQUxVRSgpIHVsR2V0UnVuVGltZUNvdW50ZXJWYWx1ZSgpDQotDQotLyogU2V0IHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgdG8gMSB0byBpbmNsdWRlIHRoZSBBUEkgZnVuY3Rpb24sIG9yIHplcm8NCi10byBleGNsdWRlIHRoZSBBUEkgZnVuY3Rpb24uICovDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrUHJpb3JpdHlTZXQJCTENCi0jZGVmaW5lIElOQ0xVREVfdXhUYXNrUHJpb3JpdHlHZXQJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tEZWxldGUJCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0NsZWFuVXBSZXNvdXJjZXMJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza1N1c3BlbmQJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsYXlVbnRpbAkJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tEZWxheQkJCQkxDQotDQotLyogVGhpcyBkZW1vIG1ha2VzIHVzZSBvZiBvbmUgb3IgbW9yZSBleGFtcGxlIHN0YXRzIGZvcm1hdHRpbmcgZnVuY3Rpb25zLiAgVGhlc2UNCi1mb3JtYXQgdGhlIHJhdyBkYXRhIHByb3ZpZGVkIGJ5IHRoZSB1eFRhc2tHZXRTeXN0ZW1TdGF0ZSgpIGZ1bmN0aW9uIGluIHRvIGh1bWFuDQotcmVhZGFibGUgQVNDSUkgZm9ybS4gIFNlZSB0aGUgbm90ZXMgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHZUYXNrTGlzdCgpIHdpdGhpbg0KLUZyZWVSVE9TL1NvdXJjZS90YXNrcy5jIGZvciBsaW1pdGF0aW9ucy4gKi8NCi0jZGVmaW5lIGNvbmZpZ1VTRV9TVEFUU19GT1JNQVRUSU5HX0ZVTkNUSU9OUwkxDQotDQotLyogVGhlIHNpemUgb2YgdGhlIGdsb2JhbCBvdXRwdXQgYnVmZmVyIHRoYXQgaXMgYXZhaWxhYmxlIGZvciB1c2Ugd2hlbiB0aGVyZQ0KLWFyZSBtdWx0aXBsZSBjb21tYW5kIGludGVycHJldGVycyBydW5uaW5nIGF0IG9uY2UgKGZvciBleGFtcGxlLCBvbmUgb24gYSBVQVJUDQotYW5kIG9uZSBvbiBUQ1AvSVApLiAgVGhpcyBpcyBkb25lIHRvIHByZXZlbnQgYW4gb3V0cHV0IGJ1ZmZlciBiZWluZyBkZWZpbmVkIGJ5DQotZWFjaCBpbXBsZW1lbnRhdGlvbiAtIHdoaWNoIHdvdWxkIHdhc3RlIFJBTS4gIEluIHRoaXMgY2FzZSwgdGhlcmUgaXMgb25seSBvbmUNCi1jb21tYW5kIGludGVycHJldGVyIHJ1bm5pbmcuICovDQotI2RlZmluZSBjb25maWdDT01NQU5EX0lOVF9NQVhfT1VUUFVUX1NJWkUgMjA0OA0KLQ0KLS8qIENvcnRleC1NIHNwZWNpZmljIGRlZmluaXRpb25zLiAqLw0KLSNpZmRlZiBfX05WSUNfUFJJT19CSVRTDQotCS8qIF9fQlZJQ19QUklPX0JJVFMgd2lsbCBiZSBzcGVjaWZpZWQgd2hlbiBDTVNJUyBpcyBiZWluZyB1c2VkLiAqLw0KLQkjZGVmaW5lIGNvbmZpZ1BSSU9fQklUUyAgICAgICAJCV9fTlZJQ19QUklPX0JJVFMNCi0jZWxzZQ0KLQkjZGVmaW5lIGNvbmZpZ1BSSU9fQklUUyAgICAgICAJCTQgICAgICAgIC8qIDE1IHByaW9yaXR5IGxldmVscyAqLw0KLSNlbmRpZg0KLQ0KLS8qIFRoZSBsb3dlc3QgaW50ZXJydXB0IHByaW9yaXR5IHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBjYWxsIHRvIGEgInNldCBwcmlvcml0eSINCi1mdW5jdGlvbi4gKi8NCi0jZGVmaW5lIGNvbmZpZ0xJQlJBUllfTE9XRVNUX0lOVEVSUlVQVF9QUklPUklUWQkJCTB4MGYNCi0NCi0vKiBUaGUgaGlnaGVzdCBpbnRlcnJ1cHQgcHJpb3JpdHkgdGhhdCBjYW4gYmUgdXNlZCBieSBhbnkgaW50ZXJydXB0IHNlcnZpY2UNCi1yb3V0aW5lIHRoYXQgbWFrZXMgY2FsbHMgdG8gaW50ZXJydXB0IHNhZmUgRnJlZVJUT1MgQVBJIGZ1bmN0aW9ucy4gIERPIE5PVCBDQUxMDQotSU5URVJSVVBUIFNBRkUgRlJFRVJUT1MgQVBJIEZVTkNUSU9OUyBGUk9NIEFOWSBJTlRFUlJVUFQgVEhBVCBIQVMgQSBISUdIRVINCi1QUklPUklUWSBUSEFOIFRISVMhIChoaWdoZXIgcHJpb3JpdGllcyBhcmUgbG93ZXIgbnVtZXJpYyB2YWx1ZXMuICovDQotI2RlZmluZSBjb25maWdMSUJSQVJZX01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWQkxMA0KLQ0KLS8qIEludGVycnVwdCBwcmlvcml0aWVzIHVzZWQgYnkgdGhlIGtlcm5lbCBwb3J0IGxheWVyIGl0c2VsZi4gIFRoZXNlIGFyZSBnZW5lcmljDQotdG8gYWxsIENvcnRleC1NIHBvcnRzLCBhbmQgZG8gbm90IHJlbHkgb24gYW55IHBhcnRpY3VsYXIgbGlicmFyeSBmdW5jdGlvbnMuICovDQotI2RlZmluZSBjb25maWdLRVJORUxfSU5URVJSVVBUX1BSSU9SSVRZIAkJKCBjb25maWdMSUJSQVJZX0xPV0VTVF9JTlRFUlJVUFRfUFJJT1JJVFkgPDwgKDggLSBjb25maWdQUklPX0JJVFMpICkNCi0vKiAhISEhIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSBtdXN0IG5vdCBiZSBzZXQgdG8gemVybyAhISEhDQotU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1JUT1MtQ29ydGV4LU0zLU00Lmh0bWwuICovDQotI2RlZmluZSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgCSggY29uZmlnTElCUkFSWV9NQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgPDwgKDggLSBjb25maWdQUklPX0JJVFMpICkNCi0NCi0vKiBOb3JtYWwgYXNzZXJ0KCkgc2VtYW50aWNzIHdpdGhvdXQgcmVseWluZyBvbiB0aGUgcHJvdmlzaW9uIG9mIGFuIGFzc2VydC5oDQotaGVhZGVyIGZpbGUuICovDQotI2RlZmluZSBjb25maWdBU1NFUlQoIHggKSBpZiggKCB4ICkgPT0gMCApIHsgdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOyBmb3IoIDs7ICk7IH0NCi0NCi0vKiBEZWZpbml0aW9ucyB0aGF0IG1hcCB0aGUgRnJlZVJUT1MgcG9ydCBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8gdGhlaXIgQ01TSVMNCi1zdGFuZGFyZCBuYW1lcy4gKi8NCi0jZGVmaW5lIHZQb3J0U1ZDSGFuZGxlciBTVkNfSGFuZGxlcg0KLSNkZWZpbmUgeFBvcnRQZW5kU1ZIYW5kbGVyIFBlbmRTVl9IYW5kbGVyDQotI2RlZmluZSB4UG9ydFN5c1RpY2tIYW5kbGVyIFN5c1RpY2tfSGFuZGxlcg0KLQ0KLSNlbmRpZiAvKiBGUkVFUlRPU19DT05GSUdfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9SZWFkTWUudHh0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL1JlYWRNZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxOTc0OWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL1JlYWRNZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1SdW4gdGhlIENyZWF0ZVByb2plY3REaXJlY3RvcnlTdHJ1Y3R1cmUuYmF0IGJhdGNoIGZpbGUgdG8gcG9wdWxhdGUgdGhpcyBkaXJlY3RvcnkgYmVmb3JlIGJ1aWxkaW5nIHRoZSBkZW1vLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL1JlYWRNZS50eHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9SZWFkTWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTk3NDlmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL1JlYWRNZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1SdW4gdGhlIENyZWF0ZVByb2plY3REaXJlY3RvcnlTdHJ1Y3R1cmUuYmF0IGJhdGNoIGZpbGUgdG8gcG9wdWxhdGUgdGhpcyBkaXJlY3RvcnkgYmVmb3JlIGJ1aWxkaW5nIHRoZSBkZW1vLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZpbGUtcmVsZWF0ZWQtQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWM4NTk5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZpbGUtcmVsZWF0ZWQtQ0xJLWNvbW1hbmRzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0vKiBGcmVlUlRPUytDTEkgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TX0NMSS5oIg0KLQ0KLS8qIEZpbGUgc3lzdGVtIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJmYXRfc2wuaCINCi0jaW5jbHVkZSAiYXBpX21kcml2ZXJfcmFtLmgiDQotDQotI2lmZGVmIF9XSU5ET1dTXw0KLQkjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50Zg0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgY2xpTkVXX0xJTkUJCSJcclxuIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogU2VlIHRoZSBVUkwgaW4gdGhlIGNvbW1lbnRzIHdpdGhpbiBtYWluLmMgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUgb25saW5lDQotICogZG9jdW1lbnRhdGlvbi4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qDQotICogUHJpbnQgb3V0IGluZm9ybWF0aW9uIG9uIGEgc2luZ2xlIGZpbGUuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIGNoYXIgKnBjQnVmZmVyLCBGX0ZJTkQgKnB4RmluZFN0cnVjdCApOw0KLQ0KLS8qDQotICogQ29waWVzIGFuIGV4aXN0aW5nIGZpbGUgaW50byBhIG5ld2x5IGNyZWF0ZWQgZmlsZS4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQZXJmb3JtQ29weSggY29uc3QgY2hhciAqcGNTb3VyY2VGaWxlLA0KLQkJCQkJCQkJCWludDMyX3QgbFNvdXJjZUZpbGVMZW5ndGgsDQotCQkJCQkJCQkJY29uc3QgY2hhciAqcGNEZXN0aW5hdGlvbkZpbGUsDQotCQkJCQkJCQkJY2hhciAqcHhXcml0ZUJ1ZmZlciwNCi0JCQkJCQkJCQlzaXplX3QgeFdyaXRlQnVmZmVyTGVuICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBESVIgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZESVJDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIENEIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q0RDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIERFTCBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRFTENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgVFlQRSBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRZUEVDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIENPUFkgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZDT1BZQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgRElSIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBsaXN0cyBhbGwgdGhlDQotZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeERJUiA9DQotew0KLQkiZGlyIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxuZGlyOlxyXG4gTGlzdHMgdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxyXG4iLA0KLQlwcnZESVJDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkwIC8qIE5vIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgQ0QgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGNoYW5nZXMgdGhlDQotd29ya2luZyBkaXJlY3RvcnkuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4Q0QgPQ0KLXsNCi0JImNkIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxuY2QgPGRpciBuYW1lPjpcclxuIENoYW5nZXMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5XHJcbiIsDQotCXBydkNEQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgVFlQRSBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggcHJpbnRzIHRoZQ0KLWNvbnRlbnRzIG9mIGEgZmlsZSB0byB0aGUgY29uc29sZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhUWVBFID0NCi17DQotCSJ0eXBlIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxudHlwZSA8ZmlsZW5hbWU+OlxyXG4gUHJpbnRzIGZpbGUgY29udGVudHMgdG8gdGhlIHRlcm1pbmFsXHJcbiIsDQotCXBydlRZUEVDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkxIC8qIE9uZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBERUwgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGRlbGV0ZXMgYSBmaWxlLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeERFTCA9DQotew0KLQkiZGVsIiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxuZGVsIDxmaWxlbmFtZT46XHJcbiBkZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnlcclxuIiwNCi0JcHJ2REVMQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgQ09QWSBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggZGVsZXRlcyBhIGZpbGUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4Q09QWSA9DQotew0KLQkiY29weSIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmNvcHkgPHNvdXJjZSBmaWxlPiA8ZGVzdCBmaWxlPjpcclxuIENvcGllcyA8c291cmNlIGZpbGU+IHRvIDxkZXN0IGZpbGU+XHJcbiIsDQotCXBydkNPUFlDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkyIC8qIFR3byBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlJlZ2lzdGVyRmlsZVN5c3RlbUNMSUNvbW1hbmRzKCB2b2lkICkNCi17DQotCS8qIFJlZ2lzdGVyIGFsbCB0aGUgY29tbWFuZCBsaW5lIGNvbW1hbmRzIGRlZmluZWQgaW1tZWRpYXRlbHkgYWJvdmUuICovDQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhESVIgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeENEICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhUWVBFICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhERUwgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeENPUFkgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VFlQRUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCwgeFJldHVybiA9IHBkVFJVRTsNCi1zdGF0aWMgRl9GSUxFICpweEZpbGUgPSBOVUxMOw0KLWludCBpQ2hhcjsNCi1zaXplX3QgeEJ5dGU7DQotc2l6ZV90IHhDb2x1bW5zID0gNTBVOw0KLQ0KLQkvKiBFbnN1cmUgdGhlcmUgaXMgYWx3YXlzIGEgbnVsbCB0ZXJtaW5hdG9yIGFmdGVyIGVhY2ggY2hhcmFjdGVyIHdyaXR0ZW4uICovDQotCW1lbXNldCggcGNXcml0ZUJ1ZmZlciwgMHgwMCwgeFdyaXRlQnVmZmVyTGVuICk7DQotDQotCS8qIEVuc3VyZSB0aGUgYnVmZmVyIGxlYXZlcyBzcGFjZSBmb3IgdGhlIFxyXG4uICovDQotCWNvbmZpZ0FTU0VSVCggeFdyaXRlQnVmZmVyTGVuID4gKCBzdHJsZW4oIGNsaU5FV19MSU5FICkgKiAyICkgKTsNCi0JeFdyaXRlQnVmZmVyTGVuIC09IHN0cmxlbiggY2xpTkVXX0xJTkUgKTsNCi0NCi0JaWYoIHhXcml0ZUJ1ZmZlckxlbiA8IHhDb2x1bW5zICkNCi0Jew0KLQkJLyogRW5zdXJlIHRoZSBsb29wIHRoYXQgdXNlcyB4Q29sdW1ucyBhcyBhbiBlbmQgY29uZGl0aW9uIGRvZXMgbm90DQotCQl3cml0ZSBvZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAqLw0KLQkJeENvbHVtbnMgPSB4V3JpdGVCdWZmZXJMZW47DQotCX0NCi0NCi0JaWYoIHB4RmlsZSA9PSBOVUxMICkNCi0Jew0KLQkJLyogVGhlIGZpbGUgaGFzIG5vdCBiZWVuIG9wZW5lZCB5ZXQuICBGaW5kIHRoZSBmaWxlIG5hbWUuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCQkoDQotCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJKTsNCi0NCi0JCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQkJY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkJLyogQXR0ZW1wdCB0byBvcGVuIHRoZSByZXF1ZXN0ZWQgZmlsZS4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggcGNQYXJhbWV0ZXIsICJyIiApOw0KLQl9DQotDQotCWlmKCBweEZpbGUgIT0gTlVMTCApDQotCXsNCi0JCS8qIFJlYWQgdGhlIG5leHQgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBmaWxlLiAqLw0KLQkJZm9yKCB4Qnl0ZSA9IDA7IHhCeXRlIDwgeENvbHVtbnM7IHhCeXRlKysgKQ0KLQkJew0KLQkJCWlDaGFyID0gZl9nZXRjKCBweEZpbGUgKTsNCi0NCi0JCQlpZiggaUNoYXIgPT0gLTEgKQ0KLQkJCXsNCi0JCQkJLyogTm8gbW9yZSBjaGFyYWN0ZXJzIHRvIHJldHVybi4gKi8NCi0JCQkJZl9jbG9zZSggcHhGaWxlICk7DQotCQkJCXB4RmlsZSA9IE5VTEw7DQotCQkJCWJyZWFrOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlwY1dyaXRlQnVmZmVyWyB4Qnl0ZSBdID0gKCBjaGFyICkgaUNoYXI7DQotCQkJfQ0KLQkJfQ0KLQl9DQotDQotCWlmKCBweEZpbGUgPT0gTlVMTCApDQotCXsNCi0JCS8qIEVpdGhlciB0aGUgZmlsZSB3YXMgbm90IG9wZW5lZCwgb3IgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGZpbGUgaGFzDQotCQliZWVuIHJldHVybmVkIGFuZCB0aGUgZmlsZSBpcyBub3cgY2xvc2VkLiAqLw0KLQkJeFJldHVybiA9IHBkRkFMU0U7DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q0RDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLXNpemVfdCB4U3RyaW5nTGVuZ3RoOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBtb3ZlIHRvIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybmVkID0gZl9jaGRpciggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJJbjogIiApOw0KLQkJeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggcGNXcml0ZUJ1ZmZlciApOw0KLQkJZl9nZXRjd2QoICYoIHBjV3JpdGVCdWZmZXJbIHhTdHJpbmdMZW5ndGggXSApLCAoIHVuc2lnbmVkIGNoYXIgKSAoIHhXcml0ZUJ1ZmZlckxlbiAtIHhTdHJpbmdMZW5ndGggKSApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yIiApOw0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRJUkNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLXN0YXRpYyBGX0ZJTkQgKnB4RmluZFN0cnVjdCA9IE5VTEw7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLXBvcnRCQVNFX1RZUEUgeFJldHVybiA9IHBkRkFMU0U7DQotDQotCS8qIFRoaXMgYXNzdW1lcyBwY1dyaXRlQnVmZmVyIGlzIGxvbmcgZW5vdWdoLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotDQotCS8qIEVuc3VyZSB0aGUgYnVmZmVyIGxlYXZlcyBzcGFjZSBmb3IgdGhlIFxyXG4uICovDQotCWNvbmZpZ0FTU0VSVCggeFdyaXRlQnVmZmVyTGVuID4gKCBzdHJsZW4oIGNsaU5FV19MSU5FICkgKiAyICkgKTsNCi0JeFdyaXRlQnVmZmVyTGVuIC09IHN0cmxlbiggY2xpTkVXX0xJTkUgKTsNCi0NCi0JaWYoIHB4RmluZFN0cnVjdCA9PSBOVUxMICkNCi0Jew0KLQkJLyogVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkIHNpbmNlIHRoZSBEaXINCi0JCWNvbW1hbmQgd2FzIHJ1bi4gIENyZWF0ZSB0aGUgZmluZCBzdHJ1Y3R1cmUuICovDQotCQlweEZpbmRTdHJ1Y3QgPSAoIEZfRklORCAqICkgcHZQb3J0TWFsbG9jKCBzaXplb2YoIEZfRklORCApICk7DQotDQotCQlpZiggcHhGaW5kU3RydWN0ICE9IE5VTEwgKQ0KLQkJew0KLQkJCXVjUmV0dXJuZWQgPSBmX2ZpbmRmaXJzdCggIiouKiIsIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQkJCXsNCi0JCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCQl4UmV0dXJuID0gcGRQQVNTOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlzbnByaW50ZiggcGNXcml0ZUJ1ZmZlciwgeFdyaXRlQnVmZmVyTGVuLCAiRXJyb3I6IGZfZmluZGZpcnN0KCkgZmFpbGVkLiIgKTsNCi0JCQl9DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc25wcmludGYoIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBSQU0gKHVzaW5nIGhlYXBfNC5jIHdpbGwgcHJldmVudCBmcmFnbWVudGF0aW9uKS4iICk7DQotCQl9DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBUaGUgZmluZCBzdHJ1Y3QgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLiAgRmluZCB0aGUgbmV4dCBmaWxlIGluDQotCQl0aGUgZGlyZWN0b3J5LiAqLw0KLQkJdWNSZXR1cm5lZCA9IGZfZmluZG5leHQoIHB4RmluZFN0cnVjdCApOw0KLQ0KLQkJaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCQl7DQotCQkJcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIHBjV3JpdGVCdWZmZXIsIHB4RmluZFN0cnVjdCApOw0KLQkJCXhSZXR1cm4gPSBwZFBBU1M7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJLyogVGhlcmUgYXJlIG5vIG1vcmUgZmlsZXMuICBGcmVlIHRoZSBmaW5kIHN0cnVjdHVyZS4gKi8NCi0JCQl2UG9ydEZyZWUoIHB4RmluZFN0cnVjdCApOw0KLQkJCXB4RmluZFN0cnVjdCA9IE5VTEw7DQotDQotCQkJLyogTm8gc3RyaW5nIHRvIHJldHVybi4gKi8NCi0JCQlwY1dyaXRlQnVmZmVyWyAwIF0gPSAweDAwOw0KLQkJfQ0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRFTENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuZWQ7DQotDQotCS8qIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB4V3JpdGVCdWZmZXJMZW4gaXMgbGFyZ2UgZW5vdWdoISAqLw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotDQotCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkvKiBBdHRlbXB0IHRvIGRlbGV0ZSB0aGUgZmlsZS4gKi8NCi0JdWNSZXR1cm5lZCA9IGZfZGVsZXRlKCBwY1BhcmFtZXRlciApOw0KLQ0KLQlpZiggdWNSZXR1cm5lZCA9PSBGX05PX0VSUk9SICkNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVzIHdhcyBkZWxldGVkIiwgcGNQYXJhbWV0ZXIgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciIgKTsNCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZDT1BZQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNEZXN0aW5hdGlvbkZpbGU7DQotY2hhciAqcGNTb3VyY2VGaWxlOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi1sb25nIGxTb3VyY2VMZW5ndGgsIGxEZXN0aW5hdGlvbkxlbmd0aCA9IDA7DQotDQotCS8qIE9idGFpbiB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gZmlsZS4gKi8NCi0JcGNEZXN0aW5hdGlvbkZpbGUgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJKA0KLQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCTIsCQkJCQkJLyogUmV0dXJuIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkpOw0KLQ0KLQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JY29uZmlnQVNTRVJUKCBwY0Rlc3RpbmF0aW9uRmlsZSApOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlLiAqLw0KLQlwY1NvdXJjZUZpbGUgPSAoIGNoYXIgKiApIEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCQkJKA0KLQkJCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJCQkpOw0KLQ0KLQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JY29uZmlnQVNTRVJUKCBwY1NvdXJjZUZpbGUgKTsNCi0NCi0JLyogVGVybWluYXRlIHRoZSBzdHJpbmcuICovDQotCXBjU291cmNlRmlsZVsgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCBdID0gMHgwMDsNCi0NCi0JLyogU2VlIGlmIHRoZSBzb3VyY2UgZmlsZSBleGlzdHMsIG9idGFpbiBpdHMgbGVuZ3RoIGlmIGl0IGRvZXMuICovDQotCWxTb3VyY2VMZW5ndGggPSBmX2ZpbGVsZW5ndGgoIHBjU291cmNlRmlsZSApOw0KLQ0KLQlpZiggbFNvdXJjZUxlbmd0aCA9PSAwICkNCi0Jew0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlNvdXJjZSBmaWxlIGRvZXMgbm90IGV4aXN0IiApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogU2VlIGlmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGV4aXN0cy4gKi8NCi0JCWxEZXN0aW5hdGlvbkxlbmd0aCA9IGZfZmlsZWxlbmd0aCggcGNEZXN0aW5hdGlvbkZpbGUgKTsNCi0NCi0JCWlmKCBsRGVzdGluYXRpb25MZW5ndGggIT0gMCApDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkVycm9yOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzIiApOw0KLQkJfQ0KLQl9DQotDQotCS8qIENvbnRpbnVlIG9ubHkgaWYgdGhlIHNvdXJjZSBmaWxlIGV4aXN0cyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgZG9lcw0KLQlub3QgZXhpc3QuICovDQotCWlmKCAoIGxTb3VyY2VMZW5ndGggIT0gMCApICYmICggbERlc3RpbmF0aW9uTGVuZ3RoID09IDAgKSApDQotCXsNCi0JCWlmKCBwcnZQZXJmb3JtQ29weSggcGNTb3VyY2VGaWxlLCBsU291cmNlTGVuZ3RoLCBwY0Rlc3RpbmF0aW9uRmlsZSwgcGNXcml0ZUJ1ZmZlciwgeFdyaXRlQnVmZmVyTGVuICkgPT0gcGRQQVNTICkNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiQ29weSBtYWRlIiApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciBkdXJpbmcgY29weSIgKTsNCi0JCX0NCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQZXJmb3JtQ29weSggY29uc3QgY2hhciAqcGNTb3VyY2VGaWxlLA0KLQkJCQkJCQkJCWludDMyX3QgbFNvdXJjZUZpbGVMZW5ndGgsDQotCQkJCQkJCQkJY29uc3QgY2hhciAqcGNEZXN0aW5hdGlvbkZpbGUsDQotCQkJCQkJCQkJY2hhciAqcHhXcml0ZUJ1ZmZlciwNCi0JCQkJCQkJCQlzaXplX3QgeFdyaXRlQnVmZmVyTGVuICkNCi17DQotaW50MzJfdCBsQnl0ZXNSZWFkID0gMCwgbEJ5dGVzVG9SZWFkLCBsQnl0ZXNSZW1haW5pbmc7DQotRl9GSUxFICpweEZpbGU7DQotcG9ydEJBU0VfVFlQRSB4UmV0dXJuID0gcGRQQVNTOw0KLQ0KLQkvKiBOT1RFOiAgRXJyb3IgaGFuZGxpbmcgaGFzIGJlZW4gb21pdHRlZCBmb3IgY2xhcml0eS4gKi8NCi0NCi0Jd2hpbGUoIGxCeXRlc1JlYWQgPCBsU291cmNlRmlsZUxlbmd0aCApDQotCXsNCi0JCS8qIEhvdyBtYW55IGJ5dGVzIGFyZSBsZWZ0PyAqLw0KLQkJbEJ5dGVzUmVtYWluaW5nID0gbFNvdXJjZUZpbGVMZW5ndGggLSBsQnl0ZXNSZWFkOw0KLQ0KLQkJLyogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIGJlIHJlYWQgdGhpcyB0aW1lIGFyb3VuZCB0aGUgbG9vcC4gIENhbid0DQotCQlyZWFkIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGZpdCBpbnRvIHRoZSBidWZmZXIuICovDQotCQlpZiggbEJ5dGVzUmVtYWluaW5nID4gKCBsb25nICkgeFdyaXRlQnVmZmVyTGVuICkNCi0JCXsNCi0JCQlsQnl0ZXNUb1JlYWQgPSAoIGxvbmcgKSB4V3JpdGVCdWZmZXJMZW47DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJbEJ5dGVzVG9SZWFkID0gbEJ5dGVzUmVtYWluaW5nOw0KLQkJfQ0KLQ0KLQkJLyogT3BlbiB0aGUgc291cmNlIGZpbGUsIHNlZWsgcGFzdCB0aGUgZGF0YSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4NCi0JCXJlYWQgZnJvbSB0aGUgZmlsZSwgcmVhZCB0aGUgbmV4dCBibG9jayBvZiBkYXRhLCB0aGVuIGNsb3NlIHRoZQ0KLQkJZmlsZSBhZ2FpbiBzbyB0aGUgZGVzdGluYXRpb24gZmlsZSBjYW4gYmUgb3BlbmVkLiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBwY1NvdXJjZUZpbGUsICJyIiApOw0KLQkJaWYoIHB4RmlsZSAhPSBOVUxMICkNCi0JCXsNCi0JCQlmX3NlZWsoIHB4RmlsZSwgbEJ5dGVzUmVhZCwgRl9TRUVLX1NFVCApOw0KLQkJCWZfcmVhZCggcHhXcml0ZUJ1ZmZlciwgbEJ5dGVzVG9SZWFkLCAxLCBweEZpbGUgKTsNCi0JCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQl4UmV0dXJuID0gcGRGQUlMOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJLyogT3BlbiB0aGUgZGVzdGluYXRpb24gZmlsZSBhbmQgd3JpdGUgdGhlIGJsb2NrIG9mIGRhdGEgdG8gdGhlIGVuZCBvZg0KLQkJdGhlIGZpbGUuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjRGVzdGluYXRpb25GaWxlLCAiYSIgKTsNCi0JCWlmKCBweEZpbGUgIT0gTlVMTCApDQotCQl7DQotCQkJZl93cml0ZSggcHhXcml0ZUJ1ZmZlciwgbEJ5dGVzVG9SZWFkLCAxLCBweEZpbGUgKTsNCi0JCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQl4UmV0dXJuID0gcGRGQUlMOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJbEJ5dGVzUmVhZCArPSBsQnl0ZXNUb1JlYWQ7DQotCX0NCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBjaGFyICpwY0J1ZmZlciwgRl9GSU5EICpweEZpbmRTdHJ1Y3QgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1dyaXRhYmxlRmlsZSA9ICJ3cml0YWJsZSBmaWxlIiwgKnBjUmVhZE9ubHlGaWxlID0gInJlYWQgb25seSBmaWxlIiwgKnBjRGlyZWN0b3J5ID0gImRpcmVjdG9yeSI7DQotY29uc3QgY2hhciAqIHBjQXR0cmliOw0KLQ0KLQkvKiBQb2ludCBwY0F0dHJpYiB0byBhIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgZmlsZS4gKi8NCi0JaWYoICggcHhGaW5kU3RydWN0LT5hdHRyICYgRl9BVFRSX0RJUiApICE9IDAgKQ0KLQl7DQotCQlwY0F0dHJpYiA9IHBjRGlyZWN0b3J5Ow0KLQl9DQotCWVsc2UgaWYoIHB4RmluZFN0cnVjdC0+YXR0ciAmIEZfQVRUUl9SRUFET05MWSApDQotCXsNCi0JCXBjQXR0cmliID0gcGNSZWFkT25seUZpbGU7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlwY0F0dHJpYiA9IHBjV3JpdGFibGVGaWxlOw0KLQl9DQotDQotCS8qIENyZWF0ZSBhIHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBmaWxlIG5hbWUsIHRoZSBmaWxlIHNpemUgYW5kIHRoZQ0KLQlhdHRyaWJ1dGVzIHN0cmluZy4gKi8NCi0Jc3ByaW50ZiggcGNCdWZmZXIsICIlcyBbJXNdIFtzaXplPSVkXSIsIHB4RmluZFN0cnVjdC0+ZmlsZW5hbWUsIHBjQXR0cmliLCAoIGludCApIHB4RmluZFN0cnVjdC0+ZmlsZXNpemUgKTsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRmlsZS1zeXN0ZW0tZGVtby5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRmlsZS1zeXN0ZW0tZGVtby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2E2YTVlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZpbGUtc3lzdGVtLWRlbW8uYworKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFNlZSB0aGUgVVJMIGluIHRoZSBjb21tZW50cyB3aXRoaW4gbWFpbi5jIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZQ0KLSAqIGRvY3VtZW50YXRpb24uDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmF0X3NsLmgiDQotI2luY2x1ZGUgImFwaV9tZHJpdmVyX3JhbS5oIg0KLQ0KLS8qIDguMyBmb3JtYXQsIHBsdXMgbnVsbCB0ZXJtaW5hdG9yLiAqLw0KLSNkZWZpbmUgZnNNQVhfRklMRV9OQU1FX0xFTgkJCQkxMw0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC93cml0dGVuIHRvIHRoZSBleGFtcGxlIGZpbGVzIGF0IGEgdGltZS4gKi8NCi0jZGVmaW5lIGZzUkFNX0JVRkZFUl9TSVpFIAkJCQkyMDANCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIGZpbGUgdGhhdCB1c2VzIGZfcHV0YygpIGFuZCBmX2dldGMoKS4gKi8NCi0jZGVmaW5lIGZzUFVUQ19GSUxFX1NJWkUJCQkJMTAwDQotDQotLyogVGhlIG51bWJlciBvZiBmaWxlcyBjcmVhdGVkIGluIHJvb3QuICovDQotI2RlZmluZSBmc1JPT1RfRklMRVMJCQkJCTMNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIENyZWF0ZXMgYW5kIHZlcmlmaWVzIGRpZmZlcmVudCBmaWxlcyBvbiB0aGUgdm9sdW1lLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YNCi0gKiB2YXJpb3VzIGRpZmZlcmVudCBBUEkgZnVuY3Rpb25zLg0KLSAqLw0KLXZvaWQgdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGUgYSBzZXQgb2YgZXhhbXBsZSBmaWxlcyBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHZvbHVtZSB1c2luZw0KLSAqIGZfd3JpdGUoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZXNVc2luZ19mX3dyaXRlKCB2b2lkICk7DQotDQotLyoNCi0gKiBVc2UgZl9yZWFkKCkgdG8gcmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5DQotICogcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGUgYW4gZXhhbXBsZSBmaWxlIGluIGEgc3ViLWRpcmVjdG9yeSB1c2luZyBmX3B1dGMoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0Yyggdm9pZCApOw0KLQ0KLS8qDQotICogVXNlIGZfZ2V0YygpIHRvIHJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlIHRoYXQgd2FzIGNyZWF0ZWQgYnkNCi0gKiBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0YygpLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogQSBidWZmZXIgdXNlZCB0byBib3RoIGNyZWF0ZSBjb250ZW50IHRvIHdyaXRlIHRvIGRpc2ssIGFuZCByZWFkIGNvbnRlbnQgYmFjaw0KLWZyb20gYSBkaXNrLiAgTm90ZSB0aGVyZSBpcyBubyBtdXR1YWwgZXhjbHVzaW9uIG9uIHRoaXMgYnVmZmVyLiAqLw0KLXN0YXRpYyBjaGFyIGNSQU1CdWZmZXJbIGZzUkFNX0JVRkZFUl9TSVpFIF07DQotDQotLyogTmFtZXMgb2YgZGlyZWN0b3JpZXMgdGhhdCBhcmUgY3JlYXRlZC4gKi8NCi1zdGF0aWMgY29uc3QgY2hhciAqcGNSb290ID0gIi8iLCAqcGNEaXJlY3RvcnkxID0gIlNVQjEiLCAqcGNEaXJlY3RvcnkyID0gIlNVQjIiLCAqcGNGdWxsUGF0aCA9ICIvU1VCMS9TVUIyIjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNTdGF0dXM7DQotDQotCS8qIEZpcnN0IGNyZWF0ZSB0aGUgdm9sdW1lLiAqLw0KLQl1Y1N0YXR1cyA9IGZfaW5pdHZvbHVtZSggcmFtX2luaXRmdW5jICk7DQotDQotCS8qIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHZvbHVtZSBpcyBub3QgZm9ybWF0dGVkLiAqLw0KLQlpZiggdWNTdGF0dXMgPT0gRl9FUlJfTk9URk9STUFUVEVEICkNCi0Jew0KLQkJLyogRm9ybWF0IHRoZSBjcmVhdGVkIHZvbHVtZS4gKi8NCi0JCXVjU3RhdHVzID0gZl9mb3JtYXQoIEZfRkFUMTJfTUVESUEgKTsNCi0JfQ0KLQ0KLQlpZiggdWNTdGF0dXMgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCS8qIENyZWF0ZSBhIHNldCBvZiBmaWxlcyB1c2luZyBmX3dyaXRlKCkuICovDQotCQlwcnZDcmVhdGVEZW1vRmlsZXNVc2luZ19mX3dyaXRlKCk7DQotDQotCQkvKiBSZWFkIGJhY2sgYW5kIHZlcmlmeSB0aGUgZmlsZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgdXNpbmcgZl93cml0ZSgpLiAqLw0KLQkJcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX3JlYWQoKTsNCi0NCi0JCS8qIENyZWF0ZSBzdWIgZGlyZWN0b3JpZXMgdHdvIGRlZXAgdGhlbiBjcmVhdGUgYSBmaWxlIHVzaW5nIHB1dGMuICovDQotCQlwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0YygpOw0KLQ0KLQkJLyogUmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGUgY3JlYXRlZCBieQ0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKS4gKi8NCi0JCXBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSggdm9pZCApDQotew0KLXBvcnRCQVNFX1RZUEUgeEZpbGVOdW1iZXIsIHhXcml0ZU51bWJlcjsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLWxvbmcgbEl0ZW1zV3JpdHRlbjsNCi1GX0ZJTEUgKnB4RmlsZTsNCi0NCi0JLyogQ3JlYXRlIGZzUk9PVF9GSUxFUyBmaWxlcy4gIEVhY2ggY3JlYXRlZCBmaWxlIHdpbGwgYmUNCi0JKCB4RmlsZU51bWJlciAqIGZzUkFNX0JVRkZFUl9TSVpFICkgYnl0ZXMgaW4gbGVuZ3RoLCBhbmQgZmlsbGVkDQotCXdpdGggYSBkaWZmZXJlbnQgcmVwZWF0aW5nIGNoYXJhY3Rlci4gKi8NCi0JZm9yKCB4RmlsZU51bWJlciA9IDE7IHhGaWxlTnVtYmVyIDw9IGZzUk9PVF9GSUxFUzsgeEZpbGVOdW1iZXIrKyApDQotCXsNCi0JCS8qIEdlbmVyYXRlIGEgZmlsZSBuYW1lLiAqLw0KLQkJc3ByaW50ZiggY0ZpbGVOYW1lLCAicm9vdCUwM2QudHh0IiwgKCBpbnQgKSB4RmlsZU51bWJlciApOw0KLQ0KLQkJLyogT2J0YWluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBwcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQNCi0JCXRoZQlkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgZmlsZSBpcyBiZWluZyB3cml0dGVuLiAqLw0KLQkJZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCQlwcmludGYoICJDcmVhdGluZyBmaWxlICVzIGluICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkJLyogT3BlbiB0aGUgZmlsZSwgY3JlYXRpbmcgdGhlIGZpbGUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAidyIgKTsNCi0JCWNvbmZpZ0FTU0VSVCggcHhGaWxlICk7DQotDQotCQkvKiBGaWxsIHRoZSBSQU0gYnVmZmVyIHdpdGggZGF0YSB0aGF0IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4gIFRoaXMNCi0JCWlzIGp1c3QgYSByZXBlYXRpbmcgYXNjaWkgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoZSBmaWxlIG51bWJlci4gKi8NCi0JCW1lbXNldCggY1JBTUJ1ZmZlciwgKCBpbnQgKSAoICcwJyArIHhGaWxlTnVtYmVyICksIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotDQotCQkvKiBXcml0ZSB0aGUgUkFNIGJ1ZmZlciB0byB0aGUgb3BlbmVkIGZpbGUgYSBudW1iZXIgb2YgdGltZXMuICBUaGUNCi0JCW51bWJlciBvZiB0aW1lcyB0aGUgUkFNIGJ1ZmZlciBpcyB3cml0dGVuIHRvIHRoZSBmaWxlIGRlcGVuZHMgb24gdGhlDQotCQlmaWxlIG51bWJlciwgc28gdGhlIGxlbmd0aCBvZiBlYWNoIGNyZWF0ZWQgZmlsZSB3aWxsIGJlIGRpZmZlcmVudC4gKi8NCi0JCWZvciggeFdyaXRlTnVtYmVyID0gMDsgeFdyaXRlTnVtYmVyIDwgeEZpbGVOdW1iZXI7IHhXcml0ZU51bWJlcisrICkNCi0JCXsNCi0JCQlsSXRlbXNXcml0dGVuID0gZl93cml0ZSggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUsIDEsIHB4RmlsZSApOw0KLQkJCWNvbmZpZ0FTU0VSVCggbEl0ZW1zV3JpdHRlbiA9PSAxICk7DQotCQl9DQotDQotCQkvKiBDbG9zZSB0aGUgZmlsZSBzbyBhbm90aGVyIGZpbGUgY2FuIGJlIGNyZWF0ZWQuICovDQotCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfcmVhZCggdm9pZCApDQotew0KLXBvcnRCQVNFX1RZUEUgeEZpbGVOdW1iZXIsIHhSZWFkTnVtYmVyOw0KLWNoYXIgY0ZpbGVOYW1lWyBmc01BWF9GSUxFX05BTUVfTEVOIF07DQotbG9uZyBsSXRlbXNSZWFkLCBsQ2hhcjsNCi1GX0ZJTEUgKnB4RmlsZTsNCi0NCi0JLyogUmVhZCBiYWNrIHRoZSBmaWxlcyB0aGF0IHdlcmUgY3JlYXRlZCBieQ0KLQlwcnZDcmVhdGVEZW1vRmlsZXNVc2luZ19mX3dyaXRlKCkuICovDQotCWZvciggeEZpbGVOdW1iZXIgPSAxOyB4RmlsZU51bWJlciA8PSBmc1JPT1RfRklMRVM7IHhGaWxlTnVtYmVyKysgKQ0KLQl7DQotCQkvKiBHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lLiAqLw0KLQkJc3ByaW50ZiggY0ZpbGVOYW1lLCAicm9vdCUwM2QudHh0IiwgKCBpbnQgKSB4RmlsZU51bWJlciApOw0KLQ0KLQkJLyogT2J0YWluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBwcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQNCi0JCXRoZQlkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgZmlsZSBpcyBiZWluZyByZWFkLiAqLw0KLQkJZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCQlwcmludGYoICJSZWFkaW5nIGZpbGUgJXMgZnJvbSAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JCS8qIE9wZW4gdGhlIGZpbGUgZm9yIHJlYWRpbmcuICovDQotCQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInIiICk7DQotCQljb25maWdBU1NFUlQoIHB4RmlsZSApOw0KLQ0KLQkJLyogUmVhZCB0aGUgZmlsZSBpbnRvIHRoZSBSQU0gYnVmZmVyLCBjaGVja2luZyB0aGUgZmlsZSBjb250ZW50cyBhcmUgYXMNCi0JCWV4cGVjdGVkLiAgVGhlIHNpemUgb2YgdGhlIGZpbGUgZGVwZW5kcyBvbiB0aGUgZmlsZSBudW1iZXIuICovDQotCQlmb3IoIHhSZWFkTnVtYmVyID0gMDsgeFJlYWROdW1iZXIgPCB4RmlsZU51bWJlcjsgeFJlYWROdW1iZXIrKyApDQotCQl7DQotCQkJLyogU3RhcnQgd2l0aCB0aGUgUkFNIGJ1ZmZlciBjbGVhci4gKi8NCi0JCQltZW1zZXQoIGNSQU1CdWZmZXIsIDB4MDAsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotDQotCQkJbEl0ZW1zUmVhZCA9IGZfcmVhZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUsIDEsIHB4RmlsZSApOw0KLQkJCWNvbmZpZ0FTU0VSVCggbEl0ZW1zUmVhZCA9PSAxICk7DQotDQotCQkJLyogQ2hlY2sgdGhlIFJBTSBidWZmZXIgaXMgZmlsbGVkIHdpdGggdGhlIGV4cGVjdGVkIGRhdGEuICBFYWNoDQotCQkJZmlsZSBjb250YWlucyBhIGRpZmZlcmVudCByZXBlYXRpbmcgYXNjaWkgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzDQotCQkJdGhlIG51bWJlciBvZiB0aGUgZmlsZS4gKi8NCi0JCQlmb3IoIGxDaGFyID0gMDsgbENoYXIgPCBmc1JBTV9CVUZGRVJfU0laRTsgbENoYXIrKyApDQotCQkJew0KLQkJCQljb25maWdBU1NFUlQoIGNSQU1CdWZmZXJbIGxDaGFyIF0gPT0gKCAnMCcgKyAoIGNoYXIgKSB4RmlsZU51bWJlciApICk7DQotCQkJfQ0KLQkJfQ0KLQ0KLQkJLyogQ2xvc2UgdGhlIGZpbGUuICovDQotCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0Yyggdm9pZCApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm47DQotaW50IGlCeXRlLCBpUmV0dXJuZWQ7DQotRl9GSUxFICpweEZpbGU7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiSW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgc3ViIGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX21rZGlyKCBwY0RpcmVjdG9yeTEgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE1vdmUgaW50byB0aGUgY3JlYXRlZCBzdWItZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoIHBjRGlyZWN0b3J5MSApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiSW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IGluIHRoZSBuZXcgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfbWtkaXIoIHBjRGlyZWN0b3J5MiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogTW92ZSBpbnRvIHRoZSBkaXJlY3RvcnkganVzdCBjcmVhdGVkIC0gbm93IHR3byBkaXJlY3RvcmllcyBkb3duIGZyb20NCi0JdGhlIHJvb3QuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggcGNEaXJlY3RvcnkyICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQljb25maWdBU1NFUlQoIHN0cmNtcCggY1JBTUJ1ZmZlciwgcGNGdWxsUGF0aCApID09IDAgKTsNCi0NCi0JLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0Jc3ByaW50ZiggY0ZpbGVOYW1lLCAiJXMudHh0IiwgcGNEaXJlY3RvcnkyICk7DQotDQotCS8qIFByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcNCi0Jd3JpdHRlbi4gKi8NCi0JcHJpbnRmKCAiV3JpdGluZyBmaWxlICVzIGluICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInciICk7DQotDQotCS8qIENyZWF0ZSBhIGZpbGUgMSBieXRlIGF0IGEgdGltZS4gIFRoZSBmaWxlIGlzIGZpbGxlZCB3aXRoIGluY3JlbWVudGluZw0KLQlhc2NpaSBjaGFyYWN0ZXJzIHN0YXJ0aW5nIGZyb20gJzAnLiAqLw0KLQlmb3IoIGlCeXRlID0gMDsgaUJ5dGUgPCBmc1BVVENfRklMRV9TSVpFOyBpQnl0ZSsrICkNCi0Jew0KLQkJaVJldHVybmVkID0gZl9wdXRjKCAoICggaW50ICkgJzAnICsgaUJ5dGUgKSwgcHhGaWxlICk7DQotCQljb25maWdBU1NFUlQoIGlSZXR1cm5lZCA9PSAgKCAoIGludCApICcwJyArIGlCeXRlICkgKTsNCi0JfQ0KLQ0KLQkvKiBGaW5pc2hlZCBzbyBjbG9zZSB0aGUgZmlsZS4gKi8NCi0JZl9jbG9zZSggcHhGaWxlICk7DQotDQotCS8qIE1vdmUgYmFjayB0byB0aGUgcm9vdCBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggIi4uLy4uIiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiQmFjayBpbiByb290IGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY1Jvb3QgKSA9PSAwICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCB2b2lkICkNCi17DQotdW5zaWduZWQgY2hhciB1Y1JldHVybjsNCi1pbnQgaUJ5dGUsIGlSZXR1cm5lZDsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLQ0KLQkvKiBNb3ZlIGludG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgZmlsZSB3YXMgY3JlYXRlZC4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCBwY0Z1bGxQYXRoICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY0Z1bGxQYXRoICkgPT0gMCApOw0KLQ0KLQkvKiBHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lLiAqLw0KLQlzcHJpbnRmKCBjRmlsZU5hbWUsICIlcy50eHQiLCBwY0RpcmVjdG9yeTIgKTsNCi0NCi0JLyogUHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgZmlsZSBpcyBiZWluZw0KLQlyZWFkLiAqLw0KLQlwcmludGYoICJSZWFkaW5nIGZpbGUgJXMgaW4gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCS8qIFRoaXMgdGltZSB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcuICovDQotCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAiciIgKTsNCi0NCi0JLyogUmVhZCB0aGUgZmlsZSAxIGJ5dGUgYXQgYSB0aW1lLiAqLw0KLQlmb3IoIGlCeXRlID0gMDsgaUJ5dGUgPCBmc1BVVENfRklMRV9TSVpFOyBpQnl0ZSsrICkNCi0Jew0KLQkJaVJldHVybmVkID0gZl9nZXRjKCBweEZpbGUgKTsNCi0JCWNvbmZpZ0FTU0VSVCggaVJldHVybmVkID09ICAoICggaW50ICkgJzAnICsgaUJ5dGUgKSApOw0KLQl9DQotDQotCS8qIEZpbmlzaGVkIHNvIGNsb3NlIHRoZSBmaWxlLiAqLw0KLQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0NCi0JLyogTW92ZSBiYWNrIHRvIHRoZSByb290IGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCAiLi4vLi4iICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIHJvb3QgZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi19DQotDQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEktU291cmNlL1JlYWRNZS50eHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUNMSS1Tb3VyY2UvUmVhZE1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY2MWIwMi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUNMSS1Tb3VyY2UvUmVhZE1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotQ29udGFpbnMgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMgdGhhdCBpbXBsZW1lbnQgRnJlZVJUT1MrQ0xJLiAgU2VlDQotaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY2xpIGZvciBkb2N1bWVudGF0aW9uIGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KLQ0KLSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC1Tb3VyY2UvUmVhZE1lLnR4dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNMLVNvdXJjZS9SZWFkTWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTk3NDlmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNMLVNvdXJjZS9SZWFkTWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUnVuIHRoZSBDcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBiYXRjaCBmaWxlIHRvIHBvcHVsYXRlIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBidWlsZGluZyB0aGUgZGVtby4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9SZWFkTWUudHh0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vUmVhZE1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5NzQ5Zi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9SZWFkTWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUnVuIHRoZSBDcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBiYXRjaCBmaWxlIHRvIHBvcHVsYXRlIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBidWlsZGluZyB0aGUgZGVtby4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMDE5NmYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vU2FtcGxlLUNMSS1jb21tYW5kcy5jCisrKyAvZGV2L251bGwKQEAgLTEsNDIxICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBTZWUgdGhlIGZvbGxvd2luZyBVUkwgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjb21tYW5kcyBkZWZpbmVkIGluIHRoaXMgZmlsZToNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzL0ZyZWVSVE9TX1BsdXNfVURQL0VtYmVkZGVkX0V0aGVybmV0X0V4YW1wbGVzL0V0aGVybmV0X1JlbGF0ZWRfQ0xJX0NvbW1hbmRzLnNodG1sDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0vKiBGcmVlUlRPUytDTEkgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TX0NMSS5oIg0KLQ0KLSNpZm5kZWYgIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMNCi0JI2RlZmluZSBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTIDANCi0jZW5kaWYNCi0NCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIHJ1bi10aW1lLXN0YXRzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VGFza1N0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSB0YXNrLXN0YXRzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBlY2hvLXRocmVlLXBhcmFtZXRlcnMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUaHJlZVBhcmFtZXRlckVjaG9Db21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIGVjaG8tcGFyYW1ldGVycyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlBhcmFtZXRlckVjaG9Db21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlICJ0cmFjZSBzdGFydCIgYW5kICJ0cmFjZSBzdG9wIiBjb21tYW5kczsNCi0gKi8NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotCXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotI2VuZGlmDQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgInJ1bi10aW1lLXN0YXRzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gICBUaGlzDQotZ2VuZXJhdGVzIGEgdGFibGUgdGhhdCBzaG93cyBob3cgbXVjaCBydW4gdGltZSBlYWNoIHRhc2sgaGFzICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4UnVuVGltZVN0YXRzID0NCi17DQotCSJydW4tdGltZS1zdGF0cyIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnJ1bi10aW1lLXN0YXRzOlxyXG4gRGlzcGxheXMgYSB0YWJsZSBzaG93aW5nIGhvdyBtdWNoIHByb2Nlc3NpbmcgdGltZSBlYWNoIEZyZWVSVE9TIHRhc2sgaGFzIHVzZWRcclxuIiwNCi0JcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJ0YXNrLXN0YXRzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMgZ2VuZXJhdGVzDQotYSB0YWJsZSB0aGF0IGdpdmVzIGluZm9ybWF0aW9uIG9uIGVhY2ggdGFzayBpbiB0aGUgc3lzdGVtLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRhc2tTdGF0cyA9DQotew0KLQkidGFzay1zdGF0cyIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnRhc2stc3RhdHM6XHJcbiBEaXNwbGF5cyBhIHRhYmxlIHNob3dpbmcgdGhlIHN0YXRlIG9mIGVhY2ggRnJlZVJUT1MgdGFza1xyXG4iLA0KLQlwcnZUYXNrU3RhdHNDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkwIC8qIE5vIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgImVjaG9fM19wYXJhbWV0ZXJzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMNCi10YWtlcyBleGFjdGx5IHRocmVlIHBhcmFtZXRlcnMgdGhhdCB0aGUgY29tbWFuZCBzaW1wbHkgZWNob3MgYmFjayBvbmUgYXQgYQ0KLXRpbWUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VGhyZWVQYXJhbWV0ZXJFY2hvID0NCi17DQotCSJlY2hvLTMtcGFyYW1ldGVycyIsDQotCSJcclxuZWNoby0zLXBhcmFtZXRlcnMgPHBhcmFtMT4gPHBhcmFtMj4gPHBhcmFtMz46XHJcbiBFeHBlY3RzIHRocmVlIHBhcmFtZXRlcnMsIGVjaG9zIGVhY2ggaW4gdHVyblxyXG4iLA0KLQlwcnZUaHJlZVBhcmFtZXRlckVjaG9Db21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkzIC8qIFRocmVlIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLCB3aGljaCBjYW4gdGFrZSBhbnkgdmFsdWUuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAiZWNob19wYXJhbWV0ZXJzIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMNCi10YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRoYXQgdGhlIGNvbW1hbmQgc2ltcGx5IGVjaG9zIGJhY2sgb25lIGF0DQotYSB0aW1lLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFBhcmFtZXRlckVjaG8gPQ0KLXsNCi0JImVjaG8tcGFyYW1ldGVycyIsDQotCSJcclxuZWNoby1wYXJhbWV0ZXJzIDwuLi4+OlxyXG4gVGFrZSB2YXJpYWJsZSBudW1iZXIgb2YgcGFyYW1ldGVycywgZWNob3MgZWFjaCBpbiB0dXJuXHJcbiIsDQotCXBydlBhcmFtZXRlckVjaG9Db21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQktMSAvKiBUaGUgdXNlciBjYW4gZW50ZXIgYW55IG51bWJlciBvZiBjb21tYW5kcy4gKi8NCi19Ow0KLQ0KLSNpZiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDENCi0JLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgInRyYWNlIiBjb21tYW5kIGxpbmUgY29tbWFuZC4gIFRoaXMgdGFrZXMgYSBzaW5nbGUNCi0JcGFyYW1ldGVyLCB3aGljaCBjYW4gYmUgZWl0aGVyICJzdGFydCIgb3IgInN0b3AiLiAqLw0KLQlzdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhTdGFydFN0b3BUcmFjZSA9DQotCXsNCi0JCSJ0cmFjZSIsDQotCQkiXHJcbnRyYWNlIFtzdGFydCB8IHN0b3BdOlxyXG4gU3RhcnRzIG9yIHN0b3BzIGEgdHJhY2UgcmVjb3JkaW5nIGZvciB2aWV3aW5nIGluIEZyZWVSVE9TK1RyYWNlXHJcbiIsDQotCQlwcnZTdGFydFN0b3BUcmFjZUNvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCQkxIC8qIE9uZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQuICBWYWxpZCB2YWx1ZXMgYXJlICJzdGFydCIgYW5kICJzdG9wIi4gKi8NCi0JfTsNCi0jZW5kaWYgLyogY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyAqLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoIHZvaWQgKQ0KLXsNCi0JLyogUmVnaXN0ZXIgYWxsIHRoZSBjb21tYW5kIGxpbmUgY29tbWFuZHMgZGVmaW5lZCBpbW1lZGlhdGVseSBhYm92ZS4gKi8NCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFRhc2tTdGF0cyApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4UnVuVGltZVN0YXRzICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhUaHJlZVBhcmFtZXRlckVjaG8gKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFBhcmFtZXRlckVjaG8gKTsNCi0NCi0JI2lmKCBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTID09IDEgKQ0KLQl7DQotCQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICYgeFN0YXJ0U3RvcFRyYWNlICk7DQotCX0NCi0JI2VuZGlmDQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRhc2tTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKmNvbnN0IHBjSGVhZGVyID0gIlRhc2sgICAgICAgICAgU3RhdGUgIFByaW9yaXR5ICBTdGFjawkjXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4iOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCS8qIEdlbmVyYXRlIGEgdGFibGUgb2YgdGFzayBzdGF0cy4gKi8NCi0Jc3RyY3B5KCBwY1dyaXRlQnVmZmVyLCBwY0hlYWRlciApOw0KLQl2VGFza0xpc3QoIHBjV3JpdGVCdWZmZXIgKyBzdHJsZW4oIHBjSGVhZGVyICkgKTsNCi0NCi0JLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQlwZEZBTFNFLiAqLw0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UnVuVGltZVN0YXRzQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqIGNvbnN0IHBjSGVhZGVyID0gIlRhc2sgICAgICAgICAgICBBYnMgVGltZSAgICAgICUgVGltZVxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiI7DQotDQotCS8qIFJlbW92ZSBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMsIGFuZCBjaGVjayB0aGUNCi0Jd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0Jd3JpdGUgYnVmZmVyIGxlbmd0aCBpcyBhZGVxdWF0ZSwgc28gZG9lcyBub3QgY2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuICovDQotCSggdm9pZCApIHBjQ29tbWFuZFN0cmluZzsNCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQljb25maWdBU1NFUlQoIHBjV3JpdGVCdWZmZXIgKTsNCi0NCi0JLyogR2VuZXJhdGUgYSB0YWJsZSBvZiB0YXNrIHN0YXRzLiAqLw0KLQlzdHJjcHkoIHBjV3JpdGVCdWZmZXIsIHBjSGVhZGVyICk7DQotCXZUYXNrR2V0UnVuVGltZVN0YXRzKCAoIGNoYXIgKiApIHBjV3JpdGVCdWZmZXIgKyBzdHJsZW4oIHBjSGVhZGVyICkgKTsNCi0NCi0JLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQlwZEZBTFNFLiAqLw0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuOw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIGxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCWlmKCBsUGFyYW1ldGVyTnVtYmVyID09IDAgKQ0KLQl7DQotCQkvKiBUaGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuDQotCQllbnRlcmVkIGp1c3QgYSBoZWFkZXIgc3RyaW5nIGlzIHJldHVybmVkLiAqLw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRoZSB0aHJlZSBwYXJhbWV0ZXJzIHdlcmU6XHJcbiIgKTsNCi0NCi0JCS8qIE5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2lsbCBiZSBlY2hvZWQNCi0JCWJhY2suICovDQotCQlsUGFyYW1ldGVyTnVtYmVyID0gMUw7DQotDQotCQkvKiBUaGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgcmV0dXJuZWQgYXMgbm8gcGFyYW1ldGVycyBoYXZlIGJlZW4gZWNob2VkDQotCQliYWNrIHlldC4gKi8NCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJbFBhcmFtZXRlck51bWJlciwJCS8qIFJldHVybiB0aGUgbmV4dCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBSZXR1cm4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIiVkOiAiLCAoIGludCApIGxQYXJhbWV0ZXJOdW1iZXIgKTsNCi0JCXN0cm5jYXQoIHBjV3JpdGVCdWZmZXIsIHBjUGFyYW1ldGVyLCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoICk7DQotCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCS8qIElmIHRoaXMgaXMgdGhlIGxhc3Qgb2YgdGhlIHRocmVlIHBhcmFtZXRlcnMgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZQ0KLQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAzTCApDQotCQl7DQotCQkJLyogSWYgdGhpcyBpcyB0aGUgbGFzdCBvZiB0aGUgdGhyZWUgcGFyYW1ldGVycyB0aGVuIHRoZXJlIGFyZSBubyBtb3JlDQotCQkJc3RyaW5ncyB0byByZXR1cm4gYWZ0ZXIgdGhpcyBvbmUuICovDQotCQkJeFJldHVybiA9IHBkRkFMU0U7DQotCQkJbFBhcmFtZXRlck51bWJlciA9IDBMOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFRoZXJlIGFyZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuOw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIGxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCWlmKCBsUGFyYW1ldGVyTnVtYmVyID09IDAgKQ0KLQl7DQotCQkvKiBUaGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBjb21tYW5kIGhhcyBiZWVuDQotCQllbnRlcmVkIGp1c3QgYSBoZWFkZXIgc3RyaW5nIGlzIHJldHVybmVkLiAqLw0KLQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRoZSBwYXJhbWV0ZXJzIHdlcmU6XHJcbiIgKTsNCi0NCi0JCS8qIE5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHRoZSBmaXJzdCBwYXJhbWV0ZXIgd2lsbCBiZSBlY2hvZWQNCi0JCWJhY2suICovDQotCQlsUGFyYW1ldGVyTnVtYmVyID0gMUw7DQotDQotCQkvKiBUaGVyZSBpcyBtb3JlIGRhdGEgdG8gYmUgcmV0dXJuZWQgYXMgbm8gcGFyYW1ldGVycyBoYXZlIGJlZW4gZWNob2VkDQotCQliYWNrIHlldC4gKi8NCi0JCXhSZXR1cm4gPSBwZFBBU1M7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJbFBhcmFtZXRlck51bWJlciwJCS8qIFJldHVybiB0aGUgbmV4dCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJaWYoIHBjUGFyYW1ldGVyICE9IE5VTEwgKQ0KLQkJew0KLQkJCS8qIFJldHVybiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlZDogIiwgKCBpbnQgKSBsUGFyYW1ldGVyTnVtYmVyICk7DQotCQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgcGNQYXJhbWV0ZXIsIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGggKTsNCi0JCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCQkvKiBUaGVyZSBtaWdodCBiZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIE5vIG1vcmUgcGFyYW1ldGVycyB3ZXJlIGZvdW5kLiAgTWFrZSBzdXJlIHRoZSB3cml0ZSBidWZmZXIgZG9lcw0KLQkJCW5vdCBjb250YWluIGEgdmFsaWQgc3RyaW5nLiAqLw0KLQkJCXBjV3JpdGVCdWZmZXJbIDAgXSA9IDB4MDA7DQotDQotCQkJLyogTm8gbW9yZSBkYXRhIHRvIHJldHVybi4gKi8NCi0JCQl4UmV0dXJuID0gcGRGQUxTRTsNCi0NCi0JCQkvKiBTdGFydCBvdmVyIHRoZSBuZXh0IHRpbWUgdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiAqLw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotDQotCXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi0Jew0KLQljb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi0JcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLQ0KLQkJLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQkJd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0JCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkJKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkJKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQkJY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJJmxQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCSk7DQotDQotCQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JCS8qIFRoZXJlIGFyZSBvbmx5IHR3byB2YWxpZCBwYXJhbWV0ZXIgdmFsdWVzLiAqLw0KLQkJaWYoIHN0cm5jbXAoIHBjUGFyYW1ldGVyLCAic3RhcnQiLCBzdHJsZW4oICJzdGFydCIgKSApID09IDAgKQ0KLQkJew0KLQkJCS8qIFN0YXJ0IG9yIHJlc3RhcnQgdGhlIHRyYWNlLiAqLw0KLQkJCXZUcmFjZVN0b3AoKTsNCi0JCQl2VHJhY2VDbGVhcigpOw0KLQkJCXZUcmFjZVN0YXJ0KCk7DQotDQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlRyYWNlIHJlY29yZGluZyAocmUpc3RhcnRlZC5cclxuIiApOw0KLQkJfQ0KLQkJZWxzZSBpZiggc3RybmNtcCggcGNQYXJhbWV0ZXIsICJzdG9wIiwgc3RybGVuKCAic3RvcCIgKSApID09IDAgKQ0KLQkJew0KLQkJCS8qIEVuZCB0aGUgdHJhY2UsIGlmIG9uZSBpcyBydW5uaW5nLiAqLw0KLQkJCXZUcmFjZVN0b3AoKTsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiU3RvcHBpbmcgdHJhY2UgcmVjb3JkaW5nLlxyXG4iICk7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlZhbGlkIHBhcmFtZXRlcnMgYXJlICdzdGFydCcgYW5kICdzdG9wJy5cclxuIiApOw0KLQkJfQ0KLQ0KLQkJLyogVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybiBhZnRlciB0aGlzIHNpbmdsZSBzdHJpbmcsIHNvIHJldHVybg0KLQkJcGRGQUxTRS4gKi8NCi0JCXJldHVybiBwZEZBTFNFOw0KLQl9DQotDQotI2VuZGlmIC8qIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDk0YTE2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzE1ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJzdHJpbmcuaCINCi0jaW5jbHVkZSAic3RkaW8uaCINCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLQ0KLS8qIERyaXZlciBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5oIg0KLQ0KLS8qIEV4YW1wbGUgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TX0NMSS5oIg0KLSNpbmNsdWRlICJVQVJUQ29tbWFuZENvbnNvbGUuaCINCi0NCi0vKiBEaW1lbnNpb25zIHRoZSBidWZmZXIgaW50byB3aGljaCBpbnB1dCBjaGFyYWN0ZXJzIGFyZSBwbGFjZWQuICovDQotI2RlZmluZSBjbWRNQVhfSU5QVVRfU0laRQkJNTANCi0NCi0vKiBUaGUgbWF4aW11bSB0aW1lIGluIHRpY2tzIHRvIHdhaXQgZm9yIHRoZSBVQVJUIGFjY2VzcyBtdXRleC4gKi8NCi0jZGVmaW5lIGNtZE1BWF9NVVRFWF9XQUlUCQkoIDIwMCAvIHBvcnRUSUNLX1BFUklPRF9NUyApDQotDQotLyogQ2hhcmFjdGVycyBhcmUgb25seSBldmVyIHJlY2VpdmVkIHNsb3dseSBvbiB0aGUgQ0xJIHNvIGl0IGlzIG9rIHRvIHBhc3MNCi1yZWNlaXZlZCBjaGFyYWN0ZXJzIGZyb20gdGhlIFVBUlQgaW50ZXJydXB0IHRvIHRoZSB0YXNrIG9uIGEgcXVldWUuICBUaGlzIHNldHMNCi10aGUgbGVuZ3RoIG9mIHRoZSBxdWV1ZSB1c2VkIGZvciB0aGF0IHB1cnBvc2UuICovDQotI2RlZmluZSBjbWRSWEVEX0NIQVJTX1FVRVVFX0xFTkdUSAkJCSggMTAgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogVGhlIHRhc2sgdGhhdCBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIGNvbnNvbGUgcHJvY2Vzc2luZy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZVQVJUQ29tbWFuZENvbnNvbGVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCi0NCi0vKg0KLSAqIEVuc3VyZSBhIHByZXZpb3VzIGludGVycnVwdCBkcml2ZW4gVHggaGFzIGNvbXBsZXRlZCBiZWZvcmUgc2VuZGluZyB0aGUgbmV4dA0KLSAqIGRhdGEgYmxvY2sgdG8gdGhlIFVBUlQuDQotICovDQotc3RhdGljIHZvaWQgcHJ2U2VuZEJ1ZmZlciggY29uc3QgY2hhciAqIHBjQnVmZmVyLCBzaXplX3QgeEJ1ZmZlckxlbmd0aCApOw0KLQ0KLS8qDQotICogQSBVQVJUIGlzIHVzZWQgZm9yIHByaW50ZigpIG91dHB1dCBhbmQgQ0xJIGlucHV0IGFuZCBvdXRwdXQuICBDb25maWd1cmUgdGhlDQotICogVUFSVCBhbmQgcmVnaXN0ZXIgcHJ2VUFSVFJ4Tm90aWZpY2F0aW9uSGFuZGxlcigpIHRvIGhhbmRsZSBVQVJUIFJ4IGV2ZW50cy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDb25maWd1cmVVQVJUKCB2b2lkICk7DQotc3RhdGljIHZvaWQgcHJ2VUFSVFJ4Tm90aWZpY2F0aW9uSGFuZGxlciggbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIENvbnN0IG1lc3NhZ2VzIG91dHB1dCBieSB0aGUgY29tbWFuZCBjb25zb2xlLiAqLw0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGNXZWxjb21lTWVzc2FnZSA9ICJcclxuXHJcbkZyZWVSVE9TIGNvbW1hbmQgc2VydmVyLlxyXG5UeXBlIEhlbHAgdG8gdmlldyBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCBjb21tYW5kcy5cclxuXHJcbj4iOw0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGNFbmRPZk91dHB1dE1lc3NhZ2UgPSAiXHJcbltQcmVzcyBFTlRFUiB0byBleGVjdXRlIHRoZSBwcmV2aW91cyBjb21tYW5kIGFnYWluXVxyXG4+IjsNCi1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBjTmV3TGluZSA9ICJcclxuIjsNCi0NCi0vKiBUaGUgVUFSVCB1c2VkIGJ5IHRoZSBDTEkuICovDQotI2lmIGNvbmZpZ0JVSUxEX0ZPUl9ERVZFTE9QTUVOVF9LSVQgPT0gMQ0KLQlzdGF0aWMgY29uc3QgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIGNvbnN0IHB4VUFSVCA9ICZnX21zc191YXJ0MTsNCi0Jc3RhdGljIGNvbnN0IElSUW5fVHlwZSB4VUFSVF9JUlEgPSBVQVJUMV9JUlFuOw0KLSNlbHNlDQotCXN0YXRpYyBjb25zdCBtc3NfdWFydF9pbnN0YW5jZV90ICogY29uc3QgcHhVQVJUID0gJmdfbXNzX3VhcnQwOw0KLQlzdGF0aWMgY29uc3QgSVJRbl9UeXBlIHhVQVJUX0lSUSA9IFVBUlQwX0lSUW47DQotI2VuZGlmDQotDQotLyogQmVjYXVzZSBjaGFyYWN0ZXJzIGFyZSByZWNlaXZlZCBzbG93bHkgKGF0IHRoZSBzcGVlZCBzb21lYm9keSBjYW4gdHlwZSkgdGhlbg0KLWl0IGlzIG9rIHRvIHBhc3MgcmVjZWl2ZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBSeCBpbnRlcnJ1cHQgdG8gdGhlIHRhc2sgb24gYQ0KLXF1ZXVlLiAgVGhpcyBpcyB0aGUgcXVldWUgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLiAqLw0KLXN0YXRpYyBRdWV1ZUhhbmRsZV90IHhSeGVkQ2hhcnMgPSBOVUxMOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlVBUlRDb21tYW5kQ29uc29sZVN0YXJ0KCB1aW50MTZfdCB1c1N0YWNrU2l6ZSwgdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eFByaW9yaXR5ICkNCi17DQotCS8qIEEgVUFSVCBpcyB1c2VkIGZvciBwcmludGYoKSBvdXRwdXQgYW5kIENMSSBpbnB1dCBhbmQgb3V0cHV0LiAgTm90ZSB0aGVyZQ0KLQlpcyBubyBtdXR1YWwgZXhjbHVzaW9uIG9uIHRoZSBVQVJULCBidXQgdGhlIGRlbW8gYXMgaXQgc3RhbmRzIGRvZXMgbm90DQotCXJlcXVpcmUgbXV0dWFsIGV4Y2x1c2lvbi4gKi8NCi0JcHJ2Q29uZmlndXJlVUFSVCgpOw0KLQ0KLQkvKiBDcmVhdGUgdGhhdCB0YXNrIHRoYXQgaGFuZGxlcyB0aGUgY29uc29sZSBpdHNlbGYuICovDQotCXhUYXNrQ3JlYXRlKCAJcHJ2VUFSVENvbW1hbmRDb25zb2xlVGFzaywJLyogVGhlIHRhc2sgdGhhdCBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIGNvbnNvbGUuICovDQotCQkJCQkiQ0xJIiwJCQkJCQkvKiBUZXh0IG5hbWUgYXNzaWduZWQgdG8gdGhlIHRhc2suICBUaGlzIGlzIGp1c3QgdG8gYXNzaXN0IGRlYnVnZ2luZy4gIFRoZSBrZXJuZWwgZG9lcyBub3QgdXNlIHRoaXMgbmFtZSBpdHNlbGYuICovDQotCQkJCQl1c1N0YWNrU2l6ZSwJCQkJLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFsbG9jYXRlZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwsCQkJCQkJLyogVGhlIHBhcmFtZXRlciBpcyBub3QgdXNlZCwgc28gTlVMTCBpcyBwYXNzZWQuICovDQotCQkJCQl1eFByaW9yaXR5LAkJCQkJLyogVGhlIHByaW9yaXR5IGFsbG9jYXRlZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwgKTsJCQkJCQkvKiBBIGhhbmRsZSBpcyBub3QgcmVxdWlyZWQsIHNvIGp1c3QgcGFzcyBOVUxMLiAqLw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZVQVJUQ29tbWFuZENvbnNvbGVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi1jaGFyIGNSeGVkQ2hhciwgKnBjT3V0cHV0U3RyaW5nOw0KLXVuc2lnbmVkIGNoYXIgY0lucHV0SW5kZXggPSAwOw0KLXN0YXRpYyBjaGFyIGNJbnB1dFN0cmluZ1sgY21kTUFYX0lOUFVUX1NJWkUgXSwgY0xhc3RJbnB1dFN0cmluZ1sgY21kTUFYX0lOUFVUX1NJWkUgXTsNCi1wb3J0QkFTRV9UWVBFIHhSZXR1cm5lZDsNCi0NCi0JKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIGFkZHJlc3Mgb2YgdGhlIG91dHB1dCBidWZmZXIuICBOb3RlIHRoZXJlIGlzIG5vIG11dHVhbA0KLQlleGNsdXNpb24gb24gdGhpcyBidWZmZXIgYXMgaXQgaXMgYXNzdW1lZCBvbmx5IG9uZSBjb21tYW5kIGNvbnNvbGUNCi0JaW50ZXJmYWNlIHdpbGwgYmUgdXNlZCBhdCBhbnkgb25lIHRpbWUuICovDQotCXBjT3V0cHV0U3RyaW5nID0gRnJlZVJUT1NfQ0xJR2V0T3V0cHV0QnVmZmVyKCk7DQotDQotCS8qIFNlbmQgdGhlIHdlbGNvbWUgbWVzc2FnZS4gKi8NCi0JcHJ2U2VuZEJ1ZmZlciggcGNXZWxjb21lTWVzc2FnZSwgc3RybGVuKCBwY1dlbGNvbWVNZXNzYWdlICkgKTsNCi0NCi0JZm9yKCA7OyApDQotCXsNCi0JCS8qIFdhaXQgZm9yIHRoZSBuZXh0IGNoYXJhY3RlciB0byBhcnJpdmUuICovDQotCQlpZiggeFF1ZXVlUmVjZWl2ZSggeFJ4ZWRDaGFycywgJmNSeGVkQ2hhciwgcG9ydE1BWF9ERUxBWSApID09IHBkUEFTUyApDQotCQl7DQotCQkJLyogRWNobyB0aGUgY2hhcmFjdGVyIGJhY2suICovDQotCQkJcHJ2U2VuZEJ1ZmZlciggJmNSeGVkQ2hhciwgc2l6ZW9mKCBjUnhlZENoYXIgKSApOw0KLQ0KLQkJCS8qIFdhcyBpdCB0aGUgZW5kIG9mIHRoZSBsaW5lPyAqLw0KLQkJCWlmKCBjUnhlZENoYXIgPT0gJ1xuJyB8fCBjUnhlZENoYXIgPT0gJ1xyJyApDQotCQkJew0KLQkJCQkvKiBKdXN0IHRvIHNwYWNlIHRoZSBvdXRwdXQgZnJvbSB0aGUgaW5wdXQuICovDQotCQkJCXBydlNlbmRCdWZmZXIoIHBjTmV3TGluZSwgc3RybGVuKCBwY05ld0xpbmUgKSApOw0KLQ0KLQkJCQkvKiBTZWUgaWYgdGhlIGNvbW1hbmQgaXMgZW1wdHksIGluZGljYXRpbmcgdGhhdCB0aGUgbGFzdCBjb21tYW5kIGlzDQotCQkJCXRvIGJlIGV4ZWN1dGVkIGFnYWluLiAqLw0KLQkJCQlpZiggY0lucHV0SW5kZXggPT0gMCApDQotCQkJCXsNCi0JCQkJCS8qIENvcHkgdGhlIGxhc3QgY29tbWFuZCBiYWNrIGludG8gdGhlIGlucHV0IHN0cmluZy4gKi8NCi0JCQkJCXN0cmNweSggY0lucHV0U3RyaW5nLCBjTGFzdElucHV0U3RyaW5nICk7DQotCQkJCX0NCi0NCi0JCQkJLyogUGFzcyB0aGUgcmVjZWl2ZWQgY29tbWFuZCB0byB0aGUgY29tbWFuZCBpbnRlcnByZXRlci4gIFRoZQ0KLQkJCQljb21tYW5kIGludGVycHJldGVyIGlzIGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGl0IHJldHVybnMgcGRGQUxTRQ0KLQkJCQkoaW5kaWNhdGluZyB0aGVyZSBpcyBubyBtb3JlIG91dHB1dCkgYXMgaXQgbWlnaHQgZ2VuZXJhdGUgbW9yZSB0aGFuDQotCQkJCW9uZSBzdHJpbmcuICovDQotCQkJCWRvDQotCQkJCXsNCi0JCQkJCS8qIEdldCB0aGUgbmV4dCBvdXRwdXQgc3RyaW5nIGZyb20gdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIuICovDQotCQkJCQl4UmV0dXJuZWQgPSBGcmVlUlRPU19DTElQcm9jZXNzQ29tbWFuZCggY0lucHV0U3RyaW5nLCBwY091dHB1dFN0cmluZywgY29uZmlnQ09NTUFORF9JTlRfTUFYX09VVFBVVF9TSVpFICk7DQotDQotCQkJCQkvKiBXcml0ZSB0aGUgZ2VuZXJhdGVkIHN0cmluZyB0byB0aGUgVUFSVC4gKi8NCi0JCQkJCXBydlNlbmRCdWZmZXIoIHBjT3V0cHV0U3RyaW5nLCBzdHJsZW4oIHBjT3V0cHV0U3RyaW5nICkgKTsNCi0NCi0JCQkJfSB3aGlsZSggeFJldHVybmVkICE9IHBkRkFMU0UgKTsNCi0NCi0JCQkJLyogQWxsIHRoZSBzdHJpbmdzIGdlbmVyYXRlZCBieSB0aGUgaW5wdXQgY29tbWFuZCBoYXZlIGJlZW4gc2VudC4NCi0JCQkJQ2xlYXIgdGhlIGlucHV0CXN0cmluZyByZWFkeSB0byByZWNlaXZlIHRoZSBuZXh0IGNvbW1hbmQuICBSZW1lbWJlcg0KLQkJCQl0aGUgY29tbWFuZCB0aGF0IHdhcyBqdXN0IHByb2Nlc3NlZCBmaXJzdCBpbiBjYXNlIGl0IGlzIHRvIGJlDQotCQkJCXByb2Nlc3NlZCBhZ2Fpbi4gKi8NCi0JCQkJc3RyY3B5KCBjTGFzdElucHV0U3RyaW5nLCBjSW5wdXRTdHJpbmcgKTsNCi0JCQkJY0lucHV0SW5kZXggPSAwOw0KLQkJCQltZW1zZXQoIGNJbnB1dFN0cmluZywgMHgwMCwgY21kTUFYX0lOUFVUX1NJWkUgKTsNCi0NCi0JCQkJcHJ2U2VuZEJ1ZmZlciggcGNFbmRPZk91dHB1dE1lc3NhZ2UsIHN0cmxlbiggcGNFbmRPZk91dHB1dE1lc3NhZ2UgKSApOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQlpZiggY1J4ZWRDaGFyID09ICdccicgKQ0KLQkJCQl7DQotCQkJCQkvKiBJZ25vcmUgdGhlIGNoYXJhY3Rlci4gKi8NCi0JCQkJfQ0KLQkJCQllbHNlIGlmKCBjUnhlZENoYXIgPT0gJ1xiJyApDQotCQkJCXsNCi0JCQkJCS8qIEJhY2tzcGFjZSB3YXMgcHJlc3NlZC4gIEVyYXNlIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUNCi0JCQkJCXN0cmluZyAtIGlmIGFueS4gKi8NCi0JCQkJCWlmKCBjSW5wdXRJbmRleCA+IDAgKQ0KLQkJCQkJew0KLQkJCQkJCWNJbnB1dEluZGV4LS07DQotCQkJCQkJY0lucHV0U3RyaW5nWyBjSW5wdXRJbmRleCBdID0gJ1wwJzsNCi0JCQkJCX0NCi0JCQkJfQ0KLQkJCQllbHNlDQotCQkJCXsNCi0JCQkJCS8qIEEgY2hhcmFjdGVyIHdhcyBlbnRlcmVkLiAgQWRkIGl0IHRvIHRoZSBzdHJpbmcNCi0JCQkJCWVudGVyZWQgc28gZmFyLiAgV2hlbiBhIFxuIGlzIGVudGVyZWQgdGhlIGNvbXBsZXRlDQotCQkJCQlzdHJpbmcgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIuICovDQotCQkJCQlpZiggKCBjUnhlZENoYXIgPj0gJyAnICkgJiYgKCBjUnhlZENoYXIgPD0gJ34nICkgKQ0KLQkJCQkJew0KLQkJCQkJCWlmKCBjSW5wdXRJbmRleCA8IGNtZE1BWF9JTlBVVF9TSVpFICkNCi0JCQkJCQl7DQotCQkJCQkJCWNJbnB1dFN0cmluZ1sgY0lucHV0SW5kZXggXSA9IGNSeGVkQ2hhcjsNCi0JCQkJCQkJY0lucHV0SW5kZXgrKzsNCi0JCQkJCQl9DQotCQkJCQl9DQotCQkJCX0NCi0JCQl9DQotCQl9DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2U2VuZEJ1ZmZlciggY29uc3QgY2hhciAqIHBjQnVmZmVyLCBzaXplX3QgeEJ1ZmZlckxlbmd0aCApDQotew0KLWNvbnN0IFRpY2tUeXBlX3QgeFZlcnlTaG9ydERlbGF5ID0gMlVMOw0KLQ0KLQlpZiggeEJ1ZmZlckxlbmd0aCA+IDAgKQ0KLQl7DQotCQlNU1NfVUFSVF9pcnFfdHgoICggbXNzX3VhcnRfaW5zdGFuY2VfdCAqICkgcHhVQVJULCAoIHVpbnQ4X3QgKiApIHBjQnVmZmVyLCB4QnVmZmVyTGVuZ3RoICk7DQotDQotCQkvKiBFbnN1cmUgYW55IHByZXZpb3VzIHRyYW5zbWlzc2lvbnMgaGF2ZSBjb21wbGV0ZWQuICBUaGUgZGVmYXVsdCBVQVJUDQotCQlpbnRlcnJ1cHQgZG9lcyBub3QgcHJvdmlkZSBhbiBldmVudCBiYXNlZCBtZXRob2Qgb2YJc2lnbmFsbHkgdGhlIGVuZCBvZiBhIFR4DQotCQktIHRoaXMgaXMgdGhlcmVmb3JlIGEgY3J1ZGUgcG9sbCBvZiB0aGUgVHggZW5kIHN0YXR1cy4gIFJlcGxhY2luZyB0aGUNCi0JCWRlZmF1bHQgVUFSVCBoYW5kbGVyIHdpdGggb25lIHRoYXQgJ2dpdmVzJyBhIHNlbWFwaG9yZSB3aGVuIHRoZSBUeCBpcw0KLQkJY29tcGxldGUgd291bGQgYWxsb3cgdGhpcyBwb2xsIGxvb3AgdG8gYmUgcmVwbGFjZWQgYnkgYSBzaW1wbGUgc2VtYXBob3JlDQotCQlibG9jay4gKi8NCi0JCXdoaWxlKCBNU1NfVUFSVF90eF9jb21wbGV0ZSggKCBtc3NfdWFydF9pbnN0YW5jZV90ICogKSBweFVBUlQgKSA9PSBwZEZBTFNFICkNCi0JCXsNCi0JCQl2VGFza0RlbGF5KCB4VmVyeVNob3J0RGVsYXkgKTsNCi0JCX0NCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDb25maWd1cmVVQVJUKCB2b2lkICkNCi17DQotCS8qIEluaXRpYWxpc2UgdGhlIFVBUlQgd2hpY2ggaXMgdXNlZCBmb3IgcHJpbnRmKCkgYW5kIENMSSBJTy4gKi8NCi0JTVNTX1VBUlRfaW5pdCggKCBtc3NfdWFydF9pbnN0YW5jZV90ICogKSBweFVBUlQsIE1TU19VQVJUXzExNTIwMF9CQVVELCBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCApOw0KLQ0KLQkvKiBDaGFyYWN0ZXJzIGFyZSBvbmx5IGV2ZXIgcmVjZWl2ZWQgc2xvd2x5IG9uIHRoZSBDTEkgc28gaXQgaXMgb2sgdG8gcGFzcw0KLQlyZWNlaXZlZCBjaGFyYWN0ZXJzIGZyb20gdGhlIFVBUlQgaW50ZXJydXB0IHRvIHRoZSB0YXNrIG9uIGEgcXVldWUuICBDcmVhdGUNCi0JdGhlIHF1ZXVlIHVzZWQgZm9yIHRoYXQgcHVycG9zZS4gKi8NCi0JeFJ4ZWRDaGFycyA9IHhRdWV1ZUNyZWF0ZSggY21kUlhFRF9DSEFSU19RVUVVRV9MRU5HVEgsIHNpemVvZiggY2hhciApICk7DQotDQotCS8qIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciBtYWtlcyB1c2Ugb2YgRnJlZVJUT1MgQVBJIGZ1bmN0aW9ucywgc28gaXRzDQotCXByaW9yaXR5IG11c3QgYmUgYXQgb3IgYmVsb3cgdGhlIGNvbmZpZ0xJQlJBUllfTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZDQotCXNldHRpbmcgKHRoZSBoaWdoZXIgdGhlIG51bWVyaWMgcHJpb3JpdHksIHRoZSBsb3dlciB0aGUgbG9naWNhbCBwcmlvcml0eSkuICovDQotCU5WSUNfU2V0UHJpb3JpdHkoIHhVQVJUX0lSUSwgY29uZmlnTElCUkFSWV9NQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKTsNCi0NCi0JLyogU2V0IHRoZSBVQVJUIFJ4IG5vdGlmaWNhdGlvbiBmdW5jdGlvbi4gKi8NCi0JTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoICggbXNzX3VhcnRfaW5zdGFuY2VfdCAqICkgcHhVQVJULCBwcnZVQVJUUnhOb3RpZmljYXRpb25IYW5kbGVyLCBNU1NfVUFSVF9GSUZPX1NJTkdMRV9CWVRFICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlVBUlRSeE5vdGlmaWNhdGlvbkhhbmRsZXIoIG1zc191YXJ0X2luc3RhbmNlX3QgKiBweFVBUlQgKQ0KLXsNCi1jaGFyIGNSeGVkOw0KLXBvcnRCQVNFX1RZUEUgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuOw0KLQ0KLQkvKiBUaGUgY29tbWFuZCBjb25zb2xlIHJlY2VpdmVzIGRhdGEgdmVyeSBzbG93bHkgKGF0IHRoZSBzcGVlZCBvZiBzb21lYm9keQ0KLQl0eXBpbmcpLCB0aGVyZWZvcmUgaXQgaXMgb2sgdG8ganVzdCBoYW5kbGUgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUgYW5kIHVzZQ0KLQlhIHF1ZXVlIHRvIHNlbmQgdGhlIGNoYXJhY3RlcnMgdG8gdGhlIHRhc2suICovDQotCWlmKCBNU1NfVUFSVF9nZXRfcngoIHB4VUFSVCwgKCB1aW50OF90ICogKSAmY1J4ZWQsIHNpemVvZiggY1J4ZWQgKSApID09IHNpemVvZiggY1J4ZWQgKSApDQotCXsNCi0JCXhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQotCQl4UXVldWVTZW5kRnJvbUlTUiggeFJ4ZWRDaGFycywgJmNSeGVkLCAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQotDQotCQkvKiBwb3J0RU5EX1NXSVRDSElOR19JU1IoKSBvciBwb3J0WUlFTERfRlJPTV9JU1IoKSBjYW4gYmUgdXNlZCBoZXJlLiAqLw0KLQkJcG9ydFlJRUxEX0ZST01fSVNSKCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCi0JfQ0KLX0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjI4YWU5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotI2lmbmRlZiBVQVJUX0NPTU1BTkRfQ09OU09MRV9IDQotI2RlZmluZSBVQVJUX0NPTU1BTkRfQ09OU09MRV9IDQotDQotLyoNCi0gKiBDcmVhdGUgdGhlIHRhc2sgdGhhdCBpbXBsZW1lbnRzIGEgY29tbWFuZCBjb25zb2xlIHVzaW5nIHRoZSBVU0IgdmlydHVhbCBjb20NCi0gKiBwb3J0IGRyaXZlciBmb3IgaW50cHV0IGFuZCBvdXRwdXQuDQotICovDQotdm9pZCB2VUFSVENvbW1hbmRDb25zb2xlU3RhcnQoIHVpbnQxNl90IHVzU3RhY2tTaXplLCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFIHV4UHJpb3JpdHkgKTsNCi0NCi0jZW5kaWYgLyogVUFSVF9DT01NQU5EX0NPTlNPTEVfSCAqLw0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2wuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0NzA3Ny4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYW4gY29tcGxlbWVudGFyeSBjb21wb25lbnQgcHJvdmlkZWQgdG8gUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAqIEx0ZC4gYnkgSENDIEVtYmVkZGVkIGZvciB1c2Ugd2l0aCBGcmVlUlRPUy4gIEl0IGlzIG5vdCwgaW4gaXRzZWxmLCBwYXJ0IG9mDQotICogdGhlIEZyZWVSVE9TIGtlcm5lbC4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IGZyb20gRnJlZVJUT1MsDQotICogYW5kIHVzZXMgYSBkaWZmZXJlbnQgbGljZW5zZSB0byBGcmVlUlRPUy4gIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbA0KLSAqIGxpY2Vuc2UgbW9kZWwsIGluZm9ybWF0aW9uIG9uIHdoaWNoIGlzIHByb3ZpZGVkIGJlbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQNCi0gKiB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSBHTlUgR2VuZXJhbA0KLSAqIFB1YmxpYyBsaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgdGhpcyB0ZXh0Lg0KLSAqIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUgZm9sbG93aW5nDQotICogVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIHdpc2ggdG8gaW5jb3Jwb3JhdGUgRnJlZVJUT1MrRkFUIFNMIGludG8NCi0gKiBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgcmVkaXN0cmlidXRpb24gaW4gYW55IGZvcm0gbXVzdCBmaXJzdCBvYnRhaW4gYQ0KLSAqIGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwgc3VwcG9ydCBhbmQNCi0gKiBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytGQVQgU0wgcHJvZHVjdC4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuDQotICogYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMNCi0gKiB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19GQVRfU0xfSA0KLSNkZWZpbmUgX0NPTkZJR19GQVRfU0xfSA0KLQ0KLSNpbmNsdWRlICIuLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaW5jbHVkZSAiLi4vYXBpL2FwaV9tZHJpdmVyLmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKioNCi0qKiAgRkFUIFNMIHVzZXIgc2V0dGluZ3MNCi0qKg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgRl9TRUNUT1JfU0laRSAgICAgICAgICAgNTEydSAgLyogRGlzayBzZWN0b3Igc2l6ZS4gKi8NCi0jZGVmaW5lIEZfRlNfVEhSRUFEX0FXQVJFICAgICAgIDEgICAgIC8qIFNldCB0byBvbmUgaWYgdGhlIGZpbGUgc3lzdGVtIHdpbGwgYmUgYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrLiAqLw0KLSNkZWZpbmUgRl9NQVhQQVRIICAgICAgICAgICAgICAgNjQgICAgLyogTWF4aW11bSBsZW5ndGggYSBmaWxlIG5hbWUgKGluY2x1ZGluZyBpdHMgZnVsbCBwYXRoKSBjYW4gYmUuICovDQotI2RlZmluZSBGX01BWF9MT0NLX1dBSVRfVElDS1MgICAyMCAgICAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgUlRPUyB0aWNrcyB0byB3YWl0IHdoZW4gYXR0ZW1wdGluZyB0byBvYnRhaW4gYSBsb2NrIG9uIHRoZSBmaWxlIHN5c3RlbSB3aGVuIEZfRlNfVEhSRUFEX0FXQVJFIGlzIHNldCB0byAxLiAqLw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX0NPTkZJR19GQVRfU0xfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2xfdGVzdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vY29uZmlnX2ZhdF9zbF90ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTZmOTMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vY29uZmlnX2ZhdF9zbF90ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYW4gY29tcGxlbWVudGFyeSBjb21wb25lbnQgcHJvdmlkZWQgdG8gUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAqIEx0ZC4gYnkgSENDIEVtYmVkZGVkIGZvciB1c2Ugd2l0aCBGcmVlUlRPUy4gIEl0IGlzIG5vdCwgaW4gaXRzZWxmLCBwYXJ0IG9mDQotICogdGhlIEZyZWVSVE9TIGtlcm5lbC4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IGZyb20gRnJlZVJUT1MsDQotICogYW5kIHVzZXMgYSBkaWZmZXJlbnQgbGljZW5zZSB0byBGcmVlUlRPUy4gIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbA0KLSAqIGxpY2Vuc2UgbW9kZWwsIGluZm9ybWF0aW9uIG9uIHdoaWNoIGlzIHByb3ZpZGVkIGJlbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQNCi0gKiB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSBHTlUgR2VuZXJhbA0KLSAqIFB1YmxpYyBsaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgdGhpcyB0ZXh0Lg0KLSAqIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUgZm9sbG93aW5nDQotICogVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIHdpc2ggdG8gaW5jb3Jwb3JhdGUgRnJlZVJUT1MrRkFUIFNMIGludG8NCi0gKiBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgcmVkaXN0cmlidXRpb24gaW4gYW55IGZvcm0gbXVzdCBmaXJzdCBvYnRhaW4gYQ0KLSAqIGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwgc3VwcG9ydCBhbmQNCi0gKiBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytGQVQgU0wgcHJvZHVjdC4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuDQotICogYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMNCi0gKiB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19GQVRfU0xfVEVTVF9IDQotI2RlZmluZSBfQ09ORklHX0ZBVF9TTF9URVNUX0gNCi0NCi0jaW5jbHVkZSAiLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotDQotLyoNCi0qKiBNYXhpbXVtIHNpemUgZm9yIHNlZWsgdGVzdC4NCi0qKiBPcHRpb25zOiAxMjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwgMzI3NjgNCi0qLw0KLSNkZWZpbmUgRl9NQVhfU0VFS19URVNUIDE2Mzg0DQotDQotDQotLyoNCi0qKiBEZWZpbmVzIG1lZGlhIHR5cGUgZm9yIHRlc3RpbmcuDQotKiogT3B0aW9uczogRl9GQVQxMl9NRURJQSwgRl9GQVQxNl9NRURJQSwgRl9GQVQzMl9NRURJQQ0KLSovDQotI2RlZmluZSBGX0ZBVF9UWVBFICAgICAgRl9GQVQxNl9NRURJQQ0KLQ0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX0NPTkZJR19TVEhJTl9URVNUX0ggKi8NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfbWRyaXZlcl9yYW0uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19tZHJpdmVyX3JhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzRmZWRkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19tZHJpdmVyX3JhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFuIGNvbXBsZW1lbnRhcnkgY29tcG9uZW50IHByb3ZpZGVkIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gKiBMdGQuIGJ5IEhDQyBFbWJlZGRlZCBmb3IgdXNlIHdpdGggRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydCBvZg0KLSAqIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytGQVQgU0wgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwNCi0gKiBsaWNlbnNlIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkDQotICogd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgR05VIEdlbmVyYWwNCi0gKiBQdWJsaWMgbGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHRoaXMgdGV4dC4NCi0gKiBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlIGZvbGxvd2luZw0KLSAqIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyB3aXNoIHRvIGluY29ycG9yYXRlIEZyZWVSVE9TK0ZBVCBTTCBpbnRvDQotICogcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIHJlZGlzdHJpYnV0aW9uIGluIGFueSBmb3JtIG11c3QgZmlyc3Qgb2J0YWluIGENCi0gKiBjb21tZXJjaWFsIGxpY2Vuc2UgLSBhbmQgaW4tc28tZG9pbmcgc3VwcG9ydCB0aGUgbWFpbnRlbmFuY2UsIHN1cHBvcnQgYW5kDQotICogZnVydGhlciBkZXZlbG9wbWVudCBvZiB0aGUgRnJlZVJUT1MrRkFUIFNMIHByb2R1Y3QuICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbg0KLSAqIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzDQotICogdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9DT05GSUdfTURSSVZFUl9SQU1fSF8NCi0jZGVmaW5lIF9DT05GSUdfTURSSVZFUl9SQU1fSF8NCi0NCi0jaW5jbHVkZSAiLi4vdmVyc2lvbi92ZXJfbWRyaXZlcl9yYW0uaCINCi0jaWYgVkVSX01EUklWRVJfUkFNX01BSk9SICE9IDEgfHwgVkVSX01EUklWRVJfUkFNX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBNRFJJVkVSX1JBTSB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jZGVmaW5lIE1EUklWRVJfUkFNX1NFQ1RPUl9TSVpFICAgNTEyICAgICAgIC8qIFNlY3RvciBzaXplICovDQotDQotI2RlZmluZSBNRFJJVkVSX1JBTV9WT0xVTUUwX1NJWkUgICgyOCAqIDEwMjQpIC8qIGRlZmludGlvbiBmb3Igc2l6ZSBvZiByYW1kcml2ZTAgKi8NCi0NCi0jZGVmaW5lIE1EUklWRVJfTUVNX0xPTkdfQUNDRVNTICAgMSAgICAgICAgIC8qIHNldCB0aGlzIHZhbHVlIHRvIDEgaWYgMzJiaXQgYWNjZXNzIGF2YWlsYWJsZSAqLw0KLQ0KLSNlbmRpZiAvKiBpZm5kZWYgX0NPTkZJR19NRFJJVkVSX1JBTV9IXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vbWFpbl9mdWxsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwM2U5NDkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vbWFpbl9mdWxsLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNjMgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCi0gKiBwcm9qZWN0LCBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KLSAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIGluIEZyZWVSVE9TQ29uaWZnLmggaXMgdXNlZCB0bw0KLSAqIHNlbGVjdCBiZXR3ZWVuIHRoZSB0d28uICBTZWUgdGhlIG5vdGVzIG9uIHVzaW5nDQotICogY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGluIG1haW4uYy4gIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZQ0KLSAqIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyB2ZXJzaW9uLg0KLSAqDQotICogTk9URSAyOiAgVGhpcyBmaWxlIG9ubHkgY29udGFpbnMgdGhlIHNvdXJjZSBjb2RlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlDQotICogZnVsbCBkZW1vLiAgR2VuZXJpYyBmdW5jdGlvbnMsIHN1Y2ggRnJlZVJUT1MgaG9vayBmdW5jdGlvbnMsIGFuZCBmdW5jdGlvbnMNCi0gKiByZXF1aXJlZCB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlLCBhcmUgZGVmaW5lZCBpbiBtYWluLmMuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogbWFpbl9mdWxsKCkgY3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MgYW5kIGEgc29mdHdhcmUgdGltZXIsIHRoZW4NCi0gKiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSB3ZWIgZG9jdW1lbnRhdGlvbiBwcm92aWRlcyBtb3JlIGRldGFpbHMgb2YgdGhlDQotICogc3RhbmRhcmQgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgd2hpY2ggcHJvdmlkZSBubyBwYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksDQotICogYnV0IGRvIHByb3ZpZGUgYSBnb29kIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGUgRnJlZVJUT1MgQVBJLg0KLSAqDQotICogSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MsIHRoZSBmb2xsb3dpbmcgdGFza3MgYW5kIHRlc3RzIGFyZQ0KLSAqIGRlZmluZWQgYW5kL29yIGNyZWF0ZWQgd2l0aGluIHRoaXMgZmlsZToNCi0gKg0KLSAqICJDaGVjayIgdGltZXIgLSBUaGUgY2hlY2sgc29mdHdhcmUgdGltZXIgcGVyaW9kIGlzIGluaXRpYWxseSBzZXQgdG8gdGhyZWUNCi0gKiBzZWNvbmRzLiAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2hlY2sgc29mdHdhcmUgdGltZXINCi0gKiBjaGVja3MgdGhhdCBhbGwgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MgYXJlIG5vdCBvbmx5IHN0aWxsIGV4ZWN1dGluZywgYnV0DQotICogYXJlIGV4ZWN1dGluZyB3aXRob3V0IHJlcG9ydGluZyBhbnkgZXJyb3JzLiAgSWYgdGhlIGNoZWNrIHNvZnR3YXJlIHRpbWVyDQotICogZGlzY292ZXJzIHRoYXQgYSB0YXNrIGhhcyBlaXRoZXIgc3RhbGxlZCwgb3IgcmVwb3J0ZWQgYW4gZXJyb3IsIHRoZW4gaXQNCi0gKiBjaGFuZ2VzIGl0cyBvd24gZXhlY3V0aW9uIHBlcmlvZCBmcm9tIHRoZSBpbml0aWFsIHRocmVlIHNlY29uZHMsIHRvIGp1c3QNCi0gKiAyMDBtcy4gIFRoZSBjaGVjayBzb2Z0d2FyZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBhbHNvIHRvZ2dsZXMgdGhlIGdyZWVuDQotICogTEVEIGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuICBUaGlzIHByb3ZpZGVzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgdGhlIHN5c3RlbQ0KLSAqIHN0YXR1czogIElmIHRoZSBncmVlbiBMRUQgdG9nZ2xlcyBldmVyeSB0aHJlZSBzZWNvbmRzLCB0aGVuIG5vIGlzc3VlcyBoYXZlDQotICogYmVlbiBkaXNjb3ZlcmVkLiAgSWYgdGhlIGdyZWVuIExFRCB0b2dnbGVzIGV2ZXJ5IDIwMG1zLCB0aGVuIGFuIGlzc3VlIGhhcw0KLSAqIGJlZW4gZGlzY292ZXJlZCB3aXRoIGF0IGxlYXN0IG9uZSB0YXNrLg0KLSAqDQotICogRnJlZVJUT1MrQ0xJIGNvbW1hbmQgY29uc29sZS4gIFRoZSBjb21tYW5kIGNvbnNvbGUgaXMgYWNjZXNzIHRocm91Z2ggVUFSVDANCi0gKiB1c2luZyAxMTUyMDAgYmF1ZCBhbmQgdGhlIE1pY3Jvc2VtaSBNU1MgVUFSVCBkcml2ZXJzLiAgVHlwZSAiaGVscCIgdG8gc2VlIGENCi0gKiBsaXN0IG9mIHJlZ2lzdGVyZWQgY29tbWFuZHMsIHdoaWNoIGluY2x1ZGUgc29tZSBiYXNpYyBmaWxlIHN5c3RlbSBjb21tYW5kcw0KLSAqIChzZWUgRnJlZVJUT1MrRkFUIFNMIGNvbW1lbnRzIGJlbG93KS4gVGhlIEZyZWVSVE9TK0NMSSBsaWNlbnNlIGlzIGRpZmZlcmVudA0KLSAqIHRvIHRoZSBGcmVlUlRPUyBsaWNlbnNlLCBzZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY2xpIGZvciBsaWNlbnNlIGFuZA0KLSAqIHVzYWdlIGRldGFpbHMuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wuICBGcmVlUlRPUytGQVQgU0wgaXMgZGVtb25zdHJhdGVkIHVzaW5nIGEgUkFNIGRpc2suICBbQXQgdGhlDQotICogdGltZSBvZiB3cml0aW5nXSBUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZmlsZSBzeXN0ZW0gZGVtbyBpcyBpZGVudGljYWwgdG8NCi0gKiB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgRnJlZVJUT1MgV2luMzIgc2ltdWxhdG9yIGZpbGUgc3lzdGVtIGRlbW8gd2l0aCB0aGUNCi0gKiBjb21tYW5kIGNvbnNvbGUgYmVpbmcgYWNjZXNzZWQgdmlhIHRoZSBVQVJUIChhcyBkZXNjcmliZWQgYWJvdmUpIGluc3RlYWQgb2YNCi0gKiBhIG5ldHdvcmsgdGVybWluYWwuICBUaGUgRnJlZVJUT1MrRkFUIFNMIGxpY2Vuc2UgaXMgZGlmZmVyZW50IHRvIHRoZSBGcmVlUlRPUw0KLSAqIGxpY2Vuc2UsIHNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9mYXRfc2wgZm9yIGxpY2Vuc2UgYW5kIHVzYWdlIGRldGFpbHMsDQotICogYW5kIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZpbGUgc3lzdGVtIGRlbW8gZnVuY3Rpb25hbGl0eS4NCi0gKg0KLSAqIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gb24gdGhlIEZyZWVSVE9TLm9yZyB3ZWIgc2l0ZSBmb3INCi0gKiBmdWxsIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgaGFyZHdhcmUgc2V0dXAgcmVxdWlyZW1lbnRzLg0KLSAqLw0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLQ0KLS8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJ0aW1lcnMuaCINCi0jaW5jbHVkZSAicXVldWUuaCINCi0NCi0vKiBTdGFuZGFyZCBkZW1vIGFwcGxpY2F0aW9uIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJpbnRlZ2VyLmgiDQotI2luY2x1ZGUgIlBvbGxRLmgiDQotI2luY2x1ZGUgInNlbXRlc3QuaCINCi0jaW5jbHVkZSAiZHluYW1pYy5oIg0KLSNpbmNsdWRlICJCbG9ja1EuaCINCi0jaW5jbHVkZSAiYmxvY2t0aW0uaCINCi0jaW5jbHVkZSAiY291bnRzZW0uaCINCi0jaW5jbHVkZSAiR2VuUVRlc3QuaCINCi0jaW5jbHVkZSAicmVjbXV0ZXguaCINCi0jaW5jbHVkZSAiZGVhdGguaCINCi0jaW5jbHVkZSAiZmxhc2hfdGltZXIuaCINCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLSNpbmNsdWRlICJVQVJUQ29tbWFuZENvbnNvbGUuaCINCi0NCi0vKiBQcmlvcml0aWVzIGZvciB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcy4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9QT0xMX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDJVTCApDQotI2RlZmluZSBtYWluU0VNX1RFU1RfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMVVMICkNCi0jZGVmaW5lIG1haW5CTE9DS19RX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDJVTCApDQotI2RlZmluZSBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgM1VMICkNCi0jZGVmaW5lIG1haW5GTE9QX1RBU0tfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICkNCi0NCi0vKiBBIGJsb2NrIHRpbWUgb2YgemVybyBzaW1wbHkgbWVhbnMgImRvbid0IGJsb2NrIi4gKi8NCi0jZGVmaW5lIG1haW5ET05UX0JMT0NLCQkJCQkJKCAwVUwgKQ0KLQ0KLS8qIFRoZSBwZXJpb2QgYWZ0ZXIgd2hpY2ggdGhlIGNoZWNrIHRpbWVyIHdpbGwgZXhwaXJlLCBpbiBtcywgcHJvdmlkZWQgbm8gZXJyb3JzDQotaGF2ZSBiZWVuIHJlcG9ydGVkIGJ5IGFueSBvZiB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gIG1zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlDQotZXF1aXZhbGVudCBpbiB0aWNrcyB1c2luZyB0aGUgcG9ydFRJQ0tfUEVSSU9EX01TIGNvbnN0YW50LiAqLw0KLSNkZWZpbmUgbWFpbkNIRUNLX1RJTUVSX1BFUklPRF9NUwkJCSggMzAwMFVMIC8gcG9ydFRJQ0tfUEVSSU9EX01TICkNCi0NCi0vKiBUaGUgcGVyaW9kIGF0IHdoaWNoIHRoZSBjaGVjayB0aW1lciB3aWxsIGV4cGlyZSwgaW4gbXMsIGlmIGFuIGVycm9yIGhhcyBiZWVuDQotcmVwb3J0ZWQgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLiAgbXMgYXJlIGNvbnZlcnRlZCB0byB0aGUgZXF1aXZhbGVudA0KLWluIHRpY2tzIHVzaW5nIHRoZSBwb3J0VElDS19QRVJJT0RfTVMgY29uc3RhbnQuICovDQotI2RlZmluZSBtYWluRVJST1JfQ0hFQ0tfVElNRVJfUEVSSU9EX01TIAkoIDIwMFVMIC8gcG9ydFRJQ0tfUEVSSU9EX01TICkNCi0NCi0vKiBUaGUgc3RhbmRhcmQgZGVtbyBmbGFzaCB0aW1lcnMgY2FuIGJlIHVzZWQgdG8gZmxhc2ggYW55IG51bWJlciBvZiBMRURzLiAgSW4NCi10aGlzIGNhc2UsIGJlY2F1c2Ugb25seSB0aHJlZSBMRURzIGFyZSBhdmFpbGFibGUsIGFuZCBvbmUgaXMgaW4gdXNlIGJ5IHRoZQ0KLWNoZWNrIHRpbWVyLCBvbmx5IHR3byBhcmUgdXNlZCBieSB0aGUgZmxhc2ggdGltZXJzLiAqLw0KLSNkZWZpbmUgbWFpbk5VTUJFUl9PRl9GTEFTSF9USU1FUlNfTEVEUwkJKCAxICkNCi0NCi0vKiBUaGUgTEVEIHRvZ2dsZWQgYnkgdGhlIGNoZWNrIHRpbWVyLiAgVGhlIGZpcnN0IHR3byBMRURzIGFyZSB0b2dnbGUgYnkgdGhlDQotc3RhbmRhcmQgZGVtbyBmbGFzaCB0aW1lcnMuICovDQotI2RlZmluZSBtYWluQ0hFQ0tfTEVECQkJCQkJKCAxICkNCi0NCi0vKiBUaGUgc2l6ZSBvZiB0aGUgc3RhY2sgYW5kIHRoZSBwcmlvcml0eSB1c2VkIGJ5IHRoZSBVQVJUIGNvbW1hbmQgY29uc29sZQ0KLXRhc2suICovDQotI2RlZmluZSBtYWluVUFSVF9DT01NQU5EX0NPTlNPTEVfU1RBQ0tfU0laRQkJKCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgKiAyICkNCi0jZGVmaW5lIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9UQVNLX1BSSU9SSVRZCSggdHNrSURMRV9QUklPUklUWSApDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBUaGUgY2hlY2sgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24sIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDaGVja1RpbWVyQ2FsbGJhY2soIFRpbWVySGFuZGxlX3QgeFRpbWVyICk7DQotDQotLyoNCi0gKiBSZWdpc3RlciBjb21tYW5kcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggRnJlZVJUT1MrQ0xJLiAgVGhlIGNvbW1hbmRzIGFyZQ0KLSAqIGRlZmluZWQgaW4gQ0xJLUNvbW1hbmRzLmMgYW5kIEZpbGUtUmVsYXRlZC1DTEktQ29tbWFuZC5jIHJlc3BlY3RpdmVseS4NCi0gKi8NCi1leHRlcm4gdm9pZCB2UmVnaXN0ZXJTYW1wbGVDTElDb21tYW5kcyggdm9pZCApOw0KLWV4dGVybiB2b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApOw0KLQ0KLS8qIFByZXBhcmUgdG8gcnVuIHRoZSBmdWxsIGRlbW86IENvbmZpZ3VyZSB0aGUgSU8sIHJlZ2lzdGVyIHRoZSBDTEkNCi0gKiBjb21tYW5kcywgYW5kIGRlcGVuZGluZyBvbiBjb25maWd1cmF0aW9uLCBnZW5lcmF0ZSBhIHNldCBvZiBzYW1wbGUgZmlsZXMgb24NCi0gKiBhIFJBTSBkaXNrLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlByZXBhcmVGb3JGdWxsRGVtbyggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlcyBhbmQgdmVyaWZpZXMgZGlmZmVyZW50IGZpbGVzIG9uIHRoZSB2b2x1bWUsIGRlbW9uc3RyYXRpbmcgdGhlIHVzZSBvZg0KLSAqIHZhcmlvdXMgZGlmZmVyZW50IEFQSSBmdW5jdGlvbnMuDQotICovDQotZXh0ZXJuIHZvaWQgdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCBtYWluX2Z1bGwoIHZvaWQgKQ0KLXsNCi1UaW1lckhhbmRsZV90IHhDaGVja1RpbWVyID0gTlVMTDsNCi0NCi0JLyogUHJlcGFyZSB0byBydW4gdGhlIGZ1bGwgZGVtbzogQ29uZmlndXJlIHRoZSBJTywgcmVnaXN0ZXIgdGhlIENMSQ0KLQljb21tYW5kcywgYW5kIGRlcGVuZGluZyBvbiBjb25maWd1cmF0aW9uLCBnZW5lcmF0ZSBhIHNldCBvZiBzYW1wbGUgZmlsZXMgb24NCi0JYSBSQU0gZGlzay4gKi8NCi0JcHJ2UHJlcGFyZUZvckZ1bGxEZW1vKCk7DQotDQotCS8qIFN0YXJ0IGFsbCB0aGUgb3RoZXIgc3RhbmRhcmQgZGVtby90ZXN0IHRhc2tzLiAgVGhlIGhhdmUgbm90IHBhcnRpY3VsYXINCi0JZnVuY3Rpb25hbGl0eSwgYnV0IGRvIGRlbW9uc3RyYXRlIGhvdyB0byB1c2UgdGhlIEZyZWVSVE9TIEFQSSBhbmQgdGVzdCB0aGUNCi0Ja2VybmVsIHBvcnQuICovDQotCXZTdGFydEludGVnZXJNYXRoVGFza3MoIHRza0lETEVfUFJJT1JJVFkgKTsNCi0JdlN0YXJ0RHluYW1pY1ByaW9yaXR5VGFza3MoKTsNCi0JdlN0YXJ0QmxvY2tpbmdRdWV1ZVRhc2tzKCBtYWluQkxPQ0tfUV9QUklPUklUWSApOw0KLQl2Q3JlYXRlQmxvY2tUaW1lVGFza3MoKTsNCi0JdlN0YXJ0Q291bnRpbmdTZW1hcGhvcmVUYXNrcygpOw0KLQl2U3RhcnRHZW5lcmljUXVldWVUYXNrcyggdHNrSURMRV9QUklPUklUWSApOw0KLQl2U3RhcnRSZWN1cnNpdmVNdXRleFRhc2tzKCk7DQotCXZTdGFydFBvbGxlZFF1ZXVlVGFza3MoIG1haW5RVUVVRV9QT0xMX1BSSU9SSVRZICk7DQotCXZTdGFydFNlbWFwaG9yZVRhc2tzKCBtYWluU0VNX1RFU1RfUFJJT1JJVFkgKTsNCi0JdlN0YXJ0TEVERmxhc2hUaW1lcnMoIG1haW5OVU1CRVJfT0ZfRkxBU0hfVElNRVJTX0xFRFMgKTsNCi0NCi0JLyogU3RhcnQgdGhlIHRhc2tzIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlIG9uIHRoZSBVQVJULCBhcw0KLQlkZXNjcmliZWQgYWJvdmUuICovDQotCXZVQVJUQ29tbWFuZENvbnNvbGVTdGFydCggbWFpblVBUlRfQ09NTUFORF9DT05TT0xFX1NUQUNLX1NJWkUsIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9UQVNLX1BSSU9SSVRZICk7DQotDQotCS8qIENyZWF0ZSB0aGUgc29mdHdhcmUgdGltZXIgdGhhdCBwZXJmb3JtcyB0aGUgJ2NoZWNrJyBmdW5jdGlvbmFsaXR5LA0KLQlhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuICovDQotCXhDaGVja1RpbWVyID0geFRpbWVyQ3JlYXRlKCAiQ2hlY2tUaW1lciIsCQkJCQkvKiBBIHRleHQgbmFtZSwgcHVyZWx5IHRvIGhlbHAgZGVidWdnaW5nLiAqLw0KLQkJCQkJCQkJKCBtYWluQ0hFQ0tfVElNRVJfUEVSSU9EX01TICksCS8qIFRoZSB0aW1lciBwZXJpb2QsIGluIHRoaXMgY2FzZSAzMDAwbXMgKDNzKS4gKi8NCi0JCQkJCQkJCXBkVFJVRSwJCQkJCQkJLyogVGhpcyBpcyBhbiBhdXRvLXJlbG9hZCB0aW1lciwgc28geEF1dG9SZWxvYWQgaXMgc2V0IHRvIHBkVFJVRS4gKi8NCi0JCQkJCQkJCSggdm9pZCAqICkgMCwJCQkJCS8qIFRoZSBJRCBpcyBub3QgdXNlZCwgc28gY2FuIGJlIHNldCB0byBhbnl0aGluZy4gKi8NCi0JCQkJCQkJCXBydkNoZWNrVGltZXJDYWxsYmFjawkJCS8qIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGluc3BlY3RzIHRoZSBzdGF0dXMgb2YgYWxsIHRoZSBvdGhlciB0YXNrcy4gKi8NCi0JCQkJCQkJICApOw0KLQ0KLQlpZiggeENoZWNrVGltZXIgIT0gTlVMTCApDQotCXsNCi0JCXhUaW1lclN0YXJ0KCB4Q2hlY2tUaW1lciwgbWFpbkRPTlRfQkxPQ0sgKTsNCi0JfQ0KLQ0KLQkvKiBUaGUgc2V0IG9mIHRhc2tzIGNyZWF0ZWQgYnkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYWxsIGhhdmUgdG8gYmUNCi0JY3JlYXRlZCBsYXN0IGFzIHRoZXkga2VlcCBhY2NvdW50IG9mIHRoZSBudW1iZXIgb2YgdGFza3MgdGhleSBleHBlY3QgdG8gc2VlDQotCXJ1bm5pbmcuICovDQotCXZDcmVhdGVTdWljaWRhbFRhc2tzKCBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZICk7DQotDQotCS8qIFN0YXJ0IHRoZSBzY2hlZHVsZXIuICovDQotCXZUYXNrU3RhcnRTY2hlZHVsZXIoKTsNCi0NCi0JLyogSWYgYWxsIGlzIHdlbGwsIHRoZSBzY2hlZHVsZXIgd2lsbCBub3cgYmUgcnVubmluZywgYW5kIHRoZSBmb2xsb3dpbmcgbGluZQ0KLQl3aWxsIG5ldmVyIGJlIHJlYWNoZWQuICBJZiB0aGUgZm9sbG93aW5nIGxpbmUgZG9lcyBleGVjdXRlLCB0aGVuIHRoZXJlIHdhcw0KLQlpbnN1ZmZpY2llbnQgRnJlZVJUT1MgaGVhcCBtZW1vcnkgYXZhaWxhYmxlIGZvciB0aGUgaWRsZSBhbmQvb3IgdGltZXIgdGFza3MNCi0JdG8gYmUgY3JlYXRlZC4gIFNlZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc2VjdGlvbiBvbiB0aGUgRnJlZVJUT1Mgd2ViIHNpdGUNCi0JZm9yIG1vcmUgZGV0YWlscy4gKi8NCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDaGVja1RpbWVyQ2FsbGJhY2soIFRpbWVySGFuZGxlX3QgeFRpbWVyICkNCi17DQotc3RhdGljIGxvbmcgbENoYW5nZWRUaW1lclBlcmlvZEFscmVhZHkgPSBwZEZBTFNFOw0KLXVuc2lnbmVkIGxvbmcgdWxFcnJvckZvdW5kID0gcGRGQUxTRTsNCi0NCi0JLyogQ2hlY2sgYWxsIHRoZSBkZW1vIHRhc2tzIChvdGhlciB0aGFuIHRoZSBmbGFzaCB0YXNrcykgdG8gZW5zdXJlDQotCXRoZXkgYXJlIGFsbCBzdGlsbCBydW5uaW5nLCBhbmQgdGhhdCBub25lIGhhdmUgZGV0ZWN0ZWQgYW4gZXJyb3IuICovDQotCWlmKCB4QXJlSW50ZWdlck1hdGhzVGFza1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCXsNCi0JCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JfQ0KLQ0KLQlpZiggeEFyZUR5bmFtaWNQcmlvcml0eVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmKCB4QXJlQmxvY2tpbmdRdWV1ZXNTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQl7DQotCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCX0NCi0NCi0JaWYgKCB4QXJlQmxvY2tUaW1lVGVzdFRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmICggeEFyZUdlbmVyaWNRdWV1ZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmICggeEFyZVJlY3Vyc2l2ZU11dGV4VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQl7DQotCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCX0NCi0NCi0JaWYoIHhJc0NyZWF0ZVRhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQl7DQotCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCX0NCi0NCi0JaWYoIHhBcmVQb2xsaW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmKCB4QXJlU2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQl7DQotCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCX0NCi0NCi0JLyogVG9nZ2xlIHRoZSBjaGVjayBMRUQgdG8gZ2l2ZSBhbiBpbmRpY2F0aW9uIG9mIHRoZSBzeXN0ZW0gc3RhdHVzLiAgSWYNCi0JdGhlIExFRCB0b2dnbGVzIGV2ZXJ5IG1haW5DSEVDS19USU1FUl9QRVJJT0RfTVMgbWlsbGlzZWNvbmRzIHRoZW4NCi0JZXZlcnl0aGluZyBpcyBvay4gIEEgZmFzdGVyIHRvZ2dsZSBpbmRpY2F0ZXMgYW4gZXJyb3IuICovDQotCXZQYXJUZXN0VG9nZ2xlTEVEKCBtYWluQ0hFQ0tfTEVEICk7DQotDQotCS8qIEhhdmUgYW55IGVycm9ycyBiZWVuIGxhdGNoIGluIHVsRXJyb3JGb3VuZD8gIElmIHNvLCBzaG9ydGVuIHRoZQ0KLQlwZXJpb2Qgb2YgdGhlIGNoZWNrIHRpbWVyIHRvIG1haW5FUlJPUl9DSEVDS19USU1FUl9QRVJJT0RfTVMgbWlsbGlzZWNvbmRzLg0KLQlUaGlzIHdpbGwgcmVzdWx0IGluIGFuIGluY3JlYXNlIGluIHRoZSByYXRlIGF0IHdoaWNoIG1haW5DSEVDS19MRUQNCi0JdG9nZ2xlcy4gKi8NCi0JaWYoIHVsRXJyb3JGb3VuZCAhPSBwZEZBTFNFICkNCi0Jew0KLQkJaWYoIGxDaGFuZ2VkVGltZXJQZXJpb2RBbHJlYWR5ID09IHBkRkFMU0UgKQ0KLQkJew0KLQkJCWxDaGFuZ2VkVGltZXJQZXJpb2RBbHJlYWR5ID0gcGRUUlVFOw0KLQ0KLQkJCS8qIFRoaXMgY2FsbCB0byB4VGltZXJDaGFuZ2VQZXJpb2QoKSB1c2VzIGEgemVybyBibG9jayB0aW1lLg0KLQkJCUZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBpbnNpZGUgb2YgYSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBtdXN0DQotCQkJKm5ldmVyKiBhdHRlbXB0CXRvIGJsb2NrLiAqLw0KLQkJCXhUaW1lckNoYW5nZVBlcmlvZCggeFRpbWVyLCAoIG1haW5FUlJPUl9DSEVDS19USU1FUl9QRVJJT0RfTVMgKSwgbWFpbkRPTlRfQkxPQ0sgKTsNCi0JCX0NCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZQcmVwYXJlRm9yRnVsbERlbW8oIHZvaWQgKQ0KLXsNCi0JLyogSWYgdGhlIGZpbGUgc3lzdGVtIGlzIG9ubHkgZ29pbmcgdG8gYmUgYWNjZXNzZWQgZnJvbSBvbmUgdGFzayB0aGVuDQotCUZfRlNfVEhSRUFEX0FXQVJFIGNhbiBiZSBzZXQgdG8gMCBhbmQgdGhlIHNldCBvZiBleGFtcGxlIGZpbGVzIGFyZSBjcmVhdGVkDQotCWJlZm9yZSB0aGUgUlRPUyBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBnb2luZyB0byBiZQ0KLQlhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2sgdGhlbiBGX0ZTX1RIUkVBRF9BV0FSRSBtdXN0IGJlIHNldCB0byAxIGFuZA0KLQl0aGUJc2V0IG9mIHNhbXBsZSBmaWxlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSBpZGxlIHRhc2sgaG9vayBmdW5jdGlvbg0KLQl2QXBwbGljYXRpb25JZGxlSG9vaygpIC0gd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGlzIGZpbGUuICovDQotCSNpZiBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAwDQotCXsNCi0JCS8qIEluaXRpYWxpc2UgdGhlIGRyaXZlIGFuZCBmaWxlIHN5c3RlbSwgdGhlbiBjcmVhdGUgYSBmZXcgZXhhbXBsZQ0KLQkJZmlsZXMuICBUaGUgb3V0cHV0IGZyb20gdGhpcyBmdW5jdGlvbiBqdXN0IGdvZXMgdG8gdGhlIHN0ZG91dCB3aW5kb3csDQotCQlhbGxvd2luZyB0aGUgb3V0cHV0IHRvIGJlIHZpZXdlZCB3aGVuIHRoZSBVRFAgY29tbWFuZCBjb25zb2xlIGlzIG5vdA0KLQkJY29ubmVjdGVkLiAqLw0KLQkJdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCk7DQotCX0NCi0JI2VuZGlmDQotDQotCS8qIFJlZ2lzdGVyIGJvdGggdGhlIHN0YW5kYXJkIGFuZCBmaWxlIHN5c3RlbSByZWxhdGVkIENMSSBjb21tYW5kcy4gKi8NCi0JdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoKTsNCi0JdlJlZ2lzdGVyRmlsZVN5c3RlbUNMSUNvbW1hbmRzKCk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9QYXJUZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjkwODkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9QYXJUZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KLSAqIFRoaXMgZmlsZSBpcyBjYWxsZWQgUGFyVGVzdC5jIGZvciBoaXN0b3JpYyByZWFzb25zLiAgT3JpZ2luYWxseSBpdCBzdG9vZCBmb3INCi0gKiBQQVJhbGxlbCBwb3J0IFRFU1QuDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogRGVtbyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLQ0KLS8qIExpYnJhcnkgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgImRyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uaCINCi0jaW5jbHVkZSAiQ01TSVMvc3lzdGVtX20yc3h4eC5oIg0KLQ0KLSNkZWZpbmUgcGFydHN0TlVNX0xFRFMJMg0KLQ0KLS8qIFJlbWVtYmVyIHRoZSBzdGF0ZSBvZiB0aGUgb3V0cHV0cyBmb3IgZWFzeSB0b2dnbGluZy4gKi8NCi1zdGF0aWMgdW5zaWduZWQgY2hhciB1Y1BvcnRTdGF0ZSA9IDA7DQotDQotI2lmIGNvbmZpZ0JVSUxEX0ZPUl9ERVZFTE9QTUVOVF9LSVQgPT0gMQ0KLQlzdGF0aWMgY29uc3QgbXNzX2dwaW9faWRfdCB1Y0xFRHNbIHBhcnRzdE5VTV9MRURTIF0gPSB7IE1TU19HUElPXzE0LCBNU1NfR1BJT18xNSB9Ow0KLSNlbHNlDQotCXN0YXRpYyBjb25zdCBtc3NfZ3Bpb19pZF90IHVjTEVEc1sgcGFydHN0TlVNX0xFRFMgXSA9IHsgTVNTX0dQSU9fMCwgTVNTX0dQSU9fMSB9Ow0KLSNlbmRpZg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlBhclRlc3RJbml0aWFsaXNlKCB2b2lkICkNCi17DQotbG9uZyB4Ow0KLQ0KLQkvKiBJbml0aWFsaXNlIE1TUyBHUElPcy4gKi8NCi0gICAgTVNTX0dQSU9faW5pdCgpOw0KLQ0KLSAgICAvKiBFbnN1cmUgdGhlIExFRHMgYXJlIG91dHB1dHMgYW5kIG9mZiB0byBzdGFydC4gKi8NCi0gICAgZm9yKCB4ID0gMDsgeCA8IHBhcnRzdE5VTV9MRURTOyB4KysgKQ0KLSAgICB7DQotICAgIAlNU1NfR1BJT19jb25maWcoIHVjTEVEc1sgeCBdLCBNU1NfR1BJT19PVVRQVVRfTU9ERSApOw0KLSAgICAJdlBhclRlc3RTZXRMRUQoIHgsIHBkRkFMU0UgKTsNCi0gICAgfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZQYXJUZXN0U2V0TEVEKCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFIHV4TEVELCBzaWduZWQgcG9ydEJBU0VfVFlQRSB4VmFsdWUgKQ0KLXsNCi0JaWYoIHV4TEVEIDwgcGFydHN0TlVNX0xFRFMgKQ0KLQl7DQotCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCi0JCXsNCi0JCQlNU1NfR1BJT19zZXRfb3V0cHV0KCB1Y0xFRHNbIHV4TEVEIF0sIHhWYWx1ZSApOw0KLQ0KLQkJCS8qIFJlbWVtYmVyIHRoZSBuZXcgb3V0cHV0IHN0YXRlLiAqLw0KLQkJCWlmKCB4VmFsdWUgPT0gMCApDQotCQkJew0KLQkJCQl1Y1BvcnRTdGF0ZSAmPSB+KCAxIDw8IHV4TEVEICk7DQotCQkJfQ0KLQkJCWVsc2UNCi0JCQl7DQotCQkJCXVjUG9ydFN0YXRlIHw9ICggMSA8PCB1eExFRCApOw0KLQkJCX0NCi0JCX0NCi0JCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UGFyVGVzdFRvZ2dsZUxFRCggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eExFRCApDQotew0KLQlpZiggdXhMRUQgPCBwYXJ0c3ROVU1fTEVEUyApDQotCXsNCi0JCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KLQkJew0KLQkJCXZQYXJUZXN0U2V0TEVEKCB1eExFRCwgISggdWNQb3J0U3RhdGUgJiAoIDEgPDwgdXhMRUQgKSApICk7DQotCQl9DQotCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLQl9DQotfQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vUnVuVGltZVN0YXRzVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vUnVuVGltZVN0YXRzVGltZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyY2ZmNC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotDQotLyogVXRpbGl0eSBmdW5jdGlvbnMgdG8gaW1wbGVtZW50IHJ1biB0aW1lIHN0YXRzIG9uIENvcnRleC1NIENQVXMuICBUaGUgY29sbGVjdGVkDQotcnVuIHRpbWUgZGF0YSBjYW4gYmUgdmlld2VkIHRocm91Z2ggdGhlIENMSSBpbnRlcmZhY2UuICBTZWUgdGhlIGZvbGxvd2luZyBVUkwgZm9yDQotbW9yZSBpbmZvcm1hdGlvbiBvbiBydW4gdGltZSBzdGF0czoNCi1odHRwOi8vd3d3LmZyZWVydG9zLm9yZy9ydG9zLXJ1bi10aW1lLXN0YXRzLmh0bWwgKi8NCi0NCi0vKiBBZGRyZXNzZXMgb2YgcmVnaXN0ZXJzIGluIHRoZSBDb3J0ZXgtTSBkZWJ1ZyBoYXJkd2FyZS4gKi8NCi0jZGVmaW5lIHJ0c0RXVF9DWUNDTlQgCQkJKCAqKCAoIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiApIDB4RTAwMDEwMDQgKSApDQotI2RlZmluZSBydHNEV1RfQ09OVFJPTCAJCQkoICooICggdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqICkgMHhFMDAwMTAwMCApICkNCi0jZGVmaW5lIHJ0c1NDQl9ERU1DUiAJCQkoICooICggdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqICkgMHhFMDAwRURGQyApICkNCi0jZGVmaW5lIHJ0c1RSQ0VOQV9CSVQJCQkoIDB4MDEwMDAwMDBVTCApDQotI2RlZmluZSBydHNDT1VOVEVSX0VOQUJMRV9CSVQJKCAweDAxVUwgKQ0KLQ0KLS8qIFNpbXBsZSBzaGlmdCBkaXZpZGUgZm9yIHNjYWxpbmcgdG8gYXZvaWQgYW4gb3ZlcmZsb3cgb2NjdXJyaW5nIHRvbyBzb29uLiAgVGhlDQotbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgZGVwZW5kcyBvbiB0aGUgY2xvY2sgc3BlZWQuICovDQotI2RlZmluZSBydW50aW1lU0xPV0VSX0NMT0NLX1NQRUVEUwkoIDcwMDAwMDAwVUwgKQ0KLSNkZWZpbmUgcnVudGltZVNISUZUXzEzCQkJCTEzDQotI2RlZmluZSBydW50aW1lT1ZFUkZMT1dfQklUXzEzCQkoIDFVTCA8PCAoIDMyVUwgLSBydW50aW1lU0hJRlRfMTMgKSApDQotI2RlZmluZSBydW50aW1lU0hJRlRfMTQJCQkJMTQNCi0jZGVmaW5lIHJ1bnRpbWVPVkVSRkxPV19CSVRfMTQJCSggMVVMIDw8ICggMzJVTCAtIHJ1bnRpbWVTSElGVF8xNCApICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZDb25maWd1cmVUaW1lckZvclJ1blRpbWVTdGF0cyggdm9pZCApDQotew0KLQkvKiBFbmFibGUgVFJDRU5BLiAqLw0KLQlydHNTQ0JfREVNQ1IgPSBydHNTQ0JfREVNQ1IgfCBydHNUUkNFTkFfQklUOw0KLQ0KLQkvKiBSZXNldCBjb3VudGVyLiAqLw0KLQlydHNEV1RfQ1lDQ05UID0gMDsNCi0NCi0JLyogRW5hYmxlIGNvdW50ZXIuICovDQotCXJ0c0RXVF9DT05UUk9MID0gcnRzRFdUX0NPTlRST0wgfCBydHNDT1VOVEVSX0VOQUJMRV9CSVQ7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXVpbnQzMl90IHVsR2V0UnVuVGltZUNvdW50ZXJWYWx1ZSggdm9pZCApDQotew0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHVsTGFzdENvdW50ZXJWYWx1ZSA9IDBVTCwgdWxPdmVyZmxvd3MgPSAwOw0KLXVuc2lnbmVkIGxvbmcgdWxWYWx1ZU5vdzsNCi0NCi0JdWxWYWx1ZU5vdyA9IHJ0c0RXVF9DWUNDTlQ7DQotDQotCS8qIEhhcyB0aGUgdmFsdWUgb3ZlcmZsb3dlZCBzaW5jZSBpdCB3YXMgbGFzdCByZWFkLiAqLw0KLQlpZiggdWxWYWx1ZU5vdyA8IHVsTGFzdENvdW50ZXJWYWx1ZSApDQotCXsNCi0JCXVsT3ZlcmZsb3dzKys7DQotCX0NCi0JdWxMYXN0Q291bnRlclZhbHVlID0gdWxWYWx1ZU5vdzsNCi0NCi0JLyogQ2Fubm90IHVzZSBjb25maWdDUFVfQ0xPQ0tfSFogZGlyZWN0bHkgYXMgaXQgbWF5IGl0c2VsZiBub3QgYmUgYSBjb25zdGFudA0KLQlidXQgaW5zdGVhZCBtYXAgdG8gYSB2YXJpYWJsZSB0aGF0IGhvbGRzIHRoZSBjbG9jayBzcGVlZC4gKi8NCi0NCi0JLyogVGhlcmUgaXMgbm8gcHJlc2NhbGUgb24gdGhlIGNvdW50ZXIsIHNvIHNpbXVsYXRlIGluIHNvZnR3YXJlLiAqLw0KLQlpZiggY29uZmlnQ1BVX0NMT0NLX0haIDwgcnVudGltZVNMT1dFUl9DTE9DS19TUEVFRFMgKQ0KLQl7DQotCQl1bFZhbHVlTm93ID4+PSBydW50aW1lU0hJRlRfMTM7DQotCQl1bFZhbHVlTm93ICs9ICggcnVudGltZU9WRVJGTE9XX0JJVF8xMyAqIHVsT3ZlcmZsb3dzICk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQl1bFZhbHVlTm93ID4+PSBydW50aW1lU0hJRlRfMTQ7DQotCQl1bFZhbHVlTm93ICs9ICggcnVudGltZU9WRVJGTE9XX0JJVF8xNCAqIHVsT3ZlcmZsb3dzICk7DQotCX0NCi0NCi0JcmV0dXJuIHVsVmFsdWVOb3c7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9tYWluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjODRlNGMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9tYWluLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCi0gKiBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KLSAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIChkZWZpbmVkIGluIEZyZWVSVE9TQ29uZmlnLmgpIGlzDQotICogdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvLiAgVGhlIHNpbXBseSBibGlua3kgZGVtbyBpcyBpbXBsZW1lbnRlZCBhbmQNCi0gKiBkZXNjcmliZWQgaW4gbWFpbl9ibGlua3kuYy4gIFRoZSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbg0KLSAqIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4gbWFpbl9mdWxsLmMuDQotICoNCi0gKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgY29kZSB0aGF0IGlzIG5vdCBkZW1vIHNwZWNpZmljLCBpbmNsdWRpbmcgdGhlDQotICogaGFyZHdhcmUgc2V0dXAgYW5kIEZyZWVSVE9TIGhvb2sgZnVuY3Rpb25zLg0KLSAqDQotICovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotDQotLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogU3RhbmRhcmQgZGVtbyBpbmNsdWRlcyAtIGp1c3QgbmVlZGVkIGZvciB0aGUgTEVEIChQYXJUZXN0KSBpbml0aWFsaXNhdGlvbg0KLWZ1bmN0aW9uLiAqLw0KLSNpbmNsdWRlICJwYXJ0ZXN0LmgiDQotDQotLyoNCi0gKiBTZXQgdXAgdGhlIGhhcmR3YXJlIHJlYWR5IHRvIHJ1biB0aGlzIGRlbW8uDQotICovDQotc3RhdGljIHZvaWQgcHJ2U2V0dXBIYXJkd2FyZSggdm9pZCApOw0KLQ0KLS8qDQotICogbWFpbl9ibGlua3koKSBpcyB1c2VkIHdoZW4gY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAxLg0KLSAqIG1haW5fZnVsbCgpIGlzIHVzZWQgd2hlbiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgc2V0IHRvIDAuDQotICovDQotZXh0ZXJuIHZvaWQgbWFpbl9ibGlua3koIHZvaWQgKTsNCi1leHRlcm4gdm9pZCBtYWluX2Z1bGwoIHZvaWQgKTsNCi0NCi0vKiBQcm90b3R5cGVzIGZvciB0aGUgc3RhbmRhcmQgRnJlZVJUT1MgY2FsbGJhY2svaG9vayBmdW5jdGlvbnMgaW1wbGVtZW50ZWQNCi13aXRoaW4gdGhpcyBmaWxlLiAqLw0KLXZvaWQgdkFwcGxpY2F0aW9uTWFsbG9jRmFpbGVkSG9vayggdm9pZCApOw0KLXZvaWQgdkFwcGxpY2F0aW9uSWRsZUhvb2soIHZvaWQgKTsNCi12b2lkIHZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCBUYXNrSGFuZGxlX3QgcHhUYXNrLCBjaGFyICpwY1Rhc2tOYW1lICk7DQotdm9pZCB2QXBwbGljYXRpb25UaWNrSG9vayggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gb24gdGhlIEZyZWVSVE9TLm9yZyB3ZWIgc2l0ZSBmb3INCi1mdWxsIGluZm9ybWF0aW9uIC0gaW5jbHVkaW5nIGhhcmR3YXJlIHNldHVwIHJlcXVpcmVtZW50cy4gKi8NCi0NCi1pbnQgbWFpbiggdm9pZCApDQotew0KLQkvKiBQcmVwYXJlIHRoZSBoYXJkd2FyZSB0byBydW4gdGhpcyBkZW1vLiAqLw0KLQlwcnZTZXR1cEhhcmR3YXJlKCk7DQotDQotCS8qIFRoZSBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgc2V0dGluZyBpcyBkZXNjcmliZWQgYXQgdGhlIHRvcA0KLQlvZiB0aGlzIGZpbGUuICovDQotCSNpZiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgPT0gMQ0KLQl7DQotCQltYWluX2JsaW5reSgpOw0KLQl9DQotCSNlbHNlDQotCXsNCi0JCW1haW5fZnVsbCgpOw0KLQl9DQotCSNlbmRpZg0KLQ0KLQlyZXR1cm4gMDsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2U2V0dXBIYXJkd2FyZSggdm9pZCApDQotew0KLQkvKiBQZXJmb3JtIGFueSBjb25maWd1cmF0aW9uIG5lY2Vzc2FyeSB0byB1c2UgdGhlIFBhclRlc3QgTEVEIG91dHB1dA0KLQlmdW5jdGlvbnMuICBUaGUgbmFtZSBQYXJUZXN0IGlzIG5vdyBzb21ld2hhdCBvYnNvbGV0ZSAtIG9yaWdpbmFsbHkgaXQNCi0Jc3Rvb2QgZm9yIFBBUmFsbGVsIHBvcnQgVGVzdC4gKi8NCi0JdlBhclRlc3RJbml0aWFsaXNlKCk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdkFwcGxpY2F0aW9uTWFsbG9jRmFpbGVkSG9vayggdm9pZCApDQotew0KLQkvKiB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZg0KLQljb25maWdVU0VfTUFMTE9DX0ZBSUxFRF9IT09LIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBJdCBpcyBhIGhvb2sNCi0JZnVuY3Rpb24gdGhhdCB3aWxsIGdldCBjYWxsZWQgaWYgYSBjYWxsIHRvIHB2UG9ydE1hbGxvYygpIGZhaWxzLg0KLQlwdlBvcnRNYWxsb2MoKSBpcyBjYWxsZWQgaW50ZXJuYWxseSBieSB0aGUga2VybmVsIHdoZW5ldmVyIGEgdGFzaywgcXVldWUsDQotCXRpbWVyIG9yIHNlbWFwaG9yZSBpcyBjcmVhdGVkLiAgSXQgaXMgYWxzbyBjYWxsZWQgYnkgdmFyaW91cyBwYXJ0cyBvZiB0aGUNCi0JZGVtbyBhcHBsaWNhdGlvbi4gIElmIGhlYXBfMS5jIG9yIGhlYXBfMi5jIGFyZSB1c2VkLCB0aGVuIHRoZSBzaXplIG9mIHRoZQ0KLQloZWFwIGF2YWlsYWJsZSB0byBwdlBvcnRNYWxsb2MoKSBpcyBkZWZpbmVkIGJ5IGNvbmZpZ1RPVEFMX0hFQVBfU0laRSBpbg0KLQlGcmVlUlRPU0NvbmZpZy5oLCBhbmQgdGhlIHhQb3J0R2V0RnJlZUhlYXBTaXplKCkgQVBJIGZ1bmN0aW9uIGNhbiBiZSB1c2VkDQotCXRvIHF1ZXJ5IHRoZSBzaXplIG9mIGZyZWUgaGVhcCBzcGFjZSB0aGF0IHJlbWFpbnMgKGFsdGhvdWdoIGl0IGRvZXMgbm90DQotCXByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRoZSByZW1haW5pbmcgaGVhcCBtaWdodCBiZSBmcmFnbWVudGVkKS4gKi8NCi0JdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOw0KLQlmb3IoIDs7ICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdkFwcGxpY2F0aW9uSWRsZUhvb2soIHZvaWQgKQ0KLXsNCi0JLyogdkFwcGxpY2F0aW9uSWRsZUhvb2soKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGNvbmZpZ1VTRV9JRExFX0hPT0sgaXMgc2V0DQotCXRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIEl0IHdpbGwgYmUgY2FsbGVkIG9uIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBpZGxlDQotCXRhc2suICBJdCBpcyBlc3NlbnRpYWwgdGhhdCBjb2RlIGFkZGVkIHRvIHRoaXMgaG9vayBmdW5jdGlvbiBuZXZlciBhdHRlbXB0cw0KLQl0byBibG9jayBpbiBhbnkgd2F5IChmb3IgZXhhbXBsZSwgY2FsbCB4UXVldWVSZWNlaXZlKCkgd2l0aCBhIGJsb2NrIHRpbWUNCi0Jc3BlY2lmaWVkLCBvciBjYWxsIHZUYXNrRGVsYXkoKSkuICBJZiB0aGUgYXBwbGljYXRpb24gbWFrZXMgdXNlIG9mIHRoZQ0KLQl2VGFza0RlbGV0ZSgpIEFQSSBmdW5jdGlvbiAoYXMgdGhpcyBkZW1vIGFwcGxpY2F0aW9uIGRvZXMpIHRoZW4gaXQgaXMgYWxzbw0KLQlpbXBvcnRhbnQgdGhhdCB2QXBwbGljYXRpb25JZGxlSG9vaygpIGlzIHBlcm1pdHRlZCB0byByZXR1cm4gdG8gaXRzIGNhbGxpbmcNCi0JZnVuY3Rpb24sIGJlY2F1c2UgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpZGxlIHRhc2sgdG8gY2xlYW4gdXANCi0JbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUga2VybmVsIHRvIGFueSB0YXNrIHRoYXQgaGFzIHNpbmNlIGJlZW4gZGVsZXRlZC4gKi8NCi0NCi0JI2lmIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSAhPSAxDQotCXsNCi0JCS8qIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBvbmx5IGdvaW5nIHRvIGJlIGFjY2Vzc2VkIGZyb20gb25lIHRhc2sgdGhlbg0KLQkJRl9GU19USFJFQURfQVdBUkUgY2FuIGJlIHNldCB0byAwIGFuZCB0aGUgc2V0IG9mIGV4YW1wbGUgZmlsZXMgaXMgY3JlYXRlZA0KLQkJYmVmb3JlIHRoZSBSVE9TIHNjaGVkdWxlciBpcyBzdGFydGVkLiAgSWYgdGhlIGZpbGUgc3lzdGVtIGlzIGdvaW5nIHRvIGJlDQotCQlhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2sgdGhlbiBGX0ZTX1RIUkVBRF9BV0FSRSBtdXN0IGJlIHNldCB0byAxIGFuZA0KLQkJdGhlCXNldCBvZiBzYW1wbGUgZmlsZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgaWRsZSB0YXNrIGhvb2sgZnVuY3Rpb24uICovDQotCQkjaWYgRl9GU19USFJFQURfQVdBUkUgPT0gMQ0KLQkJew0KLQkJCXN0YXRpYyBwb3J0QkFTRV9UWVBFIHhDcmVhdGVkU2FtcGxlRmlsZXMgPSBwZEZBTFNFOw0KLQ0KLQkJCS8qIEluaXRpYWxpc2UgdGhlIGRyaXZlIGFuZCBmaWxlIHN5c3RlbSwgdGhlbiBjcmVhdGUgYSBmZXcgZXhhbXBsZQ0KLQkJCWZpbGVzLiAgVGhlIG91dHB1dCBmcm9tIHRoaXMgZnVuY3Rpb24ganVzdCBnb2VzIHRvIHRoZSBzdGRvdXQgd2luZG93LA0KLQkJCWFsbG93aW5nIHRoZSBvdXRwdXQgdG8gYmUgdmlld2VkIHdoZW4gdGhlIFVEUCBjb21tYW5kIGNvbnNvbGUgaXMgbm90DQotCQkJY29ubmVjdGVkLiAqLw0KLQkJCWlmKCB4Q3JlYXRlZFNhbXBsZUZpbGVzID09IHBkRkFMU0UgKQ0KLQkJCXsNCi0JCQkJdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCk7DQotCQkJCXhDcmVhdGVkU2FtcGxlRmlsZXMgPSBwZFRSVUU7DQotCQkJfQ0KLQkJfQ0KLQkJI2VuZGlmDQotCX0NCi0JI2VuZGlmDQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soIFRhc2tIYW5kbGVfdCBweFRhc2ssIGNoYXIgKnBjVGFza05hbWUgKQ0KLXsNCi0JKCB2b2lkICkgcGNUYXNrTmFtZTsNCi0JKCB2b2lkICkgcHhUYXNrOw0KLQ0KLQkvKiBSdW4gdGltZSBzdGFjayBvdmVyZmxvdyBjaGVja2luZyBpcyBwZXJmb3JtZWQgaWYNCi0JY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XIGlzIGRlZmluZWQgdG8gMSBvciAyLiAgVGhpcyBob29rDQotCWZ1bmN0aW9uIGlzIGNhbGxlZCBpZiBhIHN0YWNrIG92ZXJmbG93IGlzIGRldGVjdGVkLiAqLw0KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2QXBwbGljYXRpb25UaWNrSG9vayggdm9pZCApDQotew0KLQkvKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IGVhY2ggdGljayBpbnRlcnJ1cHQgaWYNCi0JY29uZmlnVVNFX1RJQ0tfSE9PSyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgVXNlciBjb2RlIGNhbiBiZQ0KLQlhZGRlZCBoZXJlLCBidXQgdGhlIHRpY2sgaG9vayBpcyBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgY29udGV4dCwgc28NCi0JY29kZSBtdXN0IG5vdCBhdHRlbXB0IHRvIGJsb2NrLCBhbmQgb25seSB0aGUgaW50ZXJydXB0IHNhZmUgRnJlZVJUT1MgQVBJDQotCWZ1bmN0aW9ucyBjYW4gYmUgdXNlZCAodGhvc2UgdGhhdCBlbmQgaW4gRnJvbUlTUigpKS4gKi8NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS8uY3Byb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLy5jcHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcwZjVjOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLy5jcHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4NCi08P2ZpbGVWZXJzaW9uIDQuMC4wPz4NCi0NCi08Y3Byb2plY3Qgc3RvcmFnZV90eXBlX2lkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5YbWxQcm9qZWN0RGVzY3JpcHRpb25TdG9yYWdlIj4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiPg0KLTxjY29uZmlndXJhdGlvbiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNDY4NTY1ODUzIj4NCi08c3RvcmFnZU1vZHVsZSBidWlsZFN5c3RlbUlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5jb25maWd1cmF0aW9uRGF0YVByb3ZpZGVyIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNDY4NTY1ODUzIiBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuc2V0dGluZ3MiIG5hbWU9IkRlYnVnIj4NCi08ZXh0ZXJuYWxTZXR0aW5ncz4NCi08ZXh0ZXJuYWxTZXR0aW5nPg0KLTxlbnRyeSBmbGFncz0iVkFMVUVfV09SS1NQQUNFX1BBVEgiIGtpbmQ9ImluY2x1ZGVQYXRoIiBuYW1lPSIvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0iLz4NCi08ZW50cnkgZmxhZ3M9IlZBTFVFX1dPUktTUEFDRV9QQVRIIiBraW5kPSJsaWJyYXJ5UGF0aCIgbmFtZT0iL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0RlYnVnIi8+DQotPC9leHRlcm5hbFNldHRpbmc+DQotPC9leHRlcm5hbFNldHRpbmdzPg0KLTxleHRlbnNpb25zPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVMRiIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkJpbmFyeVBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLk1ha2VFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0NDRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkdBU0Vycm9yUGFyc2VyIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRXJyb3JQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HTERFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPC9leHRlbnNpb25zPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0iY2R0QnVpbGRTeXN0ZW0iIHZlcnNpb249IjQuMC4wIj4NCi08Y29uZmlndXJhdGlvbiBhcnRpZmFjdEV4dGVuc2lvbj0iYSIgYXJ0aWZhY3ROYW1lPSJSVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybSIgYnVpbGRBcnRlZmFjdFR5cGU9Im9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlLnN0YXRpY0xpYiIgYnVpbGRQcm9wZXJ0aWVzPSJvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlLmRlYnVnLG9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlPW9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlLnN0YXRpY0xpYiIgY2xlYW5Db21tYW5kPSJybSAtcmYiIGRlc2NyaXB0aW9uPSIiIGVycm9yUGFyc2Vycz0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuTWFrZUVycm9yUGFyc2VyO29yZy5lY2xpcHNlLmNkdC5jb3JlLkdDQ0Vycm9yUGFyc2VyO29yZy5lY2xpcHNlLmNkdC5jb3JlLkdMREVycm9yUGFyc2VyO29yZy5lY2xpcHNlLmNkdC5jb3JlLkdBU0Vycm9yUGFyc2VyIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNDY4NTY1ODUzIiBuYW1lPSJEZWJ1ZyIgcGFyZW50PSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnIj4NCi08Zm9sZGVySW5mbyBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNDY4NTY1ODUzLiIgbmFtZT0iLyIgcmVzb3VyY2VQYXRoPSIiPg0KLTx0b29sQ2hhaW4gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuNDA5NjQwMDA1IiBuYW1lPSJNaWNyb3NlbWkgQ29ydGV4LU0zIFRvb2xzIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnIj4NCi08dGFyZ2V0UGxhdGZvcm0gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMzI4OTcwOTczIiBuYW1lPSIlUGxhdGZvcm1OYW1lLkRiZyIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LnBsYXRmb3JtLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyIvPg0KLTxidWlsZGVyIGJ1aWxkUGF0aD0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9EZWJ1Z30iIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUuYnVpbGRlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuNTY4MDcyMTk5IiBrZWVwRW52aXJvbm1lbnRJbkJ1aWxkZmlsZT0iZmFsc2UiIG1hbmFnZWRCdWlsZE9uPSJ0cnVlIiBuYW1lPSJHbnUgTWFrZSBCdWlsZGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUuYnVpbGRlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4yMDY1ODE5OTI3IiBuYW1lPSJHTlUgQyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyI+DQotPG9wdGlvbiBkZWZhdWx0VmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiBpZD0iZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuNjgxNDg5NjExIiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGRlZmF1bHRWYWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIGlkPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC4xNjgyMDgwOTUxIiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwiIHZhbHVlPSJnbnUuYy5kZWJ1Z2dpbmcubGV2ZWwubWF4IiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGlkPSJnbnUuYy5jb21waWxlci5vcHRpb24uaW5jbHVkZS5wYXRocy4xMzk4NjQ4NTIwIiBuYW1lPSJJbmNsdWRlIHBhdGhzICgtSSkiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5pbmNsdWRlLnBhdGhzIiB2YWx1ZVR5cGU9ImluY2x1ZGVQYXRoIj4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS99Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2N9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ncGlvfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bX0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3RpbWVyfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnR9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWd9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZ30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWx9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlV9Ii8+DQotPC9vcHRpb24+DQotPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIub3B0aW9uLm9wdGltaXphdGlvbi5mbGFncy4yMjQ5NDM0MTUiIG5hbWU9Ik90aGVyIG9wdGltaXphdGlvbiBmbGFncyIgc3VwZXJDbGFzcz0iZ251LmMuY29tcGlsZXIub3B0aW9uLm9wdGltaXphdGlvbi5mbGFncyIgdmFsdWU9Ii1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dC45MTY4OTI0NjUiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjM5NTQ3MDQwMSIgbmFtZT0iR05VIEMrKyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnIj4NCi08b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjEyMDU4ODM1MzYiIG5hbWU9Ik9wdGltaXphdGlvbiBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxvcHRpb24gaWQ9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwuMTIxMTkzNTEwIiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbCIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPC90b29sPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFyY2hpdmVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4yMjM0OTAwNDIiIG5hbWU9IkdOVSBBcmNoaXZlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hcmNoaXZlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWciPg0KLTxvdXRwdXRUeXBlIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFyY2hpdmVyLm91dHB1dC44ODI3MjM4NDYiIG91dHB1dFByZWZpeD0ibGliIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFyY2hpdmVyLm91dHB1dCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjE2NDcxNzM2NjYiIG5hbWU9IkdOVSBBc3NlbWJsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyI+DQotPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuaW5wdXQuMTc2OTg4MDEyNSIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuaW5wdXQiLz4NCi08L3Rvb2w+DQotPC90b29sQ2hhaW4+DQotPC9mb2xkZXJJbmZvPg0KLTwvY29uZmlndXJhdGlvbj4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9InNjYW5uZXJDb25maWd1cmF0aW9uIj4NCi08YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyUHJvamVjdFByb2ZpbGUiLz4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmFybS5BY3RlbEFSTU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29yZTgwNTFzLlNEQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJmYWxzZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0iZmFsc2UiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1WIC1FIC1XcCAtUCAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9InNkY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTEuQWN0ZWxDb3J0ZXhNMU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyRmlsZVByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9Im1ha2VmaWxlR2VuZXJhdG9yIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWYgJHtwcm9qZWN0X25hbWV9X3NjZC5tayIgY29tbWFuZD0ibWFrZSIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAiIGNvbW1hbmQ9ImcrKyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMiIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9JnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZysrIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHNjYW5uZXJDb25maWdCdWlsZEluZm8gaW5zdGFuY2VJZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNDY4NTY1ODUzO2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1My4iPg0KLTxhdXRvZGlzY292ZXJ5IGVuYWJsZWQ9InRydWUiIHByb2JsZW1SZXBvcnRpbmdFbmFibGVkPSJ0cnVlIiBzZWxlY3RlZFByb2ZpbGVJZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0zLkFjdGVsQ29ydGV4TTNNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIi8+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5hcm0uQWN0ZWxBUk1NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcmU4MDUxcy5TRENDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0iZmFsc2UiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9ImZhbHNlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItViAtRSAtV3AgLVAgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJzZGNjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0xLkFjdGVsQ29ydGV4TTFNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0zLkFjdGVsQ29ydGV4TTNNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlckZpbGVQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJtYWtlZmlsZUdlbmVyYXRvciI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1mICR7cHJvamVjdF9uYW1lfV9zY2QubWsiIGNvbW1hbmQ9Im1ha2UiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwIiBjb21tYW5kPSJnKysiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jIiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2crKyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTwvc2Nhbm5lckNvbmZpZ0J1aWxkSW5mbz4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLmV4dGVybmFsU2V0dGluZ3MiLz4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmludGVybmFsLnVpLnRleHQuY29tbWVudE93bmVyUHJvamVjdE1hcHBpbmdzIi8+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLmxhbmd1YWdlLm1hcHBpbmciLz4NCi08L2Njb25maWd1cmF0aW9uPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0iY2R0QnVpbGRTeXN0ZW0iIHZlcnNpb249IjQuMC4wIj4NCi08cHJvamVjdCBpZD0iUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0uY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmNyb3NzLmNvcnRleG0zLmxpYi41OTc1MDMzMDQiIG5hbWU9IlN0YXRpYyBMaWJyYXJ5IiBwcm9qZWN0VHlwZT0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmNyb3NzLmNvcnRleG0zLmxpYiIvPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08L2Nwcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vLnByb2plY3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzZiYmJjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KLTxwcm9qZWN0RGVzY3JpcHRpb24+DQotCTxuYW1lPlJUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtPC9uYW1lPg0KLQk8Y29tbWVudD48L2NvbW1lbnQ+DQotCTxwcm9qZWN0cz4NCi0JPC9wcm9qZWN0cz4NCi0JPGJ1aWxkU3BlYz4NCi0JCTxidWlsZENvbW1hbmQ+DQotCQkJPG5hbWU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuZ2VubWFrZWJ1aWxkZXI8L25hbWU+DQotCQkJPGFyZ3VtZW50cz4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pj9uYW1lPzwva2V5Pg0KLQkJCQkJPHZhbHVlPjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYXBwZW5kX2Vudmlyb25tZW50PC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYXV0b0J1aWxkVGFyZ2V0PC9rZXk+DQotCQkJCQk8dmFsdWU+YWxsPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZEFyZ3VtZW50czwva2V5Pg0KLQkJCQkJPHZhbHVlPjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRDb21tYW5kPC9rZXk+DQotCQkJCQk8dmFsdWU+bWFrZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRMb2NhdGlvbjwva2V5Pg0KLQkJCQkJPHZhbHVlPiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vRGVidWd9PC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5jbGVhbkJ1aWxkVGFyZ2V0PC9rZXk+DQotCQkJCQk8dmFsdWU+Y2xlYW48L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmNvbnRlbnRzPC9rZXk+DQotCQkJCQk8dmFsdWU+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5hY3RpdmVDb25maWdTZXR0aW5nczwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZW5hYmxlQXV0b0J1aWxkPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZW5hYmxlQ2xlYW5CdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUZ1bGxCdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmZ1bGxCdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmFsbDwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuc3RvcE9uRXJyb3I8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS51c2VEZWZhdWx0QnVpbGRDbWQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCTwvYXJndW1lbnRzPg0KLQkJPC9idWlsZENvbW1hbmQ+DQotCQk8YnVpbGRDb21tYW5kPg0KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdCdWlsZGVyPC9uYW1lPg0KLQkJCTxhcmd1bWVudHM+DQotCQkJPC9hcmd1bWVudHM+DQotCQk8L2J1aWxkQ29tbWFuZD4NCi0JPC9idWlsZFNwZWM+DQotCTxuYXR1cmVzPg0KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5jZHQuY29yZS5jbmF0dXJlPC9uYXR1cmU+DQotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLm1hbmFnZWRCdWlsZE5hdHVyZTwvbmF0dXJlPg0KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5TY2FubmVyQ29uZmlnTmF0dXJlPC9uYXR1cmU+DQotCTwvbmF0dXJlcz4NCi08L3Byb2plY3REZXNjcmlwdGlvbj4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL2h3X3JlZ19pby5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9od19yZWdfaW8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZmZjdjMS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL2h3X3JlZ19pby5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqICBTbWFydEZ1c2lvbjIgQ29ydGV4IE1pY3JvY29udHJvbGxlciBTb2Z0d2FyZSBJbnRlcmZhY2UgLSBQZXJpcGhlcmFsDQotICogIEFjY2VzcyBMYXllci4NCi0gKg0KLSAqICBUaGlzIGZpbGUgcHJvdmlkZXMgaW50ZXJmYWNlcyB0byBwZXJmb3JtIHJlZ2lzdGVyIGFuZCByZWdpc3RlciBiaXQgbGV2ZWwgDQotICogIHJlYWQgLyB3cml0ZSBvcGVyYXRpb25zLiBUaGVzZSBpbnRlcmZhY2VzIHN1cHBvcnQgYml0LWJhbmRpbmcgaW4gY2FzZSBvZiANCi0gKiAgQ29ydGV4LU0zIENQVS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNjMgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxNDo0NDo1OCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLQ0KLSNpZm5kZWYgSFdfUkVHX0lPX0hfDQotI2RlZmluZSBIV19SRUdfSU9fSF8NCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+ICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmNsdWRlIHN0YW5kYXJkIHR5cGVzICovDQotDQotI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkNCi0gICNkZWZpbmUgX19JTkxJTkUgICAgICAgICBfX2lubGluZSAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgKi8NCi0NCi0jZWxpZiBkZWZpbmVkICggX19JQ0NBUk1fXyApDQotICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICBpbmxpbmUgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgSUFSIENvbXBpbGVyLiBPbmx5IGF2YWlhYmxlIGluIEhpZ2ggb3B0aW1pemF0aW9uIG1vZGUhICovDQotDQotI2VsaWYgZGVmaW5lZCAgICggIF9fR05VQ19fICApDQotICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICBpbmxpbmUgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgR05VIENvbXBpbGVyICAgICAgICovDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRGVmaW5pdGlvbnMgZm9yIHJlZ2lzdGVyIGFjY2Vzcw0KLSAqLw0KLQ0KLSNkZWZpbmUgSFdfUkVHKGFkZHIpICAgICAgICAgICAgKCooKHZvbGF0aWxlIHVpbnQzMl90ICopIChhZGRyKSkpDQotDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgd3JpdGVfcmVnMzIodm9sYXRpbGUgdWludDMyX3QgKiByZWcsIHVpbnQzMl90IHZhbCkNCi17DQotICAgIEhXX1JFRyhyZWcpID0gdmFsOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCB3cml0ZV9yZWcxNih2b2xhdGlsZSB1aW50MTZfdCAqIHJlZywgdWludDE2X3QgdmFsKQ0KLXsNCi0gICAgSFdfUkVHKHJlZykgPSB2YWw7DQotfQ0KLXN0YXRpYyBfX0lOTElORSB2b2lkIHdyaXRlX3JlZzgodm9sYXRpbGUgdWludDhfdCAqIHJlZywgdWludDhfdCB2YWwpDQotew0KLSAgICBIV19SRUcocmVnKSA9IHZhbDsNCi19DQotDQotc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IHJlYWRfcmVnMzIodm9sYXRpbGUgdWludDMyX3QgKiByZWcpDQotew0KLSAgICByZXR1cm4gKCBIV19SRUcocmVnKSApOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdWludDE2X3QgcmVhZF9yZWcxNih2b2xhdGlsZSB1aW50MTZfdCAqIHJlZykNCi17DQotICAgIHJldHVybiAoIEhXX1JFRyhyZWcpICk7DQotfQ0KLXN0YXRpYyBfX0lOTElORSB1aW50OF90IHJlYWRfcmVnOCh2b2xhdGlsZSB1aW50OF90ICogcmVnKQ0KLXsNCi0gICAgcmV0dXJuICggSFdfUkVHKHJlZykgKTsNCi19DQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRGVmaW5pdGlvbnMgZm9yIHJlZ2lzdGVyIGJpdHMgYWNjZXNzIHVzaW5nIGJpdC1iYW5kIGFsaWFzZXMgZm9yIENvcnRleC1NMyANCi0gKi8NCi0jZGVmaW5lIEJJVEJBTkQoYWRkcixiaXRudW0pICAgICgoKHVpbnQzMl90KWFkZHIgJiAweEYwMDAwMDAwKSsweDAyMDAwMDAwKygoKHVpbnQzMl90KWFkZHIgJiAweEZGRkZGKTw8NSkrKGJpdG51bTw8MikpDQotI2RlZmluZSBIV19SRUdfQklUKHJlZyxiaXRudW0pICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoKEJJVEJBTkQocmVnLGJpdG51bSkpKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbnMgdG8gc2V0IGEgYml0IGZpZWxkIGluIENvcnRleC1NMyANCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBzZXRfYml0X3JlZzMyKHZvbGF0aWxlIHVpbnQzMl90ICogcmVnLCB1aW50OF90IGJpdCkNCi17DQotICAgIEhXX1JFR19CSVQocmVnLGJpdCkgPSAweDE7DQotfQ0KLXN0YXRpYyBfX0lOTElORSB2b2lkIHNldF9iaXRfcmVnMTYodm9sYXRpbGUgdWludDE2X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgSFdfUkVHX0JJVChyZWcsYml0KSA9IDB4MTsNCi19DQotc3RhdGljIF9fSU5MSU5FIHZvaWQgc2V0X2JpdF9yZWc4KHZvbGF0aWxlIHVpbnQ4X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgSFdfUkVHX0JJVChyZWcsYml0KSA9IDB4MTsNCi19DQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb25zIHRvIGNsZWFyIGEgYml0IGZpZWxkIGluIENvcnRleC1NMw0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIGNsZWFyX2JpdF9yZWczMih2b2xhdGlsZSB1aW50MzJfdCAqIHJlZywgdWludDhfdCBiaXQpDQotew0KLSAgICBIV19SRUdfQklUKHJlZyxiaXQpID0gMHgwOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBjbGVhcl9iaXRfcmVnMTYodm9sYXRpbGUgdWludDE2X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgSFdfUkVHX0JJVChyZWcsYml0KSA9IDB4MDsNCi19DQotc3RhdGljIF9fSU5MSU5FIHZvaWQgY2xlYXJfYml0X3JlZzgodm9sYXRpbGUgdWludDhfdCAqIHJlZywgdWludDhfdCBiaXQpDQotew0KLSAgICBIV19SRUdfQklUKHJlZyxiaXQpID0gMHgwOw0KLX0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbnMgdG8gcmVhZCBhIGJpdCBmaWVsZCBpbiBDb3J0ZXgtTTMNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdWludDhfdCByZWFkX2JpdF9yZWczMih2b2xhdGlsZSB1aW50MzJfdCAqIHJlZywgdWludDhfdCBiaXQpDQotew0KLSAgICByZXR1cm4gKEhXX1JFR19CSVQocmVnLGJpdCkpOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdWludDhfdCByZWFkX2JpdF9yZWcxNih2b2xhdGlsZSB1aW50MTZfdCAqIHJlZywgdWludDhfdCBiaXQpDQotew0KLSAgICByZXR1cm4gKEhXX1JFR19CSVQocmVnLGJpdCkpOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdWludDhfdCByZWFkX2JpdF9yZWc4KHZvbGF0aWxlIHVpbnQ4X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgcmV0dXJuIChIV19SRUdfQklUKHJlZyxiaXQpKTsNCi19DQotDQotI2VuZGlmIC8qIEhXX1JFR19JT19IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvbTJzeHh4LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL20yc3h4eC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmNkNzJiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvbTJzeHh4LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNzQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEwLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqICBNaWNyb3NlbWkgU21hcnRGdXNpb24yIENvcnRleCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgSW50ZXJmYWNlIC0gUGVyaXBoZXJhbA0KLSAqICBBY2Nlc3MgTGF5ZXIuDQotICoNCi0gKiAgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgaW50ZXJydXB0IGFzc2lnbm1lbnQgYW5kIHBlcmlwaGVyYWwgcmVnaXN0ZXJzIGZvcg0KLSAqICB0aGUgU21hcnRGdXNpb24yIGZhbWlsbHkgb2YgZGV2aWNlcy4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNjcgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo0NTozOSArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgX19TTUFSVEZVU0lPTjJfQ01TSVNfUEFMX0hfXw0KLSNkZWZpbmUgX19TTUFSVEZVU0lPTjJfQ01TSVNfUEFMX0hfXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qDQotICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiAtLS0tLS0tLS0tIEludGVycnVwdCBOdW1iZXIgRGVmaW5pdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICovDQotDQotdHlwZWRlZiBlbnVtIElSUW4NCi17DQotLyoqKioqKiAgQ29ydGV4LU0zIFByb2Nlc3NvciBFeGNlcHRpb25zIE51bWJlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSAgTm9uTWFza2FibGVJbnRfSVJRbiAgICAgICAgICAgICA9IC0xNCwgICAgICAvKiE8IDIgTm9uIE1hc2thYmxlIEludGVycnVwdCAtIFdhdGNoZG9nIHRpbWVvdXQgaW50ZXJydXB0Ki8NCi0gIEhhcmRGYXVsdF9JUlFuICAgICAgICAgICAgICAgICAgPSAtMTMsICAgICAgLyohPCAyIEhhcmQgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBNZW1vcnlNYW5hZ2VtZW50X0lSUW4gICAgICAgICAgID0gLTEyLCAgICAgIC8qITwgNCBDb3J0ZXgtTTMgTWVtb3J5IE1hbmFnZW1lbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAqLw0KLSAgQnVzRmF1bHRfSVJRbiAgICAgICAgICAgICAgICAgICA9IC0xMSwgICAgICAvKiE8IDUgQ29ydGV4LU0zIEJ1cyBGYXVsdCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFVzYWdlRmF1bHRfSVJRbiAgICAgICAgICAgICAgICAgPSAtMTAsICAgICAgLyohPCA2IENvcnRleC1NMyBVc2FnZSBGYXVsdCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICovDQotICBTVkNhbGxfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gLTUsICAgICAgIC8qITwgMTEgQ29ydGV4LU0zIFNWIENhbGwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRGVidWdNb25pdG9yX0lSUW4gICAgICAgICAgICAgICA9IC00LCAgICAgICAvKiE8IDEyIENvcnRleC1NMyBEZWJ1ZyBNb25pdG9yIEludGVycnVwdCAgICAgICAgICAgICAgICAgKi8NCi0gIFBlbmRTVl9JUlFuICAgICAgICAgICAgICAgICAgICAgPSAtMiwgICAgICAgLyohPCAxNCBDb3J0ZXgtTTMgUGVuZCBTViBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICovDQotICBTeXNUaWNrX0lSUW4gICAgICAgICAgICAgICAgICAgID0gLTEsICAgICAgIC8qITwgMTUgQ29ydGV4LU0zIFN5c3RlbSBUaWNrIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLS8qKioqKiogIFNtYXJ0RnVzaW9uMiBzcGVjaWZpYyBJbnRlcnJ1cHQgTnVtYmVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotICBXZG9nV2FrZXVwX0lSUW4gICAgICAgICAgICAgICAgID0gMCwgICAgICAgIC8qITwgV2F0Y2hEb2cgd2FrZXVwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgUlRDX1dha2V1cF9JUlFuICAgICAgICAgICAgICAgICA9IDEsICAgICAgICAvKiE8IFJUQyB3YWtldXAgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFNQSTBfSVJRbiAgICAgICAgICAgICAgICAgICAgICAgPSAyLCAgICAgICAgLyohPCBTUEkwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBTUEkxX0lSUW4gICAgICAgICAgICAgICAgICAgICAgID0gMywgICAgICAgIC8qITwgU1BJMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgSTJDMF9JUlFuICAgICAgICAgICAgICAgICAgICAgICA9IDQsICAgICAgICAvKiE8IEkyQzAgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEkyQzBfU01CQWxlcnRfSVJRbiAgICAgICAgICAgICAgPSA1LCAgICAgICAgLyohPCBJMkMwIFNNQnVzIEFsZXJ0IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBJMkMwX1NNQnVzX0lSUW4gICAgICAgICAgICAgICAgID0gNiwgICAgICAgIC8qITwgSTJDMCBTTUJ1cyBTdXNwZW5kIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgSTJDMV9JUlFuICAgICAgICAgICAgICAgICAgICAgICA9IDcsICAgICAgICAvKiE8IEkyQzEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEkyQzFfU01CQWxlcnRfSVJRbiAgICAgICAgICAgICAgPSA4LCAgICAgICAgLyohPCBJMkMxIFNNQnVzIEFsZXJ0IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBJMkMxX1NNQnVzX0lSUW4gICAgICAgICAgICAgICAgID0gOSwgICAgICAgIC8qITwgSTJDMSBTTUJ1cyBTdXNwZW5kIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgVUFSVDBfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDEwLCAgICAgICAvKiE8IFVBUlQwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFVBUlQxX0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSAxMSwgICAgICAgLyohPCBVQVJUMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBFdGhlcm5ldE1BQ19JUlFuICAgICAgICAgICAgICAgID0gMTIsICAgICAgIC8qITwgRXRoZXJuZXQgTUFDIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRE1BX0lSUW4gICAgICAgICAgICAgICAgICAgICAgICA9IDEzLCAgICAgICAvKiE8IFBlcmlwaGVyYWwgRE1BIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFRpbWVyMV9JUlFuICAgICAgICAgICAgICAgICAgICAgPSAxNCwgICAgICAgLyohPCBUaW1lcjEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBUaW1lcjJfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gMTUsICAgICAgIC8qITwgVGltZXIyIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgQ0FOX0lSUW4gICAgICAgICAgICAgICAgICAgICAgICA9IDE2LCAgICAgICAvKiE8IENBTiBjb250cm9sbGVyIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEVOVk0wX0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSAxNywgICAgICAgLyohPCBlTlZNMCBvcGVyYXRpb24gY29tcGxldGlvbiBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICovDQotICBFTlZNMV9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gMTgsICAgICAgIC8qITwgZU5WTTEgb3BlcmF0aW9uIGNvbXBsZXRpb24gaW50ZXJydXB0ICAgICAgICAgICAgICAgICAqLw0KLSAgQ29tQmxrX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDE5LCAgICAgICAvKiE8IENPTSBibG9jayBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFVTQl9JUlFuICAgICAgICAgICAgICAgICAgICAgICAgPSAyMCwgICAgICAgLyohPCBVU0IgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBVU0JfRE1BX0lSUW4gICAgICAgICAgICAgICAgICAgID0gMjEsICAgICAgIC8qITwgVVNCIERNQSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgUExMX0xvY2tfSVJRbiAgICAgICAgICAgICAgICAgICA9IDIyLCAgICAgICAvKiE8IFBMTCBsb2NrIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFBMTF9Mb2NrTG9zdF9JUlFuICAgICAgICAgICAgICAgPSAyMywgICAgICAgLyohPCBQTEwgbG9zcyBvZiBsb2NrIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBDb21tU3dpdGNoRXJyb3JfSVIgICAgICAgICAgICAgID0gMjQsICAgICAgIC8qITwgQ29tbXVuaWNhdGlvbnMgU3dpdGNoIGVycm9yIGludGVycnVwdCAgICAgICAgICAgICAgICAqLw0KLSAgQ2FjaGVFcnJvcl9JUlFuICAgICAgICAgICAgICAgICA9IDI1LCAgICAgICAvKiE8IENhY2hlIGVycm9yIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEREUl9JUlFuICAgICAgICAgICAgICAgICAgICAgICAgPSAyNiwgICAgICAgLyohPCBERFIgY29udHJvbGxlciBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBIUERNQV9Db21wbGV0ZV9JUlFuICAgICAgICAgICAgID0gMjcsICAgICAgIC8qITwgSGlnaCBzcGVlZCBETUEgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0ICAgICAgICAgICAqLw0KLSAgSFBETUFfRXJyb3JfSVJRbiAgICAgICAgICAgICAgICA9IDI4LCAgICAgICAvKiE8IEhpZ2ggc3BlZWQgRE1BIHRyYW5zZmVyIGVycm9yIGludGVycnVwdCAgICAgICAgICAgICAgKi8NCi0gIEVDQ19FcnJvcl9JUlFuICAgICAgICAgICAgICAgICAgPSAyOSwgICAgICAgLyohPCBFQ0MgZXJyb3IgZGV0ZWN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBNRERSX0lPQ2FsaWJfSVJRbiAgICAgICAgICAgICAgID0gMzAsICAgICAgIC8qITwgTUREUiBDYWxpYnJhdGlvbiBmaW5pc2hlZCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAqLw0KLSAgRkFCX1BMTF9Mb2NrX0lSUW4gICAgICAgICAgICAgICA9IDMxLCAgICAgICAvKiE8IE1TU0REUiBGYWJyaWMgUExMIGxvY2sgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICovDQotICBGQUJfUExMX0xvY2tMb3N0X0lSUW4gICAgICAgICAgID0gMzIsICAgICAgIC8qITwgTVNTRERSIEZhYnJpYyBQTEwgbG9jayBsb3N0IGludGVycnVwdCAgICAgICAgICAgICAgKi8NCi0gIEZJQzY0X0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSAzMywgICAgICAgLyohPCBGSUM2NCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnEwX0lSUW4gICAgICAgICAgICAgICAgID0gMzQsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMV9JUlFuICAgICAgICAgICAgICAgICA9IDM1LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTJfSVJRbiAgICAgICAgICAgICAgICAgPSAzNiwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnEzX0lSUW4gICAgICAgICAgICAgICAgID0gMzcsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxNF9JUlFuICAgICAgICAgICAgICAgICA9IDM4LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTVfSVJRbiAgICAgICAgICAgICAgICAgPSAzOSwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnE2X0lSUW4gICAgICAgICAgICAgICAgID0gNDAsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxN19JUlFuICAgICAgICAgICAgICAgICA9IDQxLCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycThfSVJRbiAgICAgICAgICAgICAgICAgPSA0MiwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnE5X0lSUW4gICAgICAgICAgICAgICAgID0gNDMsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMTBfSVJRbiAgICAgICAgICAgICAgICA9IDQ0LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTExX0lSUW4gICAgICAgICAgICAgICAgPSA0NSwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnExMl9JUlFuICAgICAgICAgICAgICAgID0gNDYsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMTNfSVJRbiAgICAgICAgICAgICAgICA9IDQ3LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTE0X0lSUW4gICAgICAgICAgICAgICAgPSA0OCwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnExNV9JUlFuICAgICAgICAgICAgICAgID0gNDksICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgDQotICBHUElPMF9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTAsICAgICAgIC8qITwgR1BJTyAwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzFfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDUxLCAgICAgICAvKiE8IEdQSU8gMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yX0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1MiwgICAgICAgLyohPCBHUElPIDIgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPM19JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTMsICAgICAgIC8qITwgR1BJTyAzIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzRfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDU0LCAgICAgICAvKiE8IEdQSU8gNCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU81X0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1NSwgICAgICAgLyohPCBHUElPIDUgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPNl9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTYsICAgICAgIC8qITwgR1BJTyA2IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzdfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDU3LCAgICAgICAvKiE8IEdQSU8gNyBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU84X0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1OCwgICAgICAgLyohPCBHUElPIDggaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPOV9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTksICAgICAgIC8qITwgR1BJTyA5IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzEwX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDYwLCAgICAgICAvKiE8IEdQSU8gMTAgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xMV9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2MSwgICAgICAgLyohPCBHUElPIDExIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMTJfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjIsICAgICAgIC8qITwgR1BJTyAxMiBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzEzX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDYzLCAgICAgICAvKiE8IEdQSU8gMTMgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xNF9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2NCwgICAgICAgLyohPCBHUElPIDE0IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMTVfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjUsICAgICAgIC8qITwgR1BJTyAxNSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzE2X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDY2LCAgICAgICAvKiE8IEdQSU8gMTYgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xN19JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2NywgICAgICAgLyohPCBHUElPIDE3IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMThfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjgsICAgICAgIC8qITwgR1BJTyAxOCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzE5X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDY5LCAgICAgICAvKiE8IEdQSU8gMTkgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yMF9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3MCwgICAgICAgLyohPCBHUElPIDIwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjFfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzEsICAgICAgIC8qITwgR1BJTyAyMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzIyX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDcyLCAgICAgICAvKiE8IEdQSU8gMjIgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yM19JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3MywgICAgICAgLyohPCBHUElPIDIzIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjRfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzQsICAgICAgIC8qITwgR1BJTyAyNCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzI1X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDc1LCAgICAgICAvKiE8IEdQSU8gMjUgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gDQotICBHUElPMjZfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzYsICAgICAgIC8qITwgR1BJTyAyNiBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzI3X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDc3LCAgICAgICAvKiE8IEdQSU8gMjcgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yOF9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3OCwgICAgICAgLyohPCBHUElPIDI4IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjlfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzksICAgICAgIC8qITwgR1BJTyAyOSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzMwX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDgwLCAgICAgICAvKiE8IEdQSU8gMzAgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8zMV9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA4MSAgICAgICAgLyohPCBHUElPIDMxIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotfSBJUlFuX1R5cGU7DQotDQotLyoNCi0gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIC0tLS0tLS0tLS0tIFByb2Nlc3NvciBhbmQgQ29yZSBQZXJpcGhlcmFsIFNlY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKi8NCi0jZGVmaW5lIF9fQ00zX1JFViAgICAgICAgICAgICAgICAgMHgwMjAxICAgIC8qITwgQ29yZSByZXZpc2lvbiByMnAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIF9fTVBVX1BSRVNFTlQgICAgICAgICAgICAgMSAgICAgICAgIC8qITwgTVBVIHByZXNlbnQgb3Igbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIF9fTlZJQ19QUklPX0JJVFMgICAgICAgICAgNCAgICAgICAgIC8qITwgTnVtYmVyIG9mIEJpdHMgdXNlZCBmb3IgUHJpb3JpdHkgTGV2ZWxzICAgICAgICAgKi8NCi0jZGVmaW5lIF9fVmVuZG9yX1N5c1RpY2tDb25maWcgICAgMCAgICAgICAgIC8qITwgU2V0IHRvIDEgaWYgZGlmZmVyZW50IFN5c1RpY2sgQ29uZmlnIGlzIHVzZWQgICAgKi8NCi0NCi0jaW5jbHVkZSA8Y29yZV9jbTMuaD4gICAvKiBDb3J0ZXgtTTMgcHJvY2Vzc29yIGFuZCBjb3JlIHBlcmlwaGVyYWxzICAgICAgICAgICAqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogICAgICAgICAgICAgICAgRGV2aWNlIFNwZWNpZmljIFBlcmlwaGVyYWwgcmVnaXN0ZXJzIHN0cnVjdHVyZXMgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZiBkZWZpbmVkICAgKCBfX0NDX0FSTSAgICkNCi0gIC8qIEVuYWJsZSBhbm9ueW1vdXMgdW5pb25zIHdoZW4gYnVpbGRpbmcgdXNpbmcgS2VpbC1NREsgKi8NCi0gICNwcmFnbWEgYW5vbl91bmlvbnMNCi0jZW5kaWYNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVUFSVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgdW5pb24NCi0gICAgew0KLSAgICAgICAgX19JICB1aW50OF90ICAgIFJCUjsNCi0gICAgICAgIF9fTyAgdWludDhfdCAgICBUSFI7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgRExSOw0KLSAgICAgICAgICAgICB1aW50MzJfdCAgIFJFU0VSVkVEMDsNCi0gICAgfTsNCi0NCi0gICAgdW5pb24NCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50OF90ICBETVI7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgIElFUjsNCi0gICAgICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQxOw0KLSAgICB9Ow0KLQ0KLSAgICB1bmlvbg0KLSAgICB7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgIElJUjsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgRkNSOw0KLSAgICAgICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDI7DQotICAgIH07DQotDQotICAgIF9fSU8gdWludDhfdCAgTENSOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEM1szXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBNQ1I7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQ0WzNdOw0KLQ0KLSAgICBfX0kgIHVpbnQ4X3QgIExTUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDVbM107DQotDQotICAgIF9fSSAgdWludDhfdCAgTVNSOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVENlszXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBTUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDdbN107DQotDQotICAgIF9fSU8gdWludDhfdCAgSUVNOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEOFszXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBJSU07DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQ5WzddOw0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIE1NMDsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDEwWzNdOw0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIE1NMTsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDExWzNdOw0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIE1NMjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDEyWzNdOw0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIERGUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDEzWzddOw0KLQ0KLSAgICAgX19JTyB1aW50OF90IEdGUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDE0WzNdOw0KLQ0KLSAgICAgX19JTyB1aW50OF90IFRURzsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDE1WzNdOw0KLQ0KLSAgICAgX19JTyB1aW50OF90IFJUTzsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDE2WzNdOw0KLQ0KLSAgICAgX19JTyB1aW50OF90IEFEUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDE3WzNdOw0KLQ0KLX0gVUFSVF9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJMkMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQ4X3QgIENUUkw7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQwOw0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVEMTsNCi0gICAgICAgICB1aW50OF90ICBTVEFUVVM7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQyOw0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVEMzsNCi0gICAgX19JTyB1aW50OF90ICBEQVRBOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVENDsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDU7DQotICAgIF9fSU8gdWludDhfdCAgQUREUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDY7DQotICAgICAgICAgdWludDE2X3QgUkVTRVJWRUQ3Ow0KLSAgICBfX0lPIHVpbnQ4X3QgIFNNQlVTOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEODsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDk7DQotICAgIF9fSU8gdWludDhfdCAgRlJFUTsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDEwOw0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVEMTE7DQotICAgIF9fSU8gdWludDhfdCAgR0xJVENIUkVHOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEMTI7DQotICAgICAgICAgdWludDE2X3QgUkVTRVJWRUQxMzsNCi0gICAgX19JTyB1aW50OF90ICBTTEFWRTFfQUREUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDE0Ow0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVEMTU7DQotfSBJMkNfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIEkyQyBiaXQgYmFuZA0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IENUUkxfQ1IwOw0KLSAgICBfX0lPIHVpbnQzMl90IENUUkxfQ1IxOw0KLSAgICBfX0lPIHVpbnQzMl90IENUUkxfQUE7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TSTsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX1NUTzsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX1NUQTsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX0VOUzE7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTF9DUjI7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzU2XTsNCi0gICAgX19JTyB1aW50MzJfdCBEQVRBX0RJUjsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDFbMzFdOw0KLSAgICBfX0lPIHVpbnQzMl90IEFERFJfR0M7DQotfSBJMkNfQml0QmFuZF9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IENPTlRST0w7DQotICAgIF9fSU8gdWludDMyX3QgVFhSWERGX1NJWkU7DQotICAgIF9fSSAgdWludDMyX3QgU1RBVFVTOw0KLSAgICBfX08gIHVpbnQzMl90IElOVF9DTEVBUjsNCi0gICAgX19JICB1aW50MzJfdCBSWF9EQVRBOw0KLSAgICBfX08gIHVpbnQzMl90IFRYX0RBVEE7DQotICAgIF9fSU8gdWludDMyX3QgQ0xLX0dFTjsNCi0gICAgX19JTyB1aW50MzJfdCBTTEFWRV9TRUxFQ1Q7DQotICAgIF9fSSAgdWludDMyX3QgTUlTOw0KLSAgICBfX0kgIHVpbnQzMl90IFJJUzsNCi0gICAgX19JTyB1aW50MzJfdCBDT05UUk9MMjsNCi0gICAgX19JTyB1aW50MzJfdCBDT01NQU5EOw0KLSAgICBfX0lPIHVpbnQzMl90IFBLVFNJWkU7DQotICAgIF9fSU8gdWludDMyX3QgQ01EU0laRTsNCi0gICAgX19JTyB1aW50MzJfdCBIV1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBTVEFUODsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMMDsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMMTsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMMjsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMMzsNCi19IFNQSV9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHUElPIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xX0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzJfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fM19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT180X0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzVfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fNl9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT183X0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzhfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fOV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xMF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xMV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xMl9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xM19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xNF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xNV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xNl9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xN19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xOF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xOV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yMF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yMV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yMl9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yM19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yNF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yNV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yNl9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yN19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yOF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yOV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18zMF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18zMV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT19JUlE7DQotICAgIF9fSSAgdWludDMyX3QgR1BJT19JTjsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPX09VVDsNCi19IEdQSU9fVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIEdQSU8gYml0IGJhbmQNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzBfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzFfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzJfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzNfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzRfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzVfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzZfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzdfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzhfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzlfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzEwX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xMV9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTJfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzEzX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xNF9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTVfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzE2X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xN19DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMThfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzE5X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yMF9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjFfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzIyX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yM19DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjRfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzI1X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yNl9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjdfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzI4X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yOV9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMzBfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzMxX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT19JUlFbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IEdQSU9fSU5bMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fT1VUWzMyXTsNCi19IEdQSU9fQml0QmFuZF9UeXBlRGVmOw0KLQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSFBETUEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BU0FSX1JFRyAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BREFSX1JFRyAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfUkVHICAgICAgICAgICAgICAgOw0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BU1JfUkVHICAgICAgICAgICAgICAgOw0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BUFRSX1JFRyAgICAgICAgICAgICAgOw0KLX1IUERNQV9EZXNjcmlwdG9yX1R5cGVEZWY7DQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFFRFJfUkVHICAgICAgICAgICAgICA7DQotICAgIEhQRE1BX0Rlc2NyaXB0b3JfVHlwZURlZiAgRGVzY3JpcHRvcls0XSA7DQotICAgIF9fTyAgdWludDMyX3QgSFBETUFJQ1JfUkVHICAgICAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9SRUcgICAgICAgICAgICAgICA7DQotfSBIUERNQV9UeXBlRGVmOw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMFs2NF07DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9YRlJfU0laRVsxNl0gICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX0RDUF9WQUxJRCAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfRENQX1hGUl9ESVIgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9EQ1BfQ0xSICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX0RDUF9QQVVTRSAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfWEZSX0NNUF9JTlQgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9YRlJfRVJSX0lOVCAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX05PTl9XT1JEX0lOVCAgICAgOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMVs5XTsNCi0NCi0gICAgX19JICB1aW50MzJfdCBIUERNQVNSX0RDUF9BQ1RJVkUgICAgICAgOw0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BU1JfRENQX0NNUExFVCAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFTUl9EQ1BfU0VSUiAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQVNSX0RDUF9ERVJSICAgICAgICAgOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMls2MF0gICAgICAgICAgICA7DQotfUhQRE1BX0Rlc2NyaXB0b3JfQml0QmFuZF9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogSFBETUEgYml0IGJhbmQNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQUVEUl9EQ1BfRU1QVFlbNF0gICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQUVEUl9EQ1BfQ01QTEVUWzRdICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQUVEUl9EQ1BfRVJSWzRdICAgICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQUVEUl9EQ1BfTk9OX1dPUkRfRVJSWzRdICAgIDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDBbMTZdICAgICAgICAgICAgICAgICAgIDsNCi0NCi0gICAgSFBETUFfRGVzY3JpcHRvcl9CaXRCYW5kX1R5cGVEZWYgRGVzY3JpcHRvcls0XTsNCi0NCi0gICAgX19PICB1aW50MzJfdCBIUERNQUlDUl9DTFJfWEZSX0lOVFs0XSAgICAgICAgIDsNCi0gICAgX19PICB1aW50MzJfdCBIUERNQUlDUl9OT05fV09SRF9JTlRbNF0gICAgICAgIDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDFbMTZdICAgICAgICAgICAgICAgICAgIDsNCi0NCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0JGUl9FTVBUWSAgICAgICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0JGUl9GVUxMICAgICAgICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0JGUl9SRF9QTlRSWzNdICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0JGUl9XUl9QTlRSIFszXSAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0FITTFfQ1NUX0RCR1s0XSAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0FITTJfQ1NUX0RCR1s0XSAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX1dCQ19DU1RfREJHWzNdICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX1JCQ19DU1RfREJHWzNdICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX1JSQk5fQ1NUX0RCR1s0XSAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQURSX0RNQV9DU1RfREJHWzRdICAgICAgICAgIDsNCi0NCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDJbNF0gICAgICAgICAgICAgICAgICAgIDsNCi19SFBETUFfQml0QmFuZF9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IENPTlRST0xfUkVHICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBNT0RFX1JFRyAgICAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgUFJFU0NBTEVSX1JFRyAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEFMQVJNX0xPV0VSX1JFRyAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBBTEFSTV9VUFBFUl9SRUcgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgQ09NUEFSRV9MT1dFUl9SRUcgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IENPTVBBUkVfVVBQRVJfUkVHICAgICAgIDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDAgICAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgREFURV9USU1FX0xPV0VSX1JFRyAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IERBVEVfVElNRV9VUFBFUl9SRUcgICAgIDsNCi0NCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDFbMl0gICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgU0VDT05EU19SRUcgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IE1JTlVURVNfUkVHICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIT1VSU19SRUcgICAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgREFZX1JFRyAgICAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IE1PTlRIX1JFRyAgICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBZRUFSX1JFRyAgICAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgV0VFS0RBWV9SRUcgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFdFRUtfUkVHICAgICAgICAgICAgICAgIDsNCi0NCi0gICAgX19JTyB1aW50MzJfdCBTRUNPTkRTX0NOVF9SRUcgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgTUlOVVRFU19DTlRfUkVHICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhPVVJTX0NOVF9SRUcgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBEQVlfQ05UX1JFRyAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgTU9OVEhfQ05UX1JFRyAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFlFQVJfQ05UX1JFRyAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBXRUVLREFZX0NOVF9SRUcgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgV0VFS19DTlRfUkVHICAgICAgICAgICAgOw0KLX0gUlRDX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGltZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgVElNMV9WQUw7DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9MT0FEVkFMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFfQkdMT0FEVkFMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFfQ1RSTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xX1JJUzsNCi0gICAgX19JICB1aW50MzJfdCBUSU0xX01JUzsNCi0NCi0gICAgX19JICB1aW50MzJfdCBUSU0yX1ZBTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0yX0xPQURWQUw7DQotICAgIF9fSU8gdWludDMyX3QgVElNMl9CR0xPQURWQUw7DQotICAgIF9fSU8gdWludDMyX3QgVElNMl9DVFJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfUklTOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTJfTUlTOw0KLQ0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTY0X1ZBTF9VOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTY0X1ZBTF9MOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X0xPQURWQUxfVTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9MT0FEVkFMX0w7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfQkdMT0FEVkFMX1U7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfQkdMT0FEVkFMX0w7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfQ1RSTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9SSVM7DQotICAgIF9fSSAgdWludDMyX3QgVElNNjRfTUlTOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X01PREU7DQotfSBUSU1FUl9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogVGltZXIgYml0IGJhbmQNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JICB1aW50MzJfdCBUSU0xX1ZBTFVFX0JJVFszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9MT0FEVkFMWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xX0JHTE9BRFZBTFszMl07DQotDQotICAgIF9fSU8gdWludDMyX3QgVElNMUVOQUJMRTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xTU9ERTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xSU5URU47DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9DVFJMX1JFU0VSVkVEWzI5XTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xX1JJU1szMl07DQotICAgIF9fSSAgdWludDMyX3QgVElNMV9NSVNbMzJdOw0KLQ0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTJfVkFMVUVbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfTE9BRFZBTFszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNMl9CR0xPQURWQUxbMzJdOw0KLQ0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJFTkFCTEU7DQotICAgIF9fSU8gdWludDMyX3QgVElNMk1PREU7DQotICAgIF9fSU8gdWludDMyX3QgVElNMklOVEVOOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfQ1RSTFsyOV07DQotICAgIF9fSU8gdWludDMyX3QgVElNMl9SSVNbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTJfTUlTWzMyXTsNCi0NCi0gICAgX19JICB1aW50MzJfdCBUSU02NFZBTFVFVVszMl07DQotICAgIF9fSSAgdWludDMyX3QgVElNNjRWQUxVRUxbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0TE9BRFZBTFVFVVszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRMT0FEVkFMVUVMWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NEJHTE9BRFZBTFVFVVszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRCR0xPQURWQUxVRUxbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0RU5BQkxFOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0TU9ERTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NElOVEVOOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X0NUUkxbMjldOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X1JJU1szMl07DQotICAgIF9fSSAgdWludDMyX3QgVElNNjRfTUlTWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9NT0RFWzMyXTsNCi19IFRJTUVSX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhdGNoZG9nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JICB1aW50MzJfdCBXRE9HVkFMVUU7DQotICAgIF9fSSAgdWludDMyX3QgV0RPR0xPQUQ7DQotICAgIF9fSSAgdWludDMyX3QgV0RPR01WUlA7DQotICAgIF9fTyAgdWludDMyX3QgV0RPR1JFRlJFU0g7DQotICAgIF9fSSAgdWludDMyX3QgV0RPR0VOQUJMRTsNCi0gICAgX19JTyB1aW50MzJfdCBXRE9HQ09OVFJPTDsNCi0gICAgX19JICB1aW50MzJfdCBXRE9HU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFdET0dSSVM7DQotICAgIF9fSSAgdWludDMyX3QgV0RPR01JUzsNCi19IFdBVENIRE9HX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlYWwgVGltZSBDbG9jayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBlcmlwaGVyYWxzIERNQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gdWludDMyX3QgQ1JUTDsNCi0gICAgX19JTyB1aW50MzJfdCBTVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgQlVGRkVSX0FfU1JDX0FERFI7DQotICAgIF9fSU8gdWludDMyX3QgQlVGRkVSX0FfREVTVF9BRERSOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9BX1RSQU5TRkVSX0NPVU5UOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9CX1NSQ19BRERSOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9CX0RFU1RfQUREUjsNCi0gICAgX19JTyB1aW50MzJfdCBCVUZGRVJfQl9UUkFOU0ZFUl9DT1VOVDsNCi19IFBETUFfQ2hhbm5lbF9UeXBlRGVmOw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IFJBVElPX0hJR0hfTE9XOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9TVEFUVVM7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRURbNl07DQotICAgIFBETUFfQ2hhbm5lbF9UeXBlRGVmIENIQU5ORUxbOF07DQotfSBQRE1BX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdGhlcm5ldCBNQUMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotCS8qIA0KLSAgICAgKiBNQUMgcmVnaXN0ZXJzIChNQ1hNQUMpDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IENGRzE7DQotICAgIF9fSU8gdWludDMyX3QgQ0ZHMjsNCi0gICAgX19JTyB1aW50MzJfdCBJRkc7DQotICAgIF9fSU8gdWludDMyX3QgSEFMRl9EVVBMRVg7DQotICAgIF9fSU8gdWludDMyX3QgTUFYX0ZSQU1FX0xFTkdUSDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDBbMl07DQotICAgIF9fSU8gdWludDMyX3QgVEVTVDsNCi0gICAgX19JTyB1aW50MzJfdCBNSUlfQ09ORklHOw0KLSAgICBfX0lPIHVpbnQzMl90IE1JSV9DT01NQU5EOw0KLSAgICBfX0lPIHVpbnQzMl90IE1JSV9BRERSRVNTOw0KLSAgICBfX08gIHVpbnQzMl90IE1JSV9DVFJMOw0KLSAgICBfX0kgIHVpbnQzMl90IE1JSV9TVEFUVVM7DQotICAgIF9fSSAgdWludDMyX3QgTUlJX0lORElDQVRPUlM7DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJGQUNFX0NUUkw7DQotICAgIF9fSSAgdWludDMyX3QgSU5URVJGQUNFX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBTVEFUSU9OX0FERFJFU1MxOw0KLSAgICBfX0lPIHVpbnQzMl90IFNUQVRJT05fQUREUkVTUzI7DQotICAgIC8qIA0KLSAgICAgKiBGSUZPIENvbmZpZ3VyYXRpb24gLyBBY2Nlc3MgcmVnaXN0ZXJzIChNQ1hGSUYpDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fQ0ZHMDsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX0NGRzE7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19DRkcyOw0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fQ0ZHMzsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX0NGRzQ7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19DRkc1Ow0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzA7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19SQU1fQUNDRVNTMTsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX1JBTV9BQ0NFU1MyOw0KLSAgICBfX0kgIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzM7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19SQU1fQUNDRVNTNDsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX1JBTV9BQ0NFU1M1Ow0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzY7DQotICAgIF9fSSAgdWludDMyX3QgRklGT19SQU1fQUNDRVNTNzsNCi0gICAgLyoNCi0gICAgICogU3RhdGlzdGljcyByZWdpc3RlcnMgKE1TVEFUKQ0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBUUjY0Ow0KLSAgICBfX0lPIHVpbnQzMl90IFRSMTI3Ow0KLSAgICBfX0lPIHVpbnQzMl90IFRSMjU1Ow0KLSAgICBfX0lPIHVpbnQzMl90IFRSNTExOw0KLSAgICBfX0lPIHVpbnQzMl90IFRSMUs7DQotICAgIF9fSU8gdWludDMyX3QgVFJNQVg7DQotICAgIF9fSU8gdWludDMyX3QgVFJNR1Y7DQotICAgIF9fSU8gdWludDMyX3QgUkJZVDsNCi0gICAgX19JTyB1aW50MzJfdCBQUEtUOw0KLSAgICBfX0lPIHVpbnQzMl90IFJGQ1M7DQotICAgIF9fSU8gdWludDMyX3QgUk1DQTsNCi0gICAgX19JTyB1aW50MzJfdCBSQkNBOw0KLSAgICBfX0lPIHVpbnQzMl90IFJYQ0Y7DQotICAgIF9fSU8gdWludDMyX3QgUlhQRjsNCi0gICAgX19JTyB1aW50MzJfdCBSWFVPOw0KLSAgICBfX0lPIHVpbnQzMl90IFJBTE47DQotICAgIF9fSU8gdWludDMyX3QgUkZMUjsNCi0gICAgX19JTyB1aW50MzJfdCBSQ0RFOw0KLSAgICBfX0lPIHVpbnQzMl90IFJDU0U7DQotICAgIF9fSU8gdWludDMyX3QgUlVORDsNCi0gICAgX19JTyB1aW50MzJfdCBST1ZSOw0KLSAgICBfX0lPIHVpbnQzMl90IFJGUkc7DQotICAgIF9fSU8gdWludDMyX3QgUkpCUjsNCi0gICAgX19JTyB1aW50MzJfdCBSRFJQOw0KLSAgICBfX0lPIHVpbnQzMl90IFRCWVQ7DQotICAgIF9fSU8gdWludDMyX3QgVFBLVDsNCi0gICAgX19JTyB1aW50MzJfdCBUTUNBOw0KLSAgICBfX0lPIHVpbnQzMl90IFRCQ0E7DQotICAgIF9fSU8gdWludDMyX3QgVFhQRjsNCi0gICAgX19JTyB1aW50MzJfdCBUREZSOw0KLSAgICBfX0lPIHVpbnQzMl90IFRFREY7DQotICAgIF9fSU8gdWludDMyX3QgVFNDTDsNCi0gICAgX19JTyB1aW50MzJfdCBUTUNMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRMQ0w7DQotICAgIF9fSU8gdWludDMyX3QgVFhDTDsNCi0gICAgX19JTyB1aW50MzJfdCBUTkNMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRQRkg7DQotICAgIF9fSU8gdWludDMyX3QgVERSUDsNCi0gICAgX19JTyB1aW50MzJfdCBUSkJSOw0KLSAgICBfX0lPIHVpbnQzMl90IFRGQ1M7DQotICAgIF9fSU8gdWludDMyX3QgVFhDRjsNCi0gICAgX19JTyB1aW50MzJfdCBUT1ZSOw0KLSAgICBfX0lPIHVpbnQzMl90IFRVTkQ7DQotICAgIF9fSU8gdWludDMyX3QgVEZSRzsNCi0gICAgX19JICB1aW50MzJfdCBDQVIxOw0KLSAgICBfX0kgIHVpbnQzMl90IENBUjI7DQotICAgIF9fSU8gdWludDMyX3QgQ0FNMTsNCi0gICAgX19JTyB1aW50MzJfdCBDQU0yOw0KLSAgICAgdWludDMyX3QgUkVTRVJWRUQxWzE2XTsNCi0gICAgLyoNCi0gICAgICogRE1BIHJlZ2lzdGVycyAoTUFIQkUpDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9UWF9DVFJMOw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9UWF9ERVNDOw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9UWF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgRE1BX1JYX0NUUkw7DQotICAgIF9fSU8gdWludDMyX3QgRE1BX1JYX0RFU0M7DQotICAgIF9fSU8gdWludDMyX3QgRE1BX1JYX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBETUFfSVJRX01BU0s7DQotICAgIF9fSSAgdWludDMyX3QgRE1BX0lSUTsNCi19IE1BQ19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVNCIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfTUFYX1A7DQotICAgIF9fSU8gdWludDE2X3QgICBUWF9DU1I7ICANCi0gICAgX19JTyB1aW50MTZfdCAgIFJYX01BWF9QOw0KLSAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ1NSOyAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9DT1VOVDsNCi0gICAgX19JTyB1aW50OF90ICAgIFRYX1RZUEU7IA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVFhfSU5URVJWQUw7DQotICAgIF9fSU8gdWludDhfdCAgICBSWF9UWVBFOyAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFJYX0lOVEVSVkFMOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQ7DQotICAgIF9fSU8gdWludDhfdCAgICBGSUZPX1NJWkU7ICANCi19IFVTQl9lbmRwb2ludF9yZWdzX3Q7DQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gdWludDhfdCAgICBUWF9GVU5DX0FERFI7DQotICAgIF9fSU8gdWludDhfdCAgICBVTlVTRUQwOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVFhfSFVCX0FERFI7DQotICAgIF9fSU8gdWludDhfdCAgICBUWF9IVUJfUE9SVDsNCi0gICAgX19JTyB1aW50OF90ICAgIFJYX0ZVTkNfQUREUjsNCi0gICAgX19JTyB1aW50OF90ICAgIFVOVVNFRDE7DQotICAgIF9fSU8gdWludDhfdCAgICBSWF9IVUJfQUREUjsNCi0gICAgX19JTyB1aW50OF90ICAgIFJYX0hVQl9QT1JUOw0KLX0gVVNCX3Rhcl90Ow0KLQ0KLXR5cGVkZWYgdW5pb24NCi17DQotICAgIHN0cnVjdA0KLSAgICB7DQotICAgICAgICBfX0lPIHVpbnQzMl90ICAgVkFMVUU7DQotICAgIH0gV09SRDsNCi0NCi0gICAgc3RydWN0DQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBWQUxVRTsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDE7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQyOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMzsNCi0gICAgfSBCWVRFOw0KLQ0KLSAgICBzdHJ1Y3QNCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFZBTFVFOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJFU0VSVkVEOw0KLSAgICB9IEhBTEZXT1JEOw0KLX0gVVNCX2ZpZm9fdDsNCi0NCi10eXBlZGVmIHVuaW9uDQotew0KLSAgICBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICB7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgVFhfTUFYX1A7ICAgDQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgQ1NSMDsgICAgICAgDQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfTUFYX1A7ICAgDQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ1NSOyAgICAgDQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgQ09VTlQwOyAgICAgDQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMTsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDI7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQzOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVENDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBDT05GSUdfREFUQTsgIA0KLSAgICB9IERFVklDRV9FUDA7DQotDQotICAgIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX01BWF9QOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX0NTUjsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSWF9NQVhfUDsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSWF9DU1I7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ09VTlQ7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMTsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDI7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQzOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVENDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBGSUZPX1NJWkU7DQotICAgIH0gREVWSUNFX0VQTjsNCi0NCi0gICAgc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX01BWF9QOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIENTUjA7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfTUFYX1A7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ1NSOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIENPVU5UMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBUWVBFMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBOQUtfTElNSVQwOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJYX1RZUEU7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUlhfSU5URVJWQUw7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIENPTkZJR19EQVRBOw0KLSAgICB9IEhPU1RfRVAwOw0KLQ0KLSAgICBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICB7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgVFhfTUFYX1A7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgVFhfQ1NSOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX01BWF9QOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX0NTUjsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSWF9DT1VOVDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBUWF9UWVBFOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFRYX0lOVEVSVkFMOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJYX1RZUEU7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUlhfSU5URVJWQUw7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIEZJRk9fU0laRTsNCi0gICAgfSBIT1NUX0VQTjsNCi0NCi19IFVTQl9pbmRleGVkX2Nzcl90Ow0KLQ0KLXR5cGVkZWYgc3RydWN0IHsNCi0gICAgX19JTyB1aW50MzJfdCAgIElSUTsgICAgDQotICAgIF9fSU8gdWludDMyX3QgICBDTlRMOw0KLSAgICBfX0lPIHVpbnQzMl90ICAgQUREUjsNCi0gICAgX19JTyB1aW50MzJfdCAgIENPVU5UOw0KLX0gVVNCX0RNQV9jaGFubmVsOw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKiANCi0gICAgKiBDb21tb24gVVNCIFJlZ2lzdGVycyANCi0gICAgKi8NCi0gICAgX19JTyB1aW50OF90ICAgIEZBRERSOyAgICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgUE9XRVI7ICAgICAgICAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBUWF9JUlE7ICAgICAgICAgICANCi0gICAgX19JTyB1aW50MTZfdCAgIFJYX0lSUTsgICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfSVJRX0VOQUJMRTsgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9JUlFfRU5BQkxFOyAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVTQl9JUlE7ICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVVNCX0VOQUJMRTsgICAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBGUkFNRTsgICAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIElOREVYOyAgICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVEVTVF9NT0RFOyAgICAgICAgDQotDQotICAgIC8qDQotICAgICogSW5kZXhlZCBDU1INCi0gICAgKi8NCi0gICAgVVNCX2luZGV4ZWRfY3NyX3QgICBJTkRFWEVEX0NTUjsNCi0NCi0gICAgLyoNCi0gICAgKiBFbmRwb2ludCBGSUZPcyANCi0gICAgKi8NCi0gICAgVVNCX2ZpZm9fdCAgICAgIEZJRk9bMTZdOyAgICAgICAgIA0KLQ0KLSAgICAvKg0KLSAgICAqIE9URywgZHluYW1pYyBGSUZPIGFuZCB2ZXJzaW9uIA0KLSAgICAqLw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgREVWX0NUUkw7ICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBNSVNDOyAgICAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFRYX0ZJRk9fU0laRTsgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgUlhfRklGT19TSVpFOyAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBUWF9GSUZPX0FERFI7ICAgICANCi0gICAgX19JTyB1aW50MTZfdCAgIFJYX0ZJRk9fQUREUjsgICAgIA0KLSAgICBfX0lPIHVpbnQzMl90ICAgVkJVU19DU1I7ICAgICAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBIV19WRVJTSU9OOyAgICAgICANCi0gICAgX19JTyB1aW50MTZfdCAgIFJFU0VSVkVEOyAgICAgICAgIA0KLQ0KLSAgICAvKiANCi0gICAgKiBVTFBJIGFuZCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyANCi0gICAgKi8NCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfVkJVU19DVFJMOyAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVUxQSV9DQVJLSVRfQ1RSTDsgDQotICAgIF9fSU8gdWludDhfdCAgICBVTFBJX0lSUV9NQVNLOyAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfSVJRX1NSQzsgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVUxQSV9EQVRBX1JFRzsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBVTFBJX0FERFJfUkVHOyAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfQ1RSTF9SRUc7ICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVUxQSV9SQVdfREFUQTsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBFUF9JTkZPOyAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFJBTV9JTkZPOyAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgTElOS19JTkZPOyAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBWUF9MRU47ICAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIEhTX0VPRjE7ICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgRlNfRU9GMTsgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBMU19FT0YxOyAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFNPRlRfUlNUOyAgICAgICAgIA0KLQ0KLSAgICAvKiANCi0gICAgKiBUYXJnZXQgQWRkcmVzcyByZWdpc3RlcnMgDQotICAgICovDQotICAgIFVTQl90YXJfdCAgICAgICBUQVJbMTZdOyAgICAgICAgICANCi0NCi0gICAgLyogDQotICAgICogRW5kcG9pbnRzIENTUiANCi0gICAgKi8NCi0gICAgVVNCX2VuZHBvaW50X3JlZ3NfdCBFTkRQT0lOVFsxNl07IA0KLQ0KLSAgICAvKiANCi0gICAgKiBETUEgDQotICAgICovDQotICAgIFVTQl9ETUFfY2hhbm5lbCBETUFfQ0hBTk5FTFs4XTsNCi0JDQotICAgIF9fSU8gdWludDMyX3QgICBSRVNFUlZFRF9FWFRbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90ICAgUlFfUEtUX0NOVFsxNl07ICAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9EUEJVRl9ESVM7DQotICAgIF9fSU8gdWludDE2X3QgICBUWF9EUEJVRl9ESVM7DQotICAgIF9fSU8gdWludDE2X3QgICBDX1RfVUNIOw0KLSAgICBfX0lPIHVpbnQxNl90ICAgQ19UX0hIU1JUTjsNCi0gICAgX19JTyB1aW50MTZfdCAgIENfVF9IU0JUOw0KLQ0KLX0gTVNTX1VTQl9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGVOVk0gU3BlY2lhbCBGdW5jdGlvbiBSZWdpc3RlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0kgIHVpbnQ4X3QgIEFCWzEyOF07DQotICAgIF9fSU8gdWludDhfdCAgV0RbMTI4XTsNCi0gICAgX19JICB1aW50OF90ICBSRVNFUlZFRDBbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IFNUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDE7DQotICAgIF9fSU8gdWludDMyX3QgTlZfUEFHRV9TVEFUVVM7DQotICAgIF9fSSAgdWludDMyX3QgTlZfRlJFUVJORzsNCi0gICAgX19JICB1aW50MzJfdCBOVl9EUEQ7DQotICAgIF9fSU8gdWludDMyX3QgTlZfQ0U7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQyOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMzsNCi0gICAgX19JTyB1aW50MzJfdCBQQUdFX0xPQ0s7DQotICAgIF9fSU8gdWludDMyX3QgRFdTSVpFOw0KLSAgICBfX0lPIHVpbnQzMl90IENNRDsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDQ7DQotICAgIF9fSSAgdWludDMyX3QgUkVTRVJWRUQ1Ow0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVOOw0KLSAgICBfX0lPIHVpbnQzMl90IENMUkhJTlQ7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQ2WzQwXTsNCi0gICAgX19JTyB1aW50MzJfdCBSRVFfQUNDRVNTOw0KLX0gTlZNX1R5cGVEZWY7DQotDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgQUJbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFdEWzMyXTsNCi0gICAgX19JICB1aW50MzJfdCBSRVNFUlZFRDBbOF07DQotICAgIF9fSSAgdWludDMyX3QgU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMTsNCi0gICAgX19JTyB1aW50MzJfdCBOVl9QQUdFX1NUQVRVUzsNCi0gICAgX19JICB1aW50MzJfdCBOVl9GUkVRUk5HOw0KLSAgICBfX0kgIHVpbnQzMl90IE5WX0RQRDsNCi0gICAgX19JTyB1aW50MzJfdCBOVl9DRTsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDI7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQzOw0KLSAgICBfX0lPIHVpbnQzMl90IFBBR0VfTE9DSzsNCi0gICAgX19JTyB1aW50MzJfdCBEV1NJWkU7DQotICAgIF9fSU8gdWludDMyX3QgQ01EOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVENDsNCi0gICAgX19JICB1aW50MzJfdCBSRVNFUlZFRDU7DQotICAgIF9fSU8gdWludDMyX3QgSU5URU47DQotICAgIF9fSU8gdWludDMyX3QgQ0xSSElOVDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDZbNDBdOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFUV9BQ0NFU1M7DQotfSBOVk0zMl9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENPTUJMSyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IENPTlRST0w7DQotICAgIF9fSU8gdWludDMyX3QgU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVF9FTkFCTEU7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ7DQotICAgIF9fSU8gdWludDMyX3QgREFUQTg7DQotICAgIF9fSU8gdWludDMyX3QgREFUQTMyOw0KLSAgICBfX0lPIHVpbnQzMl90IEZSQU1FX1NUQVJUODsNCi0gICAgX19JTyB1aW50MzJfdCBGUkFNRV9TVEFSVDMyOw0KLX0gQ09NQkxLX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGUEdBIEZhYnJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyoNCi0gKiBQbGVhc2UgcmVmZXIgdG8gdGhlIFNtYXJ0RnVzaW9uMiBJbnRlcnJ1cHQgQ29udHJvbGxlciBVc2VyJ3MgR3VpZGUgZm9yIGENCi0gKiBkZXNjcmlwdGlvbiBvZiB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycy4NCi0gKiBUaGUgcmVnaXN0ZXJzIGRlZmluZWQgYmVsb3cgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIElOVEVSUlVQVF9DVFJMIGFzIGZvbGxvd3M6DQotICogICAgICB1aW50MzJfdCByZWFzb24wOw0KLSAqICAgICAgSU5URVJSVVBUX0NUUkwtPklOVEVSUlVQVF9NT0RFID0gMDsNCi0gKiAgICAgIHJlYXNvbjAgPSBJTlRFUlJVUFRfQ1RSTC0+SU5URVJSVVBUX1JFQVNPTjA7DQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX0VOQUJMRTA7DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX0VOQUJMRTE7DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX1JFQVNPTjA7DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX1JFQVNPTjE7DQotICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX01PREU7DQotfSBJTlRFUlJVUFRfQ1RSTF9UeXBlRGVmOw0KLQ0KLS8qDQotICogUGxlYXNlIHJlZmVyIHRvIHRoZSBTbWFydEZ1c2lvbjIgSW50ZXJydXB0IENvbnRyb2xsZXIgVXNlcidzIEd1aWRlIGZvciBhDQotICogZGVzY3JpcHRpb24gb2YgdGhlIGZvbGxvd2luZyByZWdpc3RlciBiaXRzLg0KLSAqIFRoZSByZWdpc3RlciBiaXRzIGRlZmluZWQgYmVsb3cgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIElOVEVSUlVQVF9DVFJMX0JJVEJBTkQNCi0gKiBhcyBmb2xsb3dzOg0KLSAqICBzZXR0aW5nL2NsZWFyaW5nIGEgYml0Og0KLSAqICAgICAgSU5URVJSVVBUX0NUUkxfQklUQkFORC0+TUFDX0lOVF9FTkJMID0gMTsNCi0gKiAgICAgIElOVEVSUlVQVF9DVFJMX0JJVEJBTkQtPlBETUFJTlRFUlJVUFRfRU5CTCA9IDA7DQotICogIHJlYWRpbmcgYSBiaXQgdmFsdWU6DQotICogICAgICB1aW50MzJfdCB0aW1lcjFfaW50ZXJydXB0Ow0KLSAqICAgICAgdGltZXIxX2ludGVycnVwdCA9IElOVEVSUlVQVF9DVFJMX0JJVEJBTkQtPlRJTUVSMV9JTlRSX1NUQVRVUzsNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgLyoNCi0gICAgICogSU5URVJSVVBUX0VOQUJMRTAgcmVnaXN0ZXIgYml0YmFuZCBkZWZpbml0aW9ucy4NCi0gICAgICovDQotICAgIF9fSU8gdWludDMyX3QgU1BJSU5UMF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFNQSUlOVDFfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfSU5UMF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19JTlQxX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgTU1VQVJUMF9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgTU1VQVJUMV9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgTUFDX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFVTQl9NQ19JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBQRE1BSU5URVJSVVBUX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgSFBEX1hGUl9DTVBfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgVElNRVIxX0lOVFJfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU1FUjJfSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IENBTl9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgUlRDX1dBS0VVUF9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgV0RPR1dBS0VVUElOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IE1TU0REUl9QTExfTE9DS0xPU1RfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRU5WTV9JTlQwX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRU5WTV9JTlQxX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX1NNQkFMRVJUMF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJTVVMwX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX1NNQkFMRVJUMV9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJTVVMxX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgSFBEX1hGUl9FUlJfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgTVNTRERSX1BMTF9MT0NLX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFNXX0VSUk9SSU5URVJSVVBUX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRERSQl9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRUNDSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IENBQ0hFX0VSUklOVFJfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBTT0ZUSU5URVJSVVBUX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgQ09NQkxLX0lOVFJfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBVU0JfRE1BX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMDsNCi0gICAgDQotICAgIC8qDQotICAgICAqIElOVEVSUlVQVF9FTkFCTEUxIHJlZ2lzdGVyIGJpdGJhbmQgZGVmaW5pdGlvbnMuDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMVszXTsNCi0gICAgX19JTyB1aW50MzJfdCBNRERSX0lPX0NBTElCX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMjsNCi0gICAgX19JTyB1aW50MzJfdCBGQUJfUExMX0xPQ0tfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRkFCX1BMTF9MT0NLTE9TVF9JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBGSUM2NF9JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDNbMjRdOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogSU5URVJSVVBUX1JFQVNPTjAgcmVnaXN0ZXIgYml0YmFuZCBkZWZpbml0aW9ucy4NCi0gICAgICovDQotICAgIF9fSU8gdWludDMyX3QgU1BJSU5UMF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgU1BJSU5UMV9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX0lOVDBfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19JTlQxX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBNTVVBUlQwX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IE1NVUFSVDFfSU5UUl9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgTUFDX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgVVNCX01DX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUERNQUlOVEVSUlVQVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgSFBEX1hGUl9DTVBfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBUSU1FUjFfSU5UUl9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgVElNRVIyX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IENBTl9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBSVENfV0FLRVVQX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFdET0dXQUtFVVBJTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IE1TU0REUl9QTExfTE9DS0xPU1RfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBFTlZNX0lOVDBfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEVOVk1fSU5UMV9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX1NNQkFMRVJUMF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX1NNQlNVUzBfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJBTEVSVDFfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJTVVMxX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBIUERfWEZSX0VSUl9JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IE1TU0REUl9QTExfTE9DS19JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFNXX0VSUk9SSU5URVJSVVBUX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBERFJCX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEVDQ0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IENBQ0hFX0VSUklOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFNPRlRJTlRFUlJVUFRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IENPTUJMS19JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBVU0JfRE1BX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ0Ow0KLSAgICANCi0gICAgLyoNCi0gICAgICogSU5URVJSVVBUX1JFQVNPTjEgcmVnaXN0ZXIgYml0YmFuZCBkZWZpbml0aW9ucy4NCi0gICAgICovDQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ1WzNdOw0KLSAgICBfX0lPIHVpbnQzMl90IE1ERFJfSU9fQ0FMSUJfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDY7DQotICAgIF9fSU8gdWludDMyX3QgRkFCX1BMTF9MT0NLX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgRkFCX1BMTF9MT0NLTE9TVF9JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEZJQzY0X0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ3WzI0XTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIElOVEVSUlVQVF9NT0RFIHJlZ2lzdGVyIGJpdGJhbmQgZGVmaW5pdGlvbnMuDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IFNFTEVDVF9NT0RFOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEOFszMV07DQotICAgIA0KLX0gSU5URVJSVVBUX0NUUkxfQml0QmFuZF9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRERSIENvbnRyb2xsZXIgQVBCIFJlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBDb250cm9sbGVyIHJlZ2lzdGVycy4NCi0gICAgICogQWxsIHJlZ2lzdGVycyBhcmUgMTYtYml0IHdpZGUgdW5sZXNzIG1lbnRpb25lZCBiZXNpZGUgdGhlIGRlZmluaXRpb24uDQotICAgICAqLw0KLSAgICBzdHJ1Y3QNCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fU09GVF9SRVNFVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fUkVGUkVTSF8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fUkVGUkVTSF8yX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fUE9XRVJET1dOX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fREVCVUdfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IE1PREVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFERFJfTUFQX0JBTktfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEVDQ19EQVRBX01BU0tfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFERFJfTUFQX0NPTF8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBRERSX01BUF9DT0xfMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQUREUl9NQVBfUk9XXzFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFERFJfTUFQX1JPV18yX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJTklUXzFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IENLRV9SU1ROX0NZQ0xFU19DUlsyXTsgICAgIC8qIDA6MjcgYml0cyBhcmUgdmFsaWQgKi8NCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5JVF9NUl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5JVF9FTVJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IElOSVRfRU1SMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5JVF9FTVIzX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX0JBTktfVElNSU5HX1BBUkFNX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX1JEX1dSX0xBVEVOQ1lfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERSQU1fUkRfV1JfUFJFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX01SX1RJTUlOR19QQVJBTV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9SQVNfVElNSU5HX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX1JEX1dSX1RSTkFSTkRfVElNRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9UX1BEX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX0JBTktfQUNUX1RJTUlOR19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgT0RUX1BBUkFNXzFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IE9EVF9QQVJBTV8yX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBRERSX01BUF9DT0xfM19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTU9ERV9SRUdfUkRfV1JfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IE1PREVfUkVHX0RBVEFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFBXUl9TQVZFXzFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFBXUl9TQVZFXzJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFpRX0xPTkdfVElNRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgWlFfU0hPUlRfVElNRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgWlFfU0hPUlRfSU5UX1JFRlJFU0hfTUFSR0lOX0NSWzJdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQRVJGX1BBUkFNXzFfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEhQUl9RVUVVRV9QQVJBTV9DUlsyXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTFBSX1FVRVVFX1BBUkFNX0NSWzJdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9RVUVVRV9QQVJBTV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUEVSRl9QQVJBTV8yX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQRVJGX1BBUkFNXzNfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERGSV9SRERBVEFfRU5fQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERGSV9NSU5fQ1RSTFVQRF9USU1JTkdfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERGSV9NQVhfQ1RSTFVQRF9USU1JTkdfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERGSV9XUl9MVkxfQ09OVFJPTF9DUlsyXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgREZJX1JEX0xWTF9DT05UUk9MX0NSWzJdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBERklfQ1RSTFVQRF9USU1FX0lOVEVSVkFMX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fU09GVF9SRVNFVF9DUjI7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFYSV9GQUJSSUNfUFJJX0lEX0NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBERFJDX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBTSU5HTEVfRVJSX0NOVF9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRE9VQkxFX0VSUl9DTlRfU1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IExVRV9TWU5EUk9NRV9TUls1XTsgICAgICAgLyogTFVFIDogTGFzdCBVbmNvcnJlY3RlZCBFcnJvciAqLw0KLSAgICAgICAgX19JICB1aW50MzJfdCBMVUVfQUREUkVTU19TUlsyXTsgICAgICAgIA0KLSAgICAgICAgX19JICB1aW50MzJfdCBMQ0VfU1lORFJPTUVfU1JbNV07ICAgICAgIC8qIExDRSA6IExhc3QgQ29ycmVjdGVkIEVycm9yICovDQotICAgICAgICBfX0kgIHVpbnQzMl90IExDRV9BRERSRVNTX1NSWzJdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBMQ0JfTlVNQkVSX1NSOyAgICAgICAgICAgIC8qIExDQiA6IExhc3QgQ29ycmVjdGVkIEJpdCAqLw0KLSAgICAgICAgX19JICB1aW50MzJfdCBMQ0JfTUFTS19TUls0XTsgICAgICAgICAgDQotICAgICAgICBfX0kgIHVpbnQzMl90IEVDQ19JTlRfU1I7DQotICAgICAgICBfX08gIHVpbnQzMl90IEVDQ19JTlRfQ0xSX1JFRzsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRUNDX09VVFBVVF9EQVRBX1NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDFbNDZdOw0KLSAgICB9IGRkcmM7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBQSFkgY29uZmlndXJhdGlvbiByZWdpc3RlcnMNCi0gICAgICovDQotICAgIHN0cnVjdCANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fQklTVF9URVNUX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fQklTVF9URVNUX0VSUkNMUl9DUlszXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQklTVF9URVNUX1NISUZUX1BBVFRFUk5fQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IExPT1BCQUNLX1RFU1RfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEJPQVJEX0xPT1BCQUNLX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDVFJMX1NMQVZFX1JBVElPX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDVFJMX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDVFJMX1NMQVZFX0RFTEFZX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEQVRBX1NMSUNFX0lOX1VTRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTFZMX05VTV9PRl9EUTBfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERRX09GRlNFVF9DUlszXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRElTX0NBTElCX1JTVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRExMX0xPQ0tfRElGRl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRklGT19XRV9JTl9ERUxBWV9DUlszXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRklGT19XRV9JTl9GT1JDRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRklGT19XRV9TTEFWRV9SQVRJT19DUls0XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgR0FURUxWTF9JTklUX01PREVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEdBVEVMVkxfSU5JVF9SQVRJT19DUls0XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTE9DQUxfT0RUX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJTlZFUlRfQ0xLT1VUX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRF9EUVNfU0xBVkVfREVMQVlfQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IFJEX0RRU19TTEFWRV9GT1JDRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkRfRFFTX1NMQVZFX1JBVElPX0NSWzRdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9EUVNfU0xBVkVfREVMQVlfQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IFdSX0RRU19TTEFWRV9GT1JDRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfRFFTX1NMQVZFX1JBVElPX0NSWzRdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9EQVRBX1NMQVZFX0RFTEFZX0NSWzNdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9EQVRBX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9EQVRBX1NMQVZFX1JBVElPX0NSWzRdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUkxWTF9JTklUX01PREVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFdSTFZMX0lOSVRfUkFUSU9fQ1JbNF07DQotICAgICAgICBfX0lPIHVpbnQzMl90IFdSX1JEX1JMX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRENfRklGT19SU1RfRVJSQ05UQ0xSX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRENfV0VfVE9fUkVfREVMQVlfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFVTRV9GSVhFRF9SRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgVVNFX1JBTkswX0RFTEFZU19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgVVNFX0xWTF9UUk5HX0xFVkVMX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDT05GSUdfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFJEX1dSX0dBVEVfTFZMX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEWU5fUkVTRVRfQ1I7DQotDQotICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgICAqIEREUiBQSFkgc3RhdHVzIHJlZ2lzdGVycw0KLSAgICAgICAgICovICAgIA0KLSAgICAgICAgX19JICB1aW50MzJfdCBMRVZFTExJTkdfRkFJTFVSRV9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgQklTVF9FUlJPUl9TUlszXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgV1JMVkxfRFFTX1JBVElPX1NSWzRdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBXUkxWTF9EUV9SQVRJT19TUls0XTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgUkRMVkxfRFFTX1JBVElPX1NSWzRdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBGSUZPX1NSWzRdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBNQVNURVJfRExMX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBETExfU0xBVkVfVkFMVUVfU1JbMl07DQotICAgICAgICBfX0kgIHVpbnQzMl90IFNUQVRVU19PRl9JTl9ERUxBWV9WQUxfU1JbMl07DQotICAgICAgICBfX0kgIHVpbnQzMl90IFNUQVRVU19PRl9PVVRfREVMQVlfVkFMX1NSWzJdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBETExfTE9DS19BTkRfU0xBVkVfVkFMX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBDVFJMX09VVFBVVF9GSUxURVJfU1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IENUUkxfT0ZfT1VUUFVUX0RFTEFZX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBSRF9EUVNfU0xBVkVfRExMX1ZBTF9TUlszXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgV1JfREFUQV9TTEFWRV9ETExfVkFMX1NSWzNdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBGSUZPX1dFX1NMQVZFX0RMTF9WQUxfU1JbM107DQotICAgICAgICBfX0kgIHVpbnQzMl90IFdSX0RRU19TTEFWRV9ETExfVkFMX1NSWzNdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBDVFJMX1NMQVZFX0RMTF9WQUxfU1I7IA0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDJbMTNdOw0KLSAgICB9IHBoeTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRklDLTY0IHJlZ2lzdGVycw0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIGFuZCAzMi1iaXQgYWxpZ25lZC4NCi0gICAgICovDQotICAgIHN0cnVjdCANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MzJfdCBOQl9BRERSX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBOQlJXQl9TSVpFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXQl9USU1FT1VUX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBIUERfU1dfUldfRU5fQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEhQRF9TV19SV19JTlZBTF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgU1dfV1JfRVJDTFJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEVSUl9JTlRfRU5BQkxFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBOVU1fQUhCX01BU1RFUlNfQ1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IEhQQl9FUlJfQUREUl9TUlsyXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgU1dfRVJSX0FERFJfU1JbMl07DQotICAgICAgICBfX0kgIHVpbnQzMl90IEhQRF9TV19XUkJfRU1QVFlfU1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IFNXX0hQQl9MT0NLT1VUX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBTV19IUERfV0VSUl9TUjsNCi0gICAgICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQwOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBMT0NLX1RJTUVPVVRWQUxfQ1JbMl07DQotICAgICAgICBfX0lPIHVpbnQzMl90IExPQ0tfVElNRU9VVF9FTl9DUjsNCi0gICAgICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzVdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRFdSX0VSUl9TUjsNCi0gICAgfSBmaWM7DQotfSBERFJDb3JlX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNRERSIEFQQiBDb25maWd1cmF0aW9uIFJlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogTUREUiBjb3JlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLg0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIHRvIGJlIGFjY2Vzc2VkIGFzOg0KLSAgICAgKiBNRERSLT5jb3JlLmZpYy48cmVnbmFtZT4gPSA8dmFsdWU+Ow0KLSAgICAgKiBNRERSLT5jb3JlLnBoeS48cmVnbmFtZT4gPSA8dmFsdWU+Ow0KLSAgICAgKiBNRERSLT5jb3JlLmRkcmMuPHJlZ25hbWU+ID0gPHZhbHVlPjsNCi0gICAgICovDQotICAgIEREUkNvcmVfVHlwZURlZiBjb3JlOw0KLSAgICANCi19IE1ERFJfVHlwZURlZjsNCi0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZERFIgQVBCIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdCANCi17DQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRkREUiBjb3JlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBUaGVzZSBhcmUgc2FtZSBhcyBjb3JyZXNwb25kaW5nIA0KLSAgICAgKiBNRERSIHJlZ2lzdGVycy4gDQotICAgICAqIFRoZXNlIHJlZ2lzdGVycyBhcmUgdG8gYmUgYWNjZXNzZWQgYXM6DQotICAgICAqIEZERFItPmNvcmUuZmljLjxyZWduYW1lPiA9IDx2YWx1ZT47DQotICAgICAqIEZERFItPmNvcmUucGh5LjxyZWduYW1lPiA9IDx2YWx1ZT47DQotICAgICAqIEZERFItPmNvcmUuZGRyYy48cmVnbmFtZT4gPSA8dmFsdWU+Ow0KLSAgICAgKi8NCi0gICAgRERSQ29yZV9UeXBlRGVmIGNvcmU7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRURbMzldOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBGRERSIHN5c3RlbSByZWdpc3RlcnMNCi0gICAgICogVGhlc2UgcmVnaXN0ZXJzIGFyZSB0byBiZSBhY2Nlc3NlZCBhczoNCi0gICAgICogRkREUi0+c3lzcmVnLlBMTF9DT05GSUdfTE9XXzIgPSAweDA0dTsNCi0gICAgICovDQotICAgIHN0cnVjdCANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQTExfQ09ORklHX0xPV18xOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQTExfQ09ORklHX0xPV18yOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQTExfQ09ORklHX0hJR0g7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZBQ0NfQ0xLX0VOOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBGQUNDX01VWF9DT05GSUc7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZBQ0NfRElWSVNPUl9SQVRJTzsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUExMX0RFTEFZX0xJTkVfU0VMOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBTT0ZUX1JFU0VUOyANCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU9fQ0FMSUI7DQotICAgICAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9FTkFCTEU7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFYSV9BSEJfTU9ERV9TRUw7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFBIWV9TRUxGX1JFRl9FTjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRkFCX1BMTF9DTEtfU1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZQTExfQ0xLX1NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDTEtfQ0FMSUJfU1RBVFVTOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJTlRFUlJVUFRfU1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IENMS19DQUxJQl9DT05GSUc7DQotICAgICAgICBfX0lPIHVpbnQzMl90IElPX0NBTElCX1NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBGQVRDX1JFU0VUOw0KLSAgICB9IHN5c3JlZzsNCi19IEZERFJfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNFUkRFUyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgQVhJIHdpbmRvdw0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIGJhc2U7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgc2l6ZTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICB3aW5kb3dfbHNiOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIHdpbmRvd19tc2I7DQotfSBheGlfd2luZG93X1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFBDSSBFeHByZXNzIEJyaWRnZSBDb3JlIHJlZ2lzdGVycy4NCi0gIA0KLSAgVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGFjY2VzcyB0byB0aGUgcmVnaXN0ZXJzIG9mIHRoZSBQQ0kgRXhwcmVzcw0KLSAgQnJpZGdlIENvcmUuDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIC8qPT09PT09PT09PT09PT09PT09PT09PT0gSW5mb3JtYXRpb24gcmVnaXN0ZXJzID09PT09PT09PT09PT09PT09PT09PT0qLw0KLSAgICAvKioNCi0gICAgICBJbmZvcm1hdGlvbiByZWdpc3RlcjogdmVuZG9yX2lkICYgZGV2aWNlX2lkDQotICAgICAgYml0cyBbMTU6MF0gICB2ZW5kb3JfaWQNCi0gICAgICBiaXRzIFszMToxNl0gIGRldmljZV9pZA0KLSAgICAgKi8NCi0gICAgLyogMHgwMDAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBWSURfREVWSUQ7DQotDQotICAgIC8qKg0KLSAgICAgIFBDSSBFeHByZXNzIENvbnRyb2wgJiBTdGF0dXMgUmVnaXN0ZXI6IGNmZ19wcm1zY3INCi0gICAgICovDQotICAgIC8qIDB4MDA0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0ZHX1BSTVNDUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEluZm9ybWF0aW9uIHJlZ2lzdGVyOiBjbGFzc19jb2RlDQotICAgICAqLw0KLSAgICAvKiAweDAwOCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENMQVNTX0NPREU7DQotICAgIA0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBiYXIwDQotICAgICAqLw0KLSAgICAvKiAweDAxMCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEJBUjA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogYmFyMQ0KLSAgICAgKi8NCi0gICAgLyogMHgwMTQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBCQVIxOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGJhcjINCi0gICAgICovDQotICAgIC8qIDB4MDE4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQkFSMjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBiYXIzDQotICAgICAqLw0KLSAgICAvKiAweDAxQyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEJBUjM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogYmFyNA0KLSAgICAgKi8NCi0gICAgLyogMHgwMjAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBCQVI0Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGJhcjUNCi0gICAgICovDQotICAgIC8qIDB4MDI0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQkFSNTsNCi0gICAgDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQxOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgSW5mb3JtYXRpb24gcmVnaXN0ZXI6IHN1YnN5c3RlbV9pZA0KLSAgICAgKi8NCi0gICAgLyogMHgwMkMgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTVUJTWVNURU1fSUQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBwY2llX2RldnNjcg0KLSAgICAgKi8NCi0gICAgLyogMHgwMzAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ0lFX0RFVlNDUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBDSSBFeHByZXNzIENvbnRyb2wgJiBTdGF0dXMgUmVnaXN0ZXI6IHBjaWVfbGlua3Njcg0KLSAgICAgKi8NCi0gICAgLyogMHgwMzQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ0lFX0xJTktTQ1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogdGNfdmNfbWFwcGluZw0KLSAgICAgKi8NCi0gICAgLyogMHgwMzggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUQ19WQ19NQVBQSU5HOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgSW5mb3JtYXRpb24gcmVnaXN0ZXI6IGNhcHR1cmVkX2J1c19kZXZpY2VfbmINCi0gICAgICovDQotICAgIC8qIDB4MDNDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0FQVFVSRURfQlVTX0RFVklDRV9OQjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEVuZHBvaW50IEludGVycnVwdCByZWdpc3RlcjogbXNpX2N0cmxfc3RhdHVzDQotICAgICAqLw0KLSAgICAvKiAweDA0MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIE1TSV9DVFJMX1NUQVRVUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IGx0c3NtDQotICAgICAqLw0KLSAgICAvKiAweDA0NCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIExUU1NNOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUG93ZXIgTWFuYWdlbWVudCByZWdpc3RlcjogcG93ZXJfbWd0X2NhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MDQ4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUE9XRVJfTUdUX0NBUEFCSUxJVFk7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBjZmdfcG1zY3INCi0gICAgICovDQotICAgIC8qIDB4MDRDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0ZHX1BNU0NSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGFlcl9lY3JjX2NhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MDUwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQUVSX0VDUkNfQ0FQQUJJTElUWTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiB2YzFfY2FwYWJpbGl0eQ0KLSAgICAgKi8NCi0gICAgLyogMHgwNTQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBWQzFfQ0FQQUJJTElUWTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBtYXhfcGF5bG9hZF9zaXplDQotICAgICAqLw0KLSAgICAvKiAweDA1OCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIE1BWF9QQVlMT0FEX1NJWkU7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogY2xrcmVxDQotICAgICAqLw0KLSAgICAvKiAweDA1QyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENMS1JFUTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IGFzcG1fbDBzX2NhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MDYwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVNQTV9MMFNfQ0FQQUJJTElUWTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IGFzcG1fbDFfY2FwYWJpbGl0eQ0KLSAgICAgKi8NCi0gICAgLyogMHgwNjQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBU1BNX0wxX0NBUEFCSUxJVFk7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiB0aW1lb3V0X2NvbXBsZXRpb24NCi0gICAgICovDQotICAgIC8qIDB4MDY4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVElNRU9VVF9DT01QTEVUSU9OOw0KLQ0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IHBtX2RhdGFfc2NhbGUNCi0gICAgICovDQotICAgIC8qIDB4MDcwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUE1fREFUQV9TQ0FMRVs0XTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEVuZHBvaW50IEludGVycnVwdCByZWdpc3RlcjogbXNpDQotICAgICAqLw0KLSAgICAvKiAweDA4MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIE1TSVs4XTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBlcnJvcl9jb3VudGVyDQotICAgICAqLw0KLSAgICAvKiAweDBBMCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEVSUk9SX0NPVU5URVJbNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogY3JlZGl0X2FsbG9jYXRpb24NCi0gICAgICovDQotICAgIC8qIDB4MEIwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1JFRElUX0FMTE9DQVRJT05bNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBBZGRyZXNzIE1hcHBpbmcgcmVnaXN0ZXI6IGF4aV9zbGF2ZV93aW5kb3cNCi0gICAgICovDQotICAgIC8qIDB4MEMwICovDQotICAgIGF4aV93aW5kb3dfVHlwZURlZiAgICAgIEFYSV9TTEFWRV9XSU5ET1dbNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBBZGRyZXNzIE1hcHBpbmcgcmVnaXN0ZXI6IGF4aV9tYXN0ZXJfd2luZG93DQotICAgICAqLw0KLSAgICAvKiAweDEwMCAqLw0KLSAgICBheGlfd2luZG93X1R5cGVEZWYgICAgICBBWElfTUFTVEVSX1dJTkRPV1s0XTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJvb3Rwb3J0IEludGVycnVwdCByZWdpc3RlcjogaW1hc2sNCi0gICAgICovDQotICAgIC8qIDB4MTQwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU1BU0s7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSb290cG9ydCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IGlzdGF0dXMNCi0gICAgICovDQotICAgIC8qIDB4MTQ0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSVNUQVRVUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJvb3Rwb3J0IEludGVycnVwdCByZWdpc3RlcjogaWNtZA0KLSAgICAgKi8NCi0gICAgLyogMHgxNDggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBJQ01EOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUm9vdHBvcnQgSW50ZXJydXB0IHJlZ2lzdGVyOiBpcnN0YXR1cw0KLSAgICAgKi8NCi0gICAgLyogMHgxNEMgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBJUlNUQVRVUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJvb3Rwb3J0IEludGVycnVwdCByZWdpc3RlcjogaW1zaWFkZHINCi0gICAgICovDQotICAgIC8qIDB4MTUwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU1TSUFERFI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBzbG90Y2FwDQotICAgICAqLw0KLSAgICAvKiAweDE1NCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNMT1RDQVA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBzbG90Y3NyDQotICAgICAqLw0KLSAgICAvKiAweDE1OCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNMT1RDU1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiByb290Y3NyDQotICAgICAqLw0KLSAgICAvKiAweDE1QyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJPT1RDU1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBjZmdfY29udHJvbA0KLSAgICAgKi8NCi0gICAgLyogMHgxNjAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDRkdfQ09OVFJPTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGNmZ193cml0ZV9kYXRhDQotICAgICAqLw0KLSAgICAvKiAweDE2NCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENGR19XUklURV9EQVRBOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogY2ZnX3JlYWRfZGF0YQ0KLSAgICAgKi8NCi0gICAgLyogMHgxNjggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDRkdfUkVBRF9EQVRBOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgSW5mb3JtYXRpb24gcmVnaXN0ZXI6IGluZm8NCi0gICAgICovDQotICAgIC8qIDB4MTZDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU5GTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIElucHV0L091dHB1dCBDb250cm9sIFJlZ2lzdGVyOiBpb19jb250cm9sDQotICAgICAqLw0KLSAgICAvKiAweDE3MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElPX0NPTlRST0w7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBJbnB1dC9PdXRwdXQgQ29udHJvbCBSZWdpc3RlcjogaW9fYWRkcg0KLSAgICAgKi8NCi0gICAgLyogMHgxNzQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBJT19BRERSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgSW5wdXQvT3V0cHV0IENvbnRyb2wgUmVnaXN0ZXI6IGlvX3dyaXRlX2RhdGENCi0gICAgICovDQotICAgIC8qIDB4MTc4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU9fV1JJVEVfREFUQTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIElucHV0L091dHB1dCBDb250cm9sIFJlZ2lzdGVyOiBpb19yZWFkX2RhdGENCi0gICAgICovDQotICAgIC8qIDB4MTdDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU9fUkVBRF9EQVRBOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogY2ZnX2ZiZQ0KLSAgICAgKi8NCi0gICAgLyogMHgxODAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDRkdfRkJFOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQWRkcmVzcyBNYXBwaW5nIHJlZ2lzdGVyOiBwcmVmZXRjaF9pb193aW5kb3cNCi0gICAgICovDQotICAgIC8qIDB4MTg0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJFRkVUQ0hfSU9fV0lORE9XOw0KLSAgICANCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDRbMzFdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IHBjaWVfY29uZmlnDQotICAgICAqLw0KLSAgICAvKiAweDIwNCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBDSUVfQ09ORklHOw0KLSAgICANCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDVbMTBdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3RlcjogcGNpZV9kZXYyc2NyDQotICAgICAqLw0KLSAgICAvKiAweDIzMCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBDSUVfREVWMlNDUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBDSSBFeHByZXNzIENvbnRyb2wgJiBTdGF0dXMgUmVnaXN0ZXI6IHBjaWVfbGluazJzY3INCi0gICAgICovDQotICAgIC8qIDB4MjM0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUENJRV9MSU5LMlNDUjsNCi0gICAgDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQ2WzEwXTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IGFzcG1fbDBzX2dlbjIgY2FwYWJpbGl0eQ0KLSAgICAgKi8NCi0gICAgLyogMHgyNjAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBU1BNX0wwU19HRU4yOw0KLSAgICANCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDdbMzldOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGtfY250X2NvbmZpZw0KLSAgICAgKi8NCi0gICAgLyogMHgzMDAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBLX0NOVF9DT05GSUdbNl07DQotICAgIA0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEOFs4MjZdOw0KLSAgICANCi19IFBDSUVfVHlwZURlZjsNCi0gDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFNFUkRFU0lGIFN5c3RlbSBSZWdpc3RlcnMuDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX1BMTF9DT05GSUdfTE9XOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNFUl9QTExfQ09ORklHX0hJR0g7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSREVTSUZfU09GVF9SRVNFVDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJfSU5URVJSVVBUX0VOQUJMRTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfQVhJX0FIQl9CUklER0U7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX0VDQ19JTlRSX0VOQUJMRTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfVEVTVF9JTjsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBURVNUX09VVF9SRUFEX0FERFI7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BDSUVfUE07DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BIWV9NT0RFXzA7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BIWV9NT0RFXzE7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BIWV9NT0RFXzI7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BDSUVfMDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfUENJRV8xOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QQ0lFXzI7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BDSUVfMzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfQkFSX1NJWkVfMF8xOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19CQVJfU0laRV8yXzM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX0JBUl9TSVpFXzNfNDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJfQ0xLX1NUQVRVUzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJfQ0xLX0NBTElCX1NUQVRVUzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBURVNUX09VVF9SRUFEX0RBVEE7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX0lOVEVSUlVQVDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJERVNJRl9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJfQ0xLX0NBTElCX0NPTkZJRzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRUZDTEtfU0VMOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBDTEtfU0VMOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEVQQ1NfUlNUTl9TRUw7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0hJUF9FTkFCTEVTOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNFUkRFU19URVNUX09VVDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJERVNfRkFUQ19SRVNFVDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSQ19PU0NfU1BMTF9SRUZDTEtfU0VMOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNQUkVBRF9TUEVDVFJVTV9DTEs7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfTVNUUl9XTkRXXzA7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfTVNUUl9XTkRXXzE7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfTVNUUl9XTkRXXzI7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfTVNUUl9XTkRXXzM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfU0xWX1dORFdfMDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GX0FYSV9TTFZfV05EV18xOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX1NMVl9XTkRXXzI7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfU0xWX1dORFdfMzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBERVNLRVdfQ09ORklHOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIERFQlVHX01PREVfS0VZOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBFWFRSQV9CSVRTOw0KLX0gU0VSREVTX0lOVEZfU1lTUkVHX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFNFUkRFUyBQSFkgcmVnaXN0ZXJzDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIC8qKg0KLSAgICAgIENvbnRyb2wgcmVnaXN0ZXIgMA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDUjA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDbG9jayBjb3VudCBmb3IgZXJyb3IgY291bnRlciBkZWNyZW1lbnQNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRVJSQ05UX0RFQzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEVycm9yIGNvdW50ZXIgdGhyZXNob2xkIC0gUnggaWRsZSBkZXRlY3QgbWF4IGxhdGVuY3kNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUlhJRExFX01BWF9FUlJDTlRfVEhSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggSW1wZWRhbmNlIHJhdGlvDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElNUEVEX1JBVElPOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUExMIEYgc2V0dGluZ3MgYW5kIFBDTEsgcmF0aW8NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUExMX0ZfUENMS19SQVRJTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBMTCBNICYgTiBzZXR0aW5ncw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQTExfTV9OOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgMjUwbnMgdGltZXIgYmFzZSBjb3VudA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDTlQyNTBOU19NQVg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeCBFcXVhbGl6YXRpb24gYW1wbGl0dWRlIHJhdGlvDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFX0FNUF9SQVRJTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IEVxdWFsaXphdGlvbiBDdXQgZnJlcXVlbmN5DQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFX0NVVF9SQVRJTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQb3N0LUN1cnNvciByYXRpbw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QU1RfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQcmUtQ3Vyc29yIHJhdGlvDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1BSRV9SQVRJTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEVuZCBvZiBjYWxpYnJhdGlvbiBjb3VudGVyDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEVORENBTElCX01BWDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIENhbGlicmF0aW9uIHN0YWJpbGl0eSBjb3VudGVyDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENBTElCX1NUQUJJTElUWV9DT1VOVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIGRvd24gZmVhdHVyZQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQT1dFUl9ET1dOOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggb2Zmc2V0IGNvdW50ZXINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUlhfT0ZGU0VUX0NPVU5UOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUExMIEYgc2V0dGluZ3MgYW5kIFBDTEsgcmF0aW8gKGluIFBDSWUgNSBHYnBzIHNwZWVkKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQTExfRl9QQ0xLX1JBVElPXzVHQlBTOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUExMIE0gJiBOIHN0dGluZ3MgKGluIFBDSWUgNSBHYnBzIHNwcGVkKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQTExfTV9OXzVHQlBTOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgMjUwbnMgdGltZXIgYmFzZSBjb3VudCAoaW4gUENJZSA1IEdicHMgc3BlZWQpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENOVDI1ME5TX01BWF81R0JQUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIHJlc2VydmVkDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUG9zdC1DdXJzb3IgcmF0aW8gd2l0aCBUeERlZW1wPTAsIEZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFNUX1JBVElPX0RFRU1QMF9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUHJlLUN1cnNvciByYXRpbyBUeERlZW1wPTAsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFJFX1JBVElPX0RFRU1QMF9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUG9zdC1DdXJzb3IgcmF0aW8gd2l0aCBUeERlZW1wPTEsIEZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFNUX1JBVElPX0RFRU1QMV9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUHJlLUN1cnNvciByYXRpbyBUeERlZW1wPTEsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFJFX1JBVElPX0RFRU1QMV9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTAsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjBfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj0xLCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU4xX0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49MiwgZnVsbCBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lOMl9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTMsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjNfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj00LCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU40X0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49NSwgZnVsbCBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lONV9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTYsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjZfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj03LCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU43X0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeCBFcXVhbGl6YXRpb24gYW1wbGl0dWRlIHJhdGlvIFR4RGVlbXA9MA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9BTVBfUkFUSU9fREVFTVAwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIEN1dCBmcmVxdWVuY3kgVHhEZWVtcD0wDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFX0NVVF9SQVRJT19ERUVNUDA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeCBFcXVhbGl6YXRpb24gYW1wbGl0dWRlIHJhdGlvIFR4RGVlbXA9MQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9BTVBfUkFUSU9fREVFTVAxOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIEN1dCBmcmVxdWVuY3kgVHhEZWVtcD0xDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFX0NVVF9SQVRJT19ERUVNUDE7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQb3N0LUN1cnNvciByYXRpbyB3aXRoIFR4RGVlbXA9MCwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QU1RfUkFUSU9fREVFTVAwX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQcmUtQ3Vyc29yIHJhdGlvIFR4RGVlbXA9MCwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QUkVfUkFUSU9fREVFTVAwX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQb3N0LUN1cnNvciByYXRpbyB3aXRoIFR4RGVlbXA9MSwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QU1RfUkFUSU9fREVFTVAxX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBQcmUtQ3Vyc29yIHJhdGlvIFR4RGVlbXA9MSwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QUkVfUkFUSU9fREVFTVAxX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49MCwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lOMF9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTEsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjFfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj0yLCBIYWxmIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU4yX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49MywgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lOM19IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTQsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjRfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj01LCBIYWxmIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU41X0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49NiwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lONl9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTcsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjdfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBNQSBzdGF0dXMNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUE1BX1NUQVRVUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IHN3ZWVwIGNlbnRlciAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1NXRUVQX0NFTlRFUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IHNlZXAgY2VudGVyIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUlhfU1dFRVBfQ0VOVEVSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIHN3ZWVwIGNlbnRlciAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFX1NXRUVQX0NFTlRFUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJlY2VpdmVyIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMCAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSUl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSZWNlaXZlciBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlJfMTRfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRFlOXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRFlOXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0RZTl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUkFfRFlOXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUkFfRFlOXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0RZTl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlRfRFlOXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgTG9hZGVyIHBhcmFtZXRlcjAtMQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlRfRFlOXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0RZTl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRUkxXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRUkxXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMV8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUkFfRUkxXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUkFfRUkxXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0VJMV8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlRfRUkxXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlRfRUkxXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0VJMV8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgc2hpZnQgTG9hZGVyIHBhcmFtZXRlciAyLTAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRUkyXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFAgc2hpZnQgTG9hZGVyIHBhcmFtZXRlciAyLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlBfRUkyXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIHNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMi0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgcGFyYW1ldHIgMi0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0VJMl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IHBhcmFtZXRyIDItMSAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSQV9FSTJfMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIEEgU2hpZnQgcGFyYW1ldHIgMi0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0VJMl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgcGFyYW1ldHIgMi0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0VJMl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IHBhcmFtZXRyIDItMSAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSVF9FSTJfMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFRyYW5zbWl0dGVyIFQgU2hpZnQgcGFyYW1ldHIgMi0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0VJMl8yMF8xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIE92ZXJyaWRlIGNhbGlicmF0aW9uIHJlZ2lzdGVyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgT1ZFUlJJREVfQ0FMSUI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBSZWNlaXZlciBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDAgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlJfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgUmVjZWl2ZXIgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJSXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBSZWNlaXZlciBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDIgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlJfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSUF83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMSAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSUF8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgUCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDIgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlBfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSQV83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMSAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSQV8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgQSBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDIgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUkFfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBUIFNoaWZ0IHBhcmFtZXRlciAwLTAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlRfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgVCBTaGlmdCBwYXJhbWV0ZXIgMC0xIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJUXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBUcmFuc21pdHRlciBUIFNoaWZ0IHBhcmFtZXRlciAwLTIgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlRfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeEQgb2Zmc2V0IGNhbGlicmF0aW9uIHJlc3VsdCAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJYRF9PRkZTRVRfQ0FMSUJfUkVTVUxUOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnhUIG9mZnNldCBjYWxpYnJhdGlvbiByZXN1bHQgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSWFRfT0ZGU0VUX0NBTElCX1JFU1VMVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFNjaG1pdHQgdHJpZ2dlciBjYWxpYnJhdGlvbiByZXN1bHQgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTQ0hNSVRUX1RSSUdfQ0FMSUJfUkVTVUxUOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgUnhEIG9mZnNldCBjYWxpYnJhdGlvbiBzZXR0aW5ncyAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX1JYRF9PRkZTRVRfQ0FMSUI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBSeFQgb2Zmc2V0IGNhbGlicmF0aW9uIHNldHRpbmdzIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfUlhUX09GRlNFVF9DQUxJQjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFNjaG1pdHQgdHJpZ2dlciBjYWxpYnJhdGlvbiBzZXR0aW5ncyAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX1NDSE1JVFRfVFJJR19DQUxJQjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgY29udHJvbCByZWdpc3RlciAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfQ1RSTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgZXJyb3IgY291bnRlciByZWdpc3RlciAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSQ05UOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUEhZIHJlc2V0IG92ZXJyaWRlIHJlZ2lzdGVyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUEhZX1JFU0VUX09WRVJSSURFOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUEhZIHBvd2VyIG92ZXJyaWRlIHJlZ2lzdGVyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUEhZX1BPV0VSX09WRVJSSURFOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSAwIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSAxIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgMiAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzIzXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSAzIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fMzFfMjQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBCeXRlIDQgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl8zOV8zMjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgNSAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzQ3XzQwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSA2IChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk41NV80ODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgNyAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzYzXzU2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSA4IChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fNzFfNjQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBCeXRlIDkgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl83OV83MjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIENvbnRyb2wgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl9DVFJMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gU3RhdHVzIHJlZ2lzdGVyIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fU1RBVFVTOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENTIExvb3BiYWNrIENvbnRyb2wgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ1NfTE9PUEJCQUNLX0NUUkw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBHZW4xIFRyYW5zbWl0IFBMTCBDdXJyZW50IENoYXJnZSBQdW1wIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgR0VOMV9UWF9QTExfQ0NQOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgR2VuMSBSZWNlaXZlIFBMTCBDdXJyZW50IENoYXJnZSBQdW1wIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgR0VOMV9SWF9QTExfQ0NQOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgR2VuMiBUcmFuc21pdCBQTEwgQ3VycmVudCBDaGFyZ2UgUHVtcCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEdFTjJfVFhfUExMX0NDUDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEdlbjIgUmVjZWl2ZSBQTEwgQ3VycmVudCBDaGFyZ2UgUHVtcCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEdFTjJfUlhfUExMX0NDUDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIENEUiBQTEwgbWFudWFsIGNvbnRyb2wNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0RSX1BMTF9NQU5VQUxfQ1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSZXNlcnZlZDANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQwWzZdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVXBkYXRlIHNldHRpbmdzIGNvbW1hbmQgcmVnaXN0ZXINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVVBEQVRFX1NFVFRJTkdTOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUmVzZXJ2ZWQxDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMVszMV07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGZpcnN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbNzowXQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzE1OjhdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19GSVJTVF8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzIzOjE2XQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfMjNfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGZpcnN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbMzE6MjRdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19GSVJTVF8zMV8yNDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgZmlyc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFszOTozMl0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0ZJUlNUXzM5XzMyOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzQ3OjQwXQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfNDdfNDA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGZpcnN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbNDk6NDhdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19GSVJTVF80OV80ODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJlc2VydmVkMg0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFs3OjBdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgbGFzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzE1OjhdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFsyMzoxNl0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0xBU1RfMjNfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFszMToyNF0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0xBU1RfMzFfMjQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFszOTozMl0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0xBU1RfMzlfMzI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFs0Nzo0MF0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0xBU1RfNDdfNDA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFs0OTo0OF0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0xBU1RfNDlfNDg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSZXNlcnZlZDMNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQzWzgxXTsNCi0gICAgDQotfSBTRVJERVNfVHlwZURlZjsNCi0gDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBzZXJkZXNpZl9yZWdzX3QgZGF0YSBzdHJ1Y3R1cmUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBjb21wbGV0ZSBzZXQgb2YgdGhlDQotICBTRVJERVMgSW50ZXJmYWNlIGhhcmR3YXJlIGJsb2NrIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBUaGVzZSByZWdpc3RlcnMgYXJlDQotICBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBBUEIgaW50ZXJmYWNlIG9mIHRoZSBTRVJERVMgSW50ZXJmYWNlIGhhcmR3YXJlIGJsb2NrLg0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKioNCi0gICAgICBQQ0llIGNvcmUgcmVnaXN0ZXJzLg0KLSAgICAgKi8NCi0gICAgUENJRV9UeXBlRGVmICAgICAgICAgICAgICAgIGNvcmU7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBTRVJERVMgbWFjcm8gcmVnaXN0ZXJzLg0KLSAgICAgKi8NCi0gICAgU0VSREVTX1R5cGVEZWYgICAgICAgICAgICAgIGxhbmVbNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBTRVJERVNJRiBzeXN0ZW0gcmVnaXN0ZXJzLg0KLSAgICAgKi8NCi0gICAgU0VSREVTX0lOVEZfU1lTUkVHX1R5cGVEZWYgICAgIHN5c19yZWdzOw0KLSAgICANCi19IFNFUkRFU0lGX1R5cGVEZWY7DQotDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTeXN0ZW0gUmVnaXN0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVTUkFNX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgwICAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRVNSQU1fTUFYX0xBVF9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDQgICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBERFJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYOCAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVOVk1fQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhDICAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRU5WTV9SRU1BUF9CQVNFX0NSOyAgICAgICAgICAgICAgICAgICAgICAgLyowWDEwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFTlZNX1JFTUFQX0ZBQl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIENDX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxOCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgQ0NfUkVHSU9OX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDFDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBDQ19MT0NLX0JBU0VfQUREUl9DUjsgICAgICAgICAgICAgICAgICAgICAvKjBYMjAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIENDX0ZMVVNIX0lORFhfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyNCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRERSQl9CVUZfVElNRVJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDI4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBERFJCX05CX0FERFJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMkMgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEREUkJfTkJfU0laRV9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgzMCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRERSQl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDM0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFREFDX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMzggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1BU1RFUl9XRUlHSFQwX0NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgzQyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTUFTVEVSX1dFSUdIVDFfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDQwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBTT0ZUX0lSUV9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNDQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFNPRlRfUlNUX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg0OCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTTNfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDRDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBGQUJfSUZfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNTAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIExPT1BCQUNLX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg1NCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgR1BJT19TWVNSRVNFVF9TRUxfQ1I7ICAgICAgICAgICAgICAgICAgICAgLyowWDU4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBHUElOX1NSQ19TRUxfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNUMgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1ERFJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg2MCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgVVNCX0lPX0lOUFVUX1NFTF9DUjsgICAgICAgICAgICAgICAgICAgICAgLyowWDY0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBQRVJJUEhfQ0xLX01VWF9TRUxfQ1I7ICAgICAgICAgICAgICAgICAgICAvKjBYNjggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFdET0dfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg2QyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTUREUl9JT19DQUxJQl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDcwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBTUEFSRV9PVVRfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNzQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVEQUNfSVJRX0VOQUJMRV9DUjsgICAgICAgICAgICAgICAgICAgICAgIC8qMFg3OCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgVVNCX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDdDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFU1JBTV9QSVBFTElORV9DUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYODAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1TU19JUlFfRU5BQkxFX0NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg4NCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgUlRDX1dBS0VVUF9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDg4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNQUNfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYOEMgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1TU0REUl9QTExfU1RBVFVTX0xPV19DUjsgICAgICAgICAgICAgICAgIC8qMFg5MCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTVNTRERSX1BMTF9TVEFUVVNfSElHSF9DUjsgICAgICAgICAgICAgICAgLyowWDk0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NERFJfRkFDQzFfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYOTggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1TU0REUl9GQUNDMl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg5QyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgUExMX0xPQ0tfRU5fQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEEwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NERFJfQ0xLX0NBTElCX0NSOyAgICAgICAgICAgICAgICAgICAgICAvKjBYQTQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFBMTF9ERUxBWV9MSU5FX1NFTF9DUjsgICAgICAgICAgICAgICAgICAgIC8qMFhBOCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTUFDX1NUQVRfQ0xST05SRF9DUjsgICAgICAgICAgICAgICAgICAgICAgLyowWEFDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBSRVNFVF9TT1VSQ0VfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQjAgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0RDX0VSUl9BRERSX1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhCNCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfSUNfRVJSX0FERFJfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWEI4ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19TQl9FUlJfQUREUl9TUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQkMgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0RFQ0NfRVJSX0FERFJfU1I7ICAgICAgICAgICAgICAgICAgICAgIC8qMFhDMCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfSUNfTUlTU19DTlRfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWEM0ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19JQ19ISVRfQ05UX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQzggICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0RDX01JU1NfQ05UX1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhDQyAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfRENfSElUX0NOVF9TUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEQwICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19JQ19UUkFOU19DTlRfU1I7ICAgICAgICAgICAgICAgICAgICAgICAvKjBYRDQgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0RDX1RSQU5TX0NOVF9TUjsgICAgICAgICAgICAgICAgICAgICAgIC8qMFhEOCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRERSQl9EU19FUlJfQURSX1NSOyAgICAgICAgICAgICAgICAgICAgICAgLyowWERDICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERFJCX0hQRF9FUlJfQURSX1NSOyAgICAgICAgICAgICAgICAgICAgICAvKjBYRTAgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEREUkJfU1dfRVJSX0FEUl9TUjsgICAgICAgICAgICAgICAgICAgICAgIC8qMFhFNCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRERSQl9CVUZfRU1QVFlfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWEU4ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERFJCX0RTQkxfRE5fU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYRUMgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVTUkFNMF9FREFDX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhGMCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRVNSQU0xX0VEQUNfQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEY0ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19FREFDX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYRjggICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1BQ19FREFDX1RYX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhGQyAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTUFDX0VEQUNfUlhfQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEwMCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBVU0JfRURBQ19DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTA0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENBTl9FREFDX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMDggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRVNSQU0wX0VEQUNfQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEwQyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBFU1JBTTFfRURBQ19BRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTEwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1BQ19FREFDX1JYX0FEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMTQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTUFDX0VEQUNfVFhfQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDExOCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQU5fRURBQ19BRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTFDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFVTQl9FREFDX0FEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMjAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTU0wXzFfMl9TRUNVUklUWTsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEyNCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNTTRfNV9GSUM2NF9TRUNVUklUWTsgICAgICAgICAgICAgICAgICAgICAvKjBYMTI4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1NM182XzdfOF9TRUNVUklUWTsgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMkMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTU05X1NFQ1VSSVRZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEzMCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNM19TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTM0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVUTV9DT1VOVF9MT1c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMzggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRVRNX0NPVU5UX0hJR0g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEzQyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERVZJQ0VfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTQwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVOVk1fUFJPVEVDVF9VU0VSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNDQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRU5WTV9TVEFUVVM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE0OCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERVZJQ0VfVkVSU0lPTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTRDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1TU0REUl9QTExfU1RBVFVTOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNTAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgVVNCX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE1NCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBFTlZNX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTU4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFNQQVJFX0lOOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNUMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRERSQl9TVEFUVVM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE2MCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNRERSX0lPX0NBTElCX1NUQVRVUzsgICAgICAgICAgICAgICAgICAgICAvKjBYMTY0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1TU0REUl9DTEtfQ0FMSUJfU1RBVFVTOyAgICAgICAgICAgICAgICAgIC8qMFgxNjggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgV0RPR0xPQUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE2QyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBXRE9HTVZSUDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTcwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFVTRVJDT05GSUcwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNzQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgVVNFUkNPTkZJRzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE3OCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBVU0VSQ09ORklHMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTdDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFVTRVJDT05GSUczOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxODAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRkFCX1BST1RfU0laRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE4NCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBGQUJfUFJPVF9CQVNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTg4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1TU19HUElPX0RFRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxOEMgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRURBQ19TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE5MCAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NfSU5URVJOQUxfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTk0ICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1TU19FWFRFUk5BTF9TUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxOTggKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgV0RPR1RJTUVPVVRFVkVOVDsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE5QyAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBDTFJfTVNTX0NPVU5URVJTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMUEwICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIENMUl9FREFDX0NPVU5URVJTOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxQTQgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRkxVU0hfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDFBOCAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNQUNfU1RBVF9DTFJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMUFDICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIElPTVVYQ0VMTF9DT05GSUdbNTddOyAgICAgICAgICAgICAgICAgICAgIC8qMFgxQjAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTlZNX1BST1RFQ1RfRkFDVE9SWTsgICAgICAgICAgICAgICAgICAgICAgLyowWDI5NCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERVZJQ0VfU1RBVFVTX0ZJWEVEOyAgICAgICAgICAgICAgICAgICAgICAvKjBYMjk4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1CSVNUX0VTMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyOUMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTUJJU1RfRVMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDJBMCAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU0REUl9QTExfU1RBVVNfMTsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMkE0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFJFRFVOREFOQ1lfRVNSQU0wOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyQTggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgUkVEVU5EQU5DWV9FU1JBTTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDJBQyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBTRVJERVNJRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMkIwICovDQotDQotfSBTWVNSRUdfVHlwZURlZjsNCi0NCi0jZGVmaW5lIFNZU1JFR19FTlZNMF9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDB1ICkNCi0jZGVmaW5lIFNZU1JFR19FTlZNMV9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDF1ICkNCi0jZGVmaW5lIFNZU1JFR19FU1JBTTBfU09GVFJFU0VUX01BU0sgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDJ1ICkNCi0jZGVmaW5lIFNZU1JFR19FU1JBTTFfU09GVFJFU0VUX01BU0sgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDN1ICkNCi0jZGVmaW5lIFNZU1JFR19NQUNfU09GVFJFU0VUX01BU0sgICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDR1ICkNCi0jZGVmaW5lIFNZU1JFR19QRE1BX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDV1ICkNCi0jZGVmaW5lIFNZU1JFR19USU1FUl9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDZ1ICkNCi0jZGVmaW5lIFNZU1JFR19NTVVBUlQwX1NPRlRSRVNFVF9NQVNLICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDd1ICkNCi0jZGVmaW5lIFNZU1JFR19NTVVBUlQxX1NPRlRSRVNFVF9NQVNLICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDh1ICkNCi0jZGVmaW5lIFNZU1JFR19TUEkwX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDl1ICkNCi0jZGVmaW5lIFNZU1JFR19TUEkxX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDEwdSApDQotI2RlZmluZSBTWVNSRUdfSTJDMF9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxMXUgKQ0KLSNkZWZpbmUgU1lTUkVHX0kyQzFfU09GVFJFU0VUX01BU0sgICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTJ1ICkNCi0jZGVmaW5lIFNZU1JFR19DQU5fU09GVFJFU0VUX01BU0sgICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDEzdSApDQotI2RlZmluZSBTWVNSRUdfVVNCX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxNHUgKQ0KLSNkZWZpbmUgU1lTUkVHX0NPTUJMS19TT0ZUUkVTRVRfTUFTSyAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTV1ICkNCi0jZGVmaW5lIFNZU1JFR19GUEdBX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDE2dSApDQotI2RlZmluZSBTWVNSRUdfSFBETUFfU09GVFJFU0VUX01BU0sgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxN3UgKQ0KLSNkZWZpbmUgU1lTUkVHX0ZJQzMyXzBfU09GVFJFU0VUX01BU0sgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTh1ICkNCi0jZGVmaW5lIFNZU1JFR19GSUMzMl8xX1NPRlRSRVNFVF9NQVNLICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDE5dSApDQotI2RlZmluZSBTWVNSRUdfR1BJT19TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAyMHUgKQ0KLSNkZWZpbmUgU1lTUkVHX0dQSU9fN18wX1NPRlRSRVNFVF9NQVNLICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMjF1ICkNCi0jZGVmaW5lIFNZU1JFR19HUElPXzE1XzhfU09GVFJFU0VUX01BU0sgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDIydSApDQotI2RlZmluZSBTWVNSRUdfR1BJT18yM18xNl9TT0ZUUkVTRVRfTUFTSyAgICAoICh1aW50MzJfdCkweDAxdSA8PCAyM3UgKQ0KLSNkZWZpbmUgU1lTUkVHX0dQSU9fMzFfMjRfU09GVFJFU0VUX01BU0sgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMjR1ICkNCi0jZGVmaW5lIFNZU1JFR19NRERSX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDI1dSApDQotI2RlZmluZSBTWVNSRUdfRklDNjRfU09GVFJFU0VUX01BU0sgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAyNnUgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb3JlU0YyQ29uZmlnIFJlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0IHsNCi0gICAgX19JTyAgICAgdWludDMyX3QgICBDT05GSUdfRE9ORTsNCi0gICAgX19JICAgICAgdWludDMyX3QgICBJTklUX0RPTkU7DQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgQ0xSX0lOSVRfRE9ORTsNCi19IENvcmVTRjJDb25maWdfVHlwZURlZjsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qICAgICAgICAgICAgICAgICAgICAgICAgIFBlcmlwaGVyYWwgbWVtb3J5IG1hcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIFVBUlQwX0JBU0UgICAgICAgICAgICAgIDB4NDAwMDAwMDB1DQotI2RlZmluZSBTUEkwX0JBU0UgICAgICAgICAgICAgICAweDQwMDAxMDAwdQ0KLSNkZWZpbmUgSTJDMF9CQVNFICAgICAgICAgICAgICAgMHg0MDAwMjAwMHUNCi0jZGVmaW5lIFBETUFfQkFTRSAgICAgICAgICAgICAgIDB4NDAwMDMwMDB1DQotI2RlZmluZSBUSU1FUl9CQVNFICAgICAgICAgICAgICAweDQwMDA0MDAwdQ0KLSNkZWZpbmUgV0FUQ0hET0dfQkFTRSAgICAgICAgICAgMHg0MDAwNTAwMHUNCi0jZGVmaW5lIEgyRl9JUlFfQ1RSTF9CQVNFICAgICAgIDB4NDAwMDYwMDB1DQotI2RlZmluZSBVQVJUMV9CQVNFICAgICAgICAgICAgICAweDQwMDEwMDAwdQ0KLSNkZWZpbmUgU1BJMV9CQVNFICAgICAgICAgICAgICAgMHg0MDAxMTAwMHUNCi0jZGVmaW5lIEkyQzFfQkFTRSAgICAgICAgICAgICAgIDB4NDAwMTIwMDB1DQotI2RlZmluZSBHUElPX0JBU0UgICAgICAgICAgICAgICAweDQwMDEzMDAwdQ0KLSNkZWZpbmUgSFBETUFfQkFTRSAgICAgICAgICAgICAgMHg0MDAxNDAwMHUNCi0jZGVmaW5lIENBTl9CQVNFICAgICAgICAgICAgICAgIDB4NDAwMTUwMDB1DQotI2RlZmluZSBDT01CTEtfQkFTRSAgICAgICAgICAgICAweDQwMDE2MDAwdQ0KLSNkZWZpbmUgUlRDX0JBU0UgICAgICAgICAgICAgICAgMHg0MDAxNzAwMHUNCi0jZGVmaW5lIEREUjBfQ0ZHX0JBU0UgICAgICAgICAgIDB4NDAwMjA4MDB1DQotI2RlZmluZSBERFIxX0NGR19CQVNFICAgICAgICAgICAweDQwMDIxMDAwdQ0KLSNkZWZpbmUgQ09SRV9TRjJfQ0ZHX0JBU0UgICAgICAgMHg0MDAyMjAwMHUNCi0jZGVmaW5lIFNFUkRFUzBfQ0ZHX0JBU0UgICAgICAgIDB4NDAwMjgwMDB1DQotI2RlZmluZSBTRVJERVMxX0NGR19CQVNFICAgICAgICAweDQwMDJDMDAwdQ0KLSNkZWZpbmUgU1lTUkVHX0JBU0UgICAgICAgICAgICAgMHg0MDAzODAwMHUNCi0jZGVmaW5lIEVUSEVSTkVUX0JBU0UgICAgICAgICAgIDB4NDAwNDEwMDB1DQotI2RlZmluZSBVU0JfQkFTRSAgICAgICAgICAgICAgICAweDQwMDQzMDAwdQ0KLSNkZWZpbmUgRU5WTTFfQkFTRSAgICAgICAgICAgICAgMHg2MDA4MDAwMHUNCi0jZGVmaW5lIEVOVk0yX0JBU0UgICAgICAgICAgICAgIDB4NjAwQzAwMDB1DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBiaXRiYW5kIGFkZHJlc3MgY2FsY3VsYXRpb24gbWFjcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEJJVEJBTkRfQUREUkVTUyhYKSAgKChYICYgMHhGMDAwMDAwMFUpICsgMHgwMjAwMDAwMFUgKyAoKFggJiAweEZGRkZGVSkgPDwgNSkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICBQZXJpcGhlcmFsIGRlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBVQVJUMCAgICAgICAgICAgICAgICAgICAoKFVBUlRfVHlwZURlZiAqKSBVQVJUMF9CQVNFKQ0KLSNkZWZpbmUgU1BJMCAgICAgICAgICAgICAgICAgICAgKChTUElfVHlwZURlZiAqKSBTUEkwX0JBU0UpDQotI2RlZmluZSBJMkMwICAgICAgICAgICAgICAgICAgICAoKEkyQ19UeXBlRGVmICopIEkyQzBfQkFTRSkNCi0jZGVmaW5lIEkyQzBfQklUQkFORCAgICAgICAgICAgICgoSTJDX0JpdEJhbmRfVHlwZURlZiAqKSBCSVRCQU5EX0FERFJFU1MoSTJDMF9CQVNFKSkNCi0jZGVmaW5lIE1BQyAgICAgICAgICAgICAgICAgICAgICgoTUFDX1R5cGVEZWYgKikgRVRIRVJORVRfQkFTRSkNCi0jZGVmaW5lIFBETUEgICAgICAgICAgICAgICAgICAgICgoUERNQV9UeXBlRGVmICopIFBETUFfQkFTRSkNCi0jZGVmaW5lIFRJTUVSICAgICAgICAgICAgICAgICAgICgoVElNRVJfVHlwZURlZiAqKSBUSU1FUl9CQVNFKQ0KLSNkZWZpbmUgVElNRVJfQklUQkFORCAgICAgICAgICAgKChUSU1FUl9CaXRCYW5kX1R5cGVEZWYgKikgQklUQkFORF9BRERSRVNTKFRJTUVSX0JBU0UpKQ0KLSNkZWZpbmUgV0FUQ0hET0cgICAgICAgICAgICAgICAgKChXQVRDSERPR19UeXBlRGVmICopIFdBVENIRE9HX0JBU0UpDQotI2RlZmluZSBJTlRFUlJVUFRfQ1RSTCAgICAgICAgICAoKElOVEVSUlVQVF9DVFJMX1R5cGVEZWYgKikgSDJGX0lSUV9DVFJMX0JBU0UpDQotI2RlZmluZSBJTlRFUlJVUFRfQ1RSTF9CSVRCQU5EICAoKElOVEVSUlVQVF9DVFJMX0JpdEJhbmRfVHlwZURlZiAqKSBCSVRCQU5EX0FERFJFU1MoSDJGX0lSUV9DVFJMX0JBU0UpKQ0KLSNkZWZpbmUgVUFSVDEgICAgICAgICAgICAgICAgICAgKChVQVJUX1R5cGVEZWYgKikgVUFSVDFfQkFTRSkNCi0jZGVmaW5lIFNQSTEgICAgICAgICAgICAgICAgICAgICgoU1BJX1R5cGVEZWYgKikgU1BJMV9CQVNFKQ0KLSNkZWZpbmUgSTJDMSAgICAgICAgICAgICAgICAgICAgKChJMkNfVHlwZURlZiAqKSBJMkMxX0JBU0UpDQotI2RlZmluZSBJMkMxX0JJVEJBTkQgICAgICAgICAgICAoKEkyQ19CaXRCYW5kX1R5cGVEZWYgKikgQklUQkFORF9BRERSRVNTKEkyQzFfQkFTRSkpDQotI2RlZmluZSBHUElPICAgICAgICAgICAgICAgICAgICAoKEdQSU9fVHlwZURlZiAqKSBHUElPX0JBU0UpDQotI2RlZmluZSBHUElPX0JJVEJBTkQgICAgICAgICAgICAoKEdQSU9fQml0QmFuZF9UeXBlRGVmICopIEJJVEJBTkRfQUREUkVTUyhHUElPX0JBU0UpKQ0KLSNkZWZpbmUgSFBETUEgICAgICAgICAgICAgICAgICAgKChIUERNQV9UeXBlRGVmICopIEhQRE1BX0JBU0UpDQotI2RlZmluZSBIUERNQV9CSVRCQU5EICAgICAgICAgICAoKEhQRE1BX0JpdEJhbmRfVHlwZURlZiAqKSBCSVRCQU5EX0FERFJFU1MoSFBETUFfQkFTRSkpDQotI2RlZmluZSBDT01CTEsgICAgICAgICAgICAgICAgICAoKENPTUJMS19UeXBlRGVmICopIENPTUJMS19CQVNFKQ0KLSNkZWZpbmUgUlRDICAgICAgICAgICAgICAgICAgICAgKChSVENfVHlwZURlZiAqKSBSVENfQkFTRSkNCi0jZGVmaW5lIEVOVk1fMSAgICAgICAgICAgICAgICAgICgoTlZNX1R5cGVEZWYgKikgRU5WTTFfQkFTRSkNCi0jZGVmaW5lIEVOVk1fMiAgICAgICAgICAgICAgICAgICgoTlZNX1R5cGVEZWYgKikgRU5WTTJfQkFTRSkNCi0jZGVmaW5lIFNZU1JFRyAgICAgICAgICAgICAgICAgICgoU1lTUkVHX1R5cGVEZWYgKikgU1lTUkVHX0JBU0UpDQotI2RlZmluZSBNRERSICAgICAgICAgICAgICAgICAgICAoKE1ERFJfVHlwZURlZiAqKSBERFIwX0NGR19CQVNFKQ0KLSNkZWZpbmUgRkREUiAgICAgICAgICAgICAgICAgICAgKChGRERSX1R5cGVEZWYgKikgRERSMV9DRkdfQkFTRSkgDQotI2RlZmluZSBVU0IgICAgICAgICAgICAgICAgICAgICAoKE1TU19VU0JfVHlwZURlZiAqKSBVU0JfQkFTRSkNCi0jZGVmaW5lIFNFUkRFUzAgICAgICAgICAgICAgICAgICgoU0VSREVTSUZfVHlwZURlZiAqKSBTRVJERVMwX0NGR19CQVNFKQ0KLSNkZWZpbmUgU0VSREVTMSAgICAgICAgICAgICAgICAgKChTRVJERVNJRl9UeXBlRGVmICopIFNFUkRFUzFfQ0ZHX0JBU0UpDQotI2RlZmluZSBDT1JFX1NGMl9DRkcgICAgICAgICAgICAoKENvcmVTRjJDb25maWdfVHlwZURlZiAqKSBDT1JFX1NGMl9DRkdfQkFTRSkNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmICAvKiBfX1NNQVJURlVTSU9OMl9DTVNJU19QQUxfSF9fICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9tc3NfYXNzZXJ0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL21zc19hc3NlcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU2OTE1Zi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL21zc19hc3NlcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA5LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBBc3NlcnRpb24gaW1wbGVtZW50YXRpb24uDQotICoNCi0gKiBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBU1NFUlQgbWFjcm8uIFRoaXMgZmlsZSBjYW4gYmUNCi0gKiBtb2RpZmllZCB0byBjYXRlciBmb3IgcHJvamVjdCBzcGVjaWZpYyByZXF1aXJlbWVudHMgcmVnYXJkaW5nIHRoZSB3YXkNCi0gKiBhc3NlcnRpb25zIGFyZSBoYW5kbGVkLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTI3OSAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIyIDIwOjQ4OjM4ICswMDAwIChGcmksIDIyIE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBfX01TU19BU1NFUlRfSF8NCi0jZGVmaW5lIF9fTVNTX0FTU0VSVF9IXw0KLQ0KLSNpbmNsdWRlIDxhc3NlcnQuaD4NCi0NCi0jaWYgZGVmaW5lZCAoIF9fR05VQ19fICAgKQ0KLQ0KLSNpZiBkZWZpbmVkKE5ERUJVRykNCi0NCi0jZGVmaW5lIEFTU0VSVChDSEVDSykNCi0NCi0jZWxzZSAgIC8qIE5ERUJVRyAqLw0KLS8qDQotICogU29mdENvbnNvbGUgYXNzZXJ0aW9uIGhhbmRsaW5nDQotICovDQotI2RlZmluZSBBU1NFUlQoQ0hFQ0spICBcDQotICAgIGRvIHsgXA0KLSAgICAgICAgaWYgKCEoQ0hFQ0spKSBcDQotICAgICAgICB7IFwNCi0gICAgICAgICAgICBfX2FzbSB2b2xhdGlsZSAoIkJLUFRcblx0Iik7IFwNCi0gICAgICAgIH0gXA0KLSAgICB9IHdoaWxlICgwKTsNCi0gICAgDQotI2VuZGlmICAvKiBOREVCVUcgKi8NCi0NCi0jZWxpZiBkZWZpbmVkICggX19JQ0NBUk1fXyApDQotLyoNCi0gKiBJQVIgRW1iZWRkZWQgV29ya2JlbmNoIGFzc2VydGlvbiBoYW5kbGluZy4NCi0gKiBDYWxsIEMgbGlicmFyeSBhc3NlcnQgZnVuY3Rpb24gd2hpY2ggc2hvdWxkIHJlc3VsdCBpbiBlcnJvciBtZXNzYWdlDQotICogZGlzcGxheWVkIGluIGRlYnVnZ2VyLg0KLSAqLw0KLSNkZWZpbmUgQVNTRVJUKFgpICAgYXNzZXJ0KFgpDQotDQotI2Vsc2UNCi0vKg0KLSAqIEtlaWwgYXNzZXJ0aW9uIGhhbmRsaW5nLg0KLSAqIENhbGwgQyBsaWJyYXJ5IGFzc2VydCBmdW5jdGlvbiB3aGljaCBzaG91bGQgcmVzdWx0IGluIGVycm9yIG1lc3NhZ2UNCi0gKiBkaXNwbGF5ZWQgaW4gZGVidWdnZXIuDQotICovDQotDQotI2lmbmRlZiBfX01JQ1JPTElCDQotICAjZGVmaW5lIEFTU0VSVChYKSAgIGFzc2VydChYKQ0KLSNlbHNlDQotICAjZGVmaW5lIEFTU0VSVChYKQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAgLyogX19NU1NfQVNTRVJUX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1leHRlcm5hbC1yYW0ubGQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLWV4dGVybmFsLXJhbS5sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVhY2EyMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLWV4dGVybmFsLXJhbS5sZAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFNtYXJ0RnVzaW9uMiBDb3J0ZXgtTTMgbGlua2VyIHNjcmlwdCBmb3IgY3JlYXRpbmcgYSBTb2Z0Q29uc29sZSBkb3dubG9hZGFibGUKLSAqIGRlYnVnIGltYWdlIGV4ZWN1dGluZyBpbiBTbWFydEZ1c2lvbjIgZGV2ZWxvcG1lbnQgYm9hcmQgZXh0ZXJuYWwgUkFNLgotICoKLSAqIFNWTiAkUmV2aXNpb246IDUyNjkgJAotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDIwOjUzOjM4ICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkCi0gKi8KLQotT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWJpZ2FybSIsCi0JICAgICAgImVsZjMyLWxpdHRsZWFybSIpCi1HUk9VUCgtbGMgLWxnY2MgLWxtKQotT1VUUFVUX0FSQ0goYXJtKQotRU5UUlkoUmVzZXRfSGFuZGxlcikKLVNFQVJDSF9ESVIoLikKLV9fRFlOQU1JQyAgPSAgMDsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFN0YXJ0IG9mIGJvYXJkIGN1c3RvbWl6YXRpb24uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLU1FTU9SWQotewotICAvKiBTbWFydEZ1c2lvbjIgaW50ZXJuYWwgZVNSQU0gKi8KLSAgZXNyYW0gKHJ3eCkgOiBPUklHSU4gPSAweDIwMDAwMDAwLCBMRU5HVEggPSA2NGsKLSAgCi0gIC8qIFNtYXJ0RnVzaW9uMiBkZXZlbG9wbWVudCBib2FyZCBleHRlcm5hbCBSQU0gKi8KLSAgZXh0ZXJuYWxfcmFtIChyd3gpIDogT1JJR0lOID0gMHg3MDAwMDAwMCwgTEVOR1RIID0gMk0KLX0KLQotUkFNX1NUQVJUX0FERFJFU1MgPSAweDcwMDAwMDAwOwkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIE1FTU9SWSByZWdpb24gcmFtIE9SSUdJTiBhYm92ZS4gKi8KLVJBTV9TSVpFID0gNjRrOwkJCQkJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBNRU1PUlkgcmVnaW9uIHJhbSBMRU5HVEggYWJvdmUuICovCi1NQUlOX1NUQUNLX1NJWkUgPSA4azsJCQkvKiBDb3J0ZXggbWFpbiBzdGFjayBzaXplLiAqLwotUFJPQ0VTU19TVEFDS19TSVpFCT0gNGs7CQkvKiBDb3J0ZXggcHJvY2VzcyBzdGFjayBzaXplIChvbmx5IGF2YWlsYWJsZSB3aXRoIE9TIGV4dGVuc2lvbnMpLiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFbmQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotUFJPVklERSAoX19tYWluX3N0YWNrX3N0YXJ0ID0gUkFNX1NUQVJUX0FERFJFU1MgKyBSQU1fU0laRSk7Ci1QUk9WSURFIChfX3Byb2Nlc3Nfc3RhY2tfc3RhcnQgPSBfX21haW5fc3RhY2tfc3RhcnQgLSBNQUlOX1NUQUNLX1NJWkUpOwotUFJPVklERSAoX2VzdGFjayA9IF9fbWFpbl9zdGFja19zdGFydCk7Ci1QUk9WSURFIChfX21pcnJvcmVkX252bSA9IDApOyAgIC8qIEluZGljYXRlIHRvIHN0YXJ0dXAgY29kZSB0aGF0IE5WTSBpcyBub3QgbWlycm9yZWQgdG8gVk1BIGFkZHJlc3MgLnRleHQgY29weSBpcyByZXF1aXJlZC4gKi8KLQotU0VDVElPTlMKLXsKLSAgLmluaXQgOgotICB7Ci0gICAgX192ZWN0b3JfdGFibGVfdm1hX2Jhc2VfYWRkcmVzcyA9IC47Ci0gICAgKiguaXNyX3ZlY3RvcikKLSAgICAuID0gQUxJR04oMHg0KTsKLSAgfSA+ZXNyYW0KLSAgCi0gIC50ZXh0IDoKLSAgewotICAgIENSRUFURV9PQkpFQ1RfU1lNQk9MUwotICAgIF9fdGV4dF9sb2FkID0gTE9BREFERFIoLnRleHQpOwotICAgIF9fdGV4dF9zdGFydCA9IC47Ci0gICAgKigudGV4dCAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQotICAgICooLnBsdCkKLSAgICAqKC5nbnUud2FybmluZykKLSAgICAqKC5nbHVlXzd0KSAqKC5nbHVlXzcpICooLnZmcDExX3ZlbmVlcikKLQotICAgIC4gPSBBTElHTigweDQpOwotICAgIC8qIFRoZXNlIGFyZSBmb3IgcnVubmluZyBzdGF0aWMgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyB1bmRlciBFTEYuICAqLwotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmN0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5kdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5kdG9ycykpCi0KLSAgICAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKQotCi0gICAgKiguQVJNLmV4dGFiKiAuZ251LmxpbmtvbmNlLmFybWV4dGFiLiopCi0gICAgKiguZ2NjX2V4Y2VwdF90YWJsZSkgCi0gICAgKiguZWhfZnJhbWVfaGRyKQotICAgICooLmVoX2ZyYW1lKQotCi0gICAgS0VFUCAoKiguaW5pdCkpCi0gICAgS0VFUCAoKiguZmluaSkpCi0KLSAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKihTT1JUKC5pbml0X2FycmF5LiopKSkKLSAgICBLRUVQICgqKC5pbml0X2FycmF5KSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwotICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKC5maW5pX2FycmF5KSkKLSAgICBLRUVQICgqKFNPUlQoLmZpbmlfYXJyYXkuKikpKQotICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7Ci0gIH0gPmV4dGVybmFsX3JhbQotICAvKiAuQVJNLmV4aWR4IGlzIHNvcnRlZCwgc28gaGFzIHRvIGdvIGluIGl0cyBvd24gb3V0cHV0IHNlY3Rpb24uICAqLwotICAgX19leGlkeF9zdGFydCA9IC47Ci0gIC5BUk0uZXhpZHggOgotICB7Ci0gICAgKiguQVJNLmV4aWR4KiAuZ251LmxpbmtvbmNlLmFybWV4aWR4LiopCi0gIH0gPmV4dGVybmFsX3JhbQotICBfX2V4aWR4X2VuZCA9IC47Ci0gIF9ldGV4dCA9IC47Ci0gIFBST1ZJREUoX190ZXh0X2VuZCA9IC4pOwotCi0gIC5kYXRhIDoKLSAgewotICAgIF9fZGF0YV9sb2FkID0gTE9BREFERFIgKC5kYXRhKTsKLSAgICBfc2lkYXRhID0gTE9BREFERFIgKC5kYXRhKTsKLSAgICBfX2RhdGFfc3RhcnQgPSAuOwotICAgIF9zZGF0YSA9IC47Ci0gICAgS0VFUCgqKC5qY3IpKQotICAgICooLmdvdC5wbHQpICooLmdvdCkKLSAgICAqKC5zaGRhdGEpCi0gICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQotICAgIC4gPSBBTElHTiAoNCk7Ci0gICAgX2VkYXRhID0gLjsKLSAgfSA+ZXh0ZXJuYWxfcmFtIAotCi0gIC5ic3MgOgotICB7Ci0gICAgX19ic3Nfc3RhcnRfXyA9IC4gOwotICAgIF9zYnNzID0gLjsKLSAgICAqKC5zaGJzcykKLSAgICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQotICAgICooQ09NTU9OKQotICAgIC4gPSBBTElHTiAoOCk7Ci0gICAgX19ic3NfZW5kX18gPSAuOwotICAgIF9lbmQgPSAuOwotICAgIF9fZW5kID0gX2VuZDsKLSAgICBfZWJzcyA9IC47Ci0gICAgUFJPVklERShlbmQgPSAuKTsKLSAgfSA+ZXh0ZXJuYWxfcmFtIAotCi0gIC8qIAotICAgKiBUaGUgLnN0YWNrIHNlY3Rpb24gaXMgb25seSBzcGVjaWZpZWQgaGVyZSBpbiBvcmRlciBmb3IgdGhlIGxpbmtlciB0byBnZW5lcmF0ZQotICAgKiBhbiBlcnJvciBpZiB0aGUgZXNyYW0gaXMgZnVsbC4KLSAgICovCi0gIC5zdGFjayA6Ci0gIHsKLSAgCS4gPSBBTElHTig0KTsKLSAgICAuICs9IFBST0NFU1NfU1RBQ0tfU0laRTsKLSAgICAuID0gQUxJR04oNCk7Ci0gICAgLiArPSBNQUlOX1NUQUNLX1NJWkU7Ci0gICAgLiA9IEFMSUdOKDQpOwotICB9ID5leHRlcm5hbF9yYW0KLSAgCi0gIC5zdGFiIDAgKE5PTE9BRCkgOgotICB7Ci0gICAgKiguc3RhYikKLSAgfQotCi0gIC5zdGFic3RyIDAgKE5PTE9BRCkgOgotICB7Ci0gICAgKiguc3RhYnN0cikKLSAgfQotICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KLSAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCi0gICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCi0gIC8qIERXQVJGIDEgKi8KLSAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9Ci0gIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9Ci0gIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KLSAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KLSAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KLSAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCi0gIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9Ci0gIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQotICAvKiBEV0FSRiAyICovCi0gIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQotICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9Ci0gIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9Ci0gIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQotICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9Ci0gIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KLSAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KLSAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCi0gIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9Ci0gIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9Ci0gIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9Ci0gIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KLSAgLm5vdGUuZ251LmFybS5pZGVudCAwIDogeyBLRUVQICgqKC5ub3RlLmdudS5hcm0uaWRlbnQpKSB9Ci0gIC5BUk0uYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5BUk0uYXR0cmlidXRlcykpIH0KLSAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguaXNyX3ZlY3RvcikgfQotfQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVudm0ubGQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLW1pY3Jvc2VtaS1zbWFydGZ1c2lvbjItZW52bS5sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlkYWExOC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLW1pY3Jvc2VtaS1zbWFydGZ1c2lvbjItZW52bS5sZAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFNtYXJ0RnVzaW9uMiBDb3J0ZXgtTTMgbGlua2VyIHNjcmlwdCBmb3IgY3JlYXRpbmcgYSBTb2Z0Q29uc29sZSBkb3dubG9hZGFibGUKLSAqIGRlYnVnIGltYWdlIGV4ZWN1dGluZyBpbiBTbWFydEZ1c2lvbjIgaW50ZXJuYWwgZU5WTS4KLSAqCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQKLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJAotICovCi0KLU9VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1iaWdhcm0iLAotCSAgICAgICJlbGYzMi1saXR0bGVhcm0iKQotR1JPVVAoLWxjIC1sZ2NjIC1sbSkKLU9VVFBVVF9BUkNIKGFybSkKLUVOVFJZKFJlc2V0X0hhbmRsZXIpCi1TRUFSQ0hfRElSKC4pCi1fX0RZTkFNSUMgID0gIDA7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTdGFydCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1NRU1PUlkKLXsKLSAgLyoKLSAgICogV0FSTklORzogVGhlIHdvcmRzICJTT0ZUQ09OU09MRSIsICJGTEFTSCIsIGFuZCAiVVNFIiwgdGhlIGNvbG9uICI6IiwgYW5kCi0gICAqICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9mIGZsYXNoIG1lbW9yeSBhcmUgYWxsIGluIGEgc3BlY2lmaWMgb3JkZXIuCi0gICAqICAgICAgICAgIFBsZWFzZSBkbyBub3QgbW9kaWZ5IHRoYXQgY29tbWVudCBsaW5lLCBpbiBvcmRlciB0byBlbnN1cmUKLSAgICogICAgICAgICAgZGVidWdnaW5nIG9mIHlvdXIgYXBwbGljYXRpb24gd2lsbCB1c2UgdGhlIGZsYXNoIG1lbW9yeSBjb3JyZWN0bHkuCi0gICAqLwotCi0gIC8qIFNPRlRDT05TT0xFIEZMQVNIIFVTRTogbWljcm9zZW1pLXNtYXJ0ZnVzaW9uMi1lbnZtICovCi0gIHJvbSAocngpICA6IE9SSUdJTiA9IDB4NjAwMDAwMDAsIExFTkdUSCA9IDI1NmsKLSAgCi0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlTlZNIG1pcnJvcmVkIHRvIDB4MDAwMDAwMDAgKi8KLSAgcm9tTWlycm9yIChyeCkgOiBPUklHSU4gPSAweDAwMDAwMDAwLCBMRU5HVEggPSAyNTZrCi0KLSAgLyogU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNICovCi0gIHJhbSAocnd4KSA6IE9SSUdJTiA9IDB4MjAwMDAwMDAsIExFTkdUSCA9IDY0awotfQotCi1SQU1fU1RBUlRfQUREUkVTUyA9IDB4MjAwMDAwMDA7IAkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIE1FTU9SWSByZWdpb24gcmFtIE9SSUdJTiBhYm92ZS4gKi8KLVJBTV9TSVpFID0gNjRrOyAJCQkJCS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgTUVNT1JZIHJlZ2lvbiByYW0gTEVOR1RIIGFib3ZlLiAqLwotTUFJTl9TVEFDS19TSVpFID0gOGs7IAkJCQkvKiBDb3J0ZXggbWFpbiBzdGFjayBzaXplLiAqLwotUFJPQ0VTU19TVEFDS19TSVpFCT0gNGs7IAkJCS8qIENvcnRleCBwcm9jZXNzIHN0YWNrIHNpemUgKG9ubHkgYXZhaWxhYmxlIHdpdGggT1MgZXh0ZW5zaW9ucykuKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVuZCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi1QUk9WSURFIChfX21haW5fc3RhY2tfc3RhcnQgPSBSQU1fU1RBUlRfQUREUkVTUyArIFJBTV9TSVpFKTsKLVBST1ZJREUgKF9fcHJvY2Vzc19zdGFja19zdGFydCA9IF9fbWFpbl9zdGFja19zdGFydCAtIE1BSU5fU1RBQ0tfU0laRSk7Ci1QUk9WSURFIChfZXN0YWNrID0gX19tYWluX3N0YWNrX3N0YXJ0KTsKLVBST1ZJREUgKF9fbWlycm9yZWRfbnZtID0gMSk7ICAgLyogSW5kaWNhdGUgdG8gc3RhcnR1cCBjb2RlIHRoYXQgTlZNIGlzIG1pcnJvcmVkIHRvIFZNQSBhZGRyZXNzIGFuZCBubyB0ZXh0IGNvcHkgaXMgcmVxdWlyZWQuICovCi0KLVNFQ1RJT05TCi17Ci0gIC5pbml0IDoKLSAgewotICAgIF9fdmVjdG9yX3RhYmxlX3ZtYV9iYXNlX2FkZHJlc3MgPSAuOwotICAgICooLmlzcl92ZWN0b3IpCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gIH0gPnJvbU1pcnJvciBBVD5yb20KLSAgCi0gIC50ZXh0IDoKLSAgewotICAgIENSRUFURV9PQkpFQ1RfU1lNQk9MUwotICAgIF9fdGV4dF9sb2FkID0gTE9BREFERFIoLnRleHQpOwotICAgIF9fdGV4dF9zdGFydCA9IC47Ci0gICAgCi0gICAgKigudGV4dCAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQotICAgICooLnBsdCkKLSAgICAqKC5nbnUud2FybmluZykKLSAgICAqKC5nbHVlXzd0KSAqKC5nbHVlXzcpICooLnZmcDExX3ZlbmVlcikKLQotICAgIC4gPSBBTElHTigweDQpOwotICAgIC8qIFRoZXNlIGFyZSBmb3IgcnVubmluZyBzdGF0aWMgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyB1bmRlciBFTEYuICAqLwotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmN0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5kdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5kdG9ycykpCi0KLSAgICAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKQotCi0gICAgKiguQVJNLmV4dGFiKiAuZ251LmxpbmtvbmNlLmFybWV4dGFiLiopCi0gICAgKiguZ2NjX2V4Y2VwdF90YWJsZSkgCi0gICAgKiguZWhfZnJhbWVfaGRyKQotICAgICooLmVoX2ZyYW1lKQotCi0gICAgS0VFUCAoKiguaW5pdCkpCi0gICAgS0VFUCAoKiguZmluaSkpCi0KLSAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKihTT1JUKC5pbml0X2FycmF5LiopKSkKLSAgICBLRUVQICgqKC5pbml0X2FycmF5KSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOwotICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKC5maW5pX2FycmF5KSkKLSAgICBLRUVQICgqKFNPUlQoLmZpbmlfYXJyYXkuKikpKQotICAgIFBST1ZJREVfSElEREVOIChfX2ZpbmlfYXJyYXlfZW5kID0gLik7Ci0gIH0gPnJvbU1pcnJvciBBVD5yb20KLQotICAvKiAuQVJNLmV4aWR4IGlzIHNvcnRlZCwgc28gaGFzIHRvIGdvIGluIGl0cyBvd24gb3V0cHV0IHNlY3Rpb24uICAqLwotICAgX19leGlkeF9zdGFydCA9IC47Ci0gIC5BUk0uZXhpZHggOgotICB7Ci0gICAgKiguQVJNLmV4aWR4KiAuZ251LmxpbmtvbmNlLmFybWV4aWR4LiopCi0gIH0gPnJhbSBBVD5yb20KLSAgX19leGlkeF9lbmQgPSAuOwotICBfZXRleHQgPSAuOwotCi0gIC5kYXRhIDoKLSAgewotICAgIF9fZGF0YV9sb2FkID0gTE9BREFERFIoLmRhdGEpOwotICAgIF9zaWRhdGEgPSBMT0FEQUREUiAoLmRhdGEpOwotICAgIF9fZGF0YV9zdGFydCA9IC47Ci0gICAgX3NkYXRhID0gLjsKLSAgICBLRUVQKCooLmpjcikpCi0gICAgKiguZ290LnBsdCkgKiguZ290KQotICAgICooLnNoZGF0YSkKLSAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCi0gICAgLiA9IEFMSUdOICg0KTsKLSAgCV9lZGF0YSA9IC47Ci0gIH0gPnJhbSBBVD5yb20KLQotICAuYnNzIDoKLSAgewotICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKLSAgICBfc2JzcyA9IC47Ci0gICAgKiguc2hic3MpCi0gICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKLSAgICAqKENPTU1PTikKLSAgICAuID0gQUxJR04gKDgpOwotICAgIF9fYnNzX2VuZF9fID0gLjsKLSAgICBfZW5kID0gLjsKLSAgICBfX2VuZCA9IF9lbmQ7Ci0gICAgX2Vic3MgPSAuOwotICAgIFBST1ZJREUoZW5kID0gLik7Ci0gIH0gPnJhbSBBVD5yb20KLQotICAuc3RhYiAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWIpCi0gIH0KLQotICAuc3RhYnN0ciAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWJzdHIpCi0gIH0KLSAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCi0gICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwotICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwotICAvKiBEV0FSRiAxICovCi0gIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQotICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQotICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCi0gIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9Ci0gIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9Ci0gIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwotICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQotICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KLSAgLyogRFdBUkYgMiAqLwotICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KLSAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQotICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQotICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KLSAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQotICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9Ci0gIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9Ci0gIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQotICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQotICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQotICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9Ci0gIC5ub3RlLmdudS5hcm0uaWRlbnQgMCA6IHsgS0VFUCAoKigubm90ZS5nbnUuYXJtLmlkZW50KSkgfQotICAuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguQVJNLmF0dHJpYnV0ZXMpKSB9Ci0gIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICB9Ci19CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLW1pY3Jvc2VtaS1zbWFydGZ1c2lvbjItZXNyYW0ubGQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL2RlYnVnLWluLW1pY3Jvc2VtaS1zbWFydGZ1c2lvbjItZXNyYW0ubGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YzM5NTIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVzcmFtLmxkCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAoYykgQ29weXJpZ2h0IDIwMTItMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBTbWFydEZ1c2lvbjIgQ29ydGV4LU0zIGxpbmtlciBzY3JpcHQgZm9yIGNyZWF0aW5nIGEgU29mdENvbnNvbGUgZG93bmxvYWRhYmxlCi0gKiBkZWJ1ZyBpbWFnZSBleGVjdXRpbmcgaW4gU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNLgotICoKLSAqIFNWTiAkUmV2aXNpb246IDUyNjkgJAotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDIwOjUzOjM4ICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkCi0gKi8KLQotIE9VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1iaWdhcm0iLAotCSAgICAgICJlbGYzMi1saXR0bGVhcm0iKQotR1JPVVAoLWxjIC1sZ2NjIC1sbSkKLU9VVFBVVF9BUkNIKGFybSkKLUVOVFJZKFJlc2V0X0hhbmRsZXIpCi1TRUFSQ0hfRElSKC4pCi1fX0RZTkFNSUMgID0gIDA7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTdGFydCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1NRU1PUlkKLXsKLSAgLyogU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNICovCi0gIHJhbSAocnd4KSA6IE9SSUdJTiA9IDB4MjAwMDAwMDAsIExFTkdUSCA9IDY0awotfQotCi1SQU1fU1RBUlRfQUREUkVTUyA9IDB4MjAwMDAwMDA7CS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgTUVNT1JZIHJlZ2lvbiByYW0gT1JJR0lOIGFib3ZlLiAqLwotUkFNX1NJWkUgPSA2NGs7CQkJCQkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIE1FTU9SWSByZWdpb24gcmFtIExFTkdUSCBhYm92ZS4gKi8KLU1BSU5fU1RBQ0tfU0laRSA9IDFrOwkJCS8qIENvcnRleCBtYWluIHN0YWNrIHNpemUuICovCi1QUk9DRVNTX1NUQUNLX1NJWkUJPSAwazsJCS8qIENvcnRleCBwcm9jZXNzIHN0YWNrIHNpemUgKG9ubHkgYXZhaWxhYmxlIHdpdGggT1MgZXh0ZW5zaW9ucykuKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVuZCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLVBST1ZJREUgKF9fbWFpbl9zdGFja19zdGFydCA9IFJBTV9TVEFSVF9BRERSRVNTICsgUkFNX1NJWkUpOwotUFJPVklERSAoX19wcm9jZXNzX3N0YWNrX3N0YXJ0ID0gX19tYWluX3N0YWNrX3N0YXJ0IC0gTUFJTl9TVEFDS19TSVpFKTsKLVBST1ZJREUgKF9lc3RhY2sgPSBfX21haW5fc3RhY2tfc3RhcnQpOwotUFJPVklERSAoX19taXJyb3JlZF9udm0gPSAwKTsgICAvKiBJbmRpY2F0ZSB0byBzdGFydHVwIGNvZGUgdGhhdCBOVk0gaXMgbm90IG1pcnJvcmVkIHRvIFZNQSBhZGRyZXNzIC50ZXh0IGNvcHkgaXMgcmVxdWlyZWQuICovCi0KLVNFQ1RJT05TCi17Ci0gIC50ZXh0IDoKLSAgewotICAgIENSRUFURV9PQkpFQ1RfU1lNQk9MUwotICAgIF9fdGV4dF9sb2FkID0gTE9BREFERFIoLnRleHQpOwotICAgIF9fdGV4dF9zdGFydCA9IC47Ci0gICAgX192ZWN0b3JfdGFibGVfdm1hX2Jhc2VfYWRkcmVzcyA9IC47Ci0gICAgKiguaXNyX3ZlY3RvcikKLSAgICAqKC50ZXh0IC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCi0gICAgKigucGx0KQotICAgICooLmdudS53YXJuaW5nKQotICAgICooLmdsdWVfN3QpICooLmdsdWVfNykgKigudmZwMTFfdmVuZWVyKQotCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gICAgLyogVGhlc2UgYXJlIGZvciBydW5uaW5nIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIHVuZGVyIEVMRi4gICovCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuY3RvcnMpKQotICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguY3RvcnMpKQotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmR0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmR0b3JzKSkKLQotICAgICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopCi0KLSAgICAqKC5BUk0uZXh0YWIqIC5nbnUubGlua29uY2UuYXJtZXh0YWIuKikKLSAgICAqKC5nY2NfZXhjZXB0X3RhYmxlKQotICAgICooLmVoX2ZyYW1lX2hkcikKLSAgICAqKC5laF9mcmFtZSkKLQotICAgIEtFRVAgKCooLmluaXQpKQotICAgIEtFRVAgKCooLmZpbmkpKQotCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooU09SVCguaW5pdF9hcnJheS4qKSkpCi0gICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKiguZmluaV9hcnJheSkpCi0gICAgS0VFUCAoKihTT1JUKC5maW5pX2FycmF5LiopKSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwotICB9ID5yYW0KLSAgLyogLkFSTS5leGlkeCBpcyBzb3J0ZWQsIHNvIGhhcyB0byBnbyBpbiBpdHMgb3duIG91dHB1dCBzZWN0aW9uLiAgKi8KLSAgIF9fZXhpZHhfc3RhcnQgPSAuOwotICAuQVJNLmV4aWR4IDoKLSAgewotICAgICooLkFSTS5leGlkeCogLmdudS5saW5rb25jZS5hcm1leGlkeC4qKQotICB9ID5yYW0KLSAgX19leGlkeF9lbmQgPSAuOwotICBfZXRleHQgPSAuOwotICBQUk9WSURFKF9fdGV4dF9lbmQgPSAuKTsKLQotICAuZGF0YSA6Ci0gIHsKLSAgICBfX2RhdGFfbG9hZCA9IExPQURBRERSICguZGF0YSk7Ci0gICAgX3NpZGF0YSA9IExPQURBRERSICguZGF0YSk7Ci0gICAgX19kYXRhX3N0YXJ0ID0gLjsKLSAgICBfc2RhdGEgPSAuOwotICAgIEtFRVAoKiguamNyKSkKLSAgICAqKC5nb3QucGx0KSAqKC5nb3QpCi0gICAgKiguc2hkYXRhKQotICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKLSAgICAuID0gQUxJR04gKDQpOwotICAgIF9lZGF0YSA9IC47Ci0gIH0gPnJhbQotCi0gIC5ic3MgOgotICB7Ci0gICAgX19ic3Nfc3RhcnRfXyA9IC4gOwotICAgIF9zYnNzID0gLjsKLSAgICAqKC5zaGJzcykKLSAgICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQotICAgICooQ09NTU9OKQotICAgIC4gPSBBTElHTiAoOCk7Ci0gICAgX19ic3NfZW5kX18gPSAuOwotICAgIF9lbmQgPSAuOwotICAgIF9fZW5kID0gX2VuZDsKLSAgICBfZWJzcyA9IC47Ci0gICAgUFJPVklERShlbmQgPSAuKTsKLSAgfSA+cmFtCi0KLSAgLyoKLSAgICogVGhlIC5zdGFjayBzZWN0aW9uIGlzIG9ubHkgc3BlY2lmaWVkIGhlcmUgaW4gb3JkZXIgZm9yIHRoZSBsaW5rZXIgdG8gZ2VuZXJhdGUKLSAgICogYW4gZXJyb3IgaWYgdGhlIHJhbSBpcyBmdWxsLgotICAgKi8KLSAgLnN0YWNrIDoKLSAgewotICAJLiA9IEFMSUdOKDQpOwotICAgIC4gKz0gUFJPQ0VTU19TVEFDS19TSVpFOwotICAgIC4gPSBBTElHTig0KTsKLSAgICAuICs9IE1BSU5fU1RBQ0tfU0laRTsKLSAgICAuID0gQUxJR04oNCk7Ci0gIH0gPnJhbQotCi0gIC5zdGFiIDAgKE5PTE9BRCkgOgotICB7Ci0gICAgKiguc3RhYikKLSAgfQotCi0gIC5zdGFic3RyIDAgKE5PTE9BRCkgOgotICB7Ci0gICAgKiguc3RhYnN0cikKLSAgfQotICAvKiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucy4KLSAgICAgU3ltYm9scyBpbiB0aGUgRFdBUkYgZGVidWdnaW5nIHNlY3Rpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nCi0gICAgIG9mIHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovCi0gIC8qIERXQVJGIDEgKi8KLSAgLmRlYnVnICAgICAgICAgIDAgOiB7ICooLmRlYnVnKSB9Ci0gIC5saW5lICAgICAgICAgICAwIDogeyAqKC5saW5lKSB9Ci0gIC8qIEdOVSBEV0FSRiAxIGV4dGVuc2lvbnMgKi8KLSAgLmRlYnVnX3NyY2luZm8gIDAgOiB7ICooLmRlYnVnX3NyY2luZm8pIH0KLSAgLmRlYnVnX3NmbmFtZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0KLSAgLyogRFdBUkYgMS4xIGFuZCBEV0FSRiAyICovCi0gIC5kZWJ1Z19hcmFuZ2VzICAwIDogeyAqKC5kZWJ1Z19hcmFuZ2VzKSB9Ci0gIC5kZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQotICAvKiBEV0FSRiAyICovCi0gIC5kZWJ1Z19pbmZvICAgICAwIDogeyAqKC5kZWJ1Z19pbmZvIC5nbnUubGlua29uY2Uud2kuKikgfQotICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9Ci0gIC5kZWJ1Z19saW5lICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9Ci0gIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5kZWJ1Z19mcmFtZSkgfQotICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9Ci0gIC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KLSAgLmRlYnVnX21hY2luZm8gIDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KLSAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovCi0gIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9Ci0gIC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9Ci0gIC5kZWJ1Z190eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9Ci0gIC5kZWJ1Z192YXJuYW1lcyAgMCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KLSAgLm5vdGUuZ251LmFybS5pZGVudCAwIDogeyBLRUVQICgqKC5ub3RlLmdudS5hcm0uaWRlbnQpKSB9Ci0gIC5BUk0uYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5BUk0uYXR0cmlidXRlcykpIH0KLSAgL0RJU0NBUkQvIDogeyAqKC5ub3RlLkdOVS1zdGFjaykgKiguaXNyX3ZlY3RvcikgfQotfQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9uZXdsaWJfc3R1YnMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvbmV3bGliX3N0dWJzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZDc5NGQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9uZXdsaWJfc3R1YnMuYworKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFN0dWJzIGZvciBOZXdsaWIgc3lzdGVtIGNhbGxzLg0KLSAqICANCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NTM6MzggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSA8c3RkbGliLmg+DQotI2luY2x1ZGUgPHN5cy91bmlzdGQuaD4NCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4NCi0jaW5jbHVkZSA8c3lzL3RpbWVzLmg+DQotI2luY2x1ZGUgPGVycm5vLmg+DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBSZWRpcmVjdGlvbiBvZiBzdGFuZGFyZCBvdXRwdXQgdG8gYSBTbWFydEZ1c2lvbjIgTVNTIFVBUlQuDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSByZWRpcmVjdGlvbiBvZiB0aGUgb3V0cHV0IG9mIHByaW50ZigpIHRvIGENCi0gKiBVQVJUIGlzIHByb3ZpZGVkIGF0IHRoZSBib3R0b20gb2YgdGhpcyBmaWxlLiBUaGlzIHJlZGlyZWN0aW9uIGlzIGVuYWJsZWQgYnkNCi0gKiBhZGRpbmcgdGhlIHN5bWJvbC9kZWZpbmUgTUlDUk9TRU1JX1NURElPX1RIUlVfTU1VQVJUMCBvcg0KLSAqIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDAgdG8geW91ciBwcm9qZWN0IHNldHRpbmdzIGFuZCBzcGVjaWZ5aW5nIHRoZSBiYXVkDQotICogcmF0ZSB1c2luZyB0aGUgTUlDUk9TRU1JX1NURElPX0JBVURfUkFURSBkZWZpbmUuDQotICovDQotI2lmZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDANCi0jaWZuZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQNCi0jZGVmaW5lIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQNCi0jZW5kaWYNCi0jZW5kaWYgIC8qIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDAgKi8NCi0NCi0jaWZkZWYgTUlDUk9TRU1JX1NURElPX1RIUlVfTU1VQVJUMQ0KLSNpZm5kZWYgTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVA0KLSNkZWZpbmUgTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVA0KLSNlbmRpZg0KLSNlbmRpZiAgLyogTUlDUk9TRU1JX1NURElPX1RIUlVfTU1VQVJUMSAqLw0KLQ0KLS8qDQotICogU2VsZWN0IHdoaWNoIE1NVUFSVCB3aWxsIGJlIHVzZWQgZm9yIHN0ZGlvIGFuZCB3aGF0IGJhdWQgcmF0ZSB3aWxsIGJlIHVzZWQuDQotICogRGVmYXVsdCB0byA1NzYwMCBiYXVkIGlmIG5vIGJhdWQgcmF0ZSBpcyBzcGVjaWZpZWQgdXNpbmcgdGhlDQotICogTUlDUk9TRU1JX1NURElPX0JBVURfUkFURSAjZGVmaW5lLg0KLSAqLyANCi0jaWZkZWYgTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVA0KLSNpbmNsdWRlICIuLi8uLi9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmgiDQotDQotI2lmbmRlZiBNSUNST1NFTUlfU1RESU9fQkFVRF9SQVRFDQotI2RlZmluZSBNSUNST1NFTUlfU1RESU9fQkFVRF9SQVRFICBNU1NfVUFSVF81NzYwMF9CQVVEDQotI2VuZGlmDQotDQotI2lmZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDANCi1zdGF0aWMgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIGNvbnN0IGdwX215X3VhcnQgPSAmZ19tc3NfdWFydDA7DQotI2Vsc2UNCi1zdGF0aWMgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIGNvbnN0IGdwX215X3VhcnQgPSAmZ19tc3NfdWFydDE7DQotI2VuZGlmDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBHbG9iYWwgZmxhZyB1c2VkIHRvIGluZGljYXRlIGlmIHRoZSBVQVJUIGRyaXZlciBuZWVkcyB0byBiZSBpbml0aWFsaXplZC4NCi0gKi8NCi1zdGF0aWMgaW50IGdfc3RkaW9fdWFydF9pbml0X2RvbmUgPSAwOw0KLQ0KLSNlbmRpZiAvKiBNSUNST1NFTUlfU1RESU9fVEhSVV9VQVJUICovDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMuDQotICogQSBwb2ludGVyIHRvIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcy4gRm9yIGEgbWluaW1hbA0KLSAqIGVudmlyb25tZW50LCB0aGlzIGVtcHR5IGxpc3QgaXMgYWRlcXVhdGU6DQotICovDQotY2hhciAqX19lbnZbMV0gPSB7IDAgfTsNCi1jaGFyICoqZW52aXJvbiA9IF9fZW52Ow0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ2xvc2UgYSBmaWxlLg0KLSAqLw0KLWludCBfY2xvc2UoaW50IGZpbGUpDQotew0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVHJhbnNmZXIgY29udHJvbCB0byBhIG5ldyBwcm9jZXNzLg0KLSAqLw0KLWludCBfZXhlY3ZlKGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBjaGFyICoqZW52KQ0KLXsNCi0gICAgZXJybm8gPSBFTk9NRU07DQotICAgIHJldHVybiAtMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBFeGl0IGEgcHJvZ3JhbSB3aXRob3V0IGNsZWFuaW5nIHVwIGZpbGVzLg0KLSAqLw0KLXZvaWQgX2V4aXQoIGludCBjb2RlICkNCi17DQotICAgIC8qIFNob3VsZCB3ZSBmb3JjZSBhIHN5c3RlbSByZXNldD8gKi8NCi0gICAgd2hpbGUoIDEgKQ0KLSAgICB7DQotICAgICAgICA7DQotICAgIH0NCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDcmVhdGUgYSBuZXcgcHJvY2Vzcy4NCi0gKi8NCi1pbnQgX2Zvcmsodm9pZCkNCi17DQotICAgIGVycm5vID0gRUFHQUlOOw0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU3RhdHVzIG9mIGFuIG9wZW4gZmlsZS4NCi0gKi8NCi1pbnQgX2ZzdGF0KGludCBmaWxlLCBzdHJ1Y3Qgc3RhdCAqc3QpDQotew0KLSAgICBzdC0+c3RfbW9kZSA9IFNfSUZDSFI7DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFByb2Nlc3MtSUQNCi0gKi8NCi1pbnQgX2dldHBpZCh2b2lkKQ0KLXsNCi0gICAgcmV0dXJuIDE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUXVlcnkgd2hldGhlciBvdXRwdXQgc3RyZWFtIGlzIGEgdGVybWluYWwuDQotICovDQotaW50IF9pc2F0dHkoaW50IGZpbGUpDQotew0KLSAgICByZXR1cm4gMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZW5kIGEgc2lnbmFsLg0KLSAqLw0KLWludCBfa2lsbChpbnQgcGlkLCBpbnQgc2lnKQ0KLXsNCi0gICAgZXJybm8gPSBFSU5WQUw7DQotICAgIHJldHVybiAtMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBFc3RhYmxpc2ggYSBuZXcgbmFtZSBmb3IgYW4gZXhpc3RpbmcgZmlsZS4NCi0gKi8NCi1pbnQgX2xpbmsoY2hhciAqb2xkLCBjaGFyICpuZXcpDQotew0KLSAgICBlcnJubyA9IEVNTElOSzsNCi0gICAgcmV0dXJuIC0xOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNldCBwb3NpdGlvbiBpbiBhIGZpbGUuDQotICovDQotaW50IF9sc2VlayhpbnQgZmlsZSwgaW50IHB0ciwgaW50IGRpcikNCi17DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE9wZW4gYSBmaWxlLg0KLSAqLw0KLWludCBfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsIGludCBtb2RlKQ0KLXsNCi0gICAgcmV0dXJuIC0xOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFJlYWQgZnJvbSBhIGZpbGUuDQotICovDQotaW50IF9yZWFkKGludCBmaWxlLCBjaGFyICpwdHIsIGludCBsZW4pDQotew0KLSAgICByZXR1cm4gMDsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBXcml0ZSB0byBhIGZpbGUuIGxpYmMgc3Vicm91dGluZXMgd2lsbCB1c2UgdGhpcyBzeXN0ZW0gcm91dGluZSBmb3Igb3V0cHV0IHRvDQotICogYWxsIGZpbGVzLCBpbmNsdWRpbmcgc3Rkb3V0l3NvIGlmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGFueSBvdXRwdXQsIGZvcg0KLSAqIGV4YW1wbGUgdG8gYSBzZXJpYWwgcG9ydCBmb3IgZGVidWdnaW5nLCB5b3Ugc2hvdWxkIG1ha2UgeW91ciBtaW5pbWFsIHdyaXRlDQotICogY2FwYWJsZSBvZiBkb2luZyB0aGlzLg0KLSAqLw0KLWludCBfd3JpdGVfciggdm9pZCAqIHJlZW50LCBpbnQgZmlsZSwgY2hhciAqIHB0ciwgaW50IGxlbiApDQotew0KLSNpZmRlZiBNSUNST1NFTUlfU1RESU9fVEhSVV9VQVJUDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogSW5pdGlhbGl6ZSB0aGUgVUFSVCBkcml2ZXIgaWYgaXQgaXMgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBpcw0KLSAgICAgKiBjYWxsZWQuDQotICAgICAqLw0KLSAgICBpZighZ19zdGRpb191YXJ0X2luaXRfZG9uZSkNCi0gICAgew0KLSAgICAgICAgTVNTX1VBUlRfaW5pdChncF9teV91YXJ0LA0KLSAgICAgICAgICAgICAgICAgICAgICBNSUNST1NFTUlfU1RESU9fQkFVRF9SQVRFLA0KLSAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSk7DQotICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgZ19zdGRpb191YXJ0X2luaXRfZG9uZSA9IDE7DQotICAgIH0NCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogT3V0cHV0IHRleHQgdG8gdGhlIFVBUlQuDQotICAgICAqLw0KLSAgICBNU1NfVUFSVF9wb2xsZWRfdHgoZ3BfbXlfdWFydCwgKHVpbnQ4X3QgKilwdHIsIGxlbik7DQotICAgIA0KLSAgICByZXR1cm4gbGVuOw0KLSNlbHNlICAgLyogTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVCAqLw0KLSAgICByZXR1cm4gMDsNCi0jZW5kaWYgIC8qIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQgKi8NCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJbmNyZWFzZSBwcm9ncmFtIGRhdGEgc3BhY2UuIEFzIG1hbGxvYyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgZGVwZW5kIG9uIHRoaXMsDQotICogaXQgaXMgdXNlZnVsIHRvIGhhdmUgYSB3b3JraW5nIGltcGxlbWVudGF0aW9uLiBUaGUgZm9sbG93aW5nIHN1ZmZpY2VzIGZvciBhDQotICogc3RhbmRhbG9uZSBzeXN0ZW07IGl0IGV4cGxvaXRzIHRoZSBzeW1ib2wgX2VuZCBhdXRvbWF0aWNhbGx5IGRlZmluZWQgYnkgdGhlDQotICogR05VIGxpbmtlci4gDQotICovDQotY2FkZHJfdCBfc2JyayhpbnQgaW5jcikNCi17DQotICAgIGV4dGVybiBjaGFyIF9lbmQ7ICAgICAgICAvKiBEZWZpbmVkIGJ5IHRoZSBsaW5rZXIgKi8NCi0gICAgc3RhdGljIGNoYXIgKmhlYXBfZW5kOw0KLSAgICBjaGFyICpwcmV2X2hlYXBfZW5kOw0KLSAgICBjaGFyICogc3RhY2tfcHRyOw0KLSAgICANCi0gICAgaWYgKGhlYXBfZW5kID09IDApDQotICAgIHsNCi0gICAgICBoZWFwX2VuZCA9ICZfZW5kOw0KLSAgICB9DQotICAgIA0KLSAgICBwcmV2X2hlYXBfZW5kID0gaGVhcF9lbmQ7DQotICAgIGFzbSB2b2xhdGlsZSAoIk1SUyAlMCwgbXNwIiA6ICI9ciIgKHN0YWNrX3B0cikgKTsNCi0gICAgaWYgKGhlYXBfZW5kICsgaW5jciA+IHN0YWNrX3B0cikNCi0gICAgew0KLSAgICAgIF93cml0ZV9yICgodm9pZCAqKTAsIDEsICJIZWFwIGFuZCBzdGFjayBjb2xsaXNpb25cbiIsIDI1KTsNCi0gICAgICBfZXhpdCAoMSk7DQotICAgIH0NCi0gIA0KLSAgICBoZWFwX2VuZCArPSBpbmNyOw0KLSAgICByZXR1cm4gKGNhZGRyX3QpIHByZXZfaGVhcF9lbmQ7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU3RhdHVzIG9mIGEgZmlsZSAoYnkgbmFtZSkuDQotICovDQotaW50IF9zdGF0KGNoYXIgKmZpbGUsIHN0cnVjdCBzdGF0ICpzdCkNCi17DQotICAgIHN0LT5zdF9tb2RlID0gU19JRkNIUjsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVGltaW5nIGluZm9ybWF0aW9uIGZvciBjdXJyZW50IHByb2Nlc3MuDQotICovDQotaW50IF90aW1lcyhzdHJ1Y3QgdG1zICpidWYpDQotew0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUmVtb3ZlIGEgZmlsZSdzIGRpcmVjdG9yeSBlbnRyeS4NCi0gKi8NCi1pbnQgX3VubGluayhjaGFyICpuYW1lKQ0KLXsNCi0gICAgZXJybm8gPSBFTk9FTlQ7DQotICAgIHJldHVybiAtMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBXYWl0IGZvciBhIGNoaWxkIHByb2Nlc3MuDQotICovDQotaW50IF93YWl0KGludCAqc3RhdHVzKQ0KLXsNCi0gICAgZXJybm8gPSBFQ0hJTEQ7DQotICAgIHJldHVybiAtMTsNCi19DQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9wcm9kdWN0aW9uLWV4ZWN1dGUtaW4tcGxhY2UubGQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3Byb2R1Y3Rpb24tZXhlY3V0ZS1pbi1wbGFjZS5sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRjYTg3YS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3Byb2R1Y3Rpb24tZXhlY3V0ZS1pbi1wbGFjZS5sZAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogKGMpIENvcHlyaWdodCAyMDA5LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFNtYXJ0RnVzaW9uMiBDb3J0ZXgtTTMgbGlua2VyIHNjcmlwdCBjcmVhdGluZyBhbiBleGVjdXRhYmxlIGltYWdlIGZvciB1c2UgaW4KLSAqIHRoZSBMaWJlcm8gZmxvdyBmb3IgZXhlY3V0aW5nIGNvZGUgaW4gcGxhY2UgaW4gaW50ZXJuYWwgZU5WTS4KLSAqCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQKLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJAotICovCi1PVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItYmlnYXJtIiwKLQkgICAgICAiZWxmMzItbGl0dGxlYXJtIikKLUdST1VQKC1sYyAtbGdjYyAtbG0pCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShSZXNldF9IYW5kbGVyKQotU0VBUkNIX0RJUiguKQotX19EWU5BTUlDICA9ICAwOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU3RhcnQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotTUVNT1JZCi17Ci0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlTlZNICovCi0gIHJvbSAocngpIDogT1JJR0lOID0gMCwgTEVOR1RIID0gMjU2awotICAKLSAgLyogU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNICovCi0gIHJhbSAocnd4KSA6IE9SSUdJTiA9IDB4MjAwMDAwMDAsIExFTkdUSCA9IDY0awotfQotCi1SQU1fU1RBUlRfQUREUkVTUyA9IDB4MjAwMDAwMDA7CS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgYXMgTUVNT1JZIHJlZ2lvbiByYW0gT1JJR0lOIGFib3ZlLiAqLwotUkFNX1NJWkUgPSA2NGs7CQkJCQkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIGFzIE1FTU9SWSByZWdpb24gcmFtIExFTkdUSCBhYm92ZS4gKi8KLU1BSU5fU1RBQ0tfU0laRSA9IDhrOwkJCS8qIENvcnRleCBtYWluIHN0YWNrIHNpemUuICovCi1QUk9DRVNTX1NUQUNLX1NJWkUJPSA0azsJCS8qIENvcnRleCBwcm9jZXNzIHN0YWNrIHNpemUgKG9ubHkgYXZhaWxhYmxlIHdpdGggT1MgZXh0ZW5zaW9ucykuKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVuZCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi1QUk9WSURFIChfX21haW5fc3RhY2tfc3RhcnQgPSBSQU1fU1RBUlRfQUREUkVTUyArIFJBTV9TSVpFKTsKLVBST1ZJREUgKF9fcHJvY2Vzc19zdGFja19zdGFydCA9IF9fbWFpbl9zdGFja19zdGFydCAtIE1BSU5fU1RBQ0tfU0laRSk7Ci1QUk9WSURFIChfZXN0YWNrID0gX19tYWluX3N0YWNrX3N0YXJ0KTsKLVBST1ZJREUgKF9fbWlycm9yZWRfbnZtID0gMCk7ICAgLyogSW5kaWNhdGUgdG8gc3RhcnR1cCBjb2RlIHRoYXQgTlZNIGlzIG5vdCBtaXJyb3JlZCB0byBWTUEgYWRkcmVzcyAudGV4dCBjb3B5IGlzIHJlcXVpcmVkLiAqLwotCi1TRUNUSU9OUwotewotICAucmVzZXQgOgotICB7Ci0gICAgX192ZWN0b3JfdGFibGVfdm1hX2Jhc2VfYWRkcmVzcyA9IC47Ci0gICAgKiguaXNyX3ZlY3RvcikKLSAgICAuID0gQUxJR04oMHg0KTsKLSAgfSA+cm9tCi0gIAotICAudGV4dCA6Ci0gIHsKLSAgICBDUkVBVEVfT0JKRUNUX1NZTUJPTFMKLSAgICBfX3RleHRfbG9hZCA9IExPQURBRERSKC50ZXh0KTsKLSAgICBfX3RleHRfc3RhcnQgPSAuOwotICAgIAotICAgICooLnRleHQgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKLSAgICAqKC5wbHQpCi0gICAgKiguZ251Lndhcm5pbmcpCi0gICAgKiguZ2x1ZV83dCkgKiguZ2x1ZV83KSAqKC52ZnAxMV92ZW5lZXIpCi0KLSAgICAuID0gQUxJR04oMHg0KTsKLSAgICAvKiBUaGVzZSBhcmUgZm9yIHJ1bm5pbmcgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgdW5kZXIgRUxGLiAgKi8KLSAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5jdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5jdG9ycykpCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuZHRvcnMpKQotICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguZHRvcnMpKQotCi0gICAgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikKLQotICAgICooLkFSTS5leHRhYiogLmdudS5saW5rb25jZS5hcm1leHRhYi4qKQotICAgICooLmdjY19leGNlcHRfdGFibGUpIAotICAgICooLmVoX2ZyYW1lX2hkcikKLSAgICAqKC5laF9mcmFtZSkKLQotICAgIEtFRVAgKCooLmluaXQpKQotICAgIEtFRVAgKCooLmZpbmkpKQotCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooU09SVCguaW5pdF9hcnJheS4qKSkpCi0gICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKiguZmluaV9hcnJheSkpCi0gICAgS0VFUCAoKihTT1JUKC5maW5pX2FycmF5LiopKSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwotICB9ID5yb20KLSAgLyogLkFSTS5leGlkeCBpcyBzb3J0ZWQsIHNvIGhhcyB0byBnbyBpbiBpdHMgb3duIG91dHB1dCBzZWN0aW9uLiAgKi8KLSAgIF9fZXhpZHhfc3RhcnQgPSAuOwotICAuQVJNLmV4aWR4IDoKLSAgewotICAgICooLkFSTS5leGlkeCogLmdudS5saW5rb25jZS5hcm1leGlkeC4qKQotICB9ID5yb20KLSAgX19leGlkeF9lbmQgPSAuOwotICBfZXRleHQgPSAuOwotCi0gIC5kYXRhIDoKLSAgewotICAgIF9fZGF0YV9sb2FkID0gTE9BREFERFIoLmRhdGEpOwotICAgIF9zaWRhdGEgPSBMT0FEQUREUiAoLmRhdGEpOwotICAgIF9fZGF0YV9zdGFydCA9IC47Ci0gICAgX3NkYXRhID0gLjsKLSAgICBLRUVQKCooLmpjcikpCi0gICAgKiguZ290LnBsdCkgKiguZ290KQotICAgICooLnNoZGF0YSkKLSAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCi0gICAgLiA9IEFMSUdOICg0KTsKLSAgCV9lZGF0YSA9IC47Ci0gIH0gPnJhbSBBVD5yb20KLQotICAuYnNzIDoKLSAgewotICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKLSAgICBfc2JzcyA9IC47Ci0gICAgKiguc2hic3MpCi0gICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKLSAgICAqKENPTU1PTikKLSAgICAuID0gQUxJR04gKDgpOwotICAgIF9fYnNzX2VuZF9fID0gLjsKLSAgICBfZW5kID0gLjsKLSAgICBfX2VuZCA9IF9lbmQ7Ci0gICAgX2Vic3MgPSAuOwotICAgIFBST1ZJREUoZW5kID0gLik7Ci0gIH0gPnJhbSBBVD5yb20KLQotICAuc3RhYiAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWIpCi0gIH0KLQotICAuc3RhYnN0ciAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWJzdHIpCi0gIH0KLSAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCi0gICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwotICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwotICAvKiBEV0FSRiAxICovCi0gIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQotICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQotICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCi0gIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9Ci0gIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9Ci0gIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwotICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQotICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KLSAgLyogRFdBUkYgMiAqLwotICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KLSAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQotICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQotICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KLSAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQotICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9Ci0gIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9Ci0gIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQotICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQotICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQotICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9Ci0gIC5ub3RlLmdudS5hcm0uaWRlbnQgMCA6IHsgS0VFUCAoKigubm90ZS5nbnUuYXJtLmlkZW50KSkgfQotICAuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguQVJNLmF0dHJpYnV0ZXMpKSB9Ci0gIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICB9Ci19CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3Byb2R1Y3Rpb24tcmVsb2NhdGUtZXhlY3V0YWJsZS5sZCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvcHJvZHVjdGlvbi1yZWxvY2F0ZS1leGVjdXRhYmxlLmxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWM0MmUzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvcHJvZHVjdGlvbi1yZWxvY2F0ZS1leGVjdXRhYmxlLmxkCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAoYykgQ29weXJpZ2h0IDIwMDktMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogU21hcnRGdXNpb24yIENvcnRleC1NMyBsaW5rZXIgc2NyaXB0IGNyZWF0aW5nIGFuIGV4ZWN1dGFibGUgaW1hZ2UgZm9yIHVzZSBpbgotICogdGhlIExpYmVybyBmbG93IGZvciByZWxvY2F0aW5nIGV4ZWN1dGFibGUgZnJvbSBpbnRlcm5hbCBlTlZNIHRvIGV4dGVybmFsIFJBTQotICogYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4KLSAqCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQKLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJAotICovCi1PVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItYmlnYXJtIiwKLQkgICAgICAiZWxmMzItbGl0dGxlYXJtIikKLUdST1VQKC1sYyAtbGdjYyAtbG0pCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShSZXNldF9IYW5kbGVyKQotU0VBUkNIX0RJUiguKQotX19EWU5BTUlDICA9ICAwOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU3RhcnQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotTUVNT1JZCi17Ci0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlTlZNICovCi0gIHJvbSAocngpIDogT1JJR0lOID0gMCwgTEVOR1RIID0gMjU2awotICAKLSAgLyogU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNICovCi0gIGVzcmFtIChyd3gpIDogT1JJR0lOID0gMHgyMDAwMDAwMCwgTEVOR1RIID0gNjRrCi0gIAotICAvKiBTbWFydEZ1c2lvbjIgZGV2ZWxvcG1lbnQgYm9hcmQgZXh0ZXJuYWwgUkFNICovCi0gIGV4dGVybmFsX3JhbSAocnd4KSA6IE9SSUdJTiA9IDB4NzAwMDAwMDAsIExFTkdUSCA9IDJNCi19Ci0KLVJBTV9TVEFSVF9BRERSRVNTID0gMHgyMDAwMDAwMDsJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBNRU1PUlkgcmVnaW9uIGVzcmFtIE9SSUdJTiBhYm92ZS4gKi8KLVJBTV9TSVpFID0gNjRrOwkJCQkJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBNRU1PUlkgcmVnaW9uIGVzcmFtIExFTkdUSCBhYm92ZS4gKi8KLU1BSU5fU1RBQ0tfU0laRSA9IDhrOwkJCS8qIENvcnRleCBtYWluIHN0YWNrIHNpemUuICovCi1QUk9DRVNTX1NUQUNLX1NJWkUJPSA0azsJCS8qIENvcnRleCBwcm9jZXNzIHN0YWNrIHNpemUgKG9ubHkgYXZhaWxhYmxlIHdpdGggT1MgZXh0ZW5zaW9ucykuKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIEVuZCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi1QUk9WSURFIChfX21haW5fc3RhY2tfc3RhcnQgPSBSQU1fU1RBUlRfQUREUkVTUyArIFJBTV9TSVpFKTsKLVBST1ZJREUgKF9fcHJvY2Vzc19zdGFja19zdGFydCA9IF9fbWFpbl9zdGFja19zdGFydCAtIE1BSU5fU1RBQ0tfU0laRSk7Ci1QUk9WSURFIChfZXN0YWNrID0gX19tYWluX3N0YWNrX3N0YXJ0KTsKLVBST1ZJREUgKF9fbWlycm9yZWRfbnZtID0gMCk7ICAgLyogSW5kaWNhdGUgdG8gc3RhcnR1cCBjb2RlIHRoYXQgTlZNIGlzIG5vdCBtaXJyb3JlZCB0byBWTUEgYWRkcmVzcyAudGV4dCBjb3B5IGlzIHJlcXVpcmVkLiAqLwotCi1TRUNUSU9OUwotewotICAucmVzZXQgOgotICB7Ci0gICAgX192ZWN0b3JfdGFibGVfdm1hX2Jhc2VfYWRkcmVzcyA9IC47Ci0gICAgKiguaXNyX3ZlY3RvcikKLSAgICAvKiBTeXN0ZW1Jbml0KCkgaXMgY2FsbGVkIGJlZm9yZSByZWxvY2F0aW9uIHRvIFJBTSBzbyBrZWVwIGluIFJPTSAqLwotCSpzeXN0ZW1fbTJzeHh4Lm8oLnRleHQqKSAgICAKLSAgICAuID0gQUxJR04oMHg0KTsKLSAgfSA+cm9tCi0gIAotICAudGV4dCA6Ci0gIHsKLSAgICBDUkVBVEVfT0JKRUNUX1NZTUJPTFMKLSAgICBfX3RleHRfbG9hZCA9IExPQURBRERSKC50ZXh0KTsKLSAgICBfX3RleHRfc3RhcnQgPSAuOwotICAgIAotICAgICooLnRleHQgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKLSAgICAqKC5wbHQpCi0gICAgKiguZ251Lndhcm5pbmcpCi0gICAgKiguZ2x1ZV83dCkgKiguZ2x1ZV83KSAqKC52ZnAxMV92ZW5lZXIpCi0KLSAgICAuID0gQUxJR04oMHg0KTsKLSAgICAvKiBUaGVzZSBhcmUgZm9yIHJ1bm5pbmcgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgdW5kZXIgRUxGLiAgKi8KLSAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5jdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5jdG9ycykpCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuZHRvcnMpKQotICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguZHRvcnMpKQotCi0gICAgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikKLQotICAgICooLkFSTS5leHRhYiogLmdudS5saW5rb25jZS5hcm1leHRhYi4qKQotICAgICooLmdjY19leGNlcHRfdGFibGUpIAotICAgICooLmVoX2ZyYW1lX2hkcikKLSAgICAqKC5laF9mcmFtZSkKLQotICAgIEtFRVAgKCooLmluaXQpKQotICAgIEtFRVAgKCooLmZpbmkpKQotCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooU09SVCguaW5pdF9hcnJheS4qKSkpCi0gICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKiguZmluaV9hcnJheSkpCi0gICAgS0VFUCAoKihTT1JUKC5maW5pX2FycmF5LiopKSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwotICB9ID5leHRlcm5hbF9yYW0gQVQ+cm9tCi0gIC8qIC5BUk0uZXhpZHggaXMgc29ydGVkLCBzbyBoYXMgdG8gZ28gaW4gaXRzIG93biBvdXRwdXQgc2VjdGlvbi4gICovCi0gICBfX2V4aWR4X3N0YXJ0ID0gLjsKLSAgLkFSTS5leGlkeCA6Ci0gIHsKLSAgICAqKC5BUk0uZXhpZHgqIC5nbnUubGlua29uY2UuYXJtZXhpZHguKikKLSAgfSA+ZXh0ZXJuYWxfcmFtIEFUPnJvbQotICBfX2V4aWR4X2VuZCA9IC47Ci0gIF9ldGV4dCA9IC47Ci0KLSAgLmRhdGEgOgotICB7Ci0gICAgX19kYXRhX2xvYWQgPSBMT0FEQUREUiguZGF0YSk7Ci0gICAgX3NpZGF0YSA9IExPQURBRERSICguZGF0YSk7Ci0gICAgX19kYXRhX3N0YXJ0ID0gLjsKLSAgICBfc2RhdGEgPSAuOwotICAgIEtFRVAoKiguamNyKSkKLSAgICAqKC5nb3QucGx0KSAqKC5nb3QpCi0gICAgKiguc2hkYXRhKQotICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKLSAgICAuID0gQUxJR04gKDQpOwotICAJX2VkYXRhID0gLjsKLSAgfSA+ZXNyYW0gQVQ+cm9tCi0KLSAgLmJzcyA6Ci0gIHsKLSAgICBfX2Jzc19zdGFydF9fID0gLiA7Ci0gICAgX3Nic3MgPSAuOwotICAgICooLnNoYnNzKQotICAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCi0gICAgKihDT01NT04pCi0gICAgLiA9IEFMSUdOICg4KTsKLSAgICBfX2Jzc19lbmRfXyA9IC47Ci0gICAgX2VuZCA9IC47Ci0gICAgX19lbmQgPSBfZW5kOwotICAgIF9lYnNzID0gLjsKLSAgICBQUk9WSURFKGVuZCA9IC4pOwotICB9ID5lc3JhbSBBVD5yb20KLQotICAuc3RhYiAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWIpCi0gIH0KLQotICAuc3RhYnN0ciAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWJzdHIpCi0gIH0KLSAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCi0gICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwotICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwotICAvKiBEV0FSRiAxICovCi0gIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQotICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQotICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCi0gIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9Ci0gIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9Ci0gIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwotICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQotICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KLSAgLyogRFdBUkYgMiAqLwotICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KLSAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQotICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQotICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KLSAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQotICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9Ci0gIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9Ci0gIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQotICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQotICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQotICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9Ci0gIC5ub3RlLmdudS5hcm0uaWRlbnQgMCA6IHsgS0VFUCAoKigubm90ZS5nbnUuYXJtLmlkZW50KSkgfQotICAuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguQVJNLmF0dHJpYnV0ZXMpKSB9Ci0gIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICB9Ci19CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3N0YXJ0dXBfbTJzeHh4LnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3N0YXJ0dXBfbTJzeHh4LnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmOTI3ZDUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9zdGFydHVwX20yc3h4eC5zCisrKyAvZGV2L251bGwKQEAgLTEsOTUxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIFNtYXJ0RnVzaW9uMiB2ZWN0b3IgdGFibGUgYW5kIHN0YXJ0dXAgY29kZSBmb3IgQ29kZVNvdXJjZXJ5IEcrKy4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNjkgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLQ0KLQkuc3ludGF4IHVuaWZpZWQNCi0gICAgLmNwdSBjb3J0ZXgtbTMNCi0gICAgLnRodW1iDQotICAgIA0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVmVjdG9yIHRhYmxlDQotICovDQotICAgIC5nbG9iYWwgICAgIGdfcGZuVmVjdG9ycw0KLSAgICAuc2VjdGlvbiAgICAuaXNyX3ZlY3RvciwiYSIsJXByb2diaXRzDQotICAgIC50eXBlICAgICAgIGdfcGZuVmVjdG9ycywgJW9iamVjdA0KLSAgICAuc2l6ZSAgICAgICBnX3BmblZlY3RvcnMsIC4tZ19wZm5WZWN0b3JzDQotICAgIA0KLWdfcGZuVmVjdG9yczoNCi0gICAgLndvcmQgIF9lc3RhY2sNCi0gICAgLndvcmQgIFJlc2V0X0hhbmRsZXINCi0gICAgLndvcmQgIE5NSV9IYW5kbGVyDQotICAgIC53b3JkICBIYXJkRmF1bHRfSGFuZGxlcg0KLSAgICAud29yZCAgTWVtTWFuYWdlX0hhbmRsZXINCi0gICAgLndvcmQgIEJ1c0ZhdWx0X0hhbmRsZXINCi0gICAgLndvcmQgIFVzYWdlRmF1bHRfSGFuZGxlcg0KLSAgICAud29yZCAgMA0KLSAgICAud29yZCAgMA0KLSAgICAud29yZCAgMA0KLSAgICAud29yZCAgMA0KLSAgICAud29yZCAgU1ZDX0hhbmRsZXINCi0gICAgLndvcmQgIERlYnVnTW9uX0hhbmRsZXINCi0gICAgLndvcmQgIDANCi0gICAgLndvcmQgIFBlbmRTVl9IYW5kbGVyDQotICAgIC53b3JkICBTeXNUaWNrX0hhbmRsZXINCi0gICAgLndvcmQgIFdkb2dXYWtldXBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgUlRDX1dha2V1cF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBTUEkwX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFNQSTFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgSTJDMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBJMkMwX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEkyQzBfU01CdXNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgSTJDMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBJMkMxX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEkyQzFfU01CdXNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgVUFSVDBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgVUFSVDFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRXRoZXJuZXRNQUNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRE1BX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFRpbWVyMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBUaW1lcjJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgQ0FOX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEVOVk0wX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEVOVk0xX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIENvbUJsa19JUlFIYW5kbGVyDQotICAgIC53b3JkICBVU0JfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgVVNCX0RNQV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBQTExfTG9ja19JUlFIYW5kbGVyDQotICAgIC53b3JkICBQTExfTG9ja0xvc3RfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgQ29tbVN3aXRjaEVycm9yX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIENhY2hlRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRERSX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEhQRE1BX0NvbXBsZXRlX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEhQRE1BX0Vycm9yX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEVDQ19FcnJvcl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBNRERSX0lPQ2FsaWJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRkFCX1BMTF9Mb2NrX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZBQl9QTExfTG9ja0xvc3RfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRklDNjRfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxM19JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnE0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTVfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxNl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnE3X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycThfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxOV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExMl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExM19JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExNF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnExNV9JUlFIYW5kbGVyICAgIA0KLSAgICAud29yZCAgR1BJTzBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzRfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzVfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzZfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzdfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzhfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzlfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzEwX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMTJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzEzX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xNF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMTVfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzE2X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xN19JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMThfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzE5X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzIyX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yM19JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjRfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzI1X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yNl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjdfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzI4X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yOV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMzBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzMxX0lSUUhhbmRsZXINCi0NCi0JDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBSZXNldF9IYW5kbGVyDQotICovDQotICAgIC5nbG9iYWwgUmVzZXRfSGFuZGxlcg0KLSAgICAudHlwZSAgIFJlc2V0X0hhbmRsZXIsICVmdW5jdGlvbg0KLVJlc2V0X0hhbmRsZXI6DQotX3N0YXJ0Og0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSAqIENhbGwgQ01TSVMgc3lzdGVtIGluaXQgZnVuY3Rpb24uDQotICovDQotICAgIGxkciAgICAgcjAsID1TeXN0ZW1Jbml0DQotICAgIGJseCAgICAgcjANCi0gICAgDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JIA0KLSAqIENoZWNrIGlmIHRoZSBleGVjdXRhYmxlIGlzIGJ1aWx0IGZvciBOVk0gTE1BIG1pcnJvcmVkIHRvIFZNQSBhZGRyZXNzLg0KLSAqIFRoaXMgaXMgZG9uZSBmb3IgZGVidWdnaW5nIGV4ZWN1dGFibGVzIHJ1bm5pbmcgb3V0IG9mIGVOVk0gd2l0aCBTb2Z0Q29uc29sZS4NCi0gKiBUaGUgLnRleHQgc2VjdGlvbiBzaG91bGQgbm90IGJlIGNvcGllZCBpbiB0aGlzIGNhc2Ugc2luY2UgYm90aCB0aGUgTE1BIGFuZA0KLSAqIFZNQSBwb2ludCBhdCB0aGUgZU5WTSBkZXNwaXRlIHRoZSBMTUEgYW5kIFZNYSBoYXZpbmcgZGlmZmVyZW50IHZhbHVlcy4NCi0gKi8NCi0gICAgbGRyIHIwLCA9X19taXJyb3JlZF9udm0NCi0gICAgY21wIHIwLCAjMA0KLSAgICBibmUgY29weV9kYXRhDQotICAgIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCSANCi0gKiBDb3B5IGNvZGUgc2VjdGlvbi4NCi0gKi8NCi0JbGRyIHIwLCA9X190ZXh0X2xvYWQNCi0JbGRyIHIxLCA9X190ZXh0X3N0YXJ0DQotCWxkciByMiwgPV9ldGV4dA0KLQljbXAgcjAsIHIxDQotCWJlcSBjb3B5X2RhdGENCi1jb3B5X2NvZGVfbG9vcDoNCi0JY21wIHIxLCByMg0KLSAgICBpdHQgbmUNCi0JbGRybmUgcjMsIFtyMF0sICM0DQotCXN0cm5lIHIzLCBbcjFdLCAjNA0KLQlibmUgY29weV9jb2RlX2xvb3ANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCi0gKiBDb3B5IGRhdGEgc2VjdGlvbi4NCi0gKi8NCi1jb3B5X2RhdGE6DQotCWxkciByMCwgPV9fZGF0YV9sb2FkDQotCWxkciByMSwgPV9fZGF0YV9zdGFydA0KLQlsZHIgcjIsID1fZWRhdGENCi0JY21wIHIwLCByMQ0KLQliZXEgY2xlYXJfYnNzDQotY29weV9kYXRhX2xvb3A6DQotCWNtcCByMSwgcjINCi0gICAgaXR0IG5lDQotCWxkcm5lIHIzLCBbcjBdLCAjNA0KLQlzdHJuZSByMywgW3IxXSwgIzQNCi0JYm5lIGNvcHlfZGF0YV9sb29wDQotCQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSAqIENsZWFyIC5ic3MNCi0gKi8NCi1jbGVhcl9ic3M6DQotCWxkciByMCwgPTANCi0JbGRyIHIxLCA9X19ic3Nfc3RhcnRfXw0KLQlsZHIgcjIsID1fX2Jzc19lbmRfXw0KLWNsZWFyX2Jzc19sb29wOg0KLQljbXAgcjEsIHIyDQotICAgIGl0IG5lDQotCXN0cm5lIHIwLCBbcjFdLCAjNA0KLQlibmUgY2xlYXJfYnNzX2xvb3ANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCi0gKiBDYWxsIGdsb2JhbCBjb25zdHJ1Y3RvcnMNCi0gKi8NCi0gICAgLyoNCi0gICAgICogQWxpZ24gdG8gd29yZCBhbmQgdXNlIDMyLWJpdHMgTERSIGluc3RydWN0aW9uIHRvIGVuc3VyZSB0aGUgQUREIGluc3RydWN0aW9uDQotICAgICAqIHRha2luZyBQQyBhcyBhcmd1bWVudCBpcyBhbGlnbmVkIG9uIGEgd29yZCBib3VuZGFyeS4NCi0gICAgICovDQotICAgIC5hbGlnbiA0DQotY2FsbF9nbG9iX2N0b3I6DQotCWxkci53IHIwLCA9X19saWJjX2luaXRfYXJyYXkNCi0gICAgYWRkIGxyLCBwYywgIzMNCi0gCWJ4IHIwDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotICogYnJhbmNoIHRvIG1haW4uDQotICovDQotYnJhbmNoX3RvX21haW46IAkgDQotCW1vdglyMCwgIzAJCS8qICBubyBhcmd1bWVudHMgICovDQotCW1vdglyMSwgIzAJCS8qICBubyBhcmd2IGVpdGhlciAqLw0KLSAgICBsZHIgcGMsID1tYWluDQotDQotRXhpdExvb3A6DQotICAgIEIgRXhpdExvb3ANCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE5NSV9IYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgTk1JX0hhbmRsZXINCi0gICAgLnR5cGUgICBOTUlfSGFuZGxlciwgJWZ1bmN0aW9uDQotTk1JX0hhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogSGFyZEZhdWx0X0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBIYXJkRmF1bHRfSGFuZGxlcg0KLSAgICAudHlwZSAgIEhhcmRGYXVsdF9IYW5kbGVyLCAlZnVuY3Rpb24NCi1IYXJkRmF1bHRfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBNZW1NYW5hZ2VfSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIE1lbU1hbmFnZV9IYW5kbGVyDQotICAgIC50eXBlICAgTWVtTWFuYWdlX0hhbmRsZXIsICVmdW5jdGlvbg0KLU1lbU1hbmFnZV9IYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEJ1c0ZhdWx0X0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBCdXNGYXVsdF9IYW5kbGVyDQotICAgIC50eXBlICAgQnVzRmF1bHRfSGFuZGxlciwgJWZ1bmN0aW9uDQotQnVzRmF1bHRfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBVc2FnZUZhdWx0X0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBVc2FnZUZhdWx0X0hhbmRsZXINCi0gICAgLnR5cGUgICBVc2FnZUZhdWx0X0hhbmRsZXIsICVmdW5jdGlvbg0KLVVzYWdlRmF1bHRfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTVkNfSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFNWQ19IYW5kbGVyDQotICAgIC50eXBlICAgU1ZDX0hhbmRsZXIsICVmdW5jdGlvbg0KLVNWQ19IYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIERlYnVnTW9uX0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBEZWJ1Z01vbl9IYW5kbGVyDQotICAgIC50eXBlICAgRGVidWdNb25fSGFuZGxlciwgJWZ1bmN0aW9uDQotRGVidWdNb25fSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBQZW5kU1ZfSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFBlbmRTVl9IYW5kbGVyDQotICAgIC50eXBlICAgUGVuZFNWX0hhbmRsZXIsICVmdW5jdGlvbg0KLVBlbmRTVl9IYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFN5c1RpY2tfSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFN5c1RpY2tfSGFuZGxlcg0KLSAgICAudHlwZSAgIFN5c1RpY2tfSGFuZGxlciwgJWZ1bmN0aW9uDQotU3lzVGlja19IYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFdkb2dXYWtldXBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFdkb2dXYWtldXBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFdkb2dXYWtldXBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotV2RvZ1dha2V1cF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFJUQ19XYWtldXBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFJUQ19XYWtldXBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFJUQ19XYWtldXBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotUlRDX1dha2V1cF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNQSTBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFNQSTBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFNQSTBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotU1BJMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNQSTFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFNQSTFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFNQSTFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotU1BJMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzBfU01CQWxlcnRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzBfU01CQWxlcnRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzBfU01CQWxlcnRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMF9TTUJBbGVydF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzBfU01CdXNfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzBfU01CdXNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzBfU01CdXNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMF9TTUJ1c19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzFfU01CQWxlcnRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzFfU01CQWxlcnRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzFfU01CQWxlcnRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMV9TTUJBbGVydF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEkyQzFfU01CdXNfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEkyQzFfU01CdXNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEkyQzFfU01CdXNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSTJDMV9TTUJ1c19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFVBUlQwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBVQVJUMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgVUFSVDBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotVUFSVDBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBVQVJUMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVUFSVDFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFVBUlQxX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVVBUlQxX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEV0aGVybmV0TUFDX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBFdGhlcm5ldE1BQ19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRXRoZXJuZXRNQUNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRXRoZXJuZXRNQUNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBETUFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIERNQV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRE1BX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLURNQV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFRpbWVyMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVGltZXIxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBUaW1lcjFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotVGltZXIxX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVGltZXIyX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBUaW1lcjJfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFRpbWVyMl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1UaW1lcjJfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ0FOX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBDQU5fSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIENBTl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1DQU5fSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRU5WTTBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEVOVk0wX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBFTlZNMF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1FTlZNMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEVOVk0xX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBFTlZNMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRU5WTTFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRU5WTTFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDb21CbGtfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIENvbUJsa19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgQ29tQmxrX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUNvbUJsa19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0gICAgDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBVU0JfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFVTQl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgVVNCX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVVTQl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0gICAgDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBVU0JfRE1BX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBVU0JfRE1BX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBVU0JfRE1BX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVVTQl9ETUFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBQTExfTG9ja19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgUExMX0xvY2tfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFBMTF9Mb2NrX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVBMTF9Mb2NrX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBQTExfTG9ja0xvc3RfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFBMTF9Mb2NrTG9zdF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1QTExfTG9ja0xvc3RfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDb21tU3dpdGNoRXJyb3JfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIENvbW1Td2l0Y2hFcnJvcl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgQ29tbVN3aXRjaEVycm9yX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUNvbW1Td2l0Y2hFcnJvcl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENhY2hlRXJyb3JfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIENhY2hlRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIENhY2hlRXJyb3JfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotQ2FjaGVFcnJvcl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEREUl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRERSX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBERFJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRERSX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEhQRE1BX0NvbXBsZXRlX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1IUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEhQRE1BX0Vycm9yX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBIUERNQV9FcnJvcl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgSFBETUFfRXJyb3JfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSFBETUFfRXJyb3JfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRUNDX0Vycm9yX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBFQ0NfRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEVDQ19FcnJvcl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1FQ0NfRXJyb3JfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBNRERSX0lPQ2FsaWJfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIE1ERFJfSU9DYWxpYl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgTUREUl9JT0NhbGliX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLU1ERFJfSU9DYWxpYl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZBQl9QTExfTG9ja19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRkFCX1BMTF9Mb2NrX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGQUJfUExMX0xvY2tfSVJRSGFuZGxlciwgJWZ1bmN0aW9uICAgIA0KLUZBQl9QTExfTG9ja19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZBQl9QTExfTG9ja0xvc3RfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZBQl9QTExfTG9ja0xvc3RfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZBQl9QTExfTG9ja0xvc3RfSVJRSGFuZGxlciwgJWZ1bmN0aW9uICAgICAgICANCi1GQUJfUExMX0xvY2tMb3N0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZJQzY0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGSUM2NF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRklDNjRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uICAgICAgICAgICAgDQotRklDNjRfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnEwX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnExX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnEyX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxM19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxM19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxM19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnEzX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxNF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxNF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxNF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnE0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxNV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxNV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxNV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnE1X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxNl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxNl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxNl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnE2X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxN19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxN19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxN19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnE3X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycThfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycThfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycThfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxOF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTlfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTlfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTlfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxOV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTEwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnExMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMTBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMTBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnExMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMTFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTExX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycTExX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMTJfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTEyX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnExMl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnExMl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTEzX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnExM19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMTNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMTNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnExNF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMTRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTE0X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycTE0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMTVfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTE1X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnExNV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnExNV9JUlFIYW5kbGVyOg0KLSAgICBCIC4gICAgDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8wX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8wX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzJfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPM19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8zX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8zX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU80X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPNF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPNF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU81X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPNV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzVfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPNl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzZfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU82X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU82X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzdfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU83X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPN19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPN19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU84X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPOF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzhfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzhfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPOV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzlfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU85X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU85X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzEwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xMF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMTFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzExX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xMl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzEyX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzEyX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzEzX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xM19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMTRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xNF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzE0X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xNF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xNV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzE1X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzE1X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzE2X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTZfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xNl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTZfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMTdfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xN19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzE3X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xN19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xOF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzE4X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMThfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzE4X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzE5X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTlfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xOV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTlfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzIwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzIxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzIxX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzIyX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjJfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yMl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjJfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjNfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yM19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzIzX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yM19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yNF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzI0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzI0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzI1X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjVfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yNV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjVfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjZfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yNl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzI2X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yNl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yN19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzI3X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjdfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzI3X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzI4X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjhfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yOF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjhfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjlfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yOV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzI5X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yOV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8zMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzMwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMzBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzMwX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzMxX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMzFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8zMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMzFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBtc2NjX3Bvc3RfaHdfY2ZnX2luaXQNCi0gKi8NCi0gICAgLndlYWsgICBtc2NjX3Bvc3RfaHdfY2ZnX2luaXQNCi0gICAgLnR5cGUgICBtc2NjX3Bvc3RfaHdfY2ZnX2luaXQsICVmdW5jdGlvbg0KLW1zY2NfcG9zdF9od19jZmdfaW5pdDoNCi0gICAgQlggTFINCi0NCi0uZW5kDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zeXNfaW5pdF9jZmdfdHlwZXMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzX2luaXRfY2ZnX3R5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MzY4YWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zeXNfaW5pdF9jZmdfdHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiAgDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA0NDEwICQNCi0gKiBTVk4gJERhdGU6IDIwMTItMDctMTYgMTQ6MzY6MTcgKzAxMDAgKE1vbiwgMTYgSnVsIDIwMTIpICQNCi0gKi8NCi0gDQotI2lmbmRlZiBTWVNURU1fSU5JVF9DRkdfVFlQRVNfSF8NCi0jZGVmaW5lIFNZU1RFTV9JTklUX0NGR19UWVBFU19IXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERSIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgQ29udHJvbGxlciByZWdpc3RlcnMuDQotICAgICAqLw0KLSAgICBzdHJ1Y3QNCi0gICAgew0KLSAgICAgICAgdWludDE2X3QgRFlOX1NPRlRfUkVTRVRfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDA7DQotICAgICAgICB1aW50MTZfdCBEWU5fUkVGUkVTSF8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFlOX1JFRlJFU0hfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IERZTl9QT1dFUkRPV05fQ1I7DQotICAgICAgICB1aW50MTZfdCBEWU5fREVCVUdfQ1I7DQotICAgICAgICB1aW50MTZfdCBNT0RFX0NSOw0KLSAgICAgICAgdWludDE2X3QgQUREUl9NQVBfQkFOS19DUjsNCi0gICAgICAgIHVpbnQxNl90IEVDQ19EQVRBX01BU0tfQ1I7DQotICAgICAgICB1aW50MTZfdCBBRERSX01BUF9DT0xfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEFERFJfTUFQX0NPTF8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgQUREUl9NQVBfUk9XXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBBRERSX01BUF9ST1dfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IElOSVRfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IENLRV9SU1ROX0NZQ0xFU18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgQ0tFX1JTVE5fQ1lDTEVTXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBJTklUX01SX0NSOw0KLSAgICAgICAgdWludDE2X3QgSU5JVF9FTVJfQ1I7DQotICAgICAgICB1aW50MTZfdCBJTklUX0VNUjJfQ1I7DQotICAgICAgICB1aW50MTZfdCBJTklUX0VNUjNfQ1I7DQotICAgICAgICB1aW50MTZfdCBEUkFNX0JBTktfVElNSU5HX1BBUkFNX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9SRF9XUl9MQVRFTkNZX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9SRF9XUl9QUkVfQ1I7DQotICAgICAgICB1aW50MTZfdCBEUkFNX01SX1RJTUlOR19QQVJBTV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fUkFTX1RJTUlOR19DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fUkRfV1JfVFJOQVJORF9USU1FX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9UX1BEX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9CQU5LX0FDVF9USU1JTkdfQ1I7DQotICAgICAgICB1aW50MTZfdCBPRFRfUEFSQU1fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IE9EVF9QQVJBTV8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgQUREUl9NQVBfQ09MXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBNT0RFX1JFR19SRF9XUl9DUjsNCi0gICAgICAgIHVpbnQxNl90IE1PREVfUkVHX0RBVEFfQ1I7DQotICAgICAgICB1aW50MTZfdCBQV1JfU0FWRV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgUFdSX1NBVkVfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFpRX0xPTkdfVElNRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFpRX1NIT1JUX1RJTUVfQ1I7DQotICAgICAgICB1aW50MTZfdCBaUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFpRX1NIT1JUX0lOVF9SRUZSRVNIX01BUkdJTl8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgUEVSRl9QQVJBTV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgSFBSX1FVRVVFX1BBUkFNXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBIUFJfUVVFVUVfUEFSQU1fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IExQUl9RVUVVRV9QQVJBTV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgTFBSX1FVRVVFX1BBUkFNXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9RVUVVRV9QQVJBTV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFBFUkZfUEFSQU1fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFBFUkZfUEFSQU1fM19DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9SRERBVEFfRU5fQ1I7DQotICAgICAgICB1aW50MTZfdCBERklfTUlOX0NUUkxVUERfVElNSU5HX0NSOw0KLSAgICAgICAgdWludDE2X3QgREZJX01BWF9DVFJMVVBEX1RJTUlOR19DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9XUl9MVkxfQ09OVFJPTF8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgREZJX1dSX0xWTF9DT05UUk9MXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBERklfUkRfTFZMX0NPTlRST0xfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9SRF9MVkxfQ09OVFJPTF8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgREZJX0NUUkxVUERfVElNRV9JTlRFUlZBTF9DUjsNCi0gICAgICAgIHVpbnQxNl90IERZTl9TT0ZUX1JFU0VUX0NSMjsNCi0gICAgICAgIHVpbnQxNl90IEFYSV9GQUJSSUNfUFJJX0lEX0NSOw0KLSAgICB9IGRkcmM7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBQSFkgY29uZmlndXJhdGlvbiByZWdpc3RlcnMNCi0gICAgICovDQotICAgIHN0cnVjdCANCi0gICAgew0KLSAgICAgICAgdWludDE2X3QgTE9PUEJBQ0tfVEVTVF9DUjsNCi0gICAgICAgIHVpbnQxNl90IEJPQVJEX0xPT1BCQUNLX0NSOw0KLSAgICAgICAgdWludDE2X3QgQ1RSTF9TTEFWRV9SQVRJT19DUjsNCi0gICAgICAgIHVpbnQxNl90IENUUkxfU0xBVkVfRk9SQ0VfQ1I7DQotICAgICAgICB1aW50MTZfdCBDVFJMX1NMQVZFX0RFTEFZX0NSOw0KLSAgICAgICAgdWludDE2X3QgREFUQV9TTElDRV9JTl9VU0VfQ1I7DQotICAgICAgICB1aW50MTZfdCBMVkxfTlVNX09GX0RRMF9DUjsNCi0gICAgICAgIHVpbnQxNl90IERRX09GRlNFVF8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFFfT0ZGU0VUXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBEUV9PRkZTRVRfM19DUjsNCi0gICAgICAgIHVpbnQxNl90IERJU19DQUxJQl9SU1RfQ1I7DQotICAgICAgICB1aW50MTZfdCBETExfTE9DS19ESUZGX0NSOw0KLSAgICAgICAgdWludDE2X3QgRklGT19XRV9JTl9ERUxBWV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgRklGT19XRV9JTl9ERUxBWV8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgRklGT19XRV9JTl9ERUxBWV8zX0NSOw0KLSAgICAgICAgdWludDE2X3QgRklGT19XRV9JTl9GT1JDRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfU0xBVkVfUkFUSU9fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfU0xBVkVfUkFUSU9fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfU0xBVkVfUkFUSU9fM19DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfU0xBVkVfUkFUSU9fNF9DUjsNCi0gICAgICAgIHVpbnQxNl90IEdBVEVMVkxfSU5JVF9NT0RFX0NSOw0KLSAgICAgICAgdWludDE2X3QgR0FURUxWTF9JTklUX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBHQVRFTFZMX0lOSVRfUkFUSU9fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEdBVEVMVkxfSU5JVF9SQVRJT18zX0NSOw0KLSAgICAgICAgdWludDE2X3QgR0FURUxWTF9JTklUX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBMT0NBTF9PRFRfQ1I7DQotICAgICAgICB1aW50MTZfdCBJTlZFUlRfQ0xLT1VUX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX0RFTEFZXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRF9EUVNfU0xBVkVfREVMQVlfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9ERUxBWV8zX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRF9EUVNfU0xBVkVfUkFUSU9fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9SQVRJT18zX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfREVMQVlfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RRU19TTEFWRV9ERUxBWV8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX0RFTEFZXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfRk9SQ0VfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfUkFUSU9fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RRU19TTEFWRV9SQVRJT18yX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX1JBVElPXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfUkFUSU9fNF9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RBVEFfU0xBVkVfREVMQVlfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RBVEFfU0xBVkVfREVMQVlfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RBVEFfU0xBVkVfREVMQVlfM19DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RBVEFfU0xBVkVfRk9SQ0VfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX1JBVElPXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX1JBVElPXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUkxWTF9JTklUX01PREVfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUkxWTF9JTklUX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUkxWTF9JTklUX1JBVElPXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUkxWTF9JTklUX1JBVElPXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUkxWTF9JTklUX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9SRF9STF9DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEQ19GSUZPX1JTVF9FUlJDTlRDTFJfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRENfV0VfVE9fUkVfREVMQVlfQ1I7DQotICAgICAgICB1aW50MTZfdCBVU0VfRklYRURfUkVfQ1I7DQotICAgICAgICB1aW50MTZfdCBVU0VfUkFOSzBfREVMQVlTX0NSOw0KLSAgICAgICAgdWludDE2X3QgVVNFX0xWTF9UUk5HX0xFVkVMX0NSOw0KLSAgICAgICAgdWludDE2X3QgQ09ORklHX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfV1JfR0FURV9MVkxfQ1I7DQotICAgICAgICB1aW50MTZfdCBEWU5fUkVTRVRfQ1I7DQotICAgIH0gcGh5Ow0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBGSUMtNjQgcmVnaXN0ZXJzDQotICAgICAqIFRoZXNlIHJlZ2lzdGVycyBhcmUgMTYtYml0IHdpZGUgYW5kIDMyLWJpdCBhbGlnbmVkLg0KLSAgICAgKi8NCi0gICAgc3RydWN0IA0KLSAgICB7DQotICAgICAgICB1aW50MTZfdCBOQl9BRERSX0NSOw0KLSAgICAgICAgdWludDE2X3QgTkJSV0JfU0laRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdCX1RJTUVPVVRfQ1I7DQotICAgICAgICB1aW50MTZfdCBIUERfU1dfUldfRU5fQ1I7DQotICAgICAgICB1aW50MTZfdCBIUERfU1dfUldfSU5WQUxfQ1I7DQotICAgICAgICB1aW50MTZfdCBTV19XUl9FUkNMUl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEVSUl9JTlRfRU5BQkxFX0NSOw0KLSAgICAgICAgdWludDE2X3QgTlVNX0FIQl9NQVNURVJTX0NSOw0KLSAgICAgICAgdWludDE2X3QgTE9DS19USU1FT1VUVkFMXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBMT0NLX1RJTUVPVVRWQUxfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IExPQ0tfVElNRU9VVF9FTl9DUjsNCi0gICAgfSBmaWM7DQotfSBkZHJfc3Vic3lzX2NmZ190Ow0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZERFIgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLQ0KLXR5cGVkZWYgc3RydWN0IA0KLXsNCi0gICAgdWludDE2X3QgUExMX0NPTkZJR19MT1dfMTsNCi0gICAgdWludDE2X3QgUExMX0NPTkZJR19MT1dfMjsNCi0gICAgdWludDE2X3QgUExMX0NPTkZJR19ISUdIOw0KLSAgICB1aW50MTZfdCBGQUNDX0NMS19FTjsNCi0gICAgdWludDE2X3QgRkFDQ19NVVhfQ09ORklHOw0KLSAgICB1aW50MTZfdCBGQUNDX0RJVklTT1JfUkFUSU87DQotICAgIHVpbnQxNl90IFBMTF9ERUxBWV9MSU5FX1NFTDsNCi0gICAgdWludDE2X3QgU09GVF9SRVNFVDsgDQotICAgIHVpbnQxNl90IElPX0NBTElCOw0KLSAgICB1aW50MTZfdCBJTlRFUlJVUFRfRU5BQkxFOw0KLSAgICB1aW50MTZfdCBBWElfQUhCX01PREVfU0VMOw0KLSAgICB1aW50MTZfdCBQSFlfU0VMRl9SRUZfRU47DQotfSBmZGRyX3N5c3JlZ190Ow0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotLyogICAgICAgICAgICAgICAgIFBDSSBFeHByZXNzIEJyaWRnZSBJUCBDb3JlIGNvbmZpZ3VyYXRpb24uICAgICAgICAgICAgICAgICAgKi8NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICB1aW50MzJfdCAqIHBfcmVnOw0KLSAgICB1aW50MzJfdCB2YWx1ZTsNCi19IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdDsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIFNZU1RFTV9JTklUX0NGR19UWVBFU19IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzdGVtX20yc3h4eC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zeXN0ZW1fbTJzeHh4LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MTM0YjguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zeXN0ZW1fbTJzeHh4LmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NjAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTItMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBTbWFydEZ1c2lvbjIgQ01TSVMgc3lzdGVtIGluaXRpYWxpemF0aW9uLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTI4MCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIyIDIwOjUxOjUwICswMDAwIChGcmksIDIyIE1hciAyMDEzKSAkDQotICovDQotI2luY2x1ZGUgIm0yc3h4eC5oIg0KLSNpbmNsdWRlICIuLi9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWcuaCINCi0jaW5jbHVkZSAic3lzX2luaXRfY2ZnX3R5cGVzLmgiDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFNpbGljb24gcmV2aXNpb25zLg0KLSAqLw0KLSNkZWZpbmUgVU5LTk9XTl9TSUxJQ09OX1JFViAgICAgMA0KLSNkZWZpbmUgTTJTMDUwX1JFVl9BX1NJTElDT04gICAgMQ0KLSNkZWZpbmUgTTJTMDUwX1JFVl9CX1NJTElDT04gICAgMg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBtc2NjX3Bvc3RfaHdfY2ZnX2luaXQodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTeXN0ZW0gcmVnaXN0ZXJzIG9mIGludGVyZXN0Lg0KLSAqLw0KLS8qDQotICogTVNTRERSX0ZBQ0MxX0NSIHJlZ2lzdGVyIG1hc2tzOg0KLSAqLw0KLSNkZWZpbmUgRERSX0NMS19FTl9TSElGVCAgICA4dQ0KLSNkZWZpbmUgRkFDQ19HTE1VWF9TRUxfTUFTSyAgICAgICAgIDB4MDAwMDEwMDB1DQotI2RlZmluZSBDT05UUk9MTEVSX1BMTF9JTklUX01BU0sgICAgMHgwNDAwMDAwMHUNCi0jZGVmaW5lIFJDT1NDX0RJVjJfTUFTSyAgICAgICAgICAgICAweDAwMDAwMDA0dQ0KLQ0KLS8qDQotICogTVNTRERSX1BMTF9TVEFUVVMgcmVnaXN0ZXIgbWFza3M6DQotICovDQotI2RlZmluZSBGQUJfUExMX0xPQ0tfTUFTSyAgIDB4MDAwMDAwMDF1DQotI2RlZmluZSBNUExMX0xPQ0tfTUFTSyAgICAgIDB4MDAwMDAwMDJ1DQotDQotLyoNCi0gKiBNU1NERFJfUExMX1NUQVRVU19ISUdIX0NSIHJlZ2lzdGVyIG1hc2tzOg0KLSAqLw0KLSNkZWZpbmUgRkFDQ19QTExfQllQQVNTX01BU0sgICAgMHgwMDAwMDAwMXUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFN0YW5kYXJkIENNU0lTIGdsb2JhbCB2YXJpYWJsZXMuDQotICovDQotdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrID0gTVNTX1NZU19NM19DTEtfRlJFUTsgICAgICAgICAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTbWFydEZ1c2lvbjIgc3BlY2lmaWMgY2xvY2tzLg0KLSAqLw0KLXVpbnQzMl90IGdfRnJlcXVlbmN5UENMSzAgPSBNU1NfU1lTX0FQQl8wX0NMS19GUkVROyAgICAgLyohPCBDbG9jayBmcmVxdWVuY3kgb2YgQVBCIGJ1cyAwLiAqLyAgDQotdWludDMyX3QgZ19GcmVxdWVuY3lQQ0xLMSA9IE1TU19TWVNfQVBCXzFfQ0xLX0ZSRVE7ICAgICAvKiE8IENsb2NrIGZyZXF1ZW5jeSBvZiBBUEIgYnVzIDEuICovDQotdWludDMyX3QgZ19GcmVxdWVuY3lQQ0xLMiA9IE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVE7ICAgICAvKiE8IENsb2NrIGZyZXF1ZW5jeSBvZiBBUEIgYnVzIDIuICovDQotdWludDMyX3QgZ19GcmVxdWVuY3lGSUMwID0gTVNTX1NZU19GSUNfMF9DTEtfRlJFUTsgICAgICAvKiE8IENsb2NrIGZyZXF1ZWNueSBvZiBGUEdBIGZhYnJpYyBpbnRlcmZhY2UgY29udHJvbGxlciAxLiAqLw0KLXVpbnQzMl90IGdfRnJlcXVlbmN5RklDMSA9IE1TU19TWVNfRklDXzFfQ0xLX0ZSRVE7ICAgICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgRlBHQSBmYWJyaWMgaW50ZWZhY2UgY29udHJvbGxlciAyLiAqLw0KLXVpbnQzMl90IGdfRnJlcXVlbmN5RklDNjQgPSBNU1NfU1lTX0ZJQzY0X0NMS19GUkVROyAgICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgNjQtYml0IEZQR0EgZmFicmljIGludGVyZmFjZSBjb250cm9sbGVyLiAqLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogU3lzdGVtIGNvbmZpZ3VyYXRpb24gdGFibGVzIGdlbmVyYXRlZCBieSBMaWJlcm8uDQotICovDQotI2lmIE1TU19TWVNfTUREUl9DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIE1ERFJfVHlwZURlZiAqIGNvbnN0IGdfbTJzX21kZHJfYWRkcjsNCi1leHRlcm4gY29uc3QgZGRyX3N1YnN5c19jZmdfdCBnX20yc19tZGRyX3N1YnN5c19jb25maWc7DQotI2VuZGlmDQotDQotI2lmIE1TU19TWVNfRkREUl9DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIEZERFJfVHlwZURlZiAqIGNvbnN0IGdfbTJzX2ZkZHJfYWRkcjsNCi1leHRlcm4gY29uc3QgZGRyX3N1YnN5c19jZmdfdCBnX20yc19mZGRyX3N1YnN5c19jb25maWc7DQotI2VuZGlmDQotDQotI2RlZmluZSBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYICAgICAoTVNTX1NZU19TRVJERVNfMF9DT05GSUdfQllfQ09SVEVYIHx8IE1TU19TWVNfU0VSREVTXzFfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX1NFUkRFU18yX0NPTkZJR19CWV9DT1JURVggfHwgTVNTX1NZU19TRVJERVNfM19DT05GSUdfQllfQ09SVEVYKQ0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18wX0NPTkZJR19CWV9DT1JURVgNCi1leHRlcm4gY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90IGdfbTJzX3NlcmRlc18wX2NvbmZpZ1tTRVJERVNfMF9DRkdfTkJfT0ZfUEFJUlNdOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18xX0NPTkZJR19CWV9DT1JURVgNCi1leHRlcm4gY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90IGdfbTJzX3NlcmRlc18xX2NvbmZpZ1tTRVJERVNfMV9DRkdfTkJfT0ZfUEFJUlNdOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18yX0NPTkZJR19CWV9DT1JURVgNCi1leHRlcm4gY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90IGdfbTJzX3NlcmRlc18yX2NvbmZpZ1tTRVJERVNfMl9DRkdfTkJfT0ZfUEFJUlNdOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18zX0NPTkZJR19CWV9DT1JURVgNCi1leHRlcm4gY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90IGdfbTJzX3NlcmRlc18zX2NvbmZpZ1tTRVJERVNfM19DRkdfTkJfT0ZfUEFJUlNdOw0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTVNTX1NZU19DT1JFU0YyUkVTRVRfVVNFRCAgKE1TU19TWVNfTUREUl9DT05GSUdfQllfQ09SVEVYIHx8IE1TU19TWVNfRkREUl9DT05GSUdfQllfQ09SVEVYIHx8IE1TU19TWVNfU0VSREVTX0NPTkZJR19CWV9DT1JURVgpDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBMb2NhbCBmdW5jdGlvbnM6DQotICovDQotc3RhdGljIHVpbnQzMl90IGdldF9zaWxpY29uX3JldmlzaW9uKHZvaWQpOw0KLXN0YXRpYyB2b2lkIHNpbGljb25fd29ya2Fyb3VuZHModm9pZCk7DQotc3RhdGljIHZvaWQgbTJzMDUwX3Jldl9hX3dvcmthcm91bmRzKHZvaWQpOw0KLQ0KLSNpZiAoTVNTX1NZU19GQUNDX0lOSVRfQllfQ09SVEVYID09IDEpDQotc3RhdGljIHZvaWQgY29tcGxldGVfY2xvY2tfY29uZmlnKHZvaWQpOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYDQotc3RhdGljIHZvaWQgY29uZmlndXJlX3NlcmRlc19pbnRmKHZvaWQpOw0KLSNlbmRpZg0KLQ0KLSNpZiAoTVNTX1NZU19NRERSX0NPTkZJR19CWV9DT1JURVggfHwgTVNTX1NZU19GRERSX0NPTkZJR19CWV9DT1JURVgpDQotc3RhdGljIHZvaWQgY29uZmlnX2Rkcl9zdWJzeXMNCi0oDQotICAgIGNvbnN0IGRkcl9zdWJzeXNfY2ZnX3QgKiBwX2Rkcl9zdWJzeXNfY2ZnLA0KLSAgICBERFJDb3JlX1R5cGVEZWYgKiBwX2Rkcl9zdWJzeXNfcmVncw0KLSk7DQotI2VuZGlmDQotDQotI2lmIE1TU19TWVNfU0VSREVTX0NPTkZJR19CWV9DT1JURVgNCi1zdGF0aWMgdm9pZCBjb25maWdfYnlfYWRkcl92YWx1ZQ0KLSgNCi0gICAgY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90ICogcF9hZGRyX3ZhbHVlX3BhaXIsDQotICAgIHVpbnQzMl90IG5iX29mX2NmZ19wYWlycw0KLSk7DQotI2VuZGlmDQotDQotc3RhdGljIHVpbnQzMl90IGdldF9yY29zY18yNV81MG1oel9mcmVxdWVuY3kodm9pZCk7DQotc3RhdGljIHZvaWQgc2V0X2Nsb2NrX2ZyZXF1ZW5jeV9nbG9iYWxzKHVpbnQzMl90IGZjbGspOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIHN5c3RlbV9tMnN4eHguaCBmb3IgZGV0YWlscy4NCi0gKi8NCi12b2lkIFN5c3RlbUluaXQodm9pZCkNCi17DQotICAgIC8qDQotICAgICAqIERvIG5vdCBtYWtlIHVzZSBvZiBnbG9iYWwgdmFyaWFibGVzIG9yIG1ha2UgYW55IGFzdW1wdGlvbnMgcmVnYXJkaW5nDQotICAgICAqIG1lbW9yeSBjb250ZW50IGlmIG1vZGlmeWluZyB0aGlzIGZ1bmN0aW9uLiBUaGUgbWVtb3J5IGNvbnRlbnQgaGFzIG5vdCBiZWVuDQotICAgICAqIGluaXRpYWxpc2VkIGJ5IHRoZSB0aW1lIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBzdGFydC11cCBjb2RlLg0KLSAgICAgKi8NCi0jaWYgKE1TU19TWVNfRkFDQ19JTklUX0JZX0NPUlRFWCA9PSAxKQ0KLSAgICBjb21wbGV0ZV9jbG9ja19jb25maWcoKTsNCi0jZW5kaWYNCi0NCi0gICAgc2lsaWNvbl93b3JrYXJvdW5kcygpOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBTZXQgU1RLQUxJR04gdG8gZW5zdXJlIGV4Y2VwdGlvbiBzdGFja2luZyBzdGFydHMgb24gOCBieXRlcyBhZGRyZXNzDQotICAgICAqIGJvdW5kYXJ5LiBUaGlzIGVuc3VyZXMgY29tcGxpYW5jZSB3aXRoIHRoZSAiUHJvY2VkdXJlIENhbGwgU3RhbmRhcmRzIGZvcg0KLSAgICAgKiB0aGUgQVJNIEFyY2hpdGVjdHVyZSIgKEFBUENTKS4NCi0gICAgICovDQotICAgIFNDQi0+Q0NSIHw9IFNDQl9DQ1JfU1RLQUxJR05fTXNrOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBNRERSIGNvbmZpZ3VyYXRpb24NCi0gICAgICovDQotI2lmIE1TU19TWVNfTUREUl9DT05GSUdfQllfQ09SVEVYDQotICAgIGNvbmZpZ19kZHJfc3Vic3lzKCZnX20yc19tZGRyX3N1YnN5c19jb25maWcsICZnX20yc19tZGRyX2FkZHItPmNvcmUpOw0KLSNlbmRpZg0KLQ0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIE1ERFIgY29uZmlndXJhdGlvbg0KLSAgICAgKi8NCi0jaWYgTVNTX1NZU19GRERSX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlnX2Rkcl9zdWJzeXMoJmdfbTJzX2ZkZHJfc3Vic3lzX2NvbmZpZywgJmdfbTJzX2ZkZHJfYWRkci0+Y29yZSk7DQotI2VuZGlmDQotDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogU0VSREVTIGludGVyZmFjZXMgY29uZmlndXJhdGlvbi4NCi0gICAgICovDQotI2lmIE1TU19TWVNfU0VSREVTX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlndXJlX3NlcmRlc19pbnRmKCk7DQotI2VuZGlmDQotDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogQ2FsbCB1c2VyIGRlZmluZWQgY29uZmlndXJhdGlvbiBmdW5jdGlvbi4NCi0gICAgICovDQotICAgIG1zY2NfcG9zdF9od19jZmdfaW5pdCgpOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBTeW5jaHJvbml6ZSB3aXRoIENvcmVTRjJSZXNldCBjb250cm9sbGluZyByZXNldHMgZnJvbSB0aGUgZmFicmljLg0KLSAgICAgKi8NCi0jaWYgTVNTX1NZU19DT1JFU0YyUkVTRVRfVVNFRA0KLSAgICBDT1JFX1NGMl9DRkctPkNPTkZJR19ET05FID0gMXU7IC8qIFNpZ25hbCB0byBDb3JlU0YyUmVzZXQgdGhhdCBwZXJpcGhlcmFsIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGhhdmUgYmVlbiB3cml0dGVuLiovDQotICAgIHdoaWxlKCFDT1JFX1NGMl9DRkctPklOSVRfRE9ORSkNCi0gICAgew0KLSAgICAgICAgOyAgIC8qIFdhaXQgZm9yIElOSVRfRE9ORSBmcm9tIENvcmVTRjJSZXNldC4gKi8NCi0gICAgfQ0KLSNlbmRpZg0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSgpDQotICovDQotI2RlZmluZSBSQ09TQ18yNV81ME1IWl9DTEtfU1JDICAwdQ0KLSNkZWZpbmUgQ0xLX1hUQUxfQ0xLX1NSQyAgICAgICAgMXUNCi0jZGVmaW5lIFJDT1NDXzFfTUhaX0NMS19TUkMgICAgIDJ1DQotI2RlZmluZSBDQ0MyQVNDSV9DTEtfU1JDICAgICAgICAzdQ0KLQ0KLSNkZWZpbmUgRkFDQ19TVEFOREJZX1NISUZUICAgICAgNnUNCi0jZGVmaW5lIEZBQ0NfU1RBTkRCWV9TRUxfTUFTSyAgIDB4MDAwMDAwMDd1DQotDQotI2RlZmluZSBGUkVRXzMyS0haICAgMzI3Njh1DQotI2RlZmluZSBGUkVRXzFNSFogICAgMTAwMDAwMHUNCi0jZGVmaW5lIEZSRVFfMjVNSFogICAyNTAwMDAwMHUNCi0jZGVmaW5lIEZSRVFfNTBNSFogICA1MDAwMDAwMHUNCi0NCi12b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSh2b2lkKQ0KLXsNCi0jaWYgMQ0KLSAgICB1aW50MzJfdCBjb250cm9sbGVyX3BsbF9pbml0Ow0KLSAgICB1aW50MzJfdCBjbGtfc3JjOw0KLQ0KLSAgICBjb250cm9sbGVyX3BsbF9pbml0ID0gU1lTUkVHLT5NU1NERFJfRkFDQzFfQ1IgJiBDT05UUk9MTEVSX1BMTF9JTklUX01BU0s7DQotICAgIA0KLSAgICBpZigwdSA9PSBjb250cm9sbGVyX3BsbF9pbml0KQ0KLSAgICB7DQotICAgICAgICAvKiBOb3JtYWwgb3BlcmF0aW9ucy4gKi8NCi0gICAgICAgIHVpbnQzMl90IGdsb2JhbF9tdXhfc2VsOw0KLSAgICAgICAgDQotICAgICAgICBnbG9iYWxfbXV4X3NlbCA9IFNZU1JFRy0+TVNTRERSX0ZBQ0MxX0NSICYgRkFDQ19HTE1VWF9TRUxfTUFTSzsNCi0gICAgICAgIGlmKDB1ID09IGdsb2JhbF9tdXhfc2VsKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIE1TUyBjbG9ja2VkIGZyb20gTVNTIFBMTC4gVXNlIExpYmVybyBmbG93IGRlZmluZXMuICovDQotICAgICAgICAgICAgU3lzdGVtQ29yZUNsb2NrID0gTVNTX1NZU19NM19DTEtfRlJFUTsNCi0gICAgICAgICAgICBnX0ZyZXF1ZW5jeVBDTEswID0gTVNTX1NZU19BUEJfMF9DTEtfRlJFUTsNCi0gICAgICAgICAgICBnX0ZyZXF1ZW5jeVBDTEsxID0gTVNTX1NZU19BUEJfMV9DTEtfRlJFUTsNCi0gICAgICAgICAgICBnX0ZyZXF1ZW5jeVBDTEsyID0gTVNTX1NZU19BUEJfMl9DTEtfRlJFUTsNCi0gICAgICAgICAgICBnX0ZyZXF1ZW5jeUZJQzAgPSBNU1NfU1lTX0ZJQ18wX0NMS19GUkVROw0KLSAgICAgICAgICAgIGdfRnJlcXVlbmN5RklDMSA9IE1TU19TWVNfRklDXzFfQ0xLX0ZSRVE7DQotICAgICAgICAgICAgZ19GcmVxdWVuY3lGSUM2NCA9IE1TU19TWVNfRklDNjRfQ0xLX0ZSRVE7DQotICAgICAgICB9DQotICAgICAgICBlbHNlDQotICAgICAgICB7DQotICAgICAgICAgICAgLyogTVNTIGNsb2NrZWQgZnJvbSBzdGFuZGJ5IGNsb2NrLiAqLw0KLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qgc3RhbmRieV9jbG9ja19sdXRbOF0gPSB7IFJDT1NDXzI1XzUwTUhaX0NMS19TUkMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xLX1hUQUxfQ0xLX1NSQywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ09TQ18yNV81ME1IWl9DTEtfU1JDLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMS19YVEFMX0NMS19TUkMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNPU0NfMV9NSFpfQ0xLX1NSQywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ09TQ18xX01IWl9DTEtfU1JDLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDQzJBU0NJX0NMS19TUkMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NDMkFTQ0lfQ0xLX1NSQyB9Ow0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIHVpbnQzMl90IHN0YW5kYnlfc2VsOw0KLSAgICAgICAgICAgIHVpbnQ4X3QgY2xvY2tfc291cmNlOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIHN0YW5kYnlfc2VsID0gKFNZU1JFRy0+TVNTRERSX0ZBQ0MyX0NSID4+IEZBQ0NfU1RBTkRCWV9TSElGVCkgJiBGQUNDX1NUQU5EQllfU0VMX01BU0s7DQotICAgICAgICAgICAgY2xvY2tfc291cmNlID0gc3RhbmRieV9jbG9ja19sdXRbc3RhbmRieV9zZWxdOw0KLSAgICAgICAgICAgIHN3aXRjaChjbG9ja19zb3VyY2UpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBjYXNlIFJDT1NDXzI1XzUwTUhaX0NMS19TUkM6DQotICAgICAgICAgICAgICAgICAgICBjbGtfc3JjID0gZ2V0X3Jjb3NjXzI1XzUwbWh6X2ZyZXF1ZW5jeSgpOw0KLSAgICAgICAgICAgICAgICAgICAgc2V0X2Nsb2NrX2ZyZXF1ZW5jeV9nbG9iYWxzKGNsa19zcmMpOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGNhc2UgQ0xLX1hUQUxfQ0xLX1NSQzoNCi0gICAgICAgICAgICAgICAgICAgIHNldF9jbG9ja19mcmVxdWVuY3lfZ2xvYmFscyhGUkVRXzMyS0haKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBjYXNlIFJDT1NDXzFfTUhaX0NMS19TUkM6DQotICAgICAgICAgICAgICAgICAgICBzZXRfY2xvY2tfZnJlcXVlbmN5X2dsb2JhbHMoRlJFUV8xTUhaKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBjYXNlIENDQzJBU0NJX0NMS19TUkM6DQotICAgICAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2guICovDQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgICAgICAgICBzZXRfY2xvY2tfZnJlcXVlbmN5X2dsb2JhbHMoRlJFUV8xTUhaKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgfSAgIA0KLSAgICAgICAgfQ0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgLyogUExMIGluaXRpYWxpemF0aW9uIG1vZGUuIFJ1bm5pbmcgZnJvbSAyNS81ME1IWiBSQyBvc2NpbGxhdG9yLiAqLw0KLSAgICAgICAgY2xrX3NyYyA9IGdldF9yY29zY18yNV81MG1oel9mcmVxdWVuY3koKTsNCi0gICAgICAgIHNldF9jbG9ja19mcmVxdWVuY3lfZ2xvYmFscyhjbGtfc3JjKTsNCi0gICAgfQ0KLSAgICANCi0jZWxzZQ0KLSAgICAvKg0KLSAgICAgKiBSZXNldCB0aGUgY2xvY2sgZnJlcXVlbmN5IGdsb2JhbCB2YXJpYWJsZXMgdG8gdGhlIHZhbHVlcyBkZWxlY3RlZCBpbiB0aGUNCi0gICAgICogTGliZXJvIGZsb3cuDQotICAgICAqLw0KLSAgICBTeXN0ZW1Db3JlQ2xvY2sgPSBNU1NfU1lTX00zX0NMS19GUkVROw0KLSAgICBnX0ZyZXF1ZW5jeVBDTEswID0gTVNTX1NZU19BUEJfMF9DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lQQ0xLMSA9IE1TU19TWVNfQVBCXzFfQ0xLX0ZSRVE7DQotICAgIGdfRnJlcXVlbmN5UENMSzIgPSBNU1NfU1lTX0FQQl8yX0NMS19GUkVROw0KLSAgICBnX0ZyZXF1ZW5jeUZJQzAgPSBNU1NfU1lTX0ZJQ18wX0NMS19GUkVROw0KLSAgICBnX0ZyZXF1ZW5jeUZJQzEgPSBNU1NfU1lTX0ZJQ18xX0NMS19GUkVROw0KLSAgICBnX0ZyZXF1ZW5jeUZJQzY0ID0gTVNTX1NZU19GSUM2NF9DTEtfRlJFUTsNCi0jZW5kaWYNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBGaW5kIG91dCBmcmVxdWVuY3kgZ2VuZXJhdGVkIGJ5IHRoZSAyNV81MG1oeiBSQyBvc2NpYWxsYXRvci4NCi0gKi8NCi1zdGF0aWMgdWludDMyX3QgZ2V0X3Jjb3NjXzI1XzUwbWh6X2ZyZXF1ZW5jeSh2b2lkKQ0KLXsNCi0gICAgdWludDMyX3QgcmNvc2NfZGl2MjsNCi0gICAgdWludDMyX3QgcmNvc2NfZnJlcXVlbmN5Ow0KLSAgICANCi0gICAgcmNvc2NfZGl2MiA9IFNZU1JFRy0+TVNTRERSX1BMTF9TVEFUVVMgJiBSQ09TQ19ESVYyX01BU0s7DQotICAgIGlmKDB1ID09IHJjb3NjX2RpdjIpDQotICAgIHsNCi0gICAgICAgIC8qIDI1XzUwbWh6IG9zY2lsbGF0b3IgaXMgY29uZmlndXJlZCBmb3IgMjUgTUh6IG9wZXJhdGlvbnMuICovDQotICAgICAgICByY29zY19mcmVxdWVuY3kgPSBGUkVRXzI1TUhaOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgLyogMjVfNTBtaHogb3NjaWxsYXRvciBpcyBjb25maWd1cmVkIGZvciA1MCBNSHogb3BlcmF0aW9ucy4gKi8NCi0gICAgICAgIHJjb3NjX2ZyZXF1ZW5jeSA9IEZSRVFfNTBNSFo7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiByY29zY19mcmVxdWVuY3k7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgY2xvY2sgZnJlcXVlbmN5IGdsb2JhbCB2YXJpYWJsZXMgYmFzZWQgb24gdGhlIHZhbHVlIG9mDQotICAgc3RhbmRieV9jbGsgcGFzc2VkIGFzIHBhcmFtZXRlci4NCi0gICBUaGUgZm9sbG93aW5nIGdsb2JhbCB2YXJpYWJsZXMgYXJlIHNldCBieSB0aGlzIGZ1bmN0aW9uOg0KLSAgICAgICAgLSBTeXN0ZW1Db3JlQ2xvY2sNCi0gICAgICAgIC0gZ19GcmVxdWVuY3lQQ0xLMA0KLSAgICAgICAgLSBnX0ZyZXF1ZW5jeVBDTEsxDQotICAgICAgICAtIGdfRnJlcXVlbmN5UENMSzINCi0gICAgICAgIC0gZ19GcmVxdWVuY3lGSUMwDQotICAgICAgICAtIGdfRnJlcXVlbmN5RklDMQ0KLSAgICAgICAgLSBnX0ZyZXF1ZW5jeUZJQzY0DQotICovDQotc3RhdGljIHZvaWQgc2V0X2Nsb2NrX2ZyZXF1ZW5jeV9nbG9iYWxzKHVpbnQzMl90IHN0YW5kYnlfY2xrKQ0KLXsNCi0gICAgU3lzdGVtQ29yZUNsb2NrID0gc3RhbmRieV9jbGs7DQotICAgIGdfRnJlcXVlbmN5UENMSzAgPSBzdGFuZGJ5X2NsazsNCi0gICAgZ19GcmVxdWVuY3lQQ0xLMSA9IHN0YW5kYnlfY2xrOw0KLSAgICBnX0ZyZXF1ZW5jeVBDTEsyID0gTVNTX1NZU19BUEJfMl9DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lGSUMwID0gc3RhbmRieV9jbGs7DQotICAgIGdfRnJlcXVlbmN5RklDMSA9IHN0YW5kYnlfY2xrOw0KLSAgICBnX0ZyZXF1ZW5jeUZJQzY0ID0gc3RhbmRieV9jbGs7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogV3JpdGUgMTYtYml0IGNvbmZpZ3VyYXRpb24gdmFsdWVzIGludG8gMzItYml0IHdvcmQgYWxpZ25lZCByZWdpc3RlcnMuDQotICovDQotI2lmIChNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWCkNCi1zdGF0aWMgdm9pZCBjb3B5X2NmZzE2X3RvX3JlZ3MNCi0oDQotICAgIHZvbGF0aWxlIHVpbnQzMl90ICogcF9yZWdzLA0KLSAgICBjb25zdCB1aW50MTZfdCAqIHBfY2ZnLA0KLSAgICB1aW50MzJfdCBuYl8xNmJpdF93b3Jkcw0KLSkNCi17DQotICAgIHVpbnQzMl90IGluYzsNCi0gICAgDQotICAgIGZvcihpbmMgPSAwdTsgaW5jIDwgbmJfMTZiaXRfd29yZHM7ICsraW5jKQ0KLSAgICB7DQotICAgICAgICBwX3JlZ3NbaW5jXSA9IHBfY2ZnW2luY107DQotICAgIH0NCi19DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBDb25maWd1cmUgcGVyaXBoZXJhbCB1c2luZyByZWdpc3RlciBhZGRyZXNzIGFuZCByZWdpc3RlciB2YWx1ZSBwYWlycy4NCi0gKi8NCi0jaWYgTVNTX1NZU19TRVJERVNfQ09ORklHX0JZX0NPUlRFWA0KLXN0YXRpYyB2b2lkIGNvbmZpZ19ieV9hZGRyX3ZhbHVlDQotKA0KLSAgICBjb25zdCBjZmdfYWRkcl92YWx1ZV9wYWlyX3QgKiBwX2FkZHJfdmFsdWVfcGFpciwNCi0gICAgdWludDMyX3QgbmJfb2ZfY2ZnX3BhaXJzDQotKQ0KLXsNCi0gICAgdWludDMyX3QgaW5jOw0KLSAgICANCi0gICAgZm9yKGluYyA9IDB1OyBpbmMgPCBuYl9vZl9jZmdfcGFpcnM7ICsraW5jKQ0KLSAgICB7DQotICAgICAgICAqcF9hZGRyX3ZhbHVlX3BhaXJbaW5jXS5wX3JlZyA9IHBfYWRkcl92YWx1ZV9wYWlyW2luY10udmFsdWU7DQotICAgIH0NCi19DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBERFIgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24uDQotICovDQotI2lmIChNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWCkNCi0NCi0jZGVmaW5lIE5CX09GX0REUkNfUkVHU19UT19DT05GSUcgICAgICAgNTd1DQotI2RlZmluZSBOQl9PRl9ERFJfUEhZX1JFR1NfVE9fQ09ORklHICAgIDY1dQ0KLQ0KLXN0YXRpYyB2b2lkIGNvbmZpZ19kZHJfc3Vic3lzDQotKA0KLSAgICBjb25zdCBkZHJfc3Vic3lzX2NmZ190ICogcF9kZHJfc3Vic3lzX2NmZywNCi0gICAgRERSQ29yZV9UeXBlRGVmICogcF9kZHJfc3Vic3lzX3JlZ3MNCi0pDQotew0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCAqIHBfcmVnczsNCi0gICAgY29uc3QgdWludDE2X3QgKiBwX2NmZzsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogQ29uZmlndXJlIEREUiBjb250cm9sbGVyIHBhcnQgb2YgdGhlIE1ERFIgc3Vic3lzdGVtLg0KLSAgICAgKi8NCi0gICAgcF9jZmcgPSAmcF9kZHJfc3Vic3lzX2NmZy0+ZGRyYy5EWU5fU09GVF9SRVNFVF9DUjsNCi0gICAgcF9yZWdzID0gJnBfZGRyX3N1YnN5c19yZWdzLT5kZHJjLkRZTl9TT0ZUX1JFU0VUX0NSOw0KLQ0KLSAgICBjb3B5X2NmZzE2X3RvX3JlZ3MocF9yZWdzLCBwX2NmZywgTkJfT0ZfRERSQ19SRUdTX1RPX0NPTkZJRyk7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIENvbmZpZ3VyZSBERFIgUEhZLg0KLSAgICAgKi8NCi0gICAgcF9jZmcgPSAmcF9kZHJfc3Vic3lzX2NmZy0+cGh5LkxPT1BCQUNLX1RFU1RfQ1I7DQotICAgIHBfcmVncyA9ICZwX2Rkcl9zdWJzeXNfcmVncy0+cGh5LkxPT1BCQUNLX1RFU1RfQ1I7DQotDQotICAgIGNvcHlfY2ZnMTZfdG9fcmVncyhwX3JlZ3MsIHBfY2ZnLCBOQl9PRl9ERFJfUEhZX1JFR1NfVE9fQ09ORklHKTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogQ29uZmlndXJlIEREUiBGSUMuDQotICAgICAqLw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLk5CX0FERFJfQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuTkJfQUREUl9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5OQlJXQl9TSVpFX0NSID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLk5CUldCX1NJWkVfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuV0JfVElNRU9VVF9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5XQl9USU1FT1VUX0NSOw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLkhQRF9TV19SV19FTl9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5IUERfU1dfUldfRU5fQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuSFBEX1NXX1JXX0lOVkFMX0NSID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLkhQRF9TV19SV19JTlZBTF9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5TV19XUl9FUkNMUl9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5TV19XUl9FUkNMUl9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5FUlJfSU5UX0VOQUJMRV9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5FUlJfSU5UX0VOQUJMRV9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5OVU1fQUhCX01BU1RFUlNfQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuTlVNX0FIQl9NQVNURVJTX0NSOw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLkxPQ0tfVElNRU9VVFZBTF9DUlswXSA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5MT0NLX1RJTUVPVVRWQUxfMV9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5MT0NLX1RJTUVPVVRWQUxfQ1JbMV0gPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuTE9DS19USU1FT1VUVkFMXzJfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuTE9DS19USU1FT1VUX0VOX0NSID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLkxPQ0tfVElNRU9VVF9FTl9DUjsNCi0NCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBFbmFibGUgRERSLg0KLSAgICAgKi8NCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmRkcmMuRFlOX1NPRlRfUkVTRVRfQ1IgPSAweDAxdTsNCi0gICAgDQotICAgIHdoaWxlKDB4MDAwMHUgPT0gcF9kZHJfc3Vic3lzX3JlZ3MtPmRkcmMuRERSQ19TUikNCi0gICAgew0KLSAgICAgICAgOw0KLSAgICB9ICAgICAgICANCi19DQotDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBDb25maWd1cmUgU0VSREVTIGludGVyZmFjZXMuDQotICovDQotI2lmIE1TU19TWVNfU0VSREVTX0NPTkZJR19CWV9DT1JURVgNCi0NCi1zdGF0aWMgdm9pZCBjb25maWd1cmVfc2VyZGVzX2ludGYodm9pZCkNCi17DQotI2lmIE1TU19TWVNfU0VSREVTXzBfQ09ORklHX0JZX0NPUlRFWA0KLSAgICBjb25maWdfYnlfYWRkcl92YWx1ZShnX20yc19zZXJkZXNfMF9jb25maWcsIFNFUkRFU18wX0NGR19OQl9PRl9QQUlSUyk7DQotI2VuZGlmDQotDQotI2lmIE1TU19TWVNfU0VSREVTXzFfQ09ORklHX0JZX0NPUlRFWA0KLSAgICBjb25maWdfYnlfYWRkcl92YWx1ZShnX20yc19zZXJkZXNfMV9jb25maWcsIFNFUkRFU18xX0NGR19OQl9PRl9QQUlSUyk7DQotI2VuZGlmDQotDQotI2lmIE1TU19TWVNfU0VSREVTXzJfQ09ORklHX0JZX0NPUlRFWA0KLSAgICBjb25maWdfYnlfYWRkcl92YWx1ZShnX20yc19zZXJkZXNfMl9jb25maWcsIFNFUkRFU18yX0NGR19OQl9PRl9QQUlSUyk7DQotI2VuZGlmDQotDQotI2lmIE1TU19TWVNfU0VSREVTXzNfQ09ORklHX0JZX0NPUlRFWA0KLSAgICBjb25maWdfYnlfYWRkcl92YWx1ZShnX20yc19zZXJkZXNfM19jb25maWcsIFNFUkRFU18zX0NGR19OQl9PRl9QQUlSUyk7DQotI2VuZGlmDQotfQ0KLQ0KLSNlbmRpZg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBSZXRyaWV2ZSBzaWxpY29uIHJldmlzaW9uIGZyb20gc3lzdGVtIHJlZ2lzdGVycy4NCi0gKi8NCi1zdGF0aWMgdWludDMyX3QgZ2V0X3NpbGljb25fcmV2aXNpb24odm9pZCkNCi17DQotICAgIHVpbnQzMl90IHNpbGljb25fcmV2aXNpb247DQotICAgIHVpbnQzMl90IGRldmljZV92ZXJzaW9uOw0KLSAgICANCi0gICAgZGV2aWNlX3ZlcnNpb24gPSBTWVNSRUctPkRFVklDRV9WRVJTSU9OOw0KLSAgICBzd2l0Y2goZGV2aWNlX3ZlcnNpb24pDQotICAgIHsNCi0gICAgICAgIGNhc2UgMHgwMDAwRjgwMjoNCi0gICAgICAgICAgICBzaWxpY29uX3JldmlzaW9uID0gTTJTMDUwX1JFVl9BX1NJTElDT047DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgDQotICAgICAgICBjYXNlIDB4MDAwMUY4MDI6DQotICAgICAgICAgICAgc2lsaWNvbl9yZXZpc2lvbiA9IE0yUzA1MF9SRVZfQl9TSUxJQ09OOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICBzaWxpY29uX3JldmlzaW9uID0gVU5LTk9XTl9TSUxJQ09OX1JFVjsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHNpbGljb25fcmV2aXNpb247DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBXb3JrYXJvdW5kcyBmb3IgdmFyaW91cyBzaWxpY29uIHZlcnNpb25zLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHNpbGljb25fd29ya2Fyb3VuZHModm9pZCkNCi17DQotICAgIHVpbnQzMl90IHNpbGljb25fcmV2aXNpb247DQotICAgIA0KLSAgICBzaWxpY29uX3JldmlzaW9uID0gZ2V0X3NpbGljb25fcmV2aXNpb24oKTsNCi0gICAgDQotICAgIHN3aXRjaChzaWxpY29uX3JldmlzaW9uKQ0KLSAgICB7DQotICAgICAgICBjYXNlIE0yUzA1MF9SRVZfQV9TSUxJQ09OOg0KLSAgICAgICAgICAgIG0yczA1MF9yZXZfYV93b3JrYXJvdW5kcygpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgY2FzZSBNMlMwNTBfUkVWX0JfU0lMSUNPTjoNCi0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2guICovDQotICAgICAgICBjYXNlIFVOS05PV05fU0lMSUNPTl9SRVY6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAqLw0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgU2lsaWNvbiB3b3JrYXJvdW5kcyBmb3IgTTJTMDUwIHJldiBBLg0KLSAqLw0KLXN0YXRpYyB2b2lkIG0yczA1MF9yZXZfYV93b3JrYXJvdW5kcyh2b2lkKQ0KLXsNCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBXb3JrIGFyb3VuZCBhIGNvdXBsZSBvZiBzaWxpY29uIGlzc3VlczoNCi0gICAgICovDQotICAgIC8qIEREUl9DTEtfRU4gPC0gMSAqLw0KLSAgICBTWVNSRUctPk1TU0REUl9GQUNDMV9DUiB8PSAodWludDMyX3QpMSA8PCBERFJfQ0xLX0VOX1NISUZUOw0KLSAgICANCi0gICAgLyogQ09OVFJPTExFUl9QTExfSU5JVCA8LSAwICovDQotICAgIFNZU1JFRy0+TVNTRERSX0ZBQ0MxX0NSID0gU1lTUkVHLT5NU1NERFJfRkFDQzFfQ1IgJiB+Q09OVFJPTExFUl9QTExfSU5JVF9NQVNLOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgQ29tcGxldGUgY2xvY2sgY29uZmlndXJhdGlvbiBpZiByZXF1ZXN0ZWQgYnkgTGliZXJvLg0KLSAqLw0KLSNpZiAoTVNTX1NZU19GQUNDX0lOSVRfQllfQ09SVEVYID09IDEpDQotc3RhdGljIHZvaWQgY29tcGxldGVfY2xvY2tfY29uZmlnKHZvaWQpDQotew0KLSAgICB1aW50MzJfdCBwbGxfbG9ja2VkOw0KLSAgICANCi0gICAgLyogV2FpdCBmb3IgZmFicmljIFBMTCB0byBsb2NrLiAqLw0KLSAgICBkbyB7DQotICAgICAgICBwbGxfbG9ja2VkID0gU1lTUkVHLT5NU1NERFJfUExMX1NUQVRVUyAmIEZBQl9QTExfTE9DS19NQVNLOw0KLSAgICB9IHdoaWxlKCFwbGxfbG9ja2VkKTsNCi0gICAgDQotICAgIC8qIE5lZ2F0ZSBNUExMIGJ5cGFzcy4gKi8NCi0gICAgU1lTUkVHLT5NU1NERFJfUExMX1NUQVRVU19ISUdIX0NSICY9IH5GQUNDX1BMTF9CWVBBU1NfTUFTSzsNCi0gICAgDQotICAgIC8qIFdhaXQgZm9yIE1QTEwgdG8gbG9jay4gKi8NCi0gICAgZG8gew0KLSAgICAgICAgcGxsX2xvY2tlZCA9IFNZU1JFRy0+TVNTRERSX1BMTF9TVEFUVVMgJiBNUExMX0xPQ0tfTUFTSzsNCi0gICAgfSB3aGlsZSghcGxsX2xvY2tlZCk7DQotICAgIA0KLSAgICAvKiBTd2l0Y2ggRkFDQyBmcm9tIHN0YW5kYnkgdG8gcnVuIG1vZGUuICovDQotICAgIFNZU1JFRy0+TVNTRERSX0ZBQ0MxX0NSICY9IH5GQUNDX0dMTVVYX1NFTF9NQVNLOw0KLQ0KLSAgICAvKiBOZWdhdGUgRlBHQV9TT0ZUUkVTRVQgdG8gZGUtYXNzZXJ0IE1TU19SRVNFVF9OX00yRiBpbiB0aGUgZmFicmljICovDQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgJj0gflNZU1JFR19GUEdBX1NPRlRSRVNFVF9NQVNLOw0KLX0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N5c3RlbV9tMnN4eHguaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzdGVtX20yc3h4eC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjc1Mzc2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzdGVtX20yc3h4eC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTItMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBTbWFydEZ1c2lvbjIgQ01TSVMgc3lzdGVtIGluaXRpYWxpemF0aW9uLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTI4MCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIyIDIwOjUxOjUwICswMDAwIChGcmksIDIyIE1hciAyMDEzKSAkDQotICovDQotDQotI2lmbmRlZiBTWVNURU1fTTJTWFhYX0gNCi0jZGVmaW5lIFNZU1RFTV9NMlNYWFhfSA0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0vKiBTdGFuZGFyZCBDTVNJUyBnbG9iYWwgdmFyaWFibGVzLiAqLw0KLWV4dGVybiB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2s7ICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8NCi0NCi0vKiBTbWFydEZ1c2lvbjIgc3BlY2lmaWMgY2xvY2tzLiAqLw0KLWV4dGVybiB1aW50MzJfdCBnX0ZyZXF1ZW5jeVBDTEswOyAgIC8qITwgQ2xvY2sgZnJlcXVlbmN5IG9mIEFQQiBidXMgMC4gKi8gIA0KLWV4dGVybiB1aW50MzJfdCBnX0ZyZXF1ZW5jeVBDTEsxOyAgIC8qITwgQ2xvY2sgZnJlcXVlbmN5IG9mIEFQQiBidXMgMS4gKi8NCi1leHRlcm4gdWludDMyX3QgZ19GcmVxdWVuY3lQQ0xLMjsgICAvKiE8IENsb2NrIGZyZXF1ZW5jeSBvZiBBUEIgYnVzIDIuICovDQotZXh0ZXJuIHVpbnQzMl90IGdfRnJlcXVlbmN5RklDMDsgICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgRlBHQSBmYWJyaWMgaW50ZXJmYWNlIGNvbnRyb2xsZXIgMS4gKi8NCi1leHRlcm4gdWludDMyX3QgZ19GcmVxdWVuY3lGSUMxOyAgICAvKiE8IENsb2NrIGZyZXF1ZWNueSBvZiBGUEdBIGZhYnJpYyBpbnRlZmFjZSBjb250cm9sbGVyIDIuICovDQotZXh0ZXJuIHVpbnQzMl90IGdfRnJlcXVlbmN5RklDNjQ7ICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgNjQtYml0IEZQR0EgZmFicmljIGludGVyZmFjZSBjb250cm9sbGVyLiAqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIFN5c3RlbUluaXQoKSBpcyBhIHN0YW5kYXJkIENNU0lTIGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAuDQotICogSXQgaXMgbWVhbnQgdG8gcGVyZm9ybSBsb3cgbGV2ZWwgaGFyZHdhcmUgc2V0dXAgc3VjaCBhcyBjb25maWd1cmluZyBERFIgYW5kDQotICogU0VSREVTIGNvbnRyb2xsZXJzLg0KLSAqLw0KLXZvaWQgU3lzdGVtSW5pdCh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKSBpcyBhIHN0YW5kYXJkIENNU0lTIGZ1bmN0aW9uIHdoaWNoIGNhbiBiZSBjYWxsZWQNCi0gKiBieSB0aGUgYXBwbGljYXRpb24gaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIFN5c3RlbUNvcmVDbG9jayBnbG9iYWwNCi0gKiB2YXJpYWJsZSBjb250YWlucyB0aGUgdXAgdG8gZGF0ZSBDb3J0ZXgtTTMgY29yZSBmcmVxdWVuY3kuIENhbGxpbmcgdGhpcw0KLSAqIGZ1bmN0aW9uIGFsc28gdXBkYXRlcyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBjb250YWluaW5nIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUNCi0gKiBBUEIgYnVzc2VzIGNvbm5lY3RpbmcgdGhlIHBlcmlwaGVyYWxzLg0KLSAqLw0KLXZvaWQgU3lzdGVtQ29yZUNsb2NrVXBkYXRlKHZvaWQpOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL1JUT1NEZW1vX2h3X3BsYXRmb3JtLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL1JUT1NEZW1vX2h3X3BsYXRmb3JtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZmZhNzEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9SVE9TRGVtb19od19wbGF0Zm9ybS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotI2lmbmRlZiBSVE9TRGVtb19IV19QTEFURk9STV9IXw0KLSNkZWZpbmUgUlRPU0RlbW9fSFdfUExBVEZPUk1fSF8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qDQotKkNyZWF0ZWQgYnkgQWN0ZWwgU21hcnREZXNpZ24gIFN1biBNYXkgMDUgMTM6MjM6MjIgMjAxMw0KLSoNCi0qTWVtb3J5IG1hcCBzcGVjaWZpY2F0aW9uIGZvciBwZXJpcGhlcmFscyBpbiBSVE9TRGVtbw0KLSovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSogQ00zIHN1YnN5c3RlbSBtZW1vcnkgbWFwDQotKiBNYXN0ZXIocykgZm9yIHRoaXMgc3Vic3lzdGVtOiBDTTMgDQotKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotDQotI2VuZGlmIC8qIFJUT1NEZW1vX0hXX1BMQVRGT1JNX0hfKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfZ3Bpby9tc3NfZ3Bpby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTZhODI3Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfZ3Bpby9tc3NfZ3Bpby5jCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gR1BJTyBiYXJlIG1ldGFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUzOTQgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yNyAyMDo1NjozNiArMDAwMCAoV2VkLCAyNyBNYXIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJtc3NfZ3Bpby5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmIA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogRGVmaW5lcy4NCi0gKi8NCi0jZGVmaW5lIEdQSU9fSU5UX0VOQUJMRV9NQVNLICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDh1TCkNCi0jZGVmaW5lIE9VVFBVVF9CVUZGRVJfRU5BQkxFX01BU0sgICAweDAwMDAwMDA0dQ0KLQ0KLSNkZWZpbmUgTkJfT0ZfR1BJTyAgKCh1aW50MzJfdCkzMikNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIExvb2t1cCB0YWJsZSBvZiBHUElPIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFkZHJlc3MgaW5kZXhlZCBvbiBHUElPIElELg0KLSAqLw0KLXN0YXRpYyB1aW50MzJfdCB2b2xhdGlsZSAqIGNvbnN0IGdfY29uZmlnX3JlZ19sdXRbTkJfT0ZfR1BJT10gPQ0KLXsNCi0gICAgJihHUElPLT5HUElPXzBfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzFfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzJfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzNfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzRfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzVfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzZfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzdfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzhfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzlfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzEwX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xMV9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMTJfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzEzX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xNF9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMTVfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzE2X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xN19DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMThfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzE5X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yMF9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjFfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzIyX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yM19DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjRfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzI1X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yNl9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjdfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzI4X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yOV9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMzBfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzMxX0NGRykNCi19Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTG9va3VwIHRhYmxlIG9mIENvcnRleC1NMyBHUElPIGludGVycnVwdCBudW1iZXIgaW5kZXhlZCBvbiBHUElPIElELg0KLSAqLw0KLXN0YXRpYyBjb25zdCBJUlFuX1R5cGUgZ19ncGlvX2lycW5fbHV0W05CX09GX0dQSU9dID0NCi17DQotICAgIEdQSU8wX0lSUW4sDQotICAgIEdQSU8xX0lSUW4sDQotICAgIEdQSU8yX0lSUW4sDQotICAgIEdQSU8zX0lSUW4sDQotICAgIEdQSU80X0lSUW4sDQotICAgIEdQSU81X0lSUW4sDQotICAgIEdQSU82X0lSUW4sDQotICAgIEdQSU83X0lSUW4sDQotICAgIEdQSU84X0lSUW4sDQotICAgIEdQSU85X0lSUW4sDQotICAgIEdQSU8xMF9JUlFuLA0KLSAgICBHUElPMTFfSVJRbiwNCi0gICAgR1BJTzEyX0lSUW4sDQotICAgIEdQSU8xM19JUlFuLA0KLSAgICBHUElPMTRfSVJRbiwNCi0gICAgR1BJTzE1X0lSUW4sDQotICAgIEdQSU8xNl9JUlFuLA0KLSAgICBHUElPMTdfSVJRbiwNCi0gICAgR1BJTzE4X0lSUW4sDQotICAgIEdQSU8xOV9JUlFuLA0KLSAgICBHUElPMjBfSVJRbiwNCi0gICAgR1BJTzIxX0lSUW4sDQotICAgIEdQSU8yMl9JUlFuLA0KLSAgICBHUElPMjNfSVJRbiwNCi0gICAgR1BJTzI0X0lSUW4sDQotICAgIEdQSU8yNV9JUlFuLA0KLSAgICBHUElPMjZfSVJRbiwNCi0gICAgR1BJTzI3X0lSUW4sDQotICAgIEdQSU8yOF9JUlFuLA0KLSAgICBHUElPMjlfSVJRbiwNCi0gICAgR1BJTzMwX0lSUW4sDQotICAgIEdQSU8zMV9JUlFuDQotfTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE1TU19HUElPX2luaXQNCi0gKiBTZWUgIm1zc19ncGlvLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19HUElPX2luaXQoIHZvaWQgKQ0KLXsNCi0gICAgdWludDMyX3QgaW5jOw0KLSAgICANCi0gICAgLyogcmVzZXQgTVNTIEdQSU8gaGFyZHdhcmUgKi8NCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiB8PSBTWVNSRUdfR1BJT19TT0ZUUkVTRVRfTUFTSzsNCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiB8PSAoU1lTUkVHX0dQSU9fN18wX1NPRlRSRVNFVF9NQVNLIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTUkVHX0dQSU9fMTVfOF9TT0ZUUkVTRVRfTUFTSyB8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzIzXzE2X1NPRlRSRVNFVF9NQVNLIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTUkVHX0dQSU9fMzFfMjRfU09GVFJFU0VUX01BU0spOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIE1TUyBHUElPIGludGVycnVwdCAqLw0KLSAgICBmb3IoaW5jID0gMFU7IGluYyA8IE5CX09GX0dQSU87ICsraW5jKQ0KLSAgICB7DQotICAgICAgICBOVklDX0Rpc2FibGVJUlEoZ19ncGlvX2lycW5fbHV0W2luY10pOw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoZ19ncGlvX2lycW5fbHV0W2luY10pOw0KLSAgICB9DQotICAgIC8qIFRha2UgTVNTIEdQSU8gaGFyZHdhcmUgb3V0IG9mIHJlc2V0LiAqLw0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH4oU1lTUkVHX0dQSU9fN18wX1NPRlRSRVNFVF9NQVNLIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzE1XzhfU09GVFJFU0VUX01BU0sgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTUkVHX0dQSU9fMjNfMTZfU09GVFJFU0VUX01BU0sgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lTUkVHX0dQSU9fMzFfMjRfU09GVFJFU0VUX01BU0spOw0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5TWVNSRUdfR1BJT19TT0ZUUkVTRVRfTUFTSzsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19jb25maWcNCi0gKiBTZWUgIm1zc19ncGlvLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19HUElPX2NvbmZpZw0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkLA0KLSAgICB1aW50MzJfdCBjb25maWcNCi0pDQotew0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotDQotICAgIGlmKGdwaW9faWR4IDwgTkJfT0ZfR1BJTykNCi0gICAgew0KLSAgICAgICAgKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSkgPSBjb25maWc7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19zZXRfb3V0cHV0DQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19zZXRfb3V0cHV0DQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQsDQotICAgIHVpbnQ4X3QgdmFsdWUNCi0pDQotew0KLSAgICB1aW50MzJfdCBncGlvX3NldHRpbmc7DQotICAgIHVpbnQzMl90IGdwaW9faWR4ID0gKHVpbnQzMl90KXBvcnRfaWQ7DQotICAgIA0KLSAgICBBU1NFUlQoZ3Bpb19pZHggPCBOQl9PRl9HUElPKTsNCi0gICAgDQotICAgIGlmKGdwaW9faWR4IDwgTkJfT0ZfR1BJTykNCi0gICAgew0KLSAgICAgICAgZ3Bpb19zZXR0aW5nID0gR1BJTy0+R1BJT19PVVQ7DQotICAgICAgICBncGlvX3NldHRpbmcgJj0gfigodWludDMyX3QpMHgwMXUgPDwgZ3Bpb19pZHgpOw0KLSAgICAgICAgZ3Bpb19zZXR0aW5nIHw9ICgodWludDMyX3QpdmFsdWUgJiAweDAxdSkgPDwgZ3Bpb19pZHg7DQotICAgICAgICBHUElPLT5HUElPX09VVCA9IGdwaW9fc2V0dGluZzsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE1TU19HUElPX2RyaXZlX2lub3V0DQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19kcml2ZV9pbm91dA0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkLA0KLSAgICBtc3NfZ3Bpb19pbm91dF9zdGF0ZV90IGlub3V0X3N0YXRlDQotKQ0KLXsNCi0gICAgdWludDMyX3Qgb3V0cHV0c19zdGF0ZTsNCi0gICAgdWludDMyX3QgY29uZmlnOw0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotICAgIA0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgIHN3aXRjaChpbm91dF9zdGF0ZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBjYXNlIE1TU19HUElPX0RSSVZFX0hJR0g6DQotICAgICAgICAgICAgICAgIC8qIFNldCBvdXRwdXQgaGlnaCAqLw0KLSAgICAgICAgICAgICAgICBvdXRwdXRzX3N0YXRlID0gR1BJTy0+R1BJT19PVVQ7DQotICAgICAgICAgICAgICAgIG91dHB1dHNfc3RhdGUgfD0gKHVpbnQzMl90KTEgPDwgZ3Bpb19pZHg7DQotICAgICAgICAgICAgICAgIEdQSU8tPkdQSU9fT1VUID0gb3V0cHV0c19zdGF0ZTsNCi0gICAgICAgICAgICAgICAgLyogRW5hYmxlIG91dHB1dCBidWZmZXIgKi8NCi0gICAgICAgICAgICAgICAgY29uZmlnID0gKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSk7DQotICAgICAgICAgICAgICAgIGNvbmZpZyB8PSBPVVRQVVRfQlVGRkVSX0VOQUJMRV9NQVNLOw0KLSAgICAgICAgICAgICAgICAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKSA9IGNvbmZpZzsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgY2FzZSBNU1NfR1BJT19EUklWRV9MT1c6DQotICAgICAgICAgICAgICAgIC8qIFNldCBvdXRwdXQgbG93ICovDQotICAgICAgICAgICAgICAgIG91dHB1dHNfc3RhdGUgPSBHUElPLT5HUElPX09VVDsNCi0gICAgICAgICAgICAgICAgb3V0cHV0c19zdGF0ZSAmPSB+KCh1aW50MzJfdCkoKHVpbnQzMl90KTEgPDwgZ3Bpb19pZHgpKTsNCi0gICAgICAgICAgICAgICAgR1BJTy0+R1BJT19PVVQgPSBvdXRwdXRzX3N0YXRlOw0KLSAgICAgICAgICAgICAgICAvKiBFbmFibGUgb3V0cHV0IGJ1ZmZlciAqLw0KLSAgICAgICAgICAgICAgICBjb25maWcgPSAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKTsNCi0gICAgICAgICAgICAgICAgY29uZmlnIHw9IE9VVFBVVF9CVUZGRVJfRU5BQkxFX01BU0s7DQotICAgICAgICAgICAgICAgICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pID0gY29uZmlnOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICBjYXNlIE1TU19HUElPX0hJR0hfWjoNCi0gICAgICAgICAgICAgICAgLyogRGlzYWJsZSBvdXRwdXQgYnVmZmVyICovDQotICAgICAgICAgICAgICAgIGNvbmZpZyA9ICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pOw0KLSAgICAgICAgICAgICAgICBjb25maWcgJj0gfk9VVFBVVF9CVUZGRVJfRU5BQkxFX01BU0s7DQotICAgICAgICAgICAgICAgICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pID0gY29uZmlnOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgICAgICBBU1NFUlQoMCk7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19lbmFibGVfaXJxDQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19lbmFibGVfaXJxDQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQNCi0pDQotew0KLSAgICB1aW50MzJfdCBjZmdfdmFsdWU7DQotICAgIHVpbnQzMl90IGdwaW9faWR4ID0gKHVpbnQzMl90KXBvcnRfaWQ7DQotICAgIA0KLSAgICBBU1NFUlQoZ3Bpb19pZHggPCBOQl9PRl9HUElPKTsNCi0gICAgDQotICAgIGlmKGdwaW9faWR4IDwgTkJfT0ZfR1BJTykNCi0gICAgew0KLSAgICAgICAgY2ZnX3ZhbHVlID0gKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSk7DQotICAgICAgICAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKSA9IChjZmdfdmFsdWUgfCBHUElPX0lOVF9FTkFCTEVfTUFTSyk7DQotICAgICAgICBOVklDX0VuYWJsZUlSUShnX2dwaW9faXJxbl9sdXRbZ3Bpb19pZHhdKTsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE1TU19HUElPX2Rpc2FibGVfaXJxDQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19kaXNhYmxlX2lycQ0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkDQotKQ0KLXsNCi0gICAgdWludDMyX3QgY2ZnX3ZhbHVlOw0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotDQotICAgIGlmKGdwaW9faWR4IDwgTkJfT0ZfR1BJTykNCi0gICAgew0KLSAgICAgICAgY2ZnX3ZhbHVlID0gKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSk7DQotICAgICAgICAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKSA9IChjZmdfdmFsdWUgJiB+R1BJT19JTlRfRU5BQkxFX01BU0spOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTVNTX0dQSU9fY2xlYXJfaXJxDQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19jbGVhcl9pcnENCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZA0KLSkNCi17DQotICAgIHVpbnQzMl90IGdwaW9faWR4ID0gKHVpbnQzMl90KXBvcnRfaWQ7DQotICAgIA0KLSAgICBBU1NFUlQoZ3Bpb19pZHggPCBOQl9PRl9HUElPKTsNCi0gICAgDQotICAgIGlmKGdwaW9faWR4IDwgTkJfT0ZfR1BJTykNCi0gICAgew0KLSAgICAgICAgR1BJTy0+R1BJT19JUlEgPSAoKHVpbnQzMl90KTEpIDw8IGdwaW9faWR4Ow0KLSAgICB9DQotfQ0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfZ3Bpby9tc3NfZ3Bpby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VjYjg2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfZ3Bpby9tc3NfZ3Bpby5oCisrKyAvZGV2L251bGwKQEAgLTEsNTA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtIEdQSU8gYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIgcHVibGljDQotICogIEFQSS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU0ODcgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yOSAxNTozMzoyMiArMDAwMCAoRnJpLCAyOSBNYXIgMjAxMykgJA0KLSAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovLyoqDQotICBAbWFpbnBhZ2UgU21hcnRGdXNpb24yIE1TUyBHUElPIEJhcmUgTWV0YWwgRHJpdmVyLg0KLQ0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIGEgYmxvY2sgb2YgMzIgZ2VuZXJhbA0KLSAgcHVycG9zZSBpbnB1dC9vdXRwdXRzIChHUElPKS4NCi0gIFRoaXMgc29mdHdhcmUgZHJpdmVyIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIE1TUyBHUElPDQotICBibG9jayBhcyBwYXJ0IG9mIGEgYmFyZSBtZXRhbCBzeXN0ZW0gd2hlcmUgbm8gb3BlcmF0aW5nIHN5c3RlbSBpcyBhdmFpbGFibGUuDQotICBUaGlzIGRyaXZlciBjYW4gYmUgYWRhcHRlZCBmb3IgdXNlIGFzIHBhcnQgb2YgYW4gb3BlcmF0aW5nIHN5c3RlbSBidXQgdGhlDQotICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRhcHRhdGlvbiBsYXllciBiZXR3ZWVuIHRoaXMgZHJpdmVyIGFuZCB0aGUgb3BlcmF0aW5nDQotICBzeXN0ZW0ncyBkcml2ZXIgbW9kZWwgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBkcml2ZXIuDQotICANCi0gIEBzZWN0aW9uIGh3X2RlcGVuZGVuY2llcyBIYXJkd2FyZSBGbG93IERlcGVuZGVuY2llcw0KLSAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYWxsIGZlYXR1cmVzIG9mIHRoZSBNU1MgR1BJT3MgaXMgY292ZXJlZCBieSB0aGlzIGRyaXZlcg0KLSAgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBTbWFydEZ1c2lvbjIgSU9NVVggY29uZmlndXJhdGlvbi4gU21hcnRGdXNpb24yDQotICBhbGxvd3MgbXVsdGlwbGUgbm9uLWNvbmN1cnJlbnQgdXNlcyBvZiBzb21lIGV4dGVybmFsIHBpbnMgdGhyb3VnaCBJT01VWA0KLSAgY29uZmlndXJhdGlvbi4gVGhpcyBmZWF0dXJlIGFsbG93cyBvcHRpbWl6YXRpb24gb2YgZXh0ZXJuYWwgcGluIHVzYWdlIGJ5DQotICBhc3NpZ25pbmcgZXh0ZXJuYWwgcGlucyBmb3IgdXNlIGJ5IGVpdGhlciB0aGUgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSBvciB0aGUNCi0gIEZQR0EgZmFicmljLiBUaGUgTVNTIEdQSU9zIHNoYXJlIFNtYXJ0RnVzaW9uMiBkZXZpY2UgZXh0ZXJuYWwgcGlucyB3aXRoIHRoZQ0KLSAgRlBHQSBmYWJyaWMgYW5kIHdpdGggb3RoZXIgTVNTIHBlcmlwaGVyYWxzIHZpYSBhbiBJT01VWC4gVGhlIE1TUyBHUElPIHBvcnRzDQotICBjYW4gYWx0ZXJuYXRpdmVseSBiZSByb3V0ZWQgdG8gdGhlIEZQR0EgZmFicmljIHRocm91Z2ggYW4gSU9NVVguIA0KLSAgVGhlIElPTVVYcyBhcmUgY29uZmlndXJlZCB1c2luZyB0aGUgU21hcnRGdXNpb24yIE1TUyBjb25maWd1cmF0b3IgdG9vbC4gWW91DQotICBtdXN0IGVuc3VyZSB0aGF0IHRoZSBNU1MgR1BJT3MgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgaW4gdGhlIFNtYXJ0RnVzaW9uMg0KLSAgTVNTIGNvbmZpZ3VyYXRvciBpZiB5b3Ugd2lzaCB0byB1c2UgdGhlbS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gSU9NVVhzLA0KLSAgcmVmZXIgdG8gdGhlIElPTVVYIHNlY3Rpb24gb2YgdGhlIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtIChNU1MpDQotICBVc2Vy4oCZcyBHdWlkZS4NCi0gIFRoZSBiYXNlIGFkZHJlc3MsIHJlZ2lzdGVyIGFkZHJlc3NlcyBhbmQgaW50ZXJydXB0IG51bWJlciBhc3NpZ25tZW50IGZvciB0aGUNCi0gIE1TUyBHUElPIGJsb2NrIGFyZSBkZWZpbmVkIGFzIGNvbnN0YW50cyBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91DQotICBtdXN0IGVuc3VyZSB0aGF0IHRoZSBsYXRlc3QgU21hcnRGdXNpb24yIENNU0lTIEhBTCBpcyBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdA0KLSAgc2V0dGluZ3Mgb2YgdGhlIHNvZnR3YXJlIHRvb2wgY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3QgYW5kIHRoYXQgaXQgaXMNCi0gIGdlbmVyYXRlZCBpbnRvIHlvdXIgcHJvamVjdC4NCi0gIA0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gIFRoZSBNU1MgR1BJTyBkcml2ZXIgZnVuY3Rpb25zIGFyZSBncm91cGVkIGludG8gdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOg0KLSAgICAtIEluaXRpYWxpemF0aW9uDQotICAgIC0gQ29uZmlndXJhdGlvbg0KLSAgICAtIFJlYWRpbmcgYW5kIHNldHRpbmcgR1BJTyBzdGF0ZQ0KLSAgICAtIEludGVycnVwdCBjb250cm9sDQotICAgIA0KLSAgSW5pdGlhbGl6YXRpb24NCi0gIFRoZSBNU1MgR1BJTyBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBhIGNhbGwgdG8gdGhlIE1TU19HUElPX2luaXQoKQ0KLSAgZnVuY3Rpb24uIFRoZSBNU1NfR1BJT19pbml0KCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MNCi0gIEdQSU8gZHJpdmVyIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLg0KLSAgDQotICBDb25maWd1cmF0aW9uDQotICBFYWNoIEdQSU8gcG9ydCBpcyBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCB0aHJvdWdoIGEgY2FsbCB0byB0aGUNCi0gIE1TU19HUElPX2NvbmZpZygpIGZ1bmN0aW9uLiBDb25maWd1cmF0aW9uIGluY2x1ZGVzIGRlY2lkaW5nIGlmIGEgR1BJTyBwb3J0DQotICB3aWxsIGJlIHVzZWQgYXMgYW4gaW5wdXQsIGFuIG91dHB1dCBvciBib3RoLiBHUElPIHBvcnRzIGNvbmZpZ3VyZWQgYXMgaW5wdXRzDQotICBjYW4gYmUgZnVydGhlciBjb25maWd1cmVkIHRvIGdlbmVyYXRlIGludGVycnVwdHMgYmFzZWQgb24gdGhlIGlucHV0J3Mgc3RhdGUuDQotICBJbnRlcnJ1cHRzIGNhbiBiZSBsZXZlbCBvciBlZGdlIHNlbnNpdGl2ZS4NCi0gIA0KLSAgUmVhZGluZyBhbmQgU2V0dGluZyBHUElPIFN0YXRlDQotICBUaGUgc3RhdGUgb2YgdGhlIEdQSU8gcG9ydHMgY2FuIGJlIHJlYWQgYW5kIHNldCB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfR1BJT19nZXRfaW5wdXRzKCkNCi0gICAgLSBNU1NfR1BJT19nZXRfb3V0cHV0cygpDQotICAgIC0gTVNTX0dQSU9fc2V0X291dHB1dHMoKQ0KLSAgICAtIE1TU19HUElPX3NldF9vdXRwdXQoKQ0KLSAgICAtIE1TU19HUElPX2RyaXZlX2lub3V0KCkNCi0gIA0KLSAgSW50ZXJydXB0IENvbnRyb2wNCi0gIEludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IEdQSU8gcG9ydHMgY29uZmlndXJlZCBhcyBpbnB1dHMgYXJlIGNvbnRyb2xsZWQgdXNpbmcNCi0gIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19HUElPX2VuYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19HUElPX2Rpc2FibGVfaXJxKCkNCi0gICAgLSBNU1NfR1BJT19jbGVhcl9pcnEoKQ0KLSAgDQotICovLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0jaWZuZGVmIE1TU19HUElPX0hfDQotI2RlZmluZSBNU1NfR1BJT19IXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBtc3NfZ3Bpb19pZF90IGVudW1lcmF0aW9uIGlzIHVzZWQgdG8gaWRlbnRpZnkgaW5kaXZpZHVhbCBHUElPIHBvcnRzIGFzIGFuDQotICBhcmd1bWVudCB0byBmdW5jdGlvbnM6DQotICAgIC0gTVNTX0dQSU9fY29uZmlnKCkNCi0gICAgLSBNU1NfR1BJT19zZXRfb3V0cHV0KCkgYW5kIE1TU19HUElPX2RyaXZlX2lub3V0KCkNCi0gICAgLSBNU1NfR1BJT19lbmFibGVfaXJxKCksIE1TU19HUElPX2Rpc2FibGVfaXJxKCkgYW5kIE1TU19HUElPX2NsZWFyX2lycSgpDQotICovDQotdHlwZWRlZiBlbnVtIF9fbXNzX2dwaW9faWRfdA0KLXsNCi0gICAgTVNTX0dQSU9fMCA9IDAsDQotICAgIE1TU19HUElPXzEgPSAxLA0KLSAgICBNU1NfR1BJT18yID0gMiwNCi0gICAgTVNTX0dQSU9fMyA9IDMsDQotICAgIE1TU19HUElPXzQgPSA0LA0KLSAgICBNU1NfR1BJT181ID0gNSwNCi0gICAgTVNTX0dQSU9fNiA9IDYsDQotICAgIE1TU19HUElPXzcgPSA3LA0KLSAgICBNU1NfR1BJT184ID0gOCwNCi0gICAgTVNTX0dQSU9fOSA9IDksDQotICAgIE1TU19HUElPXzEwID0gMTAsDQotICAgIE1TU19HUElPXzExID0gMTEsDQotICAgIE1TU19HUElPXzEyID0gMTIsDQotICAgIE1TU19HUElPXzEzID0gMTMsDQotICAgIE1TU19HUElPXzE0ID0gMTQsDQotICAgIE1TU19HUElPXzE1ID0gMTUsDQotICAgIE1TU19HUElPXzE2ID0gMTYsDQotICAgIE1TU19HUElPXzE3ID0gMTcsDQotICAgIE1TU19HUElPXzE4ID0gMTgsDQotICAgIE1TU19HUElPXzE5ID0gMTksDQotICAgIE1TU19HUElPXzIwID0gMjAsDQotICAgIE1TU19HUElPXzIxID0gMjEsDQotICAgIE1TU19HUElPXzIyID0gMjIsDQotICAgIE1TU19HUElPXzIzID0gMjMsDQotICAgIE1TU19HUElPXzI0ID0gMjQsDQotICAgIE1TU19HUElPXzI1ID0gMjUsDQotICAgIE1TU19HUElPXzI2ID0gMjYsDQotICAgIE1TU19HUElPXzI3ID0gMjcsDQotICAgIE1TU19HUElPXzI4ID0gMjgsDQotICAgIE1TU19HUElPXzI5ID0gMjksDQotICAgIE1TU19HUElPXzMwID0gMzAsDQotICAgIE1TU19HUElPXzMxID0gMzENCi19IG1zc19ncGlvX2lkX3Q7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZXNlIGNvbnN0YW50IGRlZmluaXRpb25zIGFyZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZQ0KLSAgTVNTX0dQSU9fc2V0X291dHB1dHMoKSBmdW5jdGlvbiB0byBpZGVudGlmeSBHUElPIHBvcnRzLiBBIGxvZ2ljYWwgT1Igb2YgdGhlc2UNCi0gIGNvbnN0YW50cyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG11bHRpcGxlIEdQSU8gcG9ydHMuDQotICBUaGVzZSBkZWZpbml0aW9ucyBjYW4gYWxzbyBiZSB1c2VkIHRvIGlkZW50aWZ5IEdQSU8gcG9ydHMgdGhyb3VnaCBsb2dpY2FsDQotICBvcGVyYXRpb25zIG9uIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIE1TU19HUElPX2dldF9pbnB1dHMoKSBmdW5jdGlvbi4NCi0gKi8NCi0jZGVmaW5lIE1TU19HUElPXzBfTUFTSyAgICAgICAgIDB4MDAwMDAwMDF1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMV9NQVNLICAgICAgICAgMHgwMDAwMDAwMnVMDQotI2RlZmluZSBNU1NfR1BJT18yX01BU0sgICAgICAgICAweDAwMDAwMDA0dUwNCi0jZGVmaW5lIE1TU19HUElPXzNfTUFTSyAgICAgICAgIDB4MDAwMDAwMDh1TA0KLSNkZWZpbmUgTVNTX0dQSU9fNF9NQVNLICAgICAgICAgMHgwMDAwMDAxMHVMDQotI2RlZmluZSBNU1NfR1BJT181X01BU0sgICAgICAgICAweDAwMDAwMDIwdUwNCi0jZGVmaW5lIE1TU19HUElPXzZfTUFTSyAgICAgICAgIDB4MDAwMDAwNDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fN19NQVNLICAgICAgICAgMHgwMDAwMDA4MHVMDQotI2RlZmluZSBNU1NfR1BJT184X01BU0sgICAgICAgICAweDAwMDAwMTAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzlfTUFTSyAgICAgICAgIDB4MDAwMDAyMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTBfTUFTSyAgICAgICAgMHgwMDAwMDQwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xMV9NQVNLICAgICAgICAweDAwMDAwODAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzEyX01BU0sgICAgICAgIDB4MDAwMDEwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTNfTUFTSyAgICAgICAgMHgwMDAwMjAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xNF9NQVNLICAgICAgICAweDAwMDA0MDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzE1X01BU0sgICAgICAgIDB4MDAwMDgwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTZfTUFTSyAgICAgICAgMHgwMDAxMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xN19NQVNLICAgICAgICAweDAwMDIwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzE4X01BU0sgICAgICAgIDB4MDAwNDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTlfTUFTSyAgICAgICAgMHgwMDA4MDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yMF9NQVNLICAgICAgICAweDAwMTAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzIxX01BU0sgICAgICAgIDB4MDAyMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjJfTUFTSyAgICAgICAgMHgwMDQwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yM19NQVNLICAgICAgICAweDAwODAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzI0X01BU0sgICAgICAgIDB4MDEwMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjVfTUFTSyAgICAgICAgMHgwMjAwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yNl9NQVNLICAgICAgICAweDA0MDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzI3X01BU0sgICAgICAgIDB4MDgwMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjhfTUFTSyAgICAgICAgMHgxMDAwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yOV9NQVNLICAgICAgICAweDIwMDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzMwX01BU0sgICAgICAgIDB4NDAwMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMzFfTUFTSyAgICAgICAgMHg4MDAwMDAwMHVMDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZXNlIGNvbnN0YW50IGRlZmluaXRpb25zIGFyZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBNU1NfR1BJT19jb25maWcoKQ0KLSAgZnVuY3Rpb24gdG8gc3BlY2lmeSB0aGUgSS9PIG1vZGUgb2YgZWFjaCBHUElPIHBvcnQuDQotICovDQotI2RlZmluZSBNU1NfR1BJT19JTlBVVF9NT0RFICAgICAgICAgICAgICAweDAwMDAwMDAwMDJ1TA0KLSNkZWZpbmUgTVNTX0dQSU9fT1VUUFVUX01PREUgICAgICAgICAgICAgMHgwMDAwMDAwMDA1dUwNCi0jZGVmaW5lIE1TU19HUElPX0lOT1VUX01PREUgICAgICAgICAgICAgIDB4MDAwMDAwMDAwM3VMDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZXNlIGNvbnN0YW50IGRlZmluaXRpb25zIGFyZSB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBNU1NfR1BJT19jb25maWcoKQ0KLSAgZnVuY3Rpb24gdG8gc3BlY2lmeSB0aGUgaW50ZXJydXB0IG1vZGUgb2YgZWFjaCBHUElPIHBvcnQuDQotICovDQotI2RlZmluZSBNU1NfR1BJT19JUlFfTEVWRUxfSElHSCAgICAgICAgICAgMHgwMDAwMDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPX0lSUV9MRVZFTF9MT1cgICAgICAgICAgICAweDAwMDAwMDAwMjB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fSVJRX0VER0VfUE9TSVRJVkUgICAgICAgIDB4MDAwMDAwMDA0MHVMDQotI2RlZmluZSBNU1NfR1BJT19JUlFfRURHRV9ORUdBVElWRSAgICAgICAgMHgwMDAwMDAwMDYwdUwNCi0jZGVmaW5lIE1TU19HUElPX0lSUV9FREdFX0JPVEggICAgICAgICAgICAweDAwMDAwMDAwODB1TA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgbXNzX2dwaW9faW5vdXRfc3RhdGVfdCBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG91dHB1dCBzdGF0ZSBvZg0KLSAgYW4gSU5PVVQgR1BJTyBwb3J0IGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBNU1NfR1BJT19kcml2ZV9pbm91dCgpIGZ1bmN0aW9uLg0KLSAqLw0KLXR5cGVkZWYgZW51bSBtc3NfZ3Bpb19pbm91dF9zdGF0ZQ0KLXsNCi0gICAgTVNTX0dQSU9fRFJJVkVfTE9XID0gMCwNCi0gICAgTVNTX0dQSU9fRFJJVkVfSElHSCwNCi0gICAgTVNTX0dQSU9fSElHSF9aDQotfSBtc3NfZ3Bpb19pbm91dF9zdGF0ZV90Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9faW5pdCgpIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBTbWFydEZ1c2lvbjIgTVNTIEdQSU8gYmxvY2suIEl0DQotICByZXNldHMgdGhlIE1TUyBHUElPIGhhcmR3YXJlIGJsb2NrIGFuZCBpdCBhbHNvIGNsZWFycyBhbnkgcGVuZGluZyBNU1MgR1BJTw0KLSAgaW50ZXJydXB0cyBpbiB0aGUgQVJNIENvcnRleC1NMyBpbnRlcnJ1cHQgY29udHJvbGxlci4gV2hlbiB0aGUgZnVuY3Rpb24gZXhpdHMsDQotICBpdCB0YWtlcyB0aGUgTVNTIEdQSU8gYmxvY2sgb3V0IG9mIHJlc2V0Lg0KLSAgDQotICAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gaGFzIG5vIHBhcmFtZXRlcnMuDQotICAgIA0KLSAgIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkIE1TU19HUElPX2luaXQoIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2NvbmZpZygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29uZmlndXJlIGFuIGluZGl2aWR1YWwgR1BJTyBwb3J0Lg0KLSANCi0gIEBwYXJhbSBwb3J0X2lkDQotICAgIFRoZSBwb3J0X2lkIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBHUElPIHBvcnQgdG8gYmUgY29uZmlndXJlZC4gQW4NCi0gICAgZW51bWVyYXRpb24gaXRlbSBvZiB0aGUgZm9ybSBNU1NfR1BJT19uLCB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YgdGhlIEdQSU8NCi0gICAgcG9ydCwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgR1BJTyBwb3J0LiBGb3IgZXhhbXBsZSwgTVNTX0dQSU9fMCBpZGVudGlmaWVzDQotICAgIHRoZSBmaXJzdCBHUElPIHBvcnQgYW5kIE1TU19HUElPXzMxIGlzIHRoZSBsYXN0IG9uZS4NCi0gICAgDQotICBAcGFyYW0gY29uZmlnDQotICAgIFRoZSBjb25maWcgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBHUElPDQotICAgIHBvcnQgaWRlbnRpZmllZCBieSB0aGUgcG9ydF9pZCBwYXJhbWV0ZXIuIEl0IGlzIGEgbG9naWNhbCBPUiBvZiB0aGUgcmVxdWlyZWQNCi0gICAgSS9PIG1vZGUgYW5kIHRoZSByZXF1aXJlZCBpbnRlcnJ1cHQgbW9kZS4gVGhlIGludGVycnVwdCBtb2RlIGlzIG5vdCByZWxldmFudA0KLSAgICBpZiB0aGUgR1BJTyBpcyBjb25maWd1cmVkIGFzIGFuIG91dHB1dCBvbmx5Lg0KLSAgICAgICBUaGVzZSBJL08gbW9kZSBjb25zdGFudHMgYXJlIGFsbG93ZWQ6DQotICAgICAgICAgICAtIE1TU19HUElPX0lOUFVUX01PREUNCi0gICAgICAgICAgIC0gTVNTX0dQSU9fT1VUUFVUX01PREUNCi0gICAgICAgICAgIC0gTVNTX0dQSU9fSU5PVVRfTU9ERQ0KLSAgICAgICBUaGVzZSBpbnRlcnJ1cHQgbW9kZSBjb25zdGFudHMgYXJlIGFsbG93ZWQ6DQotICAgICAgICAgICAtIE1TU19HUElPX0lSUV9MRVZFTF9ISUdIDQotICAgICAgICAgICAtIE1TU19HUElPX0lSUV9MRVZFTF9MT1cNCi0gICAgICAgICAgIC0gTVNTX0dQSU9fSVJRX0VER0VfUE9TSVRJVkUNCi0gICAgICAgICAgIC0gTVNTX0dQSU9fSVJRX0VER0VfTkVHQVRJVkUNCi0gICAgICAgICAgIC0gTVNTX0dQSU9fSVJRX0VER0VfQk9USA0KLSAgDQotICAgQHJldHVybg0KLSAgICBub25lLg0KLQ0KLSAgRXhhbXBsZToNCi0gIFRoZSBmb2xsb3dpbmcgY2FsbCB3aWxsIGNvbmZpZ3VyZSBHUElPIDQgYXMgYW4gaW5wdXQgZ2VuZXJhdGluZyBpbnRlcnJ1cHRzIG9uDQotICBhIExvdyB0byBIaWdoIHRyYW5zaXRpb24gb2YgdGhlIGlucHV0Og0KLSAgQGNvZGUNCi0gIE1TU19HUElPX2NvbmZpZyggTVNTX0dQSU9fNCwgTVNTX0dQSU9fSU5QVVRfTU9ERSB8IE1TU19HUElPX0lSUV9FREdFX1BPU0lUSVZFICk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fY29uZmlnDQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQsDQotICAgIHVpbnQzMl90IGNvbmZpZw0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19zZXRfb3V0cHV0cygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBzdGF0ZSBvZiBhbGwgR1BJTyBwb3J0cw0KLSAgY29uZmlndXJlZCBhcyBvdXRwdXRzLg0KLSANCi0gIEBwYXJhbSB2YWx1ZQ0KLSAgICBUaGUgdmFsdWUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc3RhdGUgb2YgdGhlIEdQSU8gcG9ydHMgY29uZmlndXJlZCBhcw0KLSAgICBvdXRwdXRzLiBJdCBpcyBhIGJpdCBtYXNrIG9mIHRoZSBmb3JtIChNU1NfR1BJT19uX01BU0sgfCBNU1NfR1BJT19tX01BU0spDQotICAgIHdoZXJlIG4gYW5kIG0gYXJlIG51bWJlcnMgaWRlbnRpZnlpbmcgR1BJT3MuIEZvciBleGFtcGxlLCAoTVNTX0dQSU9fMF9NQVNLIHwNCi0gICAgTVNTX0dQSU9fMV9NQVNLIHwgTVNTX0dQSU9fMl9NQVNLICkgc3BlY2lmaWVzIHRoYXQgdGhlIGZpcnN0LCBzZWNvbmQgYW5kDQotICAgIHRoaXJkIEdQSU8gb3V0cHV0cyBtdXN0IGJlIHNldCBIaWdoIGFuZCBhbGwgb3RoZXIgR1BJTyBvdXRwdXRzIHNldCBMb3cuIFRoZQ0KLSAgICBkcml2ZXIgcHJvdmlkZXMgMzIgbWFzayBjb25zdGFudHMsIE1TU19HUElPXzBfTUFTSyB0byBNU1NfR1BJT18zMV9NQVNLDQotICAgIGluY2x1c2l2ZSwgZm9yIHRoaXMgcHVycG9zZS4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBub25lLg0KLQ0KLSAgRXhhbXBsZSAxOg0KLSAgICBTZXQgR1BJT3Mgb3V0cHV0cyAwIGFuZCA4IGhpZ2ggYW5kIGFsbCBvdGhlciBHUElPIG91dHB1dHMgbG93Lg0KLSAgICBAY29kZQ0KLSAgICAgICAgTVNTX0dQSU9fc2V0X291dHB1dHMoIE1TU19HUElPXzBfTUFTSyB8IE1TU19HUElPXzhfTUFTSyApOw0KLSAgICBAZW5kY29kZQ0KLQ0KLSAgRXhhbXBsZSAyOg0KLSAgICBTZXQgR1BJT3Mgb3V0cHV0cyAyIGFuZCA0IGxvdyB3aXRob3V0IGFmZmVjdGluZyBvdGhlciBHUElPIG91dHB1dHMuDQotICAgIEBjb2RlDQotICAgICAgICB1aW50MzJfdCBncGlvX291dHB1dHM7DQotICAgICAgICBncGlvX291dHB1dHMgPSBNU1NfR1BJT19nZXRfb3V0cHV0cygpOw0KLSAgICAgICAgZ3Bpb19vdXRwdXRzICY9IH4oIE1TU19HUElPXzJfTUFTSyB8IE1TU19HUElPXzRfTUFTSyApOw0KLSAgICAgICAgTVNTX0dQSU9fc2V0X291dHB1dHMoICBncGlvX291dHB1dHMgKTsNCi0gICAgQGVuZGNvZGUNCi0NCi0gIEBzZWUgTVNTX0dQSU9fZ2V0X291dHB1dHMoKQ0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkDQotTVNTX0dQSU9fc2V0X291dHB1dHMNCi0oDQotICAgdWludDMyX3QgdmFsdWUNCi0pDQotew0KLSAgICBHUElPLT5HUElPX09VVCA9IHZhbHVlOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX3NldF9vdXRwdXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgc3RhdGUgb2YgYSBzaW5nbGUgR1BJTw0KLSAgcG9ydCBjb25maWd1cmVkIGFzIGFuIG91dHB1dC4NCi0gIE5vdGU6IFVzaW5nIGJpdC1iYW5kIHdyaXRlcyBtaWdodCBiZSBhIGJldHRlciBvcHRpb24gdGhhbiB0aGlzIGZ1bmN0aW9uIGZvcg0KLSAgICAgICAgcGVyZm9ybWFuY2UgY3JpdGljYWwgYXBwbGljYXRpb25zIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGlzIG5vdA0KLSAgICAgICAgaW50ZW5kZWQgdG8gYmUgcG9ydGVkIHRvIGEgcHJvY2Vzc29yIG90aGVyIHRoYW4gdGhlIEFSTSBDb3J0ZXgtTTMgaW4NCi0gICAgICAgIFNtYXJ0RnVzaW9uMi4gVGhlIGJpdC1iYW5kIHdyaXRlIGVxdWl2YWxlbnQgdG8gdGhpcyBmdW5jdGlvbiB3b3VsZCBiZToNCi0gICAgICAgICAgICBHUElPX0JJVEJBTkQtPkdQSU9fT1VUW3BvcnRfaWRdID0gKHVpbnQzMl90KXZhbHVlOw0KLSANCi0gIEBwYXJhbSBwb3J0X2lkDQotICAgIFRoZSBwb3J0X2lkIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBHUElPIHBvcnQgdGhhdCBpcyB0byBoYXZlIGl0cyBvdXRwdXQNCi0gICAgc2V0LiBBbiBlbnVtZXJhdGlvbiBpdGVtIG9mIHRoZSBmb3JtIE1TU19HUElPX24sIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZg0KLSAgICB0aGUgR1BJTyBwb3J0LCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBHUElPIHBvcnQuIEZvciBleGFtcGxlLCBNU1NfR1BJT18wDQotICAgIGlkZW50aWZpZXMgdGhlIGZpcnN0IEdQSU8gcG9ydCBhbmQgTVNTX0dQSU9fMzEgaXMgdGhlIGxhc3Qgb25lLg0KLSAgDQotICBAcGFyYW0gdmFsdWUNCi0gICAgVGhlIHZhbHVlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgc3RhdGUgZm9yIHRoZSBHUElPIG91dHB1dC4gQSB2YWx1ZQ0KLSAgICBvZiAwIHdpbGwgc2V0IHRoZSBvdXRwdXQgTG93IGFuZCBhIHZhbHVlIG9mIDEgd2lsbCBzZXQgdGhlIG91dHB1dCBIaWdoLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICAgIA0KLSAgRXhhbXBsZToNCi0gIFRoZSBmb2xsb3dpbmcgY2FsbCB3aWxsIHNldCBHUElPIG91dHB1dCAxMiBIaWdoLCBsZWF2aW5nIGFsbCBvdGhlciBHUElPDQotICBvdXRwdXRzIHVuYWZmZWN0ZWQ6DQotICBAY29kZQ0KLSAgICBfR1BJT19zZXRfb3V0cHV0KE1TU19HUElPXzEyLCAxKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCBNU1NfR1BJT19zZXRfb3V0cHV0DQotKA0KLSAgICBtc3NfZ3Bpb19pZF90ICAgICAgIHBvcnRfaWQsDQotICAgIHVpbnQ4X3QgICAgICAgICAgICAgdmFsdWUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9fZ2V0X2lucHV0cygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVhZCB0aGUgY3VycmVudCBzdGF0ZSBhbGwgR1BJTw0KLSAgcG9ydHMgY29uZmlndXJlZCBhcyBpbnB1dHMuDQotIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB3aGVyZSBlYWNoIGJpdCByZXByZXNlbnRzDQotICAgIHRoZSBzdGF0ZSBvZiBhIEdQSU8gaW5wdXQuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcmVwcmVzZW50cyB0aGUgc3RhdGUgb2YNCi0gICAgR1BJTyBpbnB1dCAwIGFuZCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgdGhlIHN0YXRlIG9mIEdQSU8gaW5wdXQgMzEuDQotDQotICBFeGFtcGxlOg0KLSAgICBSZWFkIGFuZCBhc3NpZ24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIEdQSU8gb3V0cHV0cyB0byBhIHZhcmlhYmxlLg0KLSAgICBAY29kZQ0KLSAgICAgICAgdWludDMyX3QgZ3Bpb19pbnB1dHM7DQotICAgICAgICBncGlvX2lucHV0cyA9IE1TU19HUElPX2dldF9pbnB1dHMoKTsNCi0gICAgQGVuZGNvZGUNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdWludDMyX3QNCi1NU1NfR1BJT19nZXRfaW5wdXRzKCB2b2lkICkNCi17DQotICAgIHJldHVybiBHUElPLT5HUElPX0lOOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2dldF9vdXRwdXRzKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50IHN0YXRlIGFsbCBHUElPDQotICBwb3J0cyBjb25maWd1cmVkIGFzIG91dHB1dHMuDQotIA0KLSAgQHJldHVybg0KLSAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cw0KLSAgICAgdGhlIHN0YXRlIG9mIGEgR1BJTyBvdXRwdXQuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcmVwcmVzZW50cyB0aGUgc3RhdGUNCi0gICAgIG9mIEdQSU8gb3V0cHV0IDAgYW5kIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCB0aGUgc3RhdGUgb2YgR1BJTyBvdXRwdXQgMzEuDQotDQotICBFeGFtcGxlOg0KLSAgICBSZWFkIGFuZCBhc3NpZ24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIEdQSU8gb3V0cHV0cyB0byBhIHZhcmlhYmxlLg0KLSAgICBAY29kZQ0KLSAgICAgICAgdWludDMyX3QgZ3Bpb19vdXRwdXRzOw0KLSAgICAgICAgZ3Bpb19vdXRwdXRzID0gTVNTX0dQSU9fZ2V0X291dHB1dHMoKTsNCi0gICAgQGVuZGNvZGUNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdWludDMyX3QNCi1NU1NfR1BJT19nZXRfb3V0cHV0cyggdm9pZCApDQotew0KLSAgICByZXR1cm4gR1BJTy0+R1BJT19PVVQ7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9fZHJpdmVfaW5vdXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgb3V0cHV0IHN0YXRlIG9mIGENCi0gIHNpbmdsZSBHUElPIHBvcnQgY29uZmlndXJlZCBhcyBhbiBJTk9VVC4gQW4gSU5PVVQgR1BJTyBjYW4gYmUgaW4gb25lIG9mIHRocmVlDQotICBzdGF0ZXM6DQotICAgIC0gSGlnaA0KLSAgICAtIExvdw0KLSAgICAtIEhpZ2ggaW1wZWRhbmNlDQotICBBbiBJTk9VVCBvdXRwdXQgd291bGQgdHlwaWNhbGx5IGJlIHVzZWQgd2hlcmUgc2V2ZXJhbCBkZXZpY2VzIGNhbiBkcml2ZSB0aGUNCi0gIHN0YXRlIG9mIGEgc2hhcmVkIHNpZ25hbCBsaW5lLiBUaGUgSGlnaCBhbmQgTG93IHN0YXRlcyBhcmUgZXF1aXZhbGVudCB0byB0aGUNCi0gIEhpZ2ggYW5kIExvdyBzdGF0ZXMgb2YgYSBHUElPIGNvbmZpZ3VyZWQgYXMgYW4gb3V0cHV0LiBUaGUgSGlnaCBpbXBlZGFuY2UNCi0gIHN0YXRlIGlzIHVzZWQgdG8gcHJldmVudCB0aGUgR1BJTyBmcm9tIGRyaXZpbmcgaXRzIG91dHB1dCBzdGF0ZSBvbnRvIHRoZQ0KLSAgc2lnbmFsIGxpbmUsIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYWxsb3dpbmcgdGhlIGlucHV0IHN0YXRlIG9mIHRoZSBHUElPIHRvDQotICBiZSByZWFkLg0KLSAgDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IGZvciB3aGljaCB5b3Ugd2FudCB0byBjaGFuZ2UNCi0gICAgdGhlIG91dHB1dCBzdGF0ZS4gQW4gZW51bWVyYXRpb24gaXRlbSBvZiB0aGUgZm9ybSBNU1NfR1BJT19uLCB3aGVyZSBuIGlzIHRoZQ0KLSAgICBudW1iZXIgb2YgdGhlIEdQSU8gcG9ydCwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgR1BJTyBwb3J0LiBGb3IgZXhhbXBsZSwNCi0gICAgTVNTX0dQSU9fMCBpZGVudGlmaWVzIHRoZSBmaXJzdCBHUElPIHBvcnQgYW5kIE1TU19HUElPXzMxIGlzIHRoZSBsYXN0IG9uZS4NCi0gICAgDQotICBAcGFyYW0gaW5vdXRfc3RhdGUNCi0gICAgVGhlIGlub3V0X3N0YXRlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHN0YXRlIG9mIHRoZSBHUElPIHBvcnQgaWRlbnRpZmllZCBieQ0KLSAgICB0aGUgcG9ydF9pZCBwYXJhbWV0ZXIuIEFsbG93ZWQgdmFsdWVzIG9mIHR5cGUgbXNzX2dwaW9faW5vdXRfc3RhdGVfdCBhcmUgYXMNCi0gICAgZm9sbG93czoNCi0gICAgICAgIC0gTVNTX0dQSU9fRFJJVkVfSElHSA0KLSAgICAgICAgLSBNU1NfR1BJT19EUklWRV9MT1cNCi0gICAgICAgIC0gTVNTX0dQSU9fSElHSF9aICAoSGlnaCBpbXBlZGFuY2UpDQotICAgICAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICAgIFRoZSBjYWxsIHRvIE1TU19HUElPX2RyaXZlX2lub3V0KCkgYmVsb3cgd2lsbCBzZXQgdGhlIEdQSU8gNyBvdXRwdXQgdG8gdGhlDQotICAgIGhpZ2ggaW1wZWRhbmNlIHN0YXRlLg0KLSAgICBAY29kZQ0KLSAgICBNU1NfR1BJT19kcml2ZV9pbm91dCggTVNTX0dQSU9fNywgTVNTX0dQSU9fSElHSF9aICk7DQotICAgIEBlbmRjb2RlDQotICovDQotdm9pZCBNU1NfR1BJT19kcml2ZV9pbm91dA0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCAgICAgICAgICAgcG9ydF9pZCwNCi0gICAgbXNzX2dwaW9faW5vdXRfc3RhdGVfdCAgaW5vdXRfc3RhdGUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9fZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGludGVycnVwdCBnZW5lcmF0aW9uIGZvcg0KLSAgdGhlIHNwZWNpZmllZCBHUElPIGlucHV0LiBJbnRlcnJ1cHRzIGFyZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIHN0YXRlIG9mIHRoZQ0KLSAgR1BJTyBpbnB1dCBhbmQgdGhlIGludGVycnVwdCBtb2RlIGNvbmZpZ3VyZWQgZm9yIGl0IGJ5IE1TU19HUElPX2NvbmZpZygpLg0KLSANCi0gIEBwYXJhbSBwb3J0X2lkDQotICAgIFRoZSBwb3J0X2lkIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBHUElPIHBvcnQgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGVuYWJsZQ0KLSAgICBpbnRlcnJ1cHQgZ2VuZXJhdGlvbi4gQW4gZW51bWVyYXRpb24gaXRlbSBvZiB0aGUgZm9ybSBNU1NfR1BJT19uLCB3aGVyZSBuIGlzDQotICAgIHRoZSBudW1iZXIgb2YgdGhlIEdQSU8gcG9ydCwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgR1BJTyBwb3J0LiBGb3IgZXhhbXBsZSwNCi0gICAgTVNTX0dQSU9fMCBpZGVudGlmaWVzIHRoZSBmaXJzdCBHUElPIHBvcnQgYW5kIE1TU19HUElPXzMxIGlzIHRoZSBsYXN0IG9uZS4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgICBUaGUgY2FsbCB0byBNU1NfR1BJT19lbmFibGVfaXJxKCkgYmVsb3cgd2lsbCBhbGxvdyBHUElPIDggdG8gZ2VuZXJhdGUNCi0gICAgaW50ZXJydXB0cy4NCi0gICAgQGNvZGUNCi0gICAgTVNTX0dQSU9fZW5hYmxlX2lycSggTVNTX0dQSU9fOCApOw0KLSAgICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZW5hYmxlX2lycQ0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIGludGVycnVwdCBnZW5lcmF0aW9uDQotICBmb3IgdGhlIHNwZWNpZmllZCBHUElPIGlucHV0Lg0KLSANCi0gIEBwYXJhbSBwb3J0X2lkDQotICAgIFRoZSBwb3J0X2lkIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBHUElPIHBvcnQgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRpc2FibGUNCi0gICAgaW50ZXJydXB0IGdlbmVyYXRpb24uIEFuIGVudW1lcmF0aW9uIGl0ZW0gb2YgdGhlIGZvcm0gTVNTX0dQSU9fbiwgd2hlcmUgbiBpcw0KLSAgICB0aGUgbnVtYmVyIG9mIHRoZSBHUElPIHBvcnQsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIEdQSU8gcG9ydC4gRm9yIGV4YW1wbGUsDQotICAgIE1TU19HUElPXzAgaWRlbnRpZmllcyB0aGUgZmlyc3QgR1BJTyBwb3J0IGFuZCBNU1NfR1BJT18zMSBpcyB0aGUgbGFzdCBvbmUuDQotIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgVGhlIGNhbGwgdG8gTVNTX0dQSU9fZGlzYWJsZV9pcnEoKSBiZWxvdyB3aWxsIHByZXZlbnQgR1BJTyA4IGZyb20gZ2VuZXJhdGluZw0KLSAgICBpbnRlcnJ1cHRzLg0KLSAgICBAY29kZQ0KLSAgICBNU1NfR1BJT19kaXNhYmxlX2lycSggTVNTX0dQSU9fOCApOw0KLSAgICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZGlzYWJsZV9pcnENCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19jbGVhcl9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNsZWFyIGEgcGVuZGluZyBpbnRlcnJ1cHQgZnJvbQ0KLSAgdGhlIHNwZWNpZmllZCBHUElPIGlucHV0Lg0KLSAgTm90ZTogVGhlIE1TU19HUElPX2NsZWFyX2lycSgpIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFzIHBhcnQgb2YgYW55IEdQSU8NCi0gICAgICAgIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgKElTUikgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUgc2FtZSBpbnRlcnJ1cHQNCi0gICAgICAgIGV2ZW50IHJldHJpZ2dlcmluZyBhIGNhbGwgdG8gdGhlIEdQSU8gSVNSLg0KLSANCi0gIEBwYXJhbSBwb3J0X2lkDQotICAgIFRoZSBwb3J0X2lkIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBHUElPIHBvcnQgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGNsZWFyDQotICAgIHRoZSBpbnRlcnJ1cHQuIEFuIGVudW1lcmF0aW9uIGl0ZW0gb2YgdGhlIGZvcm0gTVNTX0dQSU9fbiwgd2hlcmUgbiBpcyB0aGUNCi0gICAgbnVtYmVyIG9mIHRoZSBHUElPIHBvcnQsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIEdQSU8gcG9ydC4gRm9yIGV4YW1wbGUsDQotICAgIE1TU19HUElPXzAgaWRlbnRpZmllcyB0aGUgZmlyc3QgR1BJTyBwb3J0IGFuZCBNU1NfR1BJT18zMSBpcyB0aGUgbGFzdCBvbmUuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBub25lLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgVGhlIGV4YW1wbGUgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhlIE1TU19HUElPX2NsZWFyX2lycSgpIGZ1bmN0aW9uDQotICAgIGFzIHBhcnQgb2YgdGhlIEdQSU8gOSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLiAgDQotICAgIEBjb2RlDQotICAgIHZvaWQgR1BJTzlfSVJRSGFuZGxlciggdm9pZCApDQotICAgIHsNCi0gICAgICAgIGRvX2ludGVycnVwdF9wcm9jZXNzaW5nKCk7DQotICAgICAgICANCi0gICAgICAgIE1TU19HUElPX2NsZWFyX2lycSggTVNTX0dQSU9fOSApOw0KLSAgICB9DQotICAgIEBlbmRjb2RlDQotICovDQotdm9pZCBNU1NfR1BJT19jbGVhcl9pcnENCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZA0KLSk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBNU1NfR1BJT19IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfaHBkbWEvbXNzX2hwZG1hLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDNlYWRiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfaHBkbWEvbXNzX2hwZG1hLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTAtMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBTbWFydEZ1c2lvbjIgTVNTIEhQRE1BIGJhcmUgbWV0YWwgZHJpdmVyIGltcGxlbWVudGF0aW9uLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTE0OCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAyLTI3IDE2OjQyOjAxICswMDAwIChXZWQsIDI3IEZlYiAyMDEzKSAkDQotICovDQotI2luY2x1ZGUgIm1zc19ocGRtYS5oIg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRGVzaWduIE5vdGVzDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFRoaXMgU21hcnRGdXNpb24yIE1TUyBIUERNQSBkcml2ZXIgb25seSBtYWtlcyB1c2Ugb2YgdGhlIGZpcnN0IEhQRE1BDQotICBkZXNjcmlwdG9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGNob2ljZSBpcyB0aGF0IHRoZSBwYXVzZSBhbmQgY2xlYXIgYml0cyBvZg0KLSAgZWFjaCBpbmRpdmlkdWFsIGRlc2NyaXB0b3IgaGF2ZSB1bmRvY3VtZW50ZWQgc2lkZSBlZmZlY3RzIHRvIHRoZSBvdGhlcg0KLSAgZGVzY3JpcHRvcnMgaW4gdGhlIEhQRE1BIGhhcmR3YXJlIGJsb2NrLiBUaGlzIHByZXZlbnRzIGluZGVwZW5kZW50IG9wZXJhdGlvbnMNCi0gIG9mIHRoZSBkZXNjcmlwdG9ycyBpbiBwYXJ0aWN1bGFyIHdoZW4gaXQgY29tZXMgdG8gZXJyb3IgaGFuZGxpbmcgd2hlcmUgZXJyb3INCi0gIHJlY292ZXJ5IHJlcXVpcmVzIGNsZWFyaW5nIGEgZGVzY3JpcHRvci4gQW4gZXJyb3Igb24gb25lIGRlc2NyaXB0b3Igd291bGQNCi0gIHJlc3VsdCBpbiBhYm9ydGluZyB0cmFuc2ZlcnMgb24gdGhlIG90aGVyIGRlc2NyaXB0b3JzLiBMaWtld2lzZSwgaXQgaXMgbm90DQotICBwb3NzaWJsZSB0byBwYXVzZSBpbmRpdmlkdWFsIGRlc2NyaXB0b3JzLiBTZXR0aW5nIHRoZSBwYXVzZSBiaXQgaW4gb25lDQotICBkZXNjcmlwdG9yIHJlc3VsdHMgaW4gYWxsIGRlc2NyaXB0b3JzIGJlaW5nIHBhdXNlZC4NCi0gKi8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBDb25zdGFudHMNCi0gKi8NCi0jZGVmaW5lIEhQRE1BX0VOQUJMRSAgICAxdQ0KLSNkZWZpbmUgSFBETUFfRElTQUJMRSAgIDB1DQotI2RlZmluZSBOVUxMX0hBTkRMRVIgICAgKChtc3NfaHBkbWFfaGFuZGxlcl90KTApDQotDQotLyogNjQgSyBETUEgVHJhbnNmZXIgKi8NCi0jZGVmaW5lIE1BWF9TSVpFX1BFUl9ETUFfWEZSICAgMHgxMDAwMHUNCi0NCi0jZGVmaW5lIERFU0MwICAgICAgIDB1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNYXNrIENvbnN0YW50cw0KLSAqLw0KLSNkZWZpbmUgSFBETUFfU09GVF9SRVNFVCAgICAgICAgICAgIDB4MDAwMjAwMDB1DQotI2RlZmluZSBIUERNQV9YRlJfU0laRV9NQVNLICAgICAgICAgMHhGRkZGMDAwMHUNCi0NCi0jZGVmaW5lIEhQRE1BQ1JfWEZSX0NNUF9JTlRfTUFTSyAgICAweDAwMTAwMDAwdQ0KLSNkZWZpbmUgSFBETUFDUl9YRlJfRVJSX0lOVF9NQVNLICAgIDB4MDAyMDAwMDB1DQotI2RlZmluZSBIUERNQUNSX05PTl9XT1JEX0lOVF9NQVNLICAgMHgwMDQwMDAwMHUNCi0NCi0jZGVmaW5lIEhQRE1BQ1JfQUxMX0lSUV9FTkFCTEVfTUFTSyAoSFBETUFDUl9YRlJfQ01QX0lOVF9NQVNLIHwgSFBETUFDUl9YRlJfRVJSX0lOVF9NQVNLIHwgSFBETUFDUl9OT05fV09SRF9JTlRfTUFTSykNCi0NCi0jZGVmaW5lIEhQRE1BSUNSX0NMRUFSX0FMTF9JUlEgICAgICAweDAwMDAwMEZGdQ0KLQ0KLSNkZWZpbmUgSFBETUFFRFJfRENQX0VSUl9NQVNLICAgICAgICAgICAweDAwMDAwMTAwdQ0KLQ0KLSNkZWZpbmUgSFBETUFFRFJfTk9OX1dPUkRfRVJSX01BU0sgICAgICAweDAwMDAxMDAwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBDdXJyZW50IHRyYW5zZmVyIHN0YXRlIGluZm9ybWF0aW9uLg0KLSAqLw0KLXR5cGVkZWYgc3RydWN0IGhwZG1hX3hmZXJfaW5mbw0KLXsNCi0gICAgaHBkbWFfc3RhdHVzX3QgICAgICAgICAgc3RhdGU7DQotICAgIG1zc19ocGRtYV9oYW5kbGVyX3QgICAgIGNvbXBsZXRpb25faGFuZGxlcjsNCi0gICAgdWludDMyX3QgICAgICAgICAgICAgICAgc3JjX2FkZHI7DQotICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIGRlc19hZGRyOw0KLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICB4ZnJfc2l6ZTsNCi0gICAgdWludDhfdCAgICAgICAgICAgICAgICAgeGZyX2RpcjsNCi19IGhwZG1hX3hmZXJfaW5mb190Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBDdXJyZW50IHRyYW5zZmVyIHN0YXRlIGluZm9ybWF0aW9uLg0KLSAqLw0KLXN0YXRpYyBocGRtYV94ZmVyX2luZm9fdCBnX3RyYW5zZmVyOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBJbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyBmdW5jdGlvbiBwcm90b3R5cGVzLg0KLSAgVGhlIG5hbWUgb2YgdGhlc2UgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZXMgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGUgSVNScw0KLSAgZGVmaW5lZCBpbiBzdGFydHVwX20yc3h4eC5zIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUy4NCi0gKi8NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbHNlDQotdm9pZCBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbmRpZiANCi0NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBIUERNQV9FcnJvcl9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbHNlDQotdm9pZCBIUERNQV9FcnJvcl9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbmRpZiANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX2hwZG1hLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX2luaXQNCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICAvKiBSZXNldCBIUERNQSBibG9jay4gKi8NCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiB8PSBIUERNQV9TT0ZUX1JFU0VUOw0KLQ0KLSAgICAvKiBUYWtlIEhQRE1BIGNvbnRyb2xsZXIgb3V0IG9mIHJlc2V0LiAqLw0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5IUERNQV9TT0ZUX1JFU0VUOw0KLQ0KLSAgICAvKiBJbml0aWFsaXplIGRhdGEgc3RydWN0dXJlcy4gKi8NCi0gICAgZ190cmFuc2Zlci54ZnJfc2l6ZSA9IDB1Ow0KLSAgICBnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlciA9IE5VTExfSEFORExFUjsNCi0gICAgZ190cmFuc2Zlci5zdGF0ZSA9IEhQRE1BX0NPTVBMRVRFRDsNCi0gICAgDQotICAgIC8qIERpc2FibGUgSW50ZXJydXB0LiAqLw0KLSAgICBIUERNQS0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9SRUcgJj0gfkhQRE1BQ1JfQUxMX0lSUV9FTkFCTEVfTUFTSzsNCi0NCi0gICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIE1TUyBIUERNQSBpbnRlcnJ1cHQuICovDQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKEhQRE1BX0Vycm9yX0lSUW4pOw0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShIUERNQV9Db21wbGV0ZV9JUlFuKTsNCi0gICAgDQotICAgIC8qIENsZWFyIGFsbCBpbnRlcnJ1cHRzLiAqLw0KLSAgICBIUERNQS0+SFBETUFJQ1JfUkVHID0gSFBETUFJQ1JfQ0xFQVJfQUxMX0lSUTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ocGRtYS5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19IUERNQV9zdGFydA0KLSgNCi0gICAgdWludDMyX3Qgc3JjX2FkZHIsDQotICAgIHVpbnQzMl90IGRlc3RfYWRkciwNCi0gICAgdWludDMyX3QgdHJhbnNmZXJfc2l6ZSwNCi0gICAgdWludDhfdCB0cmFuc2Zlcl9kaXINCi0pDQotew0KLSAgICAvKiBQYXVzZSB0cmFuc2Zlci4gKi8NCi0gICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfUEFVU0UgPSBIUERNQV9FTkFCTEU7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzIGZvciB0aGUgY3VycmVudCBkZXNjcmlwdG9yLiBUcmVhdCB0aGlzIGZ1bmN0aW9uIGFzIGENCi0gICAgICogY3JpdGljYWwgc2VjdGlvbi4gUGF1c2luZyB0aGUgZGVzY3JpcHRvciB0cmFuc2ZlciBpcyBub3Qgc3VmZmljaWVudCBpbiBjYXNlDQotICAgICAqIG9mIG5vbi1hbGlnbmVkIGVycm9ycy4NCi0gICAgICovDQotICAgIEhQRE1BLT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX1JFRyAmPSB+SFBETUFDUl9BTExfSVJRX0VOQUJMRV9NQVNLOw0KLSAgICANCi0gICAgLyogU2V0IGRlc2NyaXB0b3IgdHJhbnNmZXIgZGlyZWN0aW9uICovDQotICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX1hGUl9ESVIgPSB0cmFuc2Zlcl9kaXI7DQotDQotICAgIC8qIFN0b3JlIFNvdXJjZSBhbmQgZGVzdGluYXRpb24gQWRkcmVzcyAqLw0KLSAgICBIUERNQS0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFTQVJfUkVHID0gc3JjX2FkZHI7DQotICAgIEhQRE1BLT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQURBUl9SRUcgPSBkZXN0X2FkZHI7DQotDQotICAgIC8qIFNldCB0aGUgdHJhbnNmZXIgc2l6ZSB0byA2NEsgKi8NCi0gICAgSFBETUEtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfUkVHICY9IEhQRE1BX1hGUl9TSVpFX01BU0s7DQotDQotICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9JTl9QUk9HUkVTUzsNCi0gICAgaWYodHJhbnNmZXJfc2l6ZSA8PSBNQVhfU0laRV9QRVJfRE1BX1hGUikNCi0gICAgew0KLSAgICAgICAgLyogU2V0IGRlc2NyaXB0b3IgdHJhbnNmZXIgc2l6ZSAqLw0KLSAgICAgICAgSFBETUEtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfUkVHIHw9ICh1aW50MTZfdCl0cmFuc2Zlcl9zaXplOw0KLSAgICAgICAgZ190cmFuc2Zlci54ZnJfc2l6ZSA9IDB1Ow0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgZ190cmFuc2Zlci54ZnJfc2l6ZSA9IHRyYW5zZmVyX3NpemUgLSBNQVhfU0laRV9QRVJfRE1BX1hGUjsNCi0gICAgICAgIGdfdHJhbnNmZXIuZGVzX2FkZHIgPSBkZXN0X2FkZHIgKyBNQVhfU0laRV9QRVJfRE1BX1hGUjsNCi0gICAgICAgIGdfdHJhbnNmZXIuc3JjX2FkZHIgPSBzcmNfYWRkciArIE1BWF9TSVpFX1BFUl9ETUFfWEZSOw0KLSAgICAgICAgZ190cmFuc2Zlci54ZnJfZGlyID0gdHJhbnNmZXJfZGlyOw0KLSAgICB9DQotDQotICAgIC8qIEVuYWJsZSBpbnRlcnJ1cHRzIGZvciB0aGUgcmVxdWVzdGVkIGRlc2NyaXB0b3IuICovDQotICAgIEhQRE1BLT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX1JFRyB8PSBIUERNQUNSX0FMTF9JUlFfRU5BQkxFX01BU0s7DQotICAgIE5WSUNfRW5hYmxlSVJRKEhQRE1BX0NvbXBsZXRlX0lSUW4pOw0KLSAgICBOVklDX0VuYWJsZUlSUShIUERNQV9FcnJvcl9JUlFuKTsNCi0gICAgDQotICAgIC8qIFNldCB2YWxpZCBkZXNjcmlwdG9yIHRvIHN0YXJ0IHRyYW5zZmVyICovDQotICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX1ZBTElEID0gSFBETUFfRU5BQkxFOw0KLQ0KLSAgICAvKiBTdGFydCB0cmFuc2ZlciAqLw0KLSAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9QQVVTRSA9IEhQRE1BX0RJU0FCTEU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfaHBkbWEuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfcGF1c2UNCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICAvKiBQYXVzZSB0cmFuc2ZlciAqLw0KLSAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9QQVVTRSA9IEhQRE1BX0VOQUJMRTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ocGRtYS5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19IUERNQV9yZXN1bWUNCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICAvKiBSZXN1bWUgdHJhbnNmZXIgKi8NCi0gICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfUEFVU0UgPSBIUERNQV9ESVNBQkxFOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX2hwZG1hLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX2Fib3J0DQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfQ0xSID0gSFBETUFfRU5BQkxFOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX2hwZG1hLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi1ocGRtYV9zdGF0dXNfdA0KLU1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzDQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgcmV0dXJuIGdfdHJhbnNmZXIuc3RhdGU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfaHBkbWEuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0hQRE1BX3NldF9oYW5kbGVyDQotKA0KLSAgICBtc3NfaHBkbWFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBpZihoYW5kbGVyID09IE5VTExfSEFORExFUikNCi0gICAgew0KLSAgICAgICAgZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIgPSBOVUxMX0hBTkRMRVI7DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlciA9IGhhbmRsZXI7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIEhQRE1BIFRyYW5zZmVyIGNvbXBsZXRlIHNlcnZpY2Ugcm91dGluZS4NCi0gIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgYW55IGRlc2NyaXB0b3IgdHJhbnNmZXINCi0gIGlzIGNvbXBsZXRlZCBieSBIUERNQSBjb250cm9sbGVyIC4NCi0gKi8NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyKHZvaWQpDQotI2Vsc2UNCi12b2lkIEhQRE1BX0NvbXBsZXRlX0lSUUhhbmRsZXIodm9pZCkNCi0jZW5kaWYgDQotew0KLSAgICAvKiBDbGVhciBpbnRlcnJ1cHQgKi8NCi0gICAgSFBETUFfQklUQkFORC0+SFBETUFJQ1JfQ0xSX1hGUl9JTlRbREVTQzBdID0gSFBETUFfRU5BQkxFOw0KLQ0KLSAgICBpZihnX3RyYW5zZmVyLnhmcl9zaXplID4gMHUpDQotICAgIHsNCi0gICAgICAgIE1TU19IUERNQV9zdGFydChnX3RyYW5zZmVyLnNyY19hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGdfdHJhbnNmZXIuZGVzX2FkZHIsDQotICAgICAgICAgICAgICAgICAgICAgICAgZ190cmFuc2Zlci54ZnJfc2l6ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICBnX3RyYW5zZmVyLnhmcl9kaXIpOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgZ190cmFuc2Zlci5zdGF0ZSA9IEhQRE1BX0NPTVBMRVRFRDsNCi0gICAgICAgIGlmKGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyICE9IE5VTExfSEFORExFUikNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAoKihnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlcikpKEhQRE1BX0NPTVBMRVRFRCk7DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIEhQRE1BIFRyYW5zZmVyIEVycm9yIHNlcnZpY2Ugcm91dGluZS4NCi0gIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgYW55IGRlc2NyaXB0b3IgdHJhbnNmZXINCi0gIGhhcyBhbiBlcnJvciBjb25kaXRpb24gb3IgaXQgdGhlcmUgaXMgbm9uIHdvcmQgdHJhbnNmZXIgc2l6ZSBlcnJvci4NCi0gKi8NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBIUERNQV9FcnJvcl9JUlFIYW5kbGVyKHZvaWQpDQotI2Vsc2UNCi12b2lkIEhQRE1BX0Vycm9yX0lSUUhhbmRsZXIodm9pZCkNCi0jZW5kaWYgDQotew0KLSAgICB1aW50MzJfdCBlcnJvcl9iaXRzOw0KLQ0KLSAgICAvKg0KLSAgICAgKiBIYW5kbGUgc291cmNlL2Rlc3RpbmF0aW9uIGVycm9ycy4NCi0gICAgICovDQotICAgIGVycm9yX2JpdHMgPSBIUERNQS0+SFBETUFFRFJfUkVHICYgSFBETUFFRFJfRENQX0VSUl9NQVNLOw0KLSAgICBpZihlcnJvcl9iaXRzICE9IDB1KQ0KLSAgICB7DQotICAgICAgICBpZihnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlciAhPSBOVUxMX0hBTkRMRVIpDQotICAgICAgICB7DQotICAgICAgICAgICAgaWYoSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFTUl9EQ1BfU0VSUikNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9TT1VSQ0VfRVJST1I7DQotICAgICAgICAgICAgICAgICgqKGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyKSkoSFBETUFfU09VUkNFX0VSUk9SKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgaWYoSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFTUl9EQ1BfREVSUikNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9ERVNUSU5BVElPTl9FUlJPUjsNCi0gICAgICAgICAgICAgICAgKCooZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIpKShIUERNQV9ERVNUSU5BVElPTl9FUlJPUik7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICAgICAgLyogQWJvcnQgdHJhbnNmZXIuICovDQotICAgICAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9DTFIgPSBIUERNQV9FTkFCTEU7DQotICAgICAgICAvKiBDbGVhciBpbnRlcnJ1cHQuICovDQotICAgICAgICBIUERNQV9CSVRCQU5ELT5IUERNQUlDUl9DTFJfWEZSX0lOVFtERVNDMF0gPSBIUERNQV9FTkFCTEU7DQotICAgIH0NCi0gICAgDQotICAgIC8qDQotICAgICAqIEhhbmRsZSBub24gd29yZCBhbGlnbmVkIGVycm9ycy4NCi0gICAgICovDQotICAgIGVycm9yX2JpdHMgPSBIUERNQS0+SFBETUFFRFJfUkVHICYgSFBETUFFRFJfTk9OX1dPUkRfRVJSX01BU0s7DQotICAgIGlmKGVycm9yX2JpdHMgIT0gMHUpDQotICAgIHsNCi0gICAgICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9XT1JEX0FMSUdOX0VSUk9SOw0KLSAgICAgICAgLyogQ2FsbCBoYW5kbGVyLiAqLw0KLSAgICAgICAgaWYoZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIgIT0gTlVMTF9IQU5ETEVSKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgICgqKGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyKSkoSFBETUFfV09SRF9BTElHTl9FUlJPUik7DQotICAgICAgICB9DQotICAgICAgICAvKiBBYm9ydCB0cmFuc2Zlci4gKi8NCi0gICAgICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX0NMUiA9IEhQRE1BX0VOQUJMRTsNCi0gICAgICAgIC8qIENsZWFyIGludGVycnVwdC4gKi8NCi0gICAgICAgIEhQRE1BX0JJVEJBTkQtPkhQRE1BSUNSX05PTl9XT1JEX0lOVFtERVNDMF0gPSBIUERNQV9FTkFCTEU7DQotICAgIH0NCi19DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfaHBkbWEvbXNzX2hwZG1hLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzZiYzQ0Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfaHBkbWEvbXNzX2hwZG1hLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTAtMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiAgU21hcnRGdXNpb24yIE1TUyBIUERNQSBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlciBwdWJsaWMgQVBJLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTU4MyAkDQotICogU1ZOICREYXRlOiAyMDEzLTA0LTA0IDEyOjI5OjE4ICswMTAwIChUaHUsIDA0IEFwciAyMDEzKSAkDQotICovDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8vKioNCi0gIEBtYWlucGFnZSBTbWFydEZ1c2lvbjIgTVNTIEhQRE1BIEJhcmUgTWV0YWwgRHJpdmVyLg0KLQ0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIGEgSGlnaCBQZXJmb3JtYW5jZQ0KLSAgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKEhQRE1BKSBjb250cm9sbGVyIHdoaWNoIHBlcmZvcm1zIGZhc3QgZGF0YSB0cmFuc2Zlcg0KLSAgYmV0d2VlbiBhbnkgTVNTIG1lbW9yeSBjb25uZWN0ZWQgdG8gdGhlIEFIQiBidXMgbWF0cml4IGFuZCBNU1MgRERSLUJyaWRnZQ0KLSAgbWVtb3J5LiBUaGlzIHNvZnR3YXJlIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZQ0KLSAgTVNTIEhQRE1BIGFzIHBhcnQgb2YgYSBiYXJlIG1ldGFsIHN5c3RlbSB3aGVyZSBubyBvcGVyYXRpbmcgc3lzdGVtIGlzDQotICBhdmFpbGFibGUuIFRoZSBkcml2ZXIgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZSBhcyBwYXJ0IG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0NCi0gIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFkYXB0YXRpb24gbGF5ZXIgYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUNCi0gIG9wZXJhdGluZyBzeXN0ZW0ncyBkcml2ZXIgbW9kZWwgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhlIGRyaXZlci4NCi0gIA0KLSAgQHNlY3Rpb24gaHdfZGVwZW5kZW5jaWVzIEhhcmR3YXJlIEZsb3cgRGVwZW5kZW5jaWVzDQotICBUaGUgY29uZmlndXJhdGlvbiBvZiBhbGwgZmVhdHVyZXMgb2YgdGhlIE1TUyBIUERNQSBpcyBjb3ZlcmVkIGJ5IHRoaXMgZHJpdmVyLg0KLSAgVGhlcmUgYXJlIG5vIGRlcGVuZGVuY2llcyBvbiB0aGUgaGFyZHdhcmUgZmxvdyB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBNU1MgSFBETUEuDQotICBUaGUgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGludGVycnVwdCBudW1iZXIgYXNzaWdubWVudCBmb3IgdGhlDQotICBNU1MgSFBETUEgYmxvY2tzIGFyZSBkZWZpbmVkIGFzIGNvbnN0YW50cyBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91DQotICBtdXN0IGVuc3VyZSB0aGF0IHRoZSBsYXRlc3QgU21hcnRGdXNpb24yIENNU0lTIEhBTCBpcyBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdA0KLSAgc2V0dGluZ3Mgb2YgdGhlIHNvZnR3YXJlIHRvb2wgY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3QgYW5kIHRoYXQgaXQgaXMNCi0gIGdlbmVyYXRlZCBpbnRvIHlvdXIgcHJvamVjdC4NCi0gIA0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gIFRoZSBNU1MgSFBETUEgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoNCi0gICAgLSBJbml0aWFsaXphdGlvbiBvZiB0aGUgTVNTIEhQRE1BIGRyaXZlciBhbmQgaGFyZHdhcmUNCi0gICAgLSBEYXRhIHRyYW5zZmVyIGNvbnRyb2wgDQotICAgIC0gRGF0YSB0cmFuc2ZlciBzdGF0dXMNCi0gICAgLSBJbnRlcnJ1cHQgaGFuZGxpbmcNCi0gICAgDQotICBJbml0aWFsaXphdGlvbg0KLSAgVGhlIE1TUyBIUERNQSBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBhIGNhbGwgdG8gdGhlIE1TU19IUERNQV9pbml0KCkNCi0gIGZ1bmN0aW9uLiBUaGUgTVNTX0hQRE1BX2luaXQoKSBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIE1TUw0KLSAgSFBETUEgZHJpdmVyIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLg0KLSAgDQotICBEYXRhIFRyYW5zZmVyIENvbnRyb2wNCi0gIFRoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udHJvbCBIUERNQSBkYXRhIHRyYW5zZmVyczoNCi0gICAgLSBNU1NfSFBETUFfc3RhcnQoKSAgliBUaGlzIGZ1bmN0aW9uIHN0YXJ0cyBhIEhQRE1BIGRhdGEgdHJhbnNmZXIuIFlvdSBtdXN0DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgYWxvbmcNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRyYW5zZmVyIHNpemUgYW5kIHRyYW5zZmVyIGRpcmVjdGlvbi4NCi0gICAgLSBNU1NfSFBETUFfcGF1c2UoKSAgliBUaGlzIGZ1bmN0aW9uIHBhdXNlcyB0aGUgSFBETUEgdHJhbnNmZXIgdGhhdCBpcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4NCi0gICAgLSBNU1NfSFBETUFfcmVzdW1lKCkgliBUaGlzIGZ1bmN0aW9uIHJlc3VtZXMgYSBIUERNQSB0cmFuc2ZlciB0aGF0IHdhcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgcGF1c2VkLg0KLSAgICAtIE1TU19IUERNQV9hYm9ydCgpICCWIFRoaXMgZnVuY3Rpb24gYWJvcnRzIHRoZSBIUERNQSB0cmFuc2ZlciB0aGF0IGlzDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGluIHByb2dyZXNzLg0KLSAgICANCi0gIERhdGEgVHJhbnNmZXIgU3RhdHVzDQotICBUaGUgc3RhdHVzIG9mIHRoZSBIUERNQSB0cmFuc2ZlciBpbml0aWF0ZWQgYnkgdGhlIGxhc3QgY2FsbCB0bw0KLSAgTVNTX0hQRE1BX3N0YXJ0KCkgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUgTVNTX0hQRE1BX2dldF90cmFuc2Zlcl9zdGF0dXMoKQ0KLSAgZnVuY3Rpb24uDQotICANCi0gIEludGVycnVwdCBIYW5kbGluZw0KLSAgVGhlIE1TU19IUERNQV9zZXRfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSBoYW5kbGVyIGZ1bmN0aW9uDQotICB0aGF0IHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiB0aGUgSFBETUEgdHJhbnNmZXIgY29tcGxldGVzLiBZb3UgbXVzdA0KLSAgY3JlYXRlIGFuZCByZWdpc3RlciBhIHRyYW5zZmVyIGNvbXBsZXRpb24gaGFuZGxlciBmdW5jdGlvbiB0byBzdWl0IHlvdXINCi0gIGFwcGxpY2F0aW9uLg0KLQ0KLSAqLy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotI2lmbmRlZiBNU1NfSFBETUFfSF8NCi0jZGVmaW5lIE1TU19IUERNQV9IXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBIUERNQV9UT19ERFIgY29uc3RhbnQgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbi4gSXQNCi0gIGluZGljYXRlcyBhIHRyYW5zZmVyIGZyb20gbWVtb3J5IGNvbm5lY3RlZCB0byB0aGUgQUhCIGJ1cyBtYXRyaXggdG8gTVNTDQotICBERFItQnJpZGdlIG1lbW9yeS4gSXQgaXMgdXNlZCBhcyBhIHBhcmFtZXRlciBieSB0aGUgTVNTX0hQRE1BX3N0YXJ0KCkNCi0gIGZ1bmN0aW9uLg0KLSAqLw0KLSNkZWZpbmUgSFBETUFfVE9fRERSICAgICAgICAwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgSFBETUFfRlJPTV9ERFIgY29uc3RhbnQgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbi4gSXQNCi0gIGluZGljYXRlcyBhIHRyYW5zdGVyIGZyb20gTVNTIEREUi1CcmlkZ2UgbWVtb3J5IHRvIG1lbW9yeSBjb25uZWN0ZWQgdG8gdGhlIEFIQg0KLSAgYnVzIG1hdHJpeC4gSXQgaXMgdXNlZCBhcyBhIHBhcmFtZXRlciBieSB0aGUgTVNTX0hQRE1BX3N0YXJ0KCkgZnVuY3Rpb24uDQotICovDQotI2RlZmluZSBIUERNQV9GUk9NX0REUiAgICAgIDF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBocGRtYV9zdGF0dXNfdCB0eXBlIGlzIHVzZWQgdG8gY29tbXVuaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgSFBETUENCi0gIHRyYW5zZmVyIGluaXRpYXRlZCBieSB0aGUgbW9zdCByZWNlbnQgY2FsbCB0byBIUERNQV9zdGFydCgpLiBJdCBpbmRpY2F0ZXMgaWYNCi0gIGEgdHJhbnNmZXIgaXMgc3RpbGwgY3VycmVudGx5IGluIHByb2dyZXNzIG9yIHRoZSBvdXRjb21lIG9mIHRoZSBsYXRlc3QNCi0gIHRyYW5zZmVyLiBUaGlzIHR5cGUgaXMgcmV0dXJuZWQgYnkgdGhlIE1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzKCkNCi0gIGZ1bmN0aW9uIGFuZCB1c2VkIGFzIHBhcmFtZXRlciB0byBoYW5kbGVyIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHdpdGggdGhlIE1TUw0KLSAgSFBETUEgZHJpdmVyIGJ5IHRoZSBhcHBsaWNhdGlvbi4NCi0gIA0KLSAgLSBIUERNQV9JTl9QUk9HUkVTUyAgICAgICAtIEEgSFBETUEgdHJhbnNmZXIgaXMgdGFraW5nIHBsYWNlLg0KLSAgLSBIUERNQV9DT01QTEVURUQgICAgICAgICAtIFRoZSBtb3N0IHJlY2VudCBIUERNQSB0cmFuc2ZlciBpbml0aWF0ZWQgYnkgYSBjYWxsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gSFBETUFfc3RhcnQoKSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCi0gIC0gSFBETUFfU09VUkNFX0VSUk9SICAgICAgLSBUaGUgbW9zdCByZWNlbnQgSFBETUEgdHJhbnNmZXIgZmFpbGVkIGJlY2F1c2Ugb2YgYQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW0gd2l0aCB0aGUgc291cmNlIGFkZHJlc3MgcGFzc2VkIHRvDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFBETUFfc3RhcnQoKS4NCi0gIC0gSFBETUFfREVTVElOQVRJT05fRVJST1IgLSBUaGUgbW9zdCByZWNlbnQgSFBETUEgdHJhbnNmZXIgZmFpbGVkIGJlY2F1c2Ugb2YgYQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW0gd2l0aCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBwYXNzZWQgdG8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIUERNQV9zdGFydCgpLg0KLSAgLSBIUERNQV9XT1JEX0FMSUdOX0VSUk9SICAtIFRoZSBtb3N0IHJlY2VudCBIUERNQSB0cmFuc2ZlciBmYWlsZWQgYmVjYXVzZSB0aGUNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBzaXplIHdhcyBub3Qgd29yZCBhbGlnbmVkLiBUaGlzIG1lYW5zDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgdHJhbnNmZXIgc2l6ZSBwYXNzZWQgdG8gSFBETUFfc3RhcnQoKSB3YXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYSBtdWx0aXBsZSBvZiBmb3VyLg0KLSAqLw0KLXR5cGVkZWYgZW51bQ0KLXsNCi0gICAgSFBETUFfSU5fUFJPR1JFU1MsDQotICAgIEhQRE1BX0NPTVBMRVRFRCwNCi0gICAgSFBETUFfU09VUkNFX0VSUk9SLA0KLSAgICBIUERNQV9ERVNUSU5BVElPTl9FUlJPUiwNCi0gICAgSFBETUFfV09SRF9BTElHTl9FUlJPUg0KLX0gaHBkbWFfc3RhdHVzX3Q7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoaXMgdHlwZSBkZWZpbml0aW9uIHNwZWNpZmllcyB0aGUgcHJvdG90eXBlIG9mIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUNCi0gIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGRyaXZlciBhcyBhIEhQRE1BIHRyYW5zZmVyIGNvbXBsZXRpb24gaGFuZGxlciBmdW5jdGlvbg0KLSAgdGhyb3VnaCBhIGNhbGwgdG8gTVNTX0hQRE1BX3NldF9oYW5kbGVyKCkuIFRoZSBIUERNQSB0cmFuc2ZlciBjb21wbGV0aW9uDQotICBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBhIEhQRE1BIHRyYW5zZmVyIGNvbXBsZXRlcy4gVGhlIE1TUw0KLSAgSFBETUEgZHJpdmVyIHBhc3NlcyB0aGUgb3V0Y29tZSBvZiB0aGUgdHJhbnNmZXIgdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpbg0KLSAgdGhlIGZvcm0gb2YgYSBocGRtYV9zdGF0dXNfdCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBpZiB0aGUgdHJhbnNmZXIgd2FzDQotICBzdWNjZXNzZnVsIG9yIHRoZSB0eXBlIG9mIGVycm9yIHRoYXQgb2NjdXJyZWQgZHVyaW5nIHRoZSB0cmFuc2Zlci4NCi0gKi8NCi10eXBlZGVmIHZvaWQgKCptc3NfaHBkbWFfaGFuZGxlcl90KShocGRtYV9zdGF0dXNfdCBzdGF0dXMpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0hQRE1BX2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgTVNTIEhQRE1BIGRyaXZlci4gSXQgcmVzZXRzIHRoZQ0KLSAgSFBETUEgY29udHJvbGxlci4gSXQgY2xlYXJzIGFsbCBwZW5kaW5nIEhQRE1BIGludGVycnVwdHMuIEl0IGluaXRpYWxpemVzDQotICBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgdXNlZCBieSB0aGUgTVNTIEhQRE1BIGRyaXZlci4gSXQgZGlzYWJsZXMgaW50ZXJydXB0cw0KLSAgcmVsYXRlZCB0byBIUERNQSBkYXRhIHRyYW5zZmVycy4NCi0NCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfaW5pdA0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfSFBETUFfc3RhcnQoKSBmdW5jdGlvbiBzdGFydHMgYSBIUERNQSBkYXRhIHRyYW5zZmVyLiBJdHMgcGFyYW1ldGVycw0KLSAgc3BlY2lmeSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgb2YgdGhlIHRyYW5zZmVyIGFzIHdlbGwgYXMgaXRzDQotICBzaXplIGFuZCBkaXJlY3Rpb24uIEhQRE1BIGRhdGEgdHJhbnNmZXJzIGFsd2F5cyB1c2UgRERSIG1lbW9yeSBhcyB0aGUgc291cmNlDQotICBvciBkZXN0aW5hdGlvbiBvZiB0aGUgdHJhbnNmZXIuIFRoZSBIUERNQSBjb250cm9sbGVyIHRyYW5zZmVycyBkYXRhIGluIDMyLWJpdA0KLSAgY2h1bmtzIGxvY2F0ZWQgb24gMzItYml0IHdvcmQgYWxpZ25lZCBhZGRyZXNzIGJvdW5kYXJpZXMuDQotDQotICBAcGFyYW0gc3JjX2FkZHINCi0gICAgVGhlIHBhcmFtZXRlciBzcmNfYWRkciBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0YSB0aGF0IHdpbGwgYmUgdHJhbnNmZXJyZWQNCi0gICAgYnkgdGhlIEhQRE1BLiBUaGlzIGFkZHJlc3MgbXVzdCBiZSAzMi1iaXQgd29yZCBhbGlnbmVkLiBUaGUgbWVtb3J5IGxvY2F0aW9uDQotICAgIHNwZWNpZmllZCBieSB0aGlzIGFkZHJlc3MgbXVzdCBiZSBsb2NhdGVkIGluIEREUiBtZW1vcnkgaWYgdGhlIHRyYW5zZmVyX2Rpcg0KLSAgICBwYXJhbWV0ZXIgaXMgc2V0IHRvIEhQRE1fRlJPTV9ERFIuDQotDQotICBAcGFyYW0gZGVzdF9hZGRyDQotICAgIFRoZSBwYXJhbWV0ZXIgZGVzdF9hZGRyIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBsb2NhdGlvbiBhdCB3aGljaCB0aGUgZGF0YQ0KLSAgICB3aWxsIGJlIHRyYW5zZmVycmVkLiBUaGlzIGFkZHJlc3MgbXVzdCBiZSAzMi1iaXQgd29yZCBhbGlnbmVkLiBUaGUgbWVtb3J5DQotICAgIGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGlzIGFkZHJlc3MgbXVzdCBiZSBsb2NhdGVkIGluIEREUiBtZW1vcnkgaWYgdGhlDQotICAgIHRyYW5zZmVyX2RpciBwYXJhbWV0ZXIgaXMgc2V0IHRvIEhQRE1fVE9fRERSLg0KLQ0KLSAgQHBhcmFtIHRyYW5zZmVyX3NpemUNCi0gICAgVGhlIHBhcmFtZXRlciB0cmFuc2Zlcl9zaXplIHNwZWNpZmllcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgcmVxdWVzdGVkDQotICAgIHRyYW5zZmVyLiBUaGUgdmFsdWUgb2YgdHJhbnNmZXJfc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgZm91ci4NCi0NCi0gIEBwYXJhbSB0cmFuc2Zlcl9kaXINCi0gICAgIFRoZSBwYXJhbWV0ZXIgdHJhbnNmZXJfZGlyIGlzIHVzZWQgZm9yIHNwZWNpZnlpbmcgdGhlIGRhdGEgdHJhbnNmZXINCi0gICAgIGRpcmVjdGlvbi4gQWxsb3dlZCB2YWx1ZXMgZm9yIHRyYW5zZmVyX2RpciBhcmUgYXMgZm9sbG93czoNCi0gICAgICAgIC0gSFBETUFfVE9fRERSDQotICAgICAgICAtIEhQRE1BX0ZST01fRERSDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZA0KLU1TU19IUERNQV9zdGFydA0KLSgNCi0gICAgdWludDMyX3Qgc3JjX2FkZHIsDQotICAgIHVpbnQzMl90IGRlc3RfYWRkciwNCi0gICAgdWludDMyX3QgdHJhbnNmZXJfc2l6ZSwNCi0gICAgdWludDhfdCB0cmFuc2Zlcl9kaXINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0hQRE1BX3BhdXNlKCkgZnVuY3Rpb24gcGF1c2VzIHRoZSBjdXJyZW50IEhQRE1BIHRyYW5zZmVyLiBUaGUgSFBETUENCi0gIHRyYW5zZmVyIGNhbiBiZSByZXN1bWVkIGxhdGVyICBieSBjYWxsaW5nIE1TU19IUERNQV9yZXN1bWUoKS4NCi0NCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBwYXJhbWV0ZXJzLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX3BhdXNlDQotKA0KLSAgICB2b2lkDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19IUERNQV9wYXVzZSgpIGZ1bmN0aW9uIHJlc3VtZXMgdGhlIGN1cnJlbnQgSFBETUEgdHJhbnNmZXIgYWZ0ZXIgaXQgd2FzDQotICBwcmV2aW91c2x5IHBhdXNlZCB0aHJvdWdoIGEgY2FsbCB0byBNU1NfSFBETUFfcGF1c2UoKS4NCi0NCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBwYXJhbWV0ZXJzLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX3Jlc3VtZQ0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfSFBETUFfYWJvcnQoKSBmdW5jdGlvbiBhYm9ydHMgdGhlIGN1cnJlbnQgSFBETUEgdHJhbnNmZXIuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiBoYXMgbm8gcGFyYW1ldGVycy4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZA0KLU1TU19IUERNQV9hYm9ydA0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gVGhlIE1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSBIUERNQQ0KLSB0cmFuc2ZlciBpbml0aWF0ZWQgYnkgYSBjYWxsIHRvIE1TU19IUERNQV9zdGFydCgpLiANCi0NCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBwYXJhbWV0ZXJzLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSBIUERNQQ0KLSAgICB0cmFuc2ZlciBhcyBhIHZhbHVlIG9mICB0eXBlIGhwZG1hX3N0YXR1c190LiBUaGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBhcmU6DQotICAgICAgICAtIEhQRE1BX0lOX1BST0dSRVNTDQotICAgICAgICAtIEhQRE1BX0NPTVBMRVRFRA0KLSAgICAgICAgLSBIUERNQV9TT1VSQ0VfRVJST1INCi0gICAgICAgIC0gSFBETUFfREVTVElOQVRJT05fRVJST1INCi0gICAgICAgIC0gSFBETUFfV09SRF9BTElHTl9FUlJPUg0KLSAgICAgIA0KLSAgVGhlIGV4YW1wbGUgY29kZSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiB0aGUNCi0gIE1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzKCkgZnVuY3Rpb24gdG8gZGV0ZWN0IHRoZSBjb21wbGV0aW9uIG9mIHRoZQ0KLSAgdHJhbnNmZXIgb2YgdGhlIGNvbnRlbnQgb2YgZU5WTSBpbnRvIE1ERFIgbWVtb3J5Lg0KLSAgQGNvZGUNCi0gICAgdm9pZCBjb3B5X2Vudm1fdG9fbWRkcih2b2lkKQ0KLSAgICB7DQotICAgICAgICBNU1NfSFBETUFfc3RhcnQoRU5WTV9CQVNFX0FERFIsDQotICAgICAgICAgICAgICAgICAgICAgICAgTUREUl9CQVNFX0FERFIsDQotICAgICAgICAgICAgICAgICAgICAgICAgRU5WTV9TSVpFX0JZVEUsDQotICAgICAgICAgICAgICAgICAgICAgICAgSFBETUFfVE9fRERSKTsNCi0gICAgICAgIA0KLSAgICAgICAgZG8gew0KLSAgICAgICAgICAgIHhmZXJfc3RhdGUgPSBNU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cygpOw0KLSAgICAgICAgfSB3aGlsZShIUERNQV9JTl9QUk9HUkVTUyA9PSB4ZmVyX3N0YXRlKTsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi1ocGRtYV9zdGF0dXNfdA0KLU1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzDQotKA0KLSAgICB2b2lkDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19IUERNQV9zZXRfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSBoYW5kbGVyIGZ1bmN0aW9uDQotICB0aGF0IHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiB0aGUgSFBETUEgdHJhbnNmZXIgY29tcGxldGVzLiBZb3UgbXVzdA0KLSAgY3JlYXRlIGFuZCByZWdpc3RlciBhIHRyYW5zZmVyIGNvbXBsZXRpb24gaGFuZGxlciBmdW5jdGlvbiB0byBzdWl0IHlvdXINCi0gIGFwcGxpY2F0aW9uLiBUaGUgTVNTIEhQRE1BIGRyaXZlciBwYXNzZXMgdGhlIG91dGNvbWUgb2YgdGhlIHRyYW5zZmVyIHRvIHRoZQ0KLSAgY29tcGxldGlvbiBoYW5kbGVyIGluIHRoZSBmb3JtIG9mIGEgaHBkbWFfc3RhdHVzX3QgcGFyYW1ldGVyIGluZGljYXRpbmcgaWYgdGhlDQotICB0cmFuc2ZlciB3YXMgc3VjY2Vzc2Z1bCBvciB0aGUgdHlwZSBvZiBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgdHJhbnNmZXINCi0gIGlmIHRoZSB0cmFuc2ZlciBmYWlsZWQuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgaGFuZGxlciBmdW5jdGlvbiBwcm92aWRlZCBieSB5b3VyDQotICAgIGFwcGxpY2F0aW9uLiBUaGlzIGhhbmRsZXIgaXMgb2YgdHlwZSBtc3NfaHBkbWFfaGFuZGxlcl90LiBUaGUgaGFuZGxlcg0KLSAgICBmdW5jdGlvbiBtdXN0IHRha2Ugb25lIHBhcmFtZXRlciBvZiB0eXBlIGhwZG1hX3N0YXR1c190IGFuZCBtdXN0IG5vdCByZXR1cm4NCi0gICAgYSB2YWx1ZS4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gICAgDQotICBUaGlzIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiB0aGUgTVNTX0hQRE1BX3NldF9oYW5kbGVyKCkNCi0gIGZ1bmN0aW9uOg0KLSAgQGNvZGUNCi0gICAgdm9pZCB0cmFuc2Zlcl9jb21wbGV0ZV9oYW5kbGVyKGhwZG1hX3N0YXR1c190IHN0YXR1cyk7DQotDQotICAgIHZvbGF0aWxlIHVpbnQzMl90IGdfeGZlcl9pbl9wcm9ncmVzcyA9IDA7DQotDQotICAgIHZvaWQgZGVtb190cmFuc2Zlcih2b2lkKQ0KLSAgICB7DQotICAgICAgICBNU1NfSFBETUFfaW5pdCgpOw0KLSAgICAgICAgDQotICAgICAgICBNU1NfSFBETUFfc2V0X2hhbmRsZXIodHJhbnNmZXJfY29tcGxldGVfaGFuZGxlcik7DQotICAgICAgICANCi0gICAgICAgIGdfeGZlcl9pbl9wcm9ncmVzcyA9IDE7DQotICAgICAgICBNU1NfSFBETUFfc3RhcnQoKHVpbnQzMl90KTB4MjAwMDAwMDAsDQotICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KTB4MDAwMDAwMDAsDQotICAgICAgICAgICAgICAgICAgICAgICAgMjAsDQotICAgICAgICAgICAgICAgICAgICAgICAgSFBETUFfRlJPTV9ERFIpOw0KLSAgICAgICAgDQotICAgICAgICB3aGlsZShnX3hmZXJfaW5fcHJvZ3Jlc3MpDQotICAgICAgICB7DQotICAgICAgICAgICAgOw0KLSAgICAgICAgfQ0KLSAgICB9DQotDQotICAgIHZvaWQgdHJhbnNmZXJfY29tcGxldGVfaGFuZGxlcihocGRtYV9zdGF0dXNfdCBzdGF0dXMpDQotICAgIHsNCi0gICAgICAgIGdfeGZlcl9pbl9wcm9ncmVzcyA9IDA7DQotICAgICAgICANCi0gICAgICAgIHN3aXRjaChzdGF0dXMpDQotICAgICAgICB7DQotICAgICAgICAgICAgY2FzZSBIUERNQV9DT01QTEVURUQ6DQotICAgICAgICAgICAgICAgIGRpc3BsYXkoIlRyYW5zZmVyIGNvbXBsZXRlIik7DQotICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBIUERNQV9TT1VSQ0VfRVJST1I6DQotICAgICAgICAgICAgICAgIGRpc3BsYXkoIlRyYW5zZmVyIGZhaWxlZDogc291cmNlIGVycm9yIik7DQotICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBIUERNQV9ERVNUSU5BVElPTl9FUlJPUjoNCi0gICAgICAgICAgICAgICAgZGlzcGxheSgiVHJhbnNmZXIgZmFpbGVkOiBkZXN0aW5hdGlvbiBlcnJvciIpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgSFBETUFfV09SRF9BTElHTl9FUlJPUjoNCi0gICAgICAgICAgICAgICAgZGlzcGxheSgiVHJhbnNmZXIgZmFpbGVkOiB3b3JkIGFsaWdubWVudCBlcnJvciIpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgICAgIGRpc3BsYXkoIlVuZXhwZWN0ZWQgc3RhdHVzIik7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotICAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19IUERNQV9zZXRfaGFuZGxlcg0KLSgNCi0gICAgbXNzX2hwZG1hX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIE1TU19IUERNQV9IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfbnZtL21zc19udm0uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfbnZtL21zc19udm0uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJhNjU3MS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2OTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTEtMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFRoaXMgc291cmNlIGZpbGUgY29udGFpbnMgU21hcnRGdXNpb24yIGVOVk0gZHJpdmVyIGNvZGUuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MzE2ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjQgMTI6MzM6MTUgKzAwMDAgKFN1biwgMjQgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL21zc19hc3NlcnQuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvc3lzdGVtX20yc3h4eC5oIg0KLSNpbmNsdWRlICJtc3NfbnZtLmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIFByZXByb2Nlc3NvciBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogICAgIGVOVk0gY29tbWFuZCBjb2RlcyAgICAgICAqLw0KLSNkZWZpbmUgUFJPR19BRFMgICAgICAgMHgwODAwMDAwMHUgIC8qIE9uZSBzaG90IHByb2dyYW0gd2l0aCBkYXRhIGluIFdEICovDQotI2RlZmluZSBWRVJJRllfQURTICAgICAweDEwMDAwMDAwdSAgLyogT25lIHNob3QgdmVyaWZpY2F0aW9uIHdpdGggZGF0YSBpbiBXRCAqLw0KLSNkZWZpbmUgVVNFUl9VTkxPQ0sgICAgMHgxMzAwMDAwMHUgIC8qIFVzZXIgdW5sb2NrICovDQotDQotI2RlZmluZSBCSVRTX1BFUl9QQUdFICAxMDI0dSAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgYml0cyBwZXIgcGFnZSAqLw0KLSNkZWZpbmUgQllURVNfUEVSX1BBR0UgKEJJVFNfUEVSX1BBR0UgLyA4dSkgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHBlciBwYWdlICovDQotDQotI2RlZmluZSBOVk1fT0ZGU0VUX1NJR05JRklDQU5UX0JJVFMgICAgIDB4MDAwN0ZGRkZ1DQotI2RlZmluZSBOVk0xX0JPVFRPTV9PRkZTRVQgICAgICAgICAgICAgIDB4MDAwNDAwMDB1DQotI2RlZmluZSBOVk0xX1RPUF9PRkZTRVQgICAgICAgICAgICAgICAgIDB4MDAwN0ZGRkZ1DQotDQotI2RlZmluZSBOVk1fQkFTRV9BRERSRVNTICAgICAgICAgICAgICAgIDB4NjAwMDAwMDB1DQotDQotI2RlZmluZSBQQUdFX0FERFJfTUFTSyAgICAgICAgICAgICAgICAgIDB4RkZGRkZGODB1DQotDQotI2RlZmluZSBCTE9DSzFfRklSU1RfV09SRF9PRkZTRVQgICAgICAgIDB4MDAwMTAwMDB1DQotDQotI2RlZmluZSBXRF9XT1JEX1NJWkUgICAgICAgIDMydQ0KLQ0KLSNkZWZpbmUgTkJfT0ZfQllURVNfSU5fQV9XT1JEICAgICAgICAgICA0dQ0KLQ0KLSNkZWZpbmUgV1JJVEVfRVJST1JfTUFTSyAgICAoTVNTX05WTV9WRVJJRllfRkFJTCB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19OVk1fRVZFUklGWV9GQUlMIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX05WTV9XVkVSSUZZX0ZBSUwgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfTlZNX1BFRkFJTF9MT0NLIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX05WTV9XUkNOVF9PVkVSIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX05WTV9XUl9ERU5JRUQpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBDb21iaW5lZCBzdGF0dXMgZGVmaW5pdGlvbnMNCi0gKiBCZWxvdyBkZWZpbml0aW9ucyBzaG91bGQgYmUgdXNlZCB0byBkZWNvZGVkIHRoZSBiaXQgZW5jb2RlZCBzdGF0dXMgcmV0dXJuZWQgDQotICogYnkgdGhlIGZ1bmN0aW9uIE1TU19OVk1fZ2V0X3N0YXR1cygpLg0KLSAqLw0KLSNkZWZpbmUgTVNTX05WTV9CVVNZX0IgICAgICAgICAgICAgICgxdSkgICAgICAgIC8qIE5WTSBpcyBwZXJmb3JtaW5nIGFuIGludGVybmFsIG9wZXJhdGlvbiAqLw0KLSNkZWZpbmUgTVNTX05WTV9WRVJJRllfRkFJTCAgICAgICAgICgodWludDMyX3QpMSA8PCAxdSkgICAgIC8qIE5WTSB2ZXJpZnkgb3BlcmF0aW9uIGZhaWxlZCAqLw0KLSNkZWZpbmUgTVNTX05WTV9FVkVSSUZZX0ZBSUwgICAgICAgICgodWludDMyX3QpMSA8PCAydSkgICAgIC8qIE5WTSBlcmFzZSB2ZXJpZnkgb3BlcmF0aW9uIGZhaWxlZCAqLw0KLSNkZWZpbmUgTVNTX05WTV9XVkVSSUZZX0ZBSUwgICAgICAgICgodWludDMyX3QpMSA8PCAzdSkgICAgIC8qIE5WTSB3cml0ZSB2ZXJpZnkgb3BlcmF0aW9uIGZhaWxlZCAqLw0KLSNkZWZpbmUgTVNTX05WTV9QRUZBSUxfTE9DSyAgICAgICAgICgodWludDMyX3QpMSA8PCA0dSkgICAgIC8qIE5WTSBwcm9ncmFtIC8gZXJhc2Ugb3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gcGFnZSBsb2NrICovDQotI2RlZmluZSBNU1NfTlZNX1dSQ05UX09WRVIgICAgICAgICAgKCh1aW50MzJfdCkxIDw8IDV1KSAgICAgLyogTlZNIHdyaXRlIGNvdW50IG92ZXJmbG93ZWQgKi8NCi0jZGVmaW5lIE1TU19OVk1fV1JfREVOSUVEICAgICAgICAgICAoKHVpbnQzMl90KTEgPDwgMTh1KSAgICAvKiBOVk0gd3JpdGUgaXMgZGVuaWVkIGR1ZSB0byBwcm90ZWN0aW9uICovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiANCi0gKi8NCi0jZGVmaW5lIE5WTV9CTE9DS18wICAgICAwdQ0KLSNkZWZpbmUgTlZNX0JMT0NLXzEgICAgIDF1DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiANCi0gKi8NCi0jZGVmaW5lIE1BWF81MTJLX09GRlNFVCAgICAgMHgwMDA4MDAwMHUNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogR2xvYmFsIGRhdGEgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogTG9vay11cCB0YWJsZSBmb3IgTlZNIGJsb2Nrcy4NCi0gKi8NCi1zdGF0aWMgTlZNX1R5cGVEZWYgKiBjb25zdCBnX252bVtdID0gDQotew0KLSAgICBFTlZNXzEgLA0KLSAgICBFTlZNXzINCi19Ow0KLQ0KLXN0YXRpYyBOVk0zMl9UeXBlRGVmICogY29uc3QgZ19udm0zMltdID0NCi17DQotICAgIChOVk0zMl9UeXBlRGVmICopRU5WTTFfQkFTRSAsDQotICAgIChOVk0zMl9UeXBlRGVmICopRU5WTTJfQkFTRQ0KLX07DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIFByaXZhdGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIG52bV9zdGF0dXNfdCByZXF1ZXN0X252bV9hY2Nlc3MNCi0oDQotICAgIHVpbnQzMl90IG52bV9ibG9ja19pZA0KLSk7DQotDQotc3RhdGljIG52bV9zdGF0dXNfdCBnZXRfY3RybF9hY2Nlc3MNCi0oDQotICAgIHVpbnQzMl90IG52bV9vZmZzZXQsDQotICAgIHVpbnQzMl90ICBsZW5ndGgNCi0pOw0KLQ0KLXN0YXRpYyB2b2lkIHJlbGVhc2VfY3RybF9hY2Nlc3Modm9pZCk7DQotDQotc3RhdGljIHVpbnQzMl90IGdldF9yZW1haW5pbmdfcGFnZV9sZW5ndGgNCi0oDQotICAgIHVpbnQzMl90IG9mZnNldCwNCi0gICAgdWludDMyX3QgIGxlbmd0aA0KLSk7DQotDQotc3RhdGljIHZvaWQgZmlsbF93ZF9idWZmZXINCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGEsDQotICAgIHVpbnQzMl90ICBsZW5ndGgsDQotICAgIHVpbnQzMl90IGJsb2NrLA0KLSAgICB1aW50MzJfdCBvZmZzZXQNCi0pOw0KLQ0KLXN0YXRpYyB1aW50MzJfdCANCi13cml0ZV9udm0NCi0oDQotICAgIHVpbnQzMl90IGFkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwaWRhdGEsDQotICAgIHVpbnQzMl90ICBsZW5ndGgsDQotICAgIHVpbnQzMl90ICBsb2NrX3BhZ2UsDQotICAgIHVpbnQzMl90ICogcF9zdGF0dXMNCi0pOw0KLQ0KLXN0YXRpYyB1aW50MzJfdCANCi13YWl0X252bV9yZWFkeQ0KLSgNCi0gICAgdWludDMyX3QgYmxvY2sNCi0pOw0KLQ0KLXN0YXRpYyBudm1fc3RhdHVzX3QgZ2V0X2Vycm9yX2NvZGUodWludDMyX3QgbnZtX2h3X3N0YXR1cyk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIFB1YmxpYyBmdW5jdGlvbiBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfbnZtLmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLW52bV9zdGF0dXNfdCANCi1OVk1fd3JpdGUNCi0oDQotICAgIHVpbnQzMl90IHN0YXJ0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwaWRhdGEsDQotICAgIHVpbnQzMl90ICBsZW5ndGgsDQotICAgIHVpbnQzMl90ICBsb2NrX3BhZ2UNCi0pDQotew0KLSAgICBudm1fc3RhdHVzX3Qgc3RhdHVzOw0KLSAgICB1aW50MzJfdCBudm1fb2Zmc2V0Ow0KLSAgICB1aW50MzJfdCBkZXZpY2VfdmVyc2lvbjsNCi0gICAgDQotICAgIC8qDQotICAgICAqIFByZXZlbnQgcGFnZXMgYmVpbmcgbG9ja2VkIGZvciBzaWxpY29uIHZlcnNpb25zIHdoaWNoIGRvIG5vdCBhbGxvdw0KLSAgICAgKiBsb2NrZWQgcGFnZXMgdG8gYmUgdW5sb2NrZWQuDQotICAgICAqLw0KLSAgICBkZXZpY2VfdmVyc2lvbiA9IFNZU1JFRy0+REVWSUNFX1ZFUlNJT047DQotICAgIGlmKCgweDAwMDBGODAydSA9PSBkZXZpY2VfdmVyc2lvbikgfHwgKDB4MDAwMUY4MDJ1ID09IGRldmljZV92ZXJzaW9uKSkNCi0gICAgew0KLSAgICAgICAgbG9ja19wYWdlID0gTlZNX0RPX05PVF9MT0NLX1BBR0U7DQotICAgIH0NCi0gICAgDQotICAgIC8qIElnbm9yZSB1cHBlciBhZGRyZXNzIGJpdHMgdG8gaWdub3JlIHJlbWFwcGluZyBzZXR0aW5nLiAqLw0KLSAgICBudm1fb2Zmc2V0ID0gc3RhcnRfYWRkciAmIE5WTV9PRkZTRVRfU0lHTklGSUNBTlRfQklUUzsgIC8qIElnbm9yZSByZW1hcHBpbmcuICovDQotICAgIA0KLSAgICAvKiBDaGVjayBhZ2FpbnN0IGF0dGVtcHQgdG8gd3JpdGUgZGF0YSBsYXJnZXIgdGhhbiBlTlZNLiAqLw0KLSAgICBBU1NFUlQoKG52bV9vZmZzZXQgKyBsZW5ndGgpIDwgTUFYXzUxMktfT0ZGU0VUKTsNCi0gICAgaWYoKG52bV9vZmZzZXQgKyBsZW5ndGgpIDwgTUFYXzUxMktfT0ZGU0VUKQ0KLSAgICB7DQotICAgICAgICAvKiBHYWluIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gZU5WTSBjb250cm9sbGVyICovDQotICAgICAgICBzdGF0dXMgPSBnZXRfY3RybF9hY2Nlc3MobnZtX29mZnNldCwgbGVuZ3RoKTsNCi0NCi0gICAgICAgIC8qIFdyaXRlIGVOVk0gb25lIHBhZ2UgYXQgYSB0aW1lLiAqLw0KLSAgICAgICAgaWYoTlZNX1NVQ0NFU1MgPT0gc3RhdHVzKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHVpbnQzMl90IHJlbWFpbmluZ19sZW5ndGggPSBsZW5ndGg7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgd2hpbGUoKHJlbWFpbmluZ19sZW5ndGggPiAwdSkgJiYgKE5WTV9TVUNDRVNTID09IHN0YXR1cykpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGhfd3JpdHRlbjsNCi0gICAgICAgICAgICAgICAgdWludDMyX3QgbnZtX2h3X3N0YXR1cyA9IDB1Ow0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgbGVuZ3RoX3dyaXR0ZW4gPSB3cml0ZV9udm0oc3RhcnRfYWRkciArIChsZW5ndGggLSByZW1haW5pbmdfbGVuZ3RoKSwgDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWRhdGFbbGVuZ3RoIC0gcmVtYWluaW5nX2xlbmd0aF0sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ19sZW5ndGgsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tfcGFnZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm52bV9od19zdGF0dXMpOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgaWYoMHUgPT0gbGVuZ3RoX3dyaXR0ZW4pDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGdldF9lcnJvcl9jb2RlKG52bV9od19zdGF0dXMpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UgaWYocmVtYWluaW5nX2xlbmd0aCA+IGxlbmd0aF93cml0dGVuKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdfbGVuZ3RoIC09IGxlbmd0aF93cml0dGVuOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IDB1Ow0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIC8qIFJlbGVhc2UgZU5WTSBjb250cm9sbGVycyBzbyB0aGF0IG90aGVyIG1hc3RlcnMgY2FuIGdhaW4gYWNjZXNzIHRvIGl0LiAqLw0KLSAgICAgICAgICAgIHJlbGVhc2VfY3RybF9hY2Nlc3MoKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE5WTV9JTlZBTElEX1BBUkFNRVRFUjsNCi0gICAgfQ0KLQ0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBHZW5lcmF0ZSBlcnJvciBjb2RlIGJhc2VkIG9uIE5WTSBzdGF0dXMgdmFsdWUuDQotICANCi0gIFRoZSBoYXJkd2FyZSBudm0gc3RhdHVzIHBhc3NlZCBhcyBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUgbWFza2VkIHVzaW5nIHRoZQ0KLSAgZm9sbG93aW5nIG1hc2s6DQotICAgICAgICAgICAgICAgIChNU1NfTlZNX1ZFUklGWV9GQUlMIHwgXA0KLSAgICAgICAgICAgICAgICAgTVNTX05WTV9FVkVSSUZZX0ZBSUwgfCBcDQotICAgICAgICAgICAgICAgICBNU1NfTlZNX1dWRVJJRllfRkFJTCB8IFwNCi0gICAgICAgICAgICAgICAgIE1TU19OVk1fUEVGQUlMX0xPQ0sgfCBcDQotICAgICAgICAgICAgICAgICBNU1NfTlZNX1dSQ05UX09WRVIgfCBcDQotICAgICAgICAgICAgICAgICBNU1NfTlZNX1dSX0RFTklFRCkNCi0gIA0KLSAqLw0KLXN0YXRpYyBudm1fc3RhdHVzX3QgZ2V0X2Vycm9yX2NvZGUodWludDMyX3QgbnZtX2h3X3N0YXR1cykNCi17DQotICAgIG52bV9zdGF0dXNfdCBzdGF0dXM7DQotICAgIGlmKG52bV9od19zdGF0dXMgJiBNU1NfTlZNX1dSX0RFTklFRCkNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTlZNX1BST1RFQ1RJT05fRVJST1I7DQotICAgIH0NCi0gICAgZWxzZSBpZihudm1faHdfc3RhdHVzICYgTVNTX05WTV9XUkNOVF9PVkVSKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBOVk1fV1JJVEVfVEhSRVNIT0xEX0VSUk9SOw0KLSAgICB9DQotICAgIGVsc2UgaWYobnZtX2h3X3N0YXR1cyAmIE1TU19OVk1fUEVGQUlMX0xPQ0spDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE5WTV9QQUdFX0xPQ0tfRVJST1I7DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBOVk1fVkVSSUZZX0ZBSUxVUkU7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX252bS5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi1udm1fc3RhdHVzX3QNCi1OVk1fdW5sb2NrDQotKA0KLSAgICB1aW50MzJfdCBzdGFydF9hZGRyLA0KLSAgICB1aW50MzJfdCBsZW5ndGgNCi0pDQotew0KLSAgICBudm1fc3RhdHVzX3Qgc3RhdHVzOw0KLSAgICB1aW50MzJfdCBudm1fb2Zmc2V0Ow0KLSAgICB1aW50MzJfdCBmaXJzdF9wYWdlOw0KLSAgICB1aW50MzJfdCBsYXN0X3BhZ2U7DQotICAgIHVpbnQzMl90IGN1cnJlbnRfcGFnZTsNCi0gICAgdWludDMyX3QgY3VycmVudF9vZmZzZXQ7DQotICAgIA0KLSAgICAvKiBJZ25vcmUgdXBwZXIgYWRkcmVzcyBiaXRzIHRvIGlnbm9yZSByZW1hcHBpbmcgc2V0dGluZy4gKi8NCi0gICAgbnZtX29mZnNldCA9IHN0YXJ0X2FkZHIgJiBOVk1fT0ZGU0VUX1NJR05JRklDQU5UX0JJVFM7ICAvKiBJZ25vcmUgcmVtYXBwaW5nLiAqLw0KLSAgICANCi0gICAgLyogQ2hlY2sgYWdhaW5zdCBhdHRlbXB0IHRvIHdyaXRlIGRhdGEgbGFyZ2VyIHRoYW4gZU5WTS4gKi8NCi0gICAgQVNTRVJUKChudm1fb2Zmc2V0ICsgbGVuZ3RoKSA8IE1BWF81MTJLX09GRlNFVCk7DQotICAgIGlmKChudm1fb2Zmc2V0ICsgbGVuZ3RoKSA8IE1BWF81MTJLX09GRlNFVCkNCi0gICAgew0KLSAgICAgICAgY3VycmVudF9vZmZzZXQgPSBudm1fb2Zmc2V0Ow0KLSAgICAgICAgDQotICAgICAgICBmaXJzdF9wYWdlID0gbnZtX29mZnNldCAvIEJZVEVTX1BFUl9QQUdFOw0KLSAgICAgICAgbGFzdF9wYWdlID0gKG52bV9vZmZzZXQgKyBsZW5ndGgpIC8gQllURVNfUEVSX1BBR0U7DQotDQotICAgICAgICAvKiBHYWluIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gZU5WTSBjb250cm9sbGVyICovDQotICAgICAgICBzdGF0dXMgPSBnZXRfY3RybF9hY2Nlc3MobnZtX29mZnNldCwgbGVuZ3RoKTsNCi0NCi0gICAgICAgIC8qIFVubG9jayBlTlZNIG9uZSBwYWdlIGF0IGEgdGltZS4gKi8NCi0gICAgICAgIGlmKE5WTV9TVUNDRVNTID09IHN0YXR1cykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1aW50MzJfdCBibG9jazsNCi0gICAgICAgICAgICB1aW50MzJfdCBpbmM7DQotICAgICAgICAgICAgdWludDMyX3QgZmlyc3Rfd29yZDsNCi0gICAgICAgICAgICB1aW50MzJfdCB3b3JkX29mZnNldDsNCi0gICAgICAgICAgICB1aW50MzJfdCAqIHBfbnZtMzI7DQotICAgICAgICAgICAgdWludDMyX3QgZXJyb3JzOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIHBfbnZtMzIgPSAodWludDMyX3QgKilOVk1fQkFTRV9BRERSRVNTOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGZpcnN0X3dvcmQgPSBudm1fb2Zmc2V0IC8gNHU7DQotICAgICAgICAgICAgd29yZF9vZmZzZXQgPSBmaXJzdF93b3JkOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGZvcihjdXJyZW50X3BhZ2UgPSBmaXJzdF9wYWdlOw0KLSAgICAgICAgICAgICAgICAoY3VycmVudF9wYWdlIDw9IGxhc3RfcGFnZSkgJiYgKE5WTV9TVUNDRVNTID09IHN0YXR1cyk7DQotICAgICAgICAgICAgICAgICsrY3VycmVudF9wYWdlKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDMyX3QgY3RybF9zdGF0dXM7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGlmKHdvcmRfb2Zmc2V0ID49IEJMT0NLMV9GSVJTVF9XT1JEX09GRlNFVCkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBOVk1fQkxPQ0tfMTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gTlZNX0JMT0NLXzA7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGZvcihpbmMgPSAwdTsgaW5jIDwgV0RfV09SRF9TSVpFOyArK2luYykNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZ19udm0zMltibG9ja10tPldEW2luY10gPSBwX252bTMyW3dvcmRfb2Zmc2V0XTsNCi0gICAgICAgICAgICAgICAgICAgICsrd29yZF9vZmZzZXQ7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGdfbnZtW2Jsb2NrXS0+UEFHRV9MT0NLID0gTlZNX0RPX05PVF9MT0NLX1BBR0U7DQotICAgICAgICAgICAgICAgIGdfbnZtW2Jsb2NrXS0+Q01EID0gVVNFUl9VTkxPQ0s7DQotDQotICAgICAgICAgICAgICAgIC8qIElzc3VlIHByb2dyYW0gY29tbWFuZCAqLw0KLSAgICAgICAgICAgICAgICBnX252bVtibG9ja10tPkNNRCA9IFBST0dfQURTIHwgKGN1cnJlbnRfb2Zmc2V0ICYgUEFHRV9BRERSX01BU0spOw0KLSAgICAgICAgICAgICAgICBjdXJyZW50X29mZnNldCArPSBCWVRFU19QRVJfUEFHRTsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIC8qIFdhaXQgZm9yIE5WTSB0byBiZWNvbWUgcmVhZHkuICovDQotICAgICAgICAgICAgICAgIGN0cmxfc3RhdHVzID0gd2FpdF9udm1fcmVhZHkoYmxvY2spOw0KLQ0KLSAgICAgICAgICAgICAgICAvKiBDaGVjayBmb3IgZXJyb3JzLiAqLw0KLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBjdHJsX3N0YXR1cyAmIFdSSVRFX0VSUk9SX01BU0s7DQotICAgICAgICAgICAgICAgIGlmKGVycm9ycykNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnZtX2h3X3N0YXR1czsNCi0gICAgICAgICAgICAgICAgICAgIG52bV9od19zdGF0dXMgPSBnX252bVtibG9ja10tPlNUQVRVUzsNCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGdldF9lcnJvcl9jb2RlKG52bV9od19zdGF0dXMpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIC8qIFJlbGVhc2UgZU5WTSBjb250cm9sbGVycyBzbyB0aGF0IG90aGVyIG1hc3RlcnMgY2FuIGdhaW4gYWNjZXNzIHRvIGl0LiAqLw0KLSAgICAgICAgICAgIHJlbGVhc2VfY3RybF9hY2Nlc3MoKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE5WTV9JTlZBTElEX1BBUkFNRVRFUjsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIFByaXZhdGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi0jZGVmaW5lIEFDQ0VTU19SRVFVRVNUX1RJTUVPVVQgICAgICAweDAwODAwMDAwdQ0KLSNkZWZpbmUgUkVRVUVTVF9OVk1fQUNDRVNTICAgICAgICAgIDB4MDF1DQotI2RlZmluZSBDT1JURVhfTTNfQUNDRVNTX0dSQU5URUQgICAgMHgwNXUNCi0NCi1zdGF0aWMgdWludDhfdCBnX2Vudm1fY3RybF9sb2NrcyA9IDB4MDB1Ow0KLQ0KLXN0YXRpYyBudm1fc3RhdHVzX3QNCi1yZXF1ZXN0X252bV9hY2Nlc3MNCi0oDQotICAgIHVpbnQzMl90IG52bV9ibG9ja19pZA0KLSkNCi17DQotICAgIG52bV9zdGF0dXNfdCBzdGF0dXMgPSBOVk1fU1VDQ0VTUzsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgdGltZW91dF9jb3VudGVyOw0KLSAgICB1aW50MzJfdCBhY2Nlc3M7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBVc2UgdGhlIFN5c3RlbUNvcmVDbG9jayBmcmVxdWVuY3kgdG8gY29tcHV0ZSBhIGRlbGF5IGNvdW50ZXIgdmFsdWUgZ2l2aW5nDQotICAgICAqIHVzIGEgZGVsYXkgaW4gdGhlIDUwMG1zIHJhbmdlLiBUaGlzIGlzIGEgdmVyeSBhcHByb3hpbWF0ZSBkZWxheS4NCi0gICAgICovDQotICAgIHRpbWVvdXRfY291bnRlciA9IFN5c3RlbUNvcmVDbG9jayAvIDE2dTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEdhaW4gYWNjZXNzIHRvIGVOVk0gY29udHJvbGxlci4NCi0gICAgICovDQotICAgIGRvIHsNCi0gICAgICAgIGdfbnZtW252bV9ibG9ja19pZF0tPlJFUV9BQ0NFU1MgPSBSRVFVRVNUX05WTV9BQ0NFU1M7DQotICAgICAgICBhY2Nlc3MgPSBnX252bVtudm1fYmxvY2tfaWRdLT5SRVFfQUNDRVNTOw0KLSAgICAgICAgaWYoYWNjZXNzICE9IENPUlRFWF9NM19BQ0NFU1NfR1JBTlRFRCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAqIFRpbWUgb3V0IGlmIGFub3RoZXIgQUhCIG1hc3RlciBsb2NrZWQgYWNjZXNzIHRvIGVOVk0gdG8gcHJldmVudA0KLSAgICAgICAgICAgICAqIHRoZSBDb3J0ZXgtTTMgZnJvbSBsb2NraW5nIHVwIG9uIGVOVk0gd3JpdGUgaWYgc29tZSBvdGhlciBwYXJ0DQotICAgICAgICAgICAgICogb2YgdGhlIHN5c3RlbSBmYWlscyBmcm9tIHJlbGVhc2luZyB0aGUgZU5WTS4NCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAtLXRpbWVvdXRfY291bnRlcjsNCi0gICAgICAgICAgICBpZigwdSA9PSB0aW1lb3V0X2NvdW50ZXIpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBOVk1fSU5fVVNFX0JZX09USEVSX01BU1RFUjsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0gd2hpbGUoKGFjY2VzcyAhPSBDT1JURVhfTTNfQUNDRVNTX0dSQU5URUQpICYmIChOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpKTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIE1hcmsgY29udHJvbGxlciBhcyBsb2NrZWQgaWYgc3VjY2Vzc2Z1bCBzbyB0aGF0IGl0IHdpbGwgYmUgdW5sb2NrZWQgYnkgYQ0KLSAgICAgKiBjYWxsIHRvIHJlbGVhc2VfY3RybF9hY2Nlc3MuDQotICAgICAqLw0KLSAgICBpZihOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpDQotICAgIHsNCi0gICAgICAgIGdfZW52bV9jdHJsX2xvY2tzIHw9ICh1aW50OF90KSgodWludDMyX3QpMHgwMSA8PCBudm1fYmxvY2tfaWQpOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotc3RhdGljIG52bV9zdGF0dXNfdA0KLWdldF9jdHJsX2FjY2Vzcw0KLSgNCi0gICAgdWludDMyX3QgbnZtX29mZnNldCwNCi0gICAgdWludDMyX3QgIGxlbmd0aA0KLSkNCi17DQotICAgIG52bV9zdGF0dXNfdCBhY2Nlc3NfcmVxX3N0YXR1czsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEdhaW4gYWNjZXNzIHRvIGVOVk0gY29udHJvbGxlcihzKS4NCi0gICAgICovDQotICAgIGlmKG52bV9vZmZzZXQgPCBOVk0xX0JPVFRPTV9PRkZTRVQpDQotICAgIHsNCi0gICAgICAgIGFjY2Vzc19yZXFfc3RhdHVzID0gcmVxdWVzdF9udm1fYWNjZXNzKE5WTV9CTE9DS18wKTsNCi0gICAgICAgIGlmKE5WTV9TVUNDRVNTID09IGFjY2Vzc19yZXFfc3RhdHVzKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHVpbnQzMl90IGxhc3Rfb2Zmc2V0Ow0KLSAgICAgICAgICAgIGxhc3Rfb2Zmc2V0ID0gbnZtX29mZnNldCArIGxlbmd0aDsNCi0gICAgICAgICAgICBpZihsYXN0X29mZnNldCA+PSBOVk0xX0JPVFRPTV9PRkZTRVQpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBhY2Nlc3NfcmVxX3N0YXR1cyA9IHJlcXVlc3RfbnZtX2FjY2VzcyhOVk1fQkxPQ0tfMSk7DQotICAgICAgICAgICAgICAgIGlmKE5WTV9JTl9VU0VfQllfT1RIRVJfTUFTVEVSID09IGFjY2Vzc19yZXFfc3RhdHVzKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICByZWxlYXNlX2N0cmxfYWNjZXNzKCk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBhY2Nlc3NfcmVxX3N0YXR1cyA9IHJlcXVlc3RfbnZtX2FjY2VzcyhOVk1fQkxPQ0tfMSk7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBhY2Nlc3NfcmVxX3N0YXR1czsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFJlbGVhc2UgYWNjZXNzIHRvIGVOVk0gY29udHJvbGxlcnMuDQotICovDQotI2RlZmluZSBOVk1fQkxPQ0tfMF9MT0NLX01BU0sgICAweDAxdQ0KLSNkZWZpbmUgTlZNX0JMT0NLXzFfTE9DS19NQVNLICAgMHgwMnUNCi0NCi1zdGF0aWMgdm9pZCByZWxlYXNlX2N0cmxfYWNjZXNzKHZvaWQpDQotew0KLSAgICB1aW50OF90IGJsb2NrX2xvY2tlZDsNCi0gICAgDQotICAgIGJsb2NrX2xvY2tlZCA9IGdfZW52bV9jdHJsX2xvY2tzICYgTlZNX0JMT0NLXzBfTE9DS19NQVNLOw0KLSAgICBpZihibG9ja19sb2NrZWQpDQotICAgIHsNCi0gICAgICAgIGdfbnZtW05WTV9CTE9DS18wXS0+UkVRX0FDQ0VTUyA9IDB4MDB1Ow0KLSAgICAgICAgZ19lbnZtX2N0cmxfbG9ja3MgJj0gfk5WTV9CTE9DS18wX0xPQ0tfTUFTSzsNCi0gICAgfQ0KLSAgICANCi0gICAgYmxvY2tfbG9ja2VkID0gZ19lbnZtX2N0cmxfbG9ja3MgJiBOVk1fQkxPQ0tfMV9MT0NLX01BU0s7DQotICAgIGlmKGJsb2NrX2xvY2tlZCkNCi0gICAgew0KLSAgICAgICAgZ19udm1bTlZNX0JMT0NLXzFdLT5SRVFfQUNDRVNTID0gMHgwMHU7DQotICAgICAgICBnX2Vudm1fY3RybF9sb2NrcyAmPSB+TlZNX0JMT0NLXzFfTE9DS19NQVNLOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi1zdGF0aWMgdWludDMyX3Qgd2FpdF9udm1fcmVhZHkodWludDMyX3QgYmxvY2spIA0KLXsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgY3RybF9zdGF0dXM7DQotICAgIHVpbnQzMl90IGN0cmxfcmVhZHk7DQotICAgIHVpbnQzMl90IGluYzsNCi0gICAgDQotICAgIC8qDQotICAgICAqIFdhaXQgZm9yIE5WTSB0byBiZWNvbWUgcmVhZHkuDQotICAgICAqIFdlIG11c3QgZW5zdXJlIHRoYXQgd2UgY2FuIHJlYWQgdGhlIHJlYWR5IGJpdCBzZXQgdG8gMSB0d2ljZSBiZWZvcmUgd2UNCi0gICAgICogY2FuIGFzc3VtZSB0aGF0IHRoZSBvdGhlciBzdGF0dXMgYml0cyBhcmUgdmFsaWQuIFNlZSBTbWFydEZ1c2lvbjIgZXJyYXRhLg0KLSAgICAgKi8NCi0gICAgZm9yKGluYyA9IDB1OyBpbmMgPCAydTsgKytpbmMpDQotICAgIHsNCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICBjdHJsX3N0YXR1cyA9IGdfbnZtW2Jsb2NrXS0+U1RBVFVTOw0KLSAgICAgICAgICAgIGN0cmxfcmVhZHkgPSBjdHJsX3N0YXR1cyAgJiBNU1NfTlZNX0JVU1lfQjsNCi0gICAgICAgIH0gd2hpbGUoMHUgPT0gY3RybF9yZWFkeSk7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBjdHJsX3N0YXR1czsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgV3JpdGUgYXMgbXVjaCBkYXRhIGFzIHdpbGwgZml0IGludG8gdGhlIGVOVk0gcGFnZSBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KLSAgYWRkcmVzcyAiYWRkciIgcGFzc2VkIGFzIHBhcmFtZXRlci4gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpbnRvDQotICB0aGUgcGFnZS4NCi0gIEluIGNhc2Ugb2YgZXJyb3IsIHJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZU5WTSBjb250cm9sbGVyIHN0YXR1cyByZWdpc3Rlcg0KLSAgaW50byB0aGUgMzItYml0IHdvcmQgcG9pbnRlZCB0byBieSBwX3N0YXR1cy4NCi0gKi8NCi1zdGF0aWMgdWludDMyX3QgDQotd3JpdGVfbnZtDQotKA0KLSAgICB1aW50MzJfdCBhZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogcGlkYXRhLA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoLA0KLSAgICB1aW50MzJfdCAgbG9ja19wYWdlLA0KLSAgICB1aW50MzJfdCAqIHBfc3RhdHVzDQotKQ0KLXsNCi0gICAgdWludDMyX3QgbGVuZ3RoX3dyaXR0ZW47DQotICAgIHVpbnQzMl90IG9mZnNldDsNCi0gICAgDQotICAgICpwX3N0YXR1cyA9IDB1Ow0KLSAgICANCi0gICAgb2Zmc2V0ID0gYWRkciAmIE5WTV9PRkZTRVRfU0lHTklGSUNBTlRfQklUUzsgIC8qIElnbm9yZSByZW1hcHBpbmcuICovDQotDQotICAgIEFTU0VSVChvZmZzZXQgPD0gTlZNMV9UT1BfT0ZGU0VUKTsNCi0gICAgDQotICAgIC8qIEFkanVzdCBsZW5ndGggdG8gZml0IHdpdGhpbiBvbmUgcGFnZS4gKi8NCi0gICAgbGVuZ3RoX3dyaXR0ZW4gPSBnZXRfcmVtYWluaW5nX3BhZ2VfbGVuZ3RoKG9mZnNldCwgbGVuZ3RoKTsNCi0gICAgDQotICAgIGlmKG9mZnNldCA8PSBOVk0xX1RPUF9PRkZTRVQpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90IGJsb2NrOw0KLSAgICAgICAgdm9sYXRpbGUgdWludDMyX3QgY3RybF9zdGF0dXM7DQotICAgICAgICB1aW50MzJfdCBlcnJvcnM7DQotICAgICAgICANCi0gICAgICAgIGlmKG9mZnNldCA8IE5WTTFfQk9UVE9NX09GRlNFVCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBibG9jayA9IE5WTV9CTE9DS18wOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGJsb2NrID0gTlZNX0JMT0NLXzE7DQotICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IC0gTlZNMV9CT1RUT01fT0ZGU0VUOw0KLSAgICAgICAgfQ0KLSAgICAgICAgDQotICAgICAgICBmaWxsX3dkX2J1ZmZlcihwaWRhdGEsIGxlbmd0aF93cml0dGVuLCBibG9jaywgb2Zmc2V0KTsNCi0NCi0gICAgICAgIC8qIFNldCByZXF1ZXN0ZWQgbG9ja2luZyBvcHRpb24uICovDQotICAgICAgICBnX252bVtibG9ja10tPlBBR0VfTE9DSyA9IGxvY2tfcGFnZTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogSXNzdWUgcHJvZ3JhbSBjb21tYW5kICovDQotICAgICAgICBnX252bVtibG9ja10tPkNNRCA9IFBST0dfQURTIHwgKG9mZnNldCAmIFBBR0VfQUREUl9NQVNLKTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogV2FpdCBmb3IgTlZNIHRvIGJlY29tZSByZWFkeS4gKi8NCi0gICAgICAgIGN0cmxfc3RhdHVzID0gd2FpdF9udm1fcmVhZHkoYmxvY2spOw0KLQ0KLSAgICAgICAgLyogQ2hlY2sgZm9yIGVycm9ycy4gKi8NCi0gICAgICAgIGVycm9ycyA9IGN0cmxfc3RhdHVzICYgV1JJVEVfRVJST1JfTUFTSzsNCi0gICAgICAgIGlmKGVycm9ycykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBTaWduYWwgdGhhdCBhbiBlcnJvciBvY2N1cmVkIGJ5IHJldHVybmluZyAwIGEgYSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gKi8NCi0gICAgICAgICAgICBsZW5ndGhfd3JpdHRlbiA9IDB1Ow0KLSAgICAgICAgICAgICpwX3N0YXR1cyA9IGdfbnZtW2Jsb2NrXS0+U1RBVFVTOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIFBlcmZvcm0gYSB2ZXJpZnkuICovDQotICAgICAgICAgICAgZ19udm1bYmxvY2tdLT5DTUQgPSBWRVJJRllfQURTIHwgKG9mZnNldCAmIFBBR0VfQUREUl9NQVNLKTsNCi0gICAgICAgICAgICAvKiBXYWl0IGZvciBOVk0gdG8gYmVjb21lIHJlYWR5LiAqLw0KLSAgICAgICAgICAgIGN0cmxfc3RhdHVzID0gd2FpdF9udm1fcmVhZHkoYmxvY2spOw0KLQ0KLSAgICAgICAgICAgIC8qIENoZWNrIGZvciBlcnJvcnMuICovDQotICAgICAgICAgICAgZXJyb3JzID0gY3RybF9zdGF0dXMgJiBXUklURV9FUlJPUl9NQVNLOw0KLSAgICAgICAgICAgIGlmKGVycm9ycykNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8qIFNpZ25hbCB0aGF0IGFuIGVycm9yIG9jY3VyZWQgYnkgcmV0dXJuaW5nIDAgYSBhIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAqLw0KLSAgICAgICAgICAgICAgICBsZW5ndGhfd3JpdHRlbiA9IDB1Ow0KLSAgICAgICAgICAgICAgICAqcF9zdGF0dXMgPSBnX252bVtibG9ja10tPlNUQVRVUzsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBsZW5ndGhfd3JpdHRlbjsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGJldHdlZW4gdGhlIG9mZnNldCBsb2NhdGlvbiBhbmQgdGhlIGVuZCBvZiB0aGUgcGFnZQ0KLSAgY29udGFpbmluZyB0aGUgZmlyc3Qgb2Zmc2V0IGxvY2F0aW9uLiBUaGlzIHRlbGxzIHVzIGhvdyBtYW55IGFjdHVhbCBieXRlcyBjYW4NCi0gIGJlIHByb2dyYW1tZWQgd2l0aCBhIHNpbmdsZSBQcm9ncmFtQURTIGNvbW1hbmQuDQotICBUaGlzIGFsc28gdGVsbHMgdXMgaWYgd2UgYXJlIHByb2dyYW1taW5nIGEgZnVsbCBwYWdlLiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzDQotICBlcXVhbCB0byBCWVRFU19QRVJfUEFHRSB0aGVuIHdlIHdpbGwgYmUgcHJhZ3JhbW1pbmcgYW4gZW50aXJlIE5WTSBwYWdlLg0KLSAgQWx0ZXJuYXRpdmVseSwgdGhpcyBmdW5jdGlvbiByZXR1cm5pbmcgYSB2YWx1ZSBvdGhlciB0aGFuIEJZVEVTX1BFUl9QQUdFDQotICBpbmRpY2F0ZXMgdGhhdCB0aGUgV0RbXSBidWZmZXIgd2lsbCBoYXZlIHRvIGJlIHNlZWRlZCB3aXRoIHRoZSBleGlzdGluZw0KLSAgY29udGVudCBvZiB0aGUgZU5WTSBiZWZvcmUgY29weWluZyB0aGUgZGF0YSB0byBwcm9ncmFtIHRvIGVOVk0gaW50byB0aGUgV0RbXQ0KLSAgYnVmZmVyLg0KLSAqLw0KLXN0YXRpYyB1aW50MzJfdCBnZXRfcmVtYWluaW5nX3BhZ2VfbGVuZ3RoDQotKA0KLSAgICB1aW50MzJfdCBvZmZzZXQsDQotICAgIHVpbnQzMl90ICBsZW5ndGgNCi0pDQotew0KLSAgICB1aW50MzJfdCBzdGFydF9wYWdlX3BsdXNfb25lOw0KLSAgICB1aW50MzJfdCBsYXN0X3BhZ2U7DQotICAgIA0KLSAgICBzdGFydF9wYWdlX3BsdXNfb25lID0gKG9mZnNldCAvIEJZVEVTX1BFUl9QQUdFKSArIDF1Ow0KLSAgICBsYXN0X3BhZ2UgPSAob2Zmc2V0ICsgbGVuZ3RoKSAvIEJZVEVTX1BFUl9QQUdFOw0KLSAgICBpZihsYXN0X3BhZ2UgPj0gc3RhcnRfcGFnZV9wbHVzX29uZSkNCi0gICAgew0KLSAgICAgICAgbGVuZ3RoID0gQllURVNfUEVSX1BBR0UgLSAob2Zmc2V0ICUgQllURVNfUEVSX1BBR0UpOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gbGVuZ3RoOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotc3RhdGljIHZvaWQgZmlsbF93ZF9idWZmZXINCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGEsDQotICAgIHVpbnQzMl90ICBsZW5ndGgsDQotICAgIHVpbnQzMl90IGJsb2NrLA0KLSAgICB1aW50MzJfdCBvZmZzZXQNCi0pDQotew0KLSAgICB1aW50MzJfdCBpbmM7DQotICAgIHVpbnQzMl90IHdkX29mZnNldDsNCi0gICAgDQotICAgIGlmKGxlbmd0aCAhPSBCWVRFU19QRVJfUEFHRSkNCi0gICAgew0KLSAgICAgICAgdWludDMyX3QgKiBwX252bTMyOw0KLSAgICAgICAgdWludDMyX3QgbmJfbm9uX3dyaXR0ZW5fd29yZHM7DQotICAgICAgICB1aW50MzJfdCBmaXJzdF9ub25fd3JpdHRlbl93b3JkOw0KLSAgICAgICAgLyogDQotICAgICAgICAgKiBGaWxsIGJlZ2lubmluZyBvZiBXRFtdIHdpdGggY3VycmVudCBjb250ZW50IG9mIE5WTSBwYWdlIHRoYXQgbXVzdCBub3QNCi0gICAgICAgICAqIGJlIG92ZXJ3cml0dGVuLg0KLSAgICAgICAgICovDQotICAgICAgICBwX252bTMyID0gKHVpbnQzMl90ICopKChOVk1fQkFTRV9BRERSRVNTICsgb2Zmc2V0KSAmIFBBR0VfQUREUl9NQVNLKTsNCi0gICAgICAgIG5iX25vbl93cml0dGVuX3dvcmRzID0gKG9mZnNldCAlIEJZVEVTX1BFUl9QQUdFKSAvIE5CX09GX0JZVEVTX0lOX0FfV09SRDsNCi0gICAgICAgIGlmKChvZmZzZXQgJSBOQl9PRl9CWVRFU19JTl9BX1dPUkQpID4gMHUpDQotICAgICAgICB7DQotICAgICAgICAgICAgKytuYl9ub25fd3JpdHRlbl93b3JkczsNCi0gICAgICAgIH0NCi0gICAgICAgIGZvcihpbmMgPSAwdTsgKGluYyA8IFdEX1dPUkRfU0laRSkgJiYgKGluYyA8IG5iX25vbl93cml0dGVuX3dvcmRzKTsgKytpbmMpDQotICAgICAgICB7DQotICAgICAgICAgICAgZ19udm0zMltibG9ja10tPldEW2luY10gPSBwX252bTMyW2luY107DQotICAgICAgICB9DQotICAgICAgICANCi0gICAgICAgIC8qDQotICAgICAgICAgKiBGaWxsIGVuZCBvZiBXRFtdIHdpdGggY3VycmVudCBjb250ZW50IG9mIE5WTSBwYWdlIHRoYXQgbXVzdCBub3QgYmUNCi0gICAgICAgICAqIG92ZXJ3cml0dGVuLg0KLSAgICAgICAgICovDQotICAgICAgICBmaXJzdF9ub25fd3JpdHRlbl93b3JkID0gKChvZmZzZXQgKyBsZW5ndGgpICUgQllURVNfUEVSX1BBR0UpIC8gTkJfT0ZfQllURVNfSU5fQV9XT1JEOw0KLSAgICAgICAgbmJfbm9uX3dyaXR0ZW5fd29yZHMgPSAoQllURVNfUEVSX1BBR0UgLyBOQl9PRl9CWVRFU19JTl9BX1dPUkQpIC0gZmlyc3Rfbm9uX3dyaXR0ZW5fd29yZDsNCi0gICAgICAgIA0KLSAgICAgICAgZm9yKGluYyA9IDB1OyBpbmMgPCBuYl9ub25fd3JpdHRlbl93b3JkczsgKytpbmMpDQotICAgICAgICB7DQotICAgICAgICAgICAgZ19udm0zMltibG9ja10tPldEW2ZpcnN0X25vbl93cml0dGVuX3dvcmQgKyBpbmNdID0gcF9udm0zMltmaXJzdF9ub25fd3JpdHRlbl93b3JkICsgaW5jXTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICANCi0gICAgLyoNCi0gICAgICogRmlsbCBXRFtdIHdpdGggZGF0YSByZXF1ZXN0ZWQgdG8gYmUgd3JpdHRlbiBpbnRvIE5WTS4NCi0gICAgICovDQotICAgIHdkX29mZnNldCA9IG9mZnNldCAlIEJZVEVTX1BFUl9QQUdFOw0KLSAgICBmb3IoaW5jID0gMHU7IGluYyA8IGxlbmd0aDsgKytpbmMpDQotICAgIHsNCi0gICAgICAgIGdfbnZtW2Jsb2NrXS0+V0Rbd2Rfb2Zmc2V0ICsgaW5jXSA9IHBfZGF0YVtpbmNdOw0KLSAgICB9DQotfQ0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRU5EIE9GIEZJTEUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfbnZtL21zc19udm0uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfbnZtL21zc19udm0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk4MTJhYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTEtMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBUaGlzIGZpbGUgY29udGFpbnMgcHVibGljIEFQSXMgZm9yIFNtYXJ0RnVzaW9uMiBlTlZNIHNvZnR3YXJlIGRyaXZlci4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1MzYyICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjYgMjE6Mzc6NTMgKzAwMDAgKFR1ZSwgMjYgTWFyIDIwMTMpICQNCi0gKi8NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgZU5WTSBCYXJlIE1ldGFsIERyaXZlci4NCi0gIA0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIHVwIHRvIHR3byBlbWJlZGRlZA0KLSAgbm9uLXZvbGF0aWxlIG1lbW9yeSAoZU5WTSkgYmxvY2tzLiBFYWNoIG9mIHRoZXNlIGVOVk0gYmxvY2tzIGNhbiBiZSBhIG1heGltdW0NCi0gIHNpemUgb2YgMjU2a0IuIFRoaXMgc29mdHdhcmUgZHJpdmVyIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nDQotICBhbmQgY29udHJvbGxpbmcgdGhlIE1TUyBlTlZNIGFzIHBhcnQgb2YgYSBiYXJlIG1ldGFsIHN5c3RlbSB3aGVyZSBubyBvcGVyYXRpbmcNCi0gIHN5c3RlbSBpcyBhdmFpbGFibGUuIFRoZSBkcml2ZXIgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZSBhcyBwYXJ0IG9mIGFuIG9wZXJhdGluZw0KLSAgc3lzdGVtLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyIGJldHdlZW4gdGhlIGRyaXZlciBhbmQNCi0gIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZHJpdmVyIG1vZGVsIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBkcml2ZXIuDQotICANCi0gIFRoZSBNU1MgZU5WTSBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoNCi0gICAgLSBlTlZNIHdyaXRlIChwcm9ncmFtKSBvcGVyYXRpb25zLg0KLSAgICAtIGVOVk0gcGFnZSB1bmxvY2tpbmcNCi0gIFRoZSBNU1MgZU5WTSBkcml2ZXIgaXMgcHJvdmlkZWQgYXMgQyBzb3VyY2UgY29kZS4NCi0NCi0gIA0KLSAgQHNlY3Rpb24gY29uZmlndXJhdGlvbiBEcml2ZXIgQ29uZmlndXJhdGlvbg0KLSAgVGhlIHNpemUgb2YgdGhlIE1TUyBlTlZNIHZhcmllcyB3aXRoIGRpZmZlcmVudCBTbWFydEZ1c2lvbjIgZGV2aWNlIHR5cGVzLiBZb3UNCi0gIG11c3Qgb25seSB1c2UgdGhpcyBkcml2ZXIgdG8gYWNjZXNzIG1lbW9yeSBsb2NhdGlvbnMgd2l0aGluIHRoZSB2YWxpZCBNU1MgZU5WTQ0KLSAgYWRkcmVzcyBzcGFjZSBmb3IgdGhlIHRhcmdldGVkIGRldmljZS4gVGhlIHNpemUgb2YgdGhlIHZhbGlkIE1TUyBlTlZNIGFkZHJlc3MNCi0gIHNwYWNlIGNvcnJlc3BvbmRzIHRvIHRoZSBzaXplIG9mIHRoZSBNU1MgZU5WTSBpbiB0aGUgZGV2aWNlLiBTb21lIHBhZ2VzIG9mIHRoZQ0KLSAgTVNTIGVOVk0gbWF5IGJlIHdyaXRlIHByb3RlY3RlZCBieSB0aGUgU21hcnRGdXNpb24yIE1TUyBjb25maWd1cmF0b3IgYXMgcGFydA0KLSAgb2YgdGhlIGhhcmR3YXJlIGRlc2lnbiBmbG93LiBUaGUgZHJpdmVyIGNhbm5vdCB1bmxvY2sgb3Igd3JpdGUgdG8gdGhlc2UNCi0gIHByb3RlY3RlZCBwYWdlcy4NCi0gIFRoZSBiYXNlIGFkZHJlc3MsIHJlZ2lzdGVyIGFkZHJlc3NlcyBhbmQgaW50ZXJydXB0IG51bWJlciBhc3NpZ25tZW50IGZvciB0aGUNCi0gIE1TUyBlTlZNIGJsb2NrcyBhcmUgZGVmaW5lZCBhcyBjb25zdGFudHMgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdQ0KLSAgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QNCi0gIHNldHRpbmdzIG9mIHRoZSBzb2Z0d2FyZSB0b29sIGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IGFuZCB0aGF0IGl0IGlzDQotICBnZW5lcmF0ZWQgaW50byB5b3VyIHByb2plY3QuDQotDQotICBAc2VjdGlvbiB0aGVvcnlfb3AgVGhlb3J5IG9mIE9wZXJhdGlvbg0KLSAgVGhlIHRvdGFsIGFtb3VudCBvZiBlTlZNIGF2YWlsYWJsZSBpbiBhIFNtYXJ0RnVzaW9uIGRldmljZSByYW5nZXMgZnJvbSAxMjhrQg0KLSAgdG8gNTEya0IsIHByb3ZpZGVkIGluIG9uZSBvciB0d28gcGh5c2ljYWwgZU5WTSBibG9ja3MuIFRoZSBlTlZNIGJsb2NrcyBhcmUNCi0gIGRpdmlkZWQgaW50byBwYWdlcywgd2l0aCBlYWNoIHBhZ2UgaG9sZGluZyAxMjggYnl0ZXMgb2YgZGF0YS4gVGhlIE1TUyBlTlZNDQotICBkcml2ZXIgdHJlYXRzIHRoZSBlbnRpcmUgZU5WTSBhcyBhIGNvbnRpZ3VvdXMgbWVtb3J5IHNwYWNlLiBJdCBwcm92aWRlcyB3cml0ZQ0KLSAgYWNjZXNzIHRvIGFsbCBwYWdlcyB0aGF0IGFyZSBpbiB0aGUgdmFsaWQgZU5WTSBhZGRyZXNzIHJhbmdlIGZvciB0aGUNCi0gIFNtYXJ0RnVzaW9uIGRldmljZSBhbmQgdGhhdCBhcmUgbm90IHdyaXRlLXByb3RlY3RlZC4gVGhlIGRyaXZlciBpbXBvc2VzIG5vDQotICByZXN0cmljdGlvbnMgb24gd3JpdGluZyBkYXRhIGFjcm9zcyBlTlZNIGJsb2NrIG9yIHBhZ2UgYm91bmRhcmllcy4gVGhlIGRyaXZlcg0KLSAgc3VwcG9ydHMgcmFuZG9tIGFjY2VzcyB3cml0ZXMgdG8gdGhlIGVOVk0gbWVtb3J5LiANCi0NCi0gKi8vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLSNpZm5kZWYgX19NU1NfTlZNX0gNCi0jZGVmaW5lIF9fTVNTX05WTV9IDQotDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogUHVibGljIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogUGFnZSBMb2NraW5nIGNvbnN0YW50czoNCi0gKi8NCi0vKg0KLSAqIEluZGljYXRlcyB0aGF0IHRoZSBOVk1fd3JpdGUoKSBmdW5jdGlvbiBzaG91bGQgbm90IGxvY2sgdGhlIGFkZHJlc3NlZCBwYWdlcw0KLSAqIGFmdGVyIHByb2dyYW1taW5nIHRoZSBkYXRhLg0KLSAqLw0KLSNkZWZpbmUgTlZNX0RPX05PVF9MT0NLX1BBR0UgICAgMHUNCi0NCi0vKg0KLSAqIEluZGljYXRlcyB0aGF0IHRoZSBOVk1fd3JpdGUoKSBmdW5jdGlvbiBzaG91bGQgbG9jayB0aGUgYWRkcmVzc2VkIHBhZ2VzIGFmdGVyDQotICogcHJvZ3JhbW1pbmcgdGhlIGRhdGEuDQotICovDQotI2RlZmluZSBOVk1fTE9DS19QQUdFICAgICAgICAgICAxdQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICBUaGUgbnZtX3N0YXR1c190IGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBmcm9tIHRoZQ0KLSAgTlZNX3dyaXRlKCkgYW5kIE5WTV91bmxvY2soKSBmdW5jdGlvbnMuDQotICANCi0gICAgTlZNX1NVQ0NFU1M6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHByb2dyYW1taW5nIHdhcyBzdWNjZXNzZnVsLg0KLSAgICAgICAgDQotICAgIE5WTV9QUk9URUNUSU9OX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIG9mIGENCi0gICAgICBwcm90ZWN0aW9uIGVycm9yLiBUaGlzIGhhcHBlbnMgd2hlbiBhdHRlbXB0aW5nIHRvIHByb2dyYW0gYSBwYWdlIHRoYXQgd2FzDQotICAgICAgc2V0IGFzIHByb3RlY3RlZCBpbiB0aGUgaGFyZHdhcmUgZmxvdy4NCi0gICAgICANCi0gICAgTlZNX1ZFUklGWV9GQUlMVVJFOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IG9uZSBvZiB0aGUgdmVyaWZ5IG9wZXJhdGlvbnMgZmFpbGVkLg0KLSAgICAgIA0KLSAgICBOVk1fUEFHRV9MT0NLX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBvcGVyYXRpb24gY291bGQgbm90IGNvbXBsZXRlIGJlY2F1c2Ugb25lIG9mIHRoZSBwYWdlcw0KLSAgICAgIGlzIGxvY2tlZC4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBwYWdlIHdhcyBsb2NrZWQgZHVyaW5nIGEgcHJldmlvdXMgY2FsbA0KLSAgICAgIHRvIE5WTV93cml0ZSgpIG9yIGlmIHRoZSBwYWdlIHdhcyBsb2NrZWQgaW4gdGhlIGhhcmR3YXJlIGRlc2lnbiBmbG93Lg0KLSAgICAgIA0KLSAgICBOVk1fV1JJVEVfVEhSRVNIT0xEX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBOVk0gbWF4aW11bSBudW1iZXIgb2YgcHJvZ3JhbW1pbmcgY3ljbGVzIGhhcyBiZWVuDQotICAgICAgcmVhY2hlZC4NCi0gICAgICANCi0gICAgTlZNX0lOX1VTRV9CWV9PVEhFUl9NQVNURVI6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgc29tZSBvdGhlciBNU1MgQUhCIEJ1cyBNYXRyaXggbWFzdGVyIGlzIGFjY2Vzc2luZyB0aGUgTlZNLg0KLSAgICAgIFRoaXMgY291bGQgYmUgZHVlIHRvIHRoZSBGUEdBIGxvZ2ljIG9yIHRoZSBzeXN0ZW0gY29udHJvbGxlciBwcm9ncmFtbWluZw0KLSAgICAgIHRoZSBOVk0uDQotICAgICAgDQotICAgIE5WTV9JTlZBTElEX1BBUkFNRVRFUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCBvbmUgb2YgbW9yZSBvZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVycyBoYXMgYW4gaW52YWxpZA0KLSAgICAgIHZhbHVlLiBUaGlzIGlzIHR5cGljYWxseSAgcmV0dXJuZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHdyaXRlIG9yIHVubG9jayBtb3JlDQotICAgICAgZU5WTSB0aGFuIGlzIGF2YWlsYWJsZSBvbiAgdGhlIGRldmljZS4NCi0gKi8NCi10eXBlZGVmIGVudW0gbnZtX3N0YXR1cw0KLXsNCi0gICAgTlZNX1NVQ0NFU1MgPSAwLA0KLSAgICBOVk1fUFJPVEVDVElPTl9FUlJPUiwNCi0gICAgTlZNX1ZFUklGWV9GQUlMVVJFLA0KLSAgICBOVk1fUEFHRV9MT0NLX0VSUk9SLA0KLSAgICBOVk1fV1JJVEVfVEhSRVNIT0xEX0VSUk9SLA0KLSAgICBOVk1fSU5fVVNFX0JZX09USEVSX01BU1RFUiwNCi0gICAgTlZNX0lOVkFMSURfUEFSQU1FVEVSDQotfSBudm1fc3RhdHVzX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQdWJsaWMgdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQdWJsaWMgZnVuY3Rpb24gZGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBOVk1fd3JpdGUoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHByb2dyYW0gKG9yIHdyaXRlKSBkYXRhIGludG8gdGhlIGVOVk0uDQotICBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgdHdvIGVOVk0gYmxvY2tzIGNvbnRpZ3VvdXNseSwgc28gYSB0b3RhbCBvZiA1MTJrQiBvZg0KLSAgbWVtb3J5IGNhbiBiZSBhY2Nlc3NlZCBsaW5lYXJseS4gVGhlIHN0YXJ0IGFkZHJlc3MgYW5kIGVuZCBhZGRyZXNzIG9mIHRoZQ0KLSAgbWVtb3J5IHJhbmdlIHRvIGJlIHByb2dyYW1tZWQgZG8gbm90IG5lZWQgdG8gYmUgcGFnZSBhbGlnbmVkLiBUaGlzIGZ1bmN0aW9uDQotICBzdXBwb3J0cyBwcm9ncmFtbWluZyBvZiBkYXRhIHRoYXQgc3BhbnMgbXVsdGlwbGUgcGFnZXMuIFRoaXMgZnVuY3Rpb24gaXMgYQ0KLSAgYmxvY2tpbmcgZnVuY3Rpb24uDQotICBOb3RlOiBUaGUgTlZNX3dyaXRlKCkgZnVuY3Rpb24gcGVyZm9ybXMgYSB2ZXJpZnkgb3BlcmF0aW9uIG9uIGVhY2ggcGFnZSANCi0gICAgICAgIHByb2dyYW1tZWQgdG8gZW5zdXJlIHRoZSBlTlZNIGlzIHByb2dyYW1tZWQgd2l0aCB0aGUgZXhwZWN0ZWQgZGF0YS4NCi0NCi0gIEBwYXJhbSBzdGFydF9hZGRyDQotICAgIFRoZSBzdGFydF9hZGRyIHBhcmFtZXRlciBpcyB0aGUgYnl0ZSBhbGlnbmVkIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGVOVk0NCi0gICAgYWRkcmVzcyBzcGFjZSwgdG8gd2hpY2ggdGhlIGRhdGEgaXMgdG8gYmUgcHJvZ3JhbW1lZC4NCi0NCi0gIEBwYXJhbSBwaWRhdGENCi0gICAgVGhlIHBpZGF0YSBwYXJhbWV0ZXIgaXMgdGhlIGJ5dGUgYWxpZ25lZCBzdGFydCBhZGRyZXNzIG9mIHRoZSBpbnB1dCBkYXRhLg0KLQ0KLSAgQHBhcmFtIGxlbmd0aA0KLSAgICBUaGUgbGVuZ3RoIHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGRhdGEgdG8gYmUgcHJvZ3JhbW1lZC4NCi0NCi0gIEBwYXJhbSBsb2NrX3BhZ2UNCi0gICAgVGhlIGxvY2tfcGFnZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHBhZ2VzIHRoYXQgYXJlIHByb2dyYW1tZWQNCi0gICAgbXVzdCBiZSBsb2NrZWQgb3Igbm90IG9uY2UgcHJvZ3JhbW1lZC4gTG9ja2luZyB0aGUgcHJvZ3JhbW1lZCBwYWdlcyBwcmV2ZW50cw0KLSAgICB0aGVtIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4gYnkgbWlzdGFrZS4gU3Vic2VxdWVudCBwcm9ncmFtbWluZyBvZiB0aGVzZQ0KLSAgICBwYWdlcyB3aWxsIHJlcXVpcmUgdGhlIHBhZ2VzIHRvIGJlIHVubG9ja2VkIHByaW9yIHRvIGNhbGxpbmcgTlZNX3dyaXRlKCkuDQotICAgIEFsbG93ZWQgdmFsdWVzIGZvciBsb2NrX3BhZ2UgYXJlOg0KLSAgICAgICAgLSBOVk1fRE9fTk9UX0xPQ0tfUEFHRQ0KLSAgICAgICAgLSBOVk1fTE9DS19QQUdFDQotICAgICAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIE5WTV9TVUNDRVNTIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLiANCi0gICAgSXQgcmV0dXJucyBvbmUgb2YgdGhlIGZvbGxvd2luZyBlcnJvciBjb2RlcyBpZiB0aGUgcHJvZ3JhbW1pbmcgb2YgdGhlIGVOVk0NCi0gICAgZmFpbHM6DQotICAgICAgICAtIE5WTV9QUk9URUNUSU9OX0VSUk9SDQotICAgICAgICAtIE5WTV9WRVJJRllfRkFJTFVSRQ0KLSAgICAgICAgLSBOVk1fUEFHRV9MT0NLX0VSUk9SDQotICAgICAgICAtIE5WTV9XUklURV9USFJFU0hPTERfRVJST1INCi0gICAgICAgIC0gTlZNX0lOX1VTRV9CWV9PVEhFUl9NQVNURVINCi0gICAgICAgIC0gTlZNX0lOVkFMSURfUEFSQU1FVEVSDQotICAgICAgICANCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICB1aW50OF90IGlkYXRhWzgxNV0gPSB7IloifTsNCi0gICAgc3RhdHVzID0gTlZNX3dyaXRlKDB4MCwgaWRhdGEsIHNpemVvZihpZGF0YSksIE5WTV9ET19OT1RfTE9DS19QQUdFKTsNCi0gIEBlbmRjb2RlDQotICovDQotbnZtX3N0YXR1c190IA0KLU5WTV93cml0ZQ0KLSgNCi0gICAgdWludDMyX3Qgc3RhcnRfYWRkciwNCi0gICAgY29uc3QgdWludDhfdCAqIHBpZGF0YSwNCi0gICAgdWludDMyX3QgIGxlbmd0aCwNCi0gICAgdWludDMyX3QgIGxvY2tfcGFnZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBOVk1fdW5sb2NrKCkgZnVuY3Rpb24gaXMgdXNlZCB0byB1bmxvY2sgdGhlIGVOVk0gcGFnZXMgZm9yIGEgc3BlY2lmaWVkDQotICByYW5nZSBvZiBlTlZNIGFkZHJlc3NlcyBpbiBwcmVwYXJhdGlvbiBmb3Igd3JpdGluZyBkYXRhIGludG8gdGhlIHVubG9ja2VkDQotICBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb24gdHJlYXRzIHRoZSB0d28gZU5WTSBibG9ja3MgY29udGlndW91c2x5LCBzbyBhIHRvdGFsDQotICBvZiA1MTJrQiBvZiBtZW1vcnkgY2FuIGJlIGFjY2Vzc2VkIGxpbmVhcmx5LiBUaGUgc3RhcnQgYWRkcmVzcyBhbmQgZW5kIGFkZHJlc3MNCi0gIG9mIHRoZSBtZW1vcnkgcmFuZ2UgdG8gYmUgdW5sb2NrZWQgZG8gbm90IG5lZWQgdG8gYmUgcGFnZSBhbGlnbmVkLiBUaGlzDQotICBmdW5jdGlvbiBzdXBwb3J0cyB1bmxvY2tpbmcgb2YgYW4gZU5WTSBhZGRyZXNzIHJhbmdlIHRoYXQgc3BhbnMgbXVsdGlwbGUNCi0gIHBhZ2VzLiBUaGlzIGZ1bmN0aW9uIGlzIGEgYmxvY2tpbmcgZnVuY3Rpb24uDQotDQotICBAcGFyYW0gc3RhcnRfYWRkcg0KLSAgICBUaGUgc3RhcnRfYWRkciBwYXJhbWV0ZXIgaXMgdGhlIGJ5dGUgYWxpZ25lZCBzdGFydCBhZGRyZXNzLCBpbiB0aGUgZU5WTQ0KLSAgICBhZGRyZXNzIHNwYWNlLCBvZiB0aGUgbWVtb3J5IHJhbmdlIHRvIGJlIHVubG9ja2VkLg0KLSAgICANCi0gIEBwYXJhbSBsZW5ndGgNCi0gICAgVGhlIGxlbmd0aCBwYXJhbWV0ZXIgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIG1lbW9yeSByYW5nZSB0byBiZQ0KLSAgICB1bmxvY2tlZC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIE5WTV9TVUNDRVNTIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLiANCi0gICAgSXQgcmV0dXJucyBvbmUgb2YgdGhlIGZvbGxvd2luZyBlcnJvciBjb2RlcyBpZiB0aGUgdW5sb2NraW5nIG9mIHRoZSBlTlZNIGZhaWxzOg0KLSAgICAgICAgLSBOVk1fUFJPVEVDVElPTl9FUlJPUg0KLSAgICAgICAgLSBOVk1fVkVSSUZZX0ZBSUxVUkUNCi0gICAgICAgIC0gTlZNX1BBR0VfTE9DS19FUlJPUg0KLSAgICAgICAgLSBOVk1fV1JJVEVfVEhSRVNIT0xEX0VSUk9SDQotICAgICAgICAtIE5WTV9JTl9VU0VfQllfT1RIRVJfTUFTVEVSDQotICAgICAgICAtIE5WTV9JTlZBTElEX1BBUkFNRVRFUg0KLSAgICAgICAgDQotICBUaGUgZXhhbXBsZSBjb2RlIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgaW50ZW5kZWQgdXNlIG9mIHRoZSBOVk1fdW5sb2NrKCkNCi0gIGZ1bmN0aW9uOg0KLSAgQGNvZGUNCi0gICAgaW50IHByb2dyYW1fbG9ja2VkX252bSh1aW50MzJfdCB0YXJnZXRfYWRkciwgdWludDMyX3QgbGVuZ3RoKQ0KLSAgICB7DQotICAgICAgICBudm1fc3RhdHVzX3Qgc3RhdHVzOw0KLSAgICAgICAgaW50IHN1Y2Nlc3MgPSAwOw0KLSAgICAgICAgDQotICAgICAgICBzdGF0dXMgPSBOVk1fdW5sb2NrKHRhcmdldF9hZGRyLCBsZW5ndGgpOw0KLSAgICAgICAgaWYoTlZNX1NVQ0NFU1MgPT0gc3RhdHVzKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHN0YXR1cyA9IE5WTV93cml0ZSh0YXJnZXRfYWRkciwgYnVmZmVyLCBsZW5ndGgsIE5WTV9MT0NLX1BBR0UpOw0KLSAgICAgICAgICAgIGlmKE5WTV9TVUNDRVNTID09IHN0YXR1cykNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAxOyANCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgICAgICByZXR1cm4gc3VjY2VzczsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi1udm1fc3RhdHVzX3QNCi1OVk1fdW5sb2NrDQotKA0KLSAgICB1aW50MzJfdCBzdGFydF9hZGRyLA0KLSAgICB1aW50MzJfdCBsZW5ndGgNCi0pOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX19NU1NfTlZNX0ggKi8NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3J0Yy9tc3NfcnRjLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3J0Yy9tc3NfcnRjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZjFmMGUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5jCisrKyAvZGV2L251bGwKQEAgLTEsNjY2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU21hcnRGdXNpb24yIE1TUyBSVEMgYmFyZSBtZXRhbCBkcml2ZXIgaW1wbGVtZW50YXRpb24uDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MDkwICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDItMTggMTI6MTM6MzEgKzAwMDAgKE1vbiwgMTggRmViIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSAibXNzX3J0Yy5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotI2luY2x1ZGUgPHN0cmluZy5oPg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIENPTlRST0xfUkVHIHJlZ2lzdGVyIG1hc2tzLg0KLSAqLw0KLSNkZWZpbmUgQ09OVFJPTF9SVU5OSU5HX01BU0sgICAgICAgIDB4MDAwMDAwMDF1DQotDQotI2RlZmluZSBDT05UUk9MX1JUQ19TVEFSVF9NQVNLICAgICAgMHgwMDAwMDAwMXUNCi0jZGVmaW5lIENPTlRST0xfUlRDX1NUT1BfTUFTSyAgICAgICAweDAwMDAwMDAydQ0KLSNkZWZpbmUgQ09OVFJPTF9BTEFSTV9PTl9NQVNLICAgICAgIDB4MDAwMDAwMDR1DQotI2RlZmluZSBDT05UUk9MX0FMQVJNX09GRl9NQVNLICAgICAgMHgwMDAwMDAwOHUNCi0jZGVmaW5lIENPTlRST0xfUkVTRVRfTUFTSyAgICAgICAgICAweDAwMDAwMDEwdQ0KLSNkZWZpbmUgQ09OVFJPTF9VUExPQURfTUFTSyAgICAgICAgIDB4MDAwMDAwMjB1DQotI2RlZmluZSBDT05UUk9MX1dBS0VVUF9DTFJfTUFTSyAgICAgMHgwMDAwMDEwMHUNCi0jZGVmaW5lIENPTlRST0xfVVBEQVRFRF9NQVNLICAgICAgICAweDAwMDAwNDAwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTU9ERV9SRUcgcmVnaXN0ZXIgbWFza3MuDQotICovDQotI2RlZmluZSBNT0RFX0NMS19NT0RFX01BU0sgICAgICAgICAgMHgwMDAwMDAwMXUNCi0jZGVmaW5lIE1PREVfV0FLRVVQX0VOX01BU0sgICAgICAgICAweDAwMDAwMDAydQ0KLSNkZWZpbmUgTU9ERV9XQUtFVVBfUkVTRVRfTUFTSyAgICAgIDB4MDAwMDAwMDR1DQotI2RlZmluZSBNT0RFX1dBS0VVUF9DT05USU5VRV9NQVNLICAgMHgwMDAwMDAwOHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE90aGVyIG1hc2tzLg0KLSAqLw0KLSNkZWZpbmUgTUFYX0JJTkFSWV9ISUdIRVJfQ09VTlQgICAgIDB4N0ZGdQ0KLSNkZWZpbmUgTUFTS18zMl9CSVQgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkZ1DQotI2RlZmluZSBNQVhfUFJFU0NBTEFSX0NPVU5UICAgICAgICAgMHgwM0ZGRkZGRnUNCi0jZGVmaW5lIENBTEVOREFSX1NISUZUICAgICAgICAgICAgICA4dQ0KLQ0KLSNkZWZpbmUgQ09NUEFSRV9BTExfQklUUyAgICAgICAgICAgIDB4RkZGRkZGRkZ1DQotDQotI2RlZmluZSBTWVNSRUdfUlRDX1dBS0VVUF9NM19FTl9NQVNLICAgIDB4MDAwMDAwMDF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBJbmRleCBpbnRvIGxvb2stdXAgdGFibGUuDQotICovDQotI2RlZmluZSBTRUNPTkRTICAgICAwDQotI2RlZmluZSBNSU5VVEVTICAgICAxDQotI2RlZmluZSBIT1VSUyAgICAgICAyDQotI2RlZmluZSBEQVlTICAgICAgICAzDQotI2RlZmluZSBNT05USFMgICAgICA0DQotI2RlZmluZSBZRUFSUyAgICAgICA1DQotI2RlZmluZSBXRUVLREFZUyAgICA2DQotI2RlZmluZSBXRUVLUyAgICAgICA3DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIExvY2FsIGZ1bmN0aW9ucy4NCi0gKi8NCi1zdGF0aWMgdWludDhfdA0KLWdldF9jbG9ja19tb2RlDQotKA0KLSAgICB2b2lkDQotKTsNCi0NCi1zdGF0aWMgdm9pZCBzZXRfcnRjX21vZGUodWludDhfdCByZXF1ZXN0ZWRfbW9kZSk7DQotDQotc3RhdGljIHZvaWQgYWRkX2FsYXJtX2NmZ192YWx1ZXMNCi0oDQotICAgIHVpbnQ4X3QgY2FsZW5kYXJfaXRlbSwNCi0gICAgdWludDMyX3QgKiBwX2NhbGVuZGFyX3ZhbHVlLA0KLSAgICB1aW50MzJfdCAqIHBfY29tcGFyZV9tYXNrDQotICAgIA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX2luaXQNCi0oDQotICAgIHVpbnQ4X3QgbW9kZSwNCi0gICAgdWludDMyX3QgcHJlc2NhbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKHByZXNjYWxlciA8PSBNQVhfUFJFU0NBTEFSX0NPVU5UKTsNCi0NCi0gICAgaWYocHJlc2NhbGVyIDw9IE1BWF9QUkVTQ0FMQVJfQ09VTlQpDQotICAgIHsNCi0gICAgICAgIC8qIFN0b3AgdGhlIFJUQy4gKi8NCi0gICAgICAgIE1TU19SVENfc3RvcCgpOw0KLSAgICAgICAgDQotICAgICAgICAvKiBEaXNhYmxlIGFsYXJtLiAqLw0KLSAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfQUxBUk1fT0ZGX01BU0s7DQotICAgICAgICANCi0gICAgICAgIC8qIERpc2FibGUgSW50ZXJydXB0ICovDQotICAgICAgICBNU1NfUlRDX2Rpc2FibGVfaXJxKCk7DQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShSVENfV2FrZXVwX0lSUW4pOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgUlRDIHdha2UgdXAgaW50ZXJydXB0IHNpZ25hbCAqLw0KLSAgICAgICAgTVNTX1JUQ19jbGVhcl9pcnEoKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSB0aGUgUlRDIHRvIGludGVycnVwdCB0aGUgQ29ydGV4LU0zLiAqLw0KLSAgICAgICAgU1lTUkVHLT5SVENfV0FLRVVQX0NSIHw9IFNZU1JFR19SVENfV0FLRVVQX00zX0VOX01BU0s7DQotICAgICAgICANCi0gICAgICAgIC8qIFNlbGVjdCBtb2RlIG9mIG9wZXJhdGlvbiwgaW5jbHVkaW5nIHRoZSB3YWtlIGNvbmZpZ3VyYXRpb24uICovDQotICAgICAgICBpZihNU1NfUlRDX0NBTEVOREFSX01PREUgPT0gbW9kZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBSVEMtPk1PREVfUkVHID0gTU9ERV9DTEtfTU9ERV9NQVNLOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIFJUQy0+TU9ERV9SRUcgPSAwdTsNCi0gICAgICAgIH0NCi0gICAgICAgIA0KLSAgICAgICAgLyogUmVzZXQgdGhlIGFsYXJtIGFuZCBjb21wYXJlIHJlZ2lzdGVycyB0byBhIGtub3duIHZhbHVlLiAqLw0KLSAgICAgICAgUlRDLT5BTEFSTV9MT1dFUl9SRUcgPSAwdTsNCi0gICAgICAgIFJUQy0+QUxBUk1fVVBQRVJfUkVHID0gMHU7DQotICAgICAgICBSVEMtPkNPTVBBUkVfTE9XRVJfUkVHID0gMHU7DQotICAgICAgICBSVEMtPkNPTVBBUkVfVVBQRVJfUkVHID0gMHU7DQotDQotICAgICAgICAvKiBSZXNldCB0aGUgY2FsZW5kYXIgY291bnRlcnMgKi8NCi0gICAgICAgIE1TU19SVENfcmVzZXRfY291bnRlcigpOw0KLQ0KLSAgICAgICAgLyogU2V0IG5ldyBQcmVzY2FsZXIgdmFsdWUgKi8NCi0gICAgICAgIFJUQy0+UFJFU0NBTEVSX1JFRyA9IHByZXNjYWxlcjsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnQNCi0oDQotICAgIGNvbnN0IG1zc19ydGNfY2FsZW5kYXJfdCAqbmV3X3J0Y192YWx1ZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgZXJyb3IgPSAwdTsNCi0gICAgdWludDhfdCBjbG9ja19tb2RlOw0KLSAgICANCi0gICAgY29uc3QgdWludDhfdCBnX3J0Y19tYXhfY291bnRfbHV0W10gPQ0KLSAgICB7DQotICAgICAgIC8qIENhbGVuZGFyIG1vZGUgKi8NCi0gICAgICAgIDU5dSwgICAgLyogU2Vjb25kcyAqLw0KLSAgICAgICAgNTl1LCAgICAvKiBNaW51dGVzICovDQotICAgICAgICAyM3UsICAgIC8qIEhvdXJzICAgKi8NCi0gICAgICAgIDMxdSwgICAgLyogRGF5cyAgICAqLw0KLSAgICAgICAgMTJ1LCAgICAvKiBNb250aHMgICovDQotICAgICAgICAyNTR1LCAgIC8qIFllYXJzICAgKi8NCi0gICAgICAgIDd1LCAgICAgLyogV2Vla2RheXMqLw0KLSAgICAgICAgNTJ1ICAgICAvKiBXZWVrICAgICovDQotICAgIH07DQotDQotICAgIGNvbnN0IHVpbnQ4X3QgZ19ydGNfbWluX2NvdW50X2x1dFtdID0NCi0gICAgew0KLSAgICAgICAvKiBDYWxlbmRhciBtb2RlICovDQotICAgICAgICAwdSwgLyogU2Vjb25kcyAqLw0KLSAgICAgICAgMHUsIC8qIE1pbnV0ZXMgKi8NCi0gICAgICAgIDB1LCAvKiBIb3VycyAgICovDQotICAgICAgICAxdSwgLyogRGF5cyAgICAqLw0KLSAgICAgICAgMXUsIC8qIE1vbnRocyAgKi8NCi0gICAgICAgIDB1LCAvKiBZZWFycyAgICovDQotICAgICAgICAxdSwgLyogV2Vla2RheXMqLw0KLSAgICAgICAgMXUgIC8qIFdlZWsgICAgKi8NCi0gICAgfTsNCi0gICAgDQotICAgIC8qIEFzc2VydCBpZiB0aGUgdmFsdWVzIGNyb3NzIHRoZSBsaW1pdCAqLw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+c2Vjb25kID49IGdfcnRjX21pbl9jb3VudF9sdXRbU0VDT05EU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+c2Vjb25kIDw9IGdfcnRjX21heF9jb3VudF9sdXRbU0VDT05EU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+bWludXRlID49IGdfcnRjX21pbl9jb3VudF9sdXRbTUlOVVRFU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+bWludXRlIDw9IGdfcnRjX21heF9jb3VudF9sdXRbTUlOVVRFU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+aG91ciA+PSBnX3J0Y19taW5fY291bnRfbHV0W0hPVVJTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT5ob3VyIDw9IGdfcnRjX21heF9jb3VudF9sdXRbSE9VUlNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPmRheSA+PSBnX3J0Y19taW5fY291bnRfbHV0W0RBWVNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPmRheSA8PSBnX3J0Y19tYXhfY291bnRfbHV0W0RBWVNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPm1vbnRoID49IGdfcnRjX21pbl9jb3VudF9sdXRbTU9OVEhTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT5tb250aCA8PSBnX3J0Y19tYXhfY291bnRfbHV0W01PTlRIU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+eWVhciA+PSBnX3J0Y19taW5fY291bnRfbHV0W1lFQVJTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT55ZWFyIDw9IGdfcnRjX21heF9jb3VudF9sdXRbWUVBUlNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPndlZWtkYXkgPj0gZ19ydGNfbWluX2NvdW50X2x1dFtXRUVLREFZU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+d2Vla2RheSA8PSBnX3J0Y19tYXhfY291bnRfbHV0W1dFRUtEQVlTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT53ZWVrID49IGdfcnRjX21pbl9jb3VudF9sdXRbV0VFS1NdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPndlZWsgPD0gZ19ydGNfbWF4X2NvdW50X2x1dFtXRUVLU10pOw0KLQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5zZWNvbmQgPCBnX3J0Y19taW5fY291bnRfbHV0W1NFQ09ORFNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPnNlY29uZCA+IGdfcnRjX21heF9jb3VudF9sdXRbU0VDT05EU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+bWludXRlIDwgZ19ydGNfbWluX2NvdW50X2x1dFtNSU5VVEVTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5taW51dGUgPiBnX3J0Y19tYXhfY291bnRfbHV0W01JTlVURVNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPmhvdXIgPCBnX3J0Y19taW5fY291bnRfbHV0W0hPVVJTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5ob3VyID4gZ19ydGNfbWF4X2NvdW50X2x1dFtIT1VSU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+ZGF5IDwgZ19ydGNfbWluX2NvdW50X2x1dFtEQVlTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5kYXkgPiBnX3J0Y19tYXhfY291bnRfbHV0W0RBWVNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPm1vbnRoIDwgZ19ydGNfbWluX2NvdW50X2x1dFtNT05USFNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPm1vbnRoID4gZ19ydGNfbWF4X2NvdW50X2x1dFtNT05USFNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPnllYXIgPCBnX3J0Y19taW5fY291bnRfbHV0W1lFQVJTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT55ZWFyID4gZ19ydGNfbWF4X2NvdW50X2x1dFtZRUFSU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+d2Vla2RheSA8IGdfcnRjX21pbl9jb3VudF9sdXRbV0VFS0RBWVNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPndlZWtkYXkgPiBnX3J0Y19tYXhfY291bnRfbHV0W1dFRUtEQVlTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT53ZWVrIDwgZ19ydGNfbWluX2NvdW50X2x1dFtXRUVLU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+d2VlayA+IGdfcnRjX21heF9jb3VudF9sdXRbV0VFS1NdKSB7ZXJyb3IgPSAxdTt9DQotDQotICAgIC8qIA0KLSAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbg0KLSAgICAgKiBjYWxlbmRhciBjb3VudGVyIG1vZGUuIA0KLSAgICAgKi8NCi0gICAgY2xvY2tfbW9kZSA9IGdldF9jbG9ja19tb2RlKCk7DQotICAgIEFTU0VSVChNU1NfUlRDX0NBTEVOREFSX01PREUgPT0gY2xvY2tfbW9kZSk7DQotICAgIA0KLSAgICBpZigoMHUgPT0gZXJyb3IpICYmIChNU1NfUlRDX0NBTEVOREFSX01PREUgPT0gY2xvY2tfbW9kZSkpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90IHVwbG9hZF9pbl9wcm9ncmVzczsNCi0gICAgICAgIA0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIFdyaXRlIHRoZSBSVEMgbmV3IHZhbHVlLiANCi0gICAgICAgICAqLw0KLSAgICAgICAgUlRDLT5TRUNPTkRTX1JFRyA9IG5ld19ydGNfdmFsdWUtPnNlY29uZDsNCi0gICAgICAgIFJUQy0+TUlOVVRFU19SRUcgPSBuZXdfcnRjX3ZhbHVlLT5taW51dGU7DQotICAgICAgICBSVEMtPkhPVVJTX1JFRyA9IG5ld19ydGNfdmFsdWUtPmhvdXI7DQotICAgICAgICBSVEMtPkRBWV9SRUcgPSBuZXdfcnRjX3ZhbHVlLT5kYXk7DQotICAgICAgICBSVEMtPk1PTlRIX1JFRyA9IG5ld19ydGNfdmFsdWUtPm1vbnRoOw0KLSAgICAgICAgUlRDLT5ZRUFSX1JFRyA9IG5ld19ydGNfdmFsdWUtPnllYXI7DQotICAgICAgICBSVEMtPldFRUtEQVlfUkVHID0gbmV3X3J0Y192YWx1ZS0+d2Vla2RheTsNCi0gICAgICAgIFJUQy0+V0VFS19SRUcgPSBuZXdfcnRjX3ZhbHVlLT53ZWVrOw0KLQ0KLSAgICAgICAgLyogRGF0YSBpcyBjb3BpZWQsIG5vdyBpc3N1ZSB1cGxvYWQgY29tbWFuZCAqLw0KLSAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfVVBMT0FEX01BU0sgOw0KLSAgICAgICAgDQotICAgICAgICAvKiBXYWl0IGZvciB0aGUgdXBsb2FkIHRvIGNvbXBsZXRlLiAqLw0KLSAgICAgICAgZG8gew0KLSAgICAgICAgICAgIHVwbG9hZF9pbl9wcm9ncmVzcyA9IFJUQy0+Q09OVFJPTF9SRUcgJiBDT05UUk9MX1VQTE9BRF9NQVNLOw0KLSAgICAgICAgfSB3aGlsZSh1cGxvYWRfaW5fcHJvZ3Jlc3MpOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19zZXRfYmluYXJ5X2NvdW50DQotKA0KLSAgICB1aW50NjRfdCBuZXdfcnRjX3ZhbHVlDQotKQ0KLXsNCi0gICAgdWludDhfdCBjbG9ja19tb2RlOw0KLQ0KLSAgICAvKiANCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICogYmluYXJ5IGNvdW50ZXIgbW9kZS4gDQotICAgICAqLw0KLSAgICBjbG9ja19tb2RlID0gZ2V0X2Nsb2NrX21vZGUoKTsNCi0gICAgQVNTRVJUKE1TU19SVENfQklOQVJZX01PREUgPT0gY2xvY2tfbW9kZSk7DQotICAgIA0KLSAgICBpZihNU1NfUlRDX0JJTkFSWV9NT0RFID09IGNsb2NrX21vZGUpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90IHJ0Y191cHBlcl8zMl9iaXRfdmFsdWU7DQotICAgICAgICANCi0gICAgICAgIHJ0Y191cHBlcl8zMl9iaXRfdmFsdWUgPSAodWludDMyX3QpKG5ld19ydGNfdmFsdWUgPj4gMzJ1KSAmIE1BU0tfMzJfQklUOw0KLQ0KLSAgICAgICAgLyogQXNzZXJ0IGlmIHRoZSB2YWx1ZXMgY3Jvc3MgdGhlIGxpbWl0ICovDQotICAgICAgICBBU1NFUlQocnRjX3VwcGVyXzMyX2JpdF92YWx1ZSA8PSBNQVhfQklOQVJZX0hJR0hFUl9DT1VOVCk7DQotDQotICAgICAgICBpZihydGNfdXBwZXJfMzJfYml0X3ZhbHVlIDw9IE1BWF9CSU5BUllfSElHSEVSX0NPVU5UKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHVpbnQzMl90IHVwbG9hZF9pbl9wcm9ncmVzczsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAqIFdyaXRlIHRoZSBSVEMgbmV3IHZhbHVlLiANCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBSVEMtPkRBVEVfVElNRV9MT1dFUl9SRUcgPSAodWludDMyX3QpbmV3X3J0Y192YWx1ZTsNCi0gICAgICAgICAgICBSVEMtPkRBVEVfVElNRV9VUFBFUl9SRUcgPQ0KLSAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgoIG5ld19ydGNfdmFsdWUgPj4gMzJ1KSAmIE1BWF9CSU5BUllfSElHSEVSX0NPVU5UKTsNCi0NCi0gICAgICAgICAgICAvKiBEYXRhIGlzIGNvcGllZCwgbm93IGlzc3VlIHVwbG9hZCBjb21tYW5kICovDQotICAgICAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfVVBMT0FEX01BU0s7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgLyogV2FpdCBmb3IgdGhlIHVwbG9hZCB0byBjb21wbGV0ZS4gKi8NCi0gICAgICAgICAgICBkbyB7DQotICAgICAgICAgICAgICAgIHVwbG9hZF9pbl9wcm9ncmVzcyA9IFJUQy0+Q09OVFJPTF9SRUcgJiBDT05UUk9MX1VQTE9BRF9NQVNLOw0KLSAgICAgICAgICAgIH0gd2hpbGUodXBsb2FkX2luX3Byb2dyZXNzKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfZ2V0X2NhbGVuZGFyX2NvdW50DQotKA0KLSAgICBtc3NfcnRjX2NhbGVuZGFyX3QgKnBfcnRjX2NhbGVuZGFyDQotKQ0KLXsNCi0gICAgdWludDhfdCBjbG9ja19tb2RlOw0KLSAgICAvKiANCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICogY2FsZW5kYXIgY291bnRlciBtb2RlLiANCi0gICAgICovDQotICAgIGNsb2NrX21vZGUgPSBnZXRfY2xvY2tfbW9kZSgpOw0KLSAgICBBU1NFUlQoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IGNsb2NrX21vZGUpOw0KLSAgICANCi0gICAgaWYoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IGNsb2NrX21vZGUpDQotICAgIHsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT5zZWNvbmQgPSAodWludDhfdClSVEMtPlNFQ09ORFNfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPm1pbnV0ZSA9ICh1aW50OF90KVJUQy0+TUlOVVRFU19SRUc7DQotICAgICAgICBwX3J0Y19jYWxlbmRhci0+aG91ciA9ICh1aW50OF90KVJUQy0+SE9VUlNfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPmRheSA9ICh1aW50OF90KVJUQy0+REFZX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT5tb250aCA9ICh1aW50OF90KVJUQy0+TU9OVEhfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPnllYXIgPSAodWludDhfdClSVEMtPllFQVJfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPndlZWtkYXkgPSAodWludDhfdClSVEMtPldFRUtEQVlfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPndlZWsgPSAodWludDhfdClSVEMtPldFRUtfUkVHOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIFNldCByZXR1cm5lZCBjYWxlbmRhciBjb3VudCB0byB6ZXJvIGlmIHRoZSBSVEMgaXMgbm90IGNvbmZpZ3VyZWQgZm9yDQotICAgICAgICAgKiBjYWxlbmRhciBjb3VudGVyIG1vZGUuIFRoaXMgc2hvdWxkIG1ha2UgaW5jb3JyZWN0IHJlbGVhc2UgYXBwbGljYXRpb24NCi0gICAgICAgICAqIGNvZGUgYmVoYXZlIGNvbnNpc3RlbnRseSBhbmQgaGVscCBhcHBsaWNhdGlvbiBkZWJ1Z2dpbmcuDQotICAgICAgICAgKi8NCi0gICAgICAgIG1lbXNldChwX3J0Y19jYWxlbmRhciwgMCwgc2l6ZW9mKG1zc19ydGNfY2FsZW5kYXJfdCkpOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi11aW50NjRfdA0KLU1TU19SVENfZ2V0X2JpbmFyeV9jb3VudA0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIHVpbnQ2NF90IHJ0Y19jb3VudDsNCi0gICAgdWludDhfdCBjbG9ja19tb2RlOw0KLQ0KLSAgICAvKiANCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICogYmluYXJ5IGNvdW50ZXIgbW9kZS4gDQotICAgICAqLw0KLSAgICBjbG9ja19tb2RlID0gZ2V0X2Nsb2NrX21vZGUoKTsNCi0gICAgQVNTRVJUKE1TU19SVENfQklOQVJZX01PREUgPT0gY2xvY2tfbW9kZSk7DQotICAgIA0KLSAgICBpZihNU1NfUlRDX0JJTkFSWV9NT0RFID09IGNsb2NrX21vZGUpDQotICAgIHsNCi0gICAgICAgIHJ0Y19jb3VudCA9IFJUQy0+REFURV9USU1FX0xPV0VSX1JFRzsNCi0gICAgICAgIHJ0Y19jb3VudCA9IHJ0Y19jb3VudCB8ICgodWludDY0X3QpUlRDLT5EQVRFX1RJTUVfVVBQRVJfUkVHIDw8IDMydSkgOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIFNldCByZXR1cm5lZCBiaW5hcnkgY291bnQgdG8gemVybyBpZiB0aGUgUlRDIGlzIG5vdCBjb25maWd1cmVkIGZvcg0KLSAgICAgICAgICogYmluYXJ5IGNvdW50ZXIgbW9kZS4gVGhpcyBzaG91bGQgbWFrZSBpbmNvcnJlY3QgcmVsZWFzZSBhcHBsaWNhdGlvbg0KLSAgICAgICAgICogY29kZSBiZWhhdmUgY29uc2lzdGVudGx5IGFuZCBoZWxwIGFwcGxpY2F0aW9uIGRlYnVnZ2luZy4NCi0gICAgICAgICAqLw0KLSAgICAgICAgcnRjX2NvdW50ID0gMHU7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIHJ0Y19jb3VudDsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIGFkZF9hbGFybV9jZmdfdmFsdWVzDQotKA0KLSAgICB1aW50OF90IGNhbGVuZGFyX2l0ZW0sDQotICAgIHVpbnQzMl90ICogcF9jYWxlbmRhcl92YWx1ZSwNCi0gICAgdWludDMyX3QgKiBwX2NvbXBhcmVfbWFzaw0KLSAgICANCi0pDQotew0KLSAgICBpZihNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSA9PSBjYWxlbmRhcl9pdGVtKQ0KLSAgICB7DQotICAgICAgICAqcF9jYWxlbmRhcl92YWx1ZSA9ICh1aW50MzJfdCkoKnBfY2FsZW5kYXJfdmFsdWUgPDwgQ0FMRU5EQVJfU0hJRlQpOw0KLSAgICAgICAgKnBfY29tcGFyZV9tYXNrID0gKHVpbnQzMl90KSgqcF9jb21wYXJlX21hc2sgPDwgQ0FMRU5EQVJfU0hJRlQpOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgKnBfY2FsZW5kYXJfdmFsdWUgPSAodWludDMyX3QpKCgqcF9jYWxlbmRhcl92YWx1ZSA8PCBDQUxFTkRBUl9TSElGVCkgfCAodWludDMyX3QpY2FsZW5kYXJfaXRlbSk7DQotICAgICAgICAqcF9jb21wYXJlX21hc2sgPSAodWludDMyX3QpKCgqcF9jb21wYXJlX21hc2sgPDwgQ0FMRU5EQVJfU0hJRlQpIHwgKHVpbnQzMl90KTB4RkZ1KTsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybQ0KLSgNCi0gICAgY29uc3QgbXNzX3J0Y19jYWxlbmRhcl90ICogYWxhcm1fdmFsdWUNCi0pDQotew0KLSAgICB1aW50MzJfdCBjYWxlbmRhcl92YWx1ZTsNCi0gICAgdWludDMyX3QgY29tcGFyZV9tYXNrOw0KLSAgICB1aW50OF90IG1vZGU7DQotICAgIA0KLSAgICBtb2RlID0gKHVpbnQ4X3QpKFJUQy0+TU9ERV9SRUcgJiBNT0RFX0NMS19NT0RFX01BU0spOw0KLSAgICAvKg0KLSAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCB0aGUgUlRDIHNldCB0byBvcGVyYXRlIGluIGNhbGVuZGFyDQotICAgICAqIG1vZGUuDQotICAgICAqLw0KLSAgICBBU1NFUlQoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IG1vZGUpOw0KLSAgICBpZihNU1NfUlRDX0NBTEVOREFSX01PREUgPT0gbW9kZSkNCi0gICAgew0KLSAgICAgICAgdWludDhfdCByZXF1aXJlZF9tb2RlX3JlZzsNCi0gICAgICAgIA0KLSAgICAgICAgLyogRGlzYWJsZSB0aGUgYWxhcm0gYmVmb3JlIHVwZGF0aW5nKi8NCi0gICAgICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX0FMQVJNX09GRl9NQVNLOw0KLQ0KLSAgICAgICAgLyogU2V0IGFsYXJtIGFuZCBjb21wYXJlIGxvd2VyIHJlZ2lzdGVycy4gKi8NCi0gICAgICAgIGNhbGVuZGFyX3ZhbHVlID0gMHU7DQotICAgICAgICBjb21wYXJlX21hc2sgPSAwdTsNCi0gICAgICAgIA0KLSAgICAgICAgYWRkX2FsYXJtX2NmZ192YWx1ZXMoYWxhcm1fdmFsdWUtPmRheSwgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT5ob3VyLCAmY2FsZW5kYXJfdmFsdWUsICZjb21wYXJlX21hc2spOw0KLSAgICAgICAgYWRkX2FsYXJtX2NmZ192YWx1ZXMoYWxhcm1fdmFsdWUtPm1pbnV0ZSwgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT5zZWNvbmQsICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotDQotICAgICAgICBSVEMtPkFMQVJNX0xPV0VSX1JFRyA9IGNhbGVuZGFyX3ZhbHVlOw0KLSAgICAgICAgUlRDLT5DT01QQVJFX0xPV0VSX1JFRyA9IGNvbXBhcmVfbWFzazsNCi0NCi0gICAgICAgIC8qIFNldCBhbGFybSBhbmQgY29tcGFyZSB1cHBlciByZWdpc3RlcnMuICovDQotICAgICAgICBjYWxlbmRhcl92YWx1ZSA9IDB1Ow0KLSAgICAgICAgY29tcGFyZV9tYXNrID0gMHU7DQotICAgICAgICANCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT53ZWVrLCAmY2FsZW5kYXJfdmFsdWUsICZjb21wYXJlX21hc2spOw0KLSAgICAgICAgYWRkX2FsYXJtX2NmZ192YWx1ZXMoYWxhcm1fdmFsdWUtPndlZWtkYXksICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotICAgICAgICBhZGRfYWxhcm1fY2ZnX3ZhbHVlcyhhbGFybV92YWx1ZS0+eWVhciwgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT5tb250aCwgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0NCi0gICAgICAgIFJUQy0+QUxBUk1fVVBQRVJfUkVHID0gY2FsZW5kYXJfdmFsdWU7DQotICAgICAgICBSVEMtPkNPTVBBUkVfVVBQRVJfUkVHID0gY29tcGFyZV9tYXNrOw0KLSAgICAgICAgDQotICAgICAgICAvKiBDb25maWd1cmUgdGhlIFJUQyB0byBlbmFibGUgdGhlIGFsYXJtLiAqLw0KLSAgICAgICAgcmVxdWlyZWRfbW9kZV9yZWcgPSBtb2RlIHwgTU9ERV9XQUtFVVBfRU5fTUFTSyB8IE1PREVfV0FLRVVQX0NPTlRJTlVFX01BU0s7DQotICAgICAgICBzZXRfcnRjX21vZGUocmVxdWlyZWRfbW9kZV9yZWcpOw0KLSAgICAgICAgDQotICAgICAgICAvKiBFbmFibGUgdGhlIGFsYXJtICovDQotICAgICAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9BTEFSTV9PTl9NQVNLIDsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgV2Ugb25seSB3cml0ZSB0aGUgUlRDIG1vZGUgcmVnaXN0ZXIgaWYgcmVhbGx5IHJlcXVpcmVkIGJlY2F1c2UgdGhlIFJUQyBuZWVkcw0KLSAgdG8gYmUgc3RvcHBlZCBmb3IgdGhlIG1vZGUgcmVnaXN0ZXIgdG8gYmUgd3JpdHRlbi4gU3RvcHBpbmcgdGhlIFJUQyBldmVyeXRpbWUNCi0gIHRoZSB3YWtldXAgYWxhcm0gY29uZmlndXJhdGlvbiBpcyBzZXQgbWlnaHQgaW5kdWNlIGRyaWZ0IG9uIHRoZSBSVEMgdGltZS4NCi0gIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHNldHRpbmcgYWxhcm1zLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHNldF9ydGNfbW9kZSh1aW50OF90IHJlcXVlc3RlZF9tb2RlKQ0KLXsNCi0gICAgaWYoUlRDLT5NT0RFX1JFRyAhPSByZXF1ZXN0ZWRfbW9kZSkNCi0gICAgew0KLSAgICAgICAgdWludDMyX3QgcnRjX3J1bm5pbmc7DQotICAgICAgICBydGNfcnVubmluZyA9IFJUQy0+Q09OVFJPTF9SRUcgJiBDT05UUk9MX1JVTk5JTkdfTUFTSzsNCi0gICAgICAgIGlmKHJ0Y19ydW5uaW5nKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIFN0b3AgdGhlIFJUQyBpbiBvcmRlciB0byBjaGFuZ2UgdGhlIG1vZGUgcmVnaXN0ZXIgY29udGVudC4qLw0KLSAgICAgICAgICAgIE1TU19SVENfc3RvcCgpOw0KLSAgICAgICAgICAgIFJUQy0+TU9ERV9SRUcgPSByZXF1ZXN0ZWRfbW9kZTsNCi0gICAgICAgICAgICBNU1NfUlRDX3N0YXJ0KCk7DQotICAgICAgICB9DQotICAgICAgICBlbHNlDQotICAgICAgICB7DQotICAgICAgICAgICAgUlRDLT5NT0RFX1JFRyA9IHJlcXVlc3RlZF9tb2RlOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19SVENfc2V0X2JpbmFyeV9jb3VudF9hbGFybQ0KLSgNCi0gICAgdWludDY0X3QgYWxhcm1fdmFsdWUsDQotICAgIG1zc19ydGNfYWxhcm1fdHlwZV90IGFsYXJtX3R5cGUNCi0pDQotew0KLSAgICB1aW50OF90IG1vZGU7DQotICAgIA0KLSAgICBtb2RlID0gKHVpbnQ4X3QpKFJUQy0+TU9ERV9SRUcgJiBNT0RFX0NMS19NT0RFX01BU0spOw0KLSAgICAvKg0KLSAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCB0aGUgUlRDIHNldCB0byBvcGVyYXRlIGluIGJpbmFyeQ0KLSAgICAgKiBjb3VudGVyIG1vZGUuDQotICAgICAqLw0KLSAgICBBU1NFUlQoTVNTX1JUQ19CSU5BUllfTU9ERSA9PSBtb2RlKTsNCi0gICAgaWYoTVNTX1JUQ19CSU5BUllfTU9ERSA9PSBtb2RlKQ0KLSAgICB7DQotICAgICAgICB1aW50OF90IHJlcXVpcmVkX21vZGVfcmVnOw0KLSAgICAgICAgDQotICAgICAgICAvKiBEaXNhYmxlIHRoZSBhbGFybSBiZWZvcmUgdXBkYXRpbmcqLw0KLSAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfQUxBUk1fT0ZGX01BU0s7DQotDQotICAgICAgICAvKiBTZXQgdGhlIGFsYXJtIHZhbHVlLiAqLw0KLSAgICAgICAgUlRDLT5DT01QQVJFX0xPV0VSX1JFRyA9IENPTVBBUkVfQUxMX0JJVFM7DQotICAgICAgICBSVEMtPkNPTVBBUkVfVVBQRVJfUkVHID0gQ09NUEFSRV9BTExfQklUUzsNCi0gICAgICAgIFJUQy0+QUxBUk1fTE9XRVJfUkVHID0gKHVpbnQzMl90KWFsYXJtX3ZhbHVlOw0KLSAgICAgICAgUlRDLT5BTEFSTV9VUFBFUl9SRUcgPSAodWludDMyX3QpKGFsYXJtX3ZhbHVlID4+IDMydSk7DQotDQotICAgICAgICAvKg0KLSAgICAgICAgICogQ29uZmlndXJlIHRoZSBSVEMgdG8gZW5hYmxlIHRoZSBhbGFybS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgcmVxdWlyZWRfbW9kZV9yZWcgPSBtb2RlIHwgTU9ERV9XQUtFVVBfRU5fTUFTSyB8IE1PREVfV0FLRVVQX0NPTlRJTlVFX01BU0s7DQotICAgICAgICBpZihNU1NfUlRDX1BFUklPRElDX0FMQVJNID09IGFsYXJtX3R5cGUpDQotICAgICAgICB7DQotICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgKiBUaGUgUlRDIGJpbmFyeSBjb3VudGVyIHdpbGwgYmUgZnVsbHkgcmVzZXQgd2hlbiB0aGUgYWxhcm0gb2NjdXJzLg0KLSAgICAgICAgICAgICAqIFRoZSBjb3VudGVyIHdpbGwgY29udGludWUgY291bnRpbmcgd2hpbGUgdGhlIHdha2UtdXAgaW50ZXJydXB0IGlzDQotICAgICAgICAgICAgICogYWN0aXZlLg0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIHJlcXVpcmVkX21vZGVfcmVnIHw9IE1PREVfV0FLRVVQX1JFU0VUX01BU0s7DQotICAgICAgICB9DQotICAgICAgICBzZXRfcnRjX21vZGUocmVxdWlyZWRfbW9kZV9yZWcpOw0KLSAgICAgICAgDQotICAgICAgICAvKiBFbmFibGUgdGhlIGFsYXJtICovDQotICAgICAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9BTEFSTV9PTl9NQVNLOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19zdGFydA0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1JUQ19TVEFSVF9NQVNLOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfc3RvcA0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIHVpbnQzMl90IHJ0Y19ydW5uaW5nOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogU2VuZCBjb21tYW5kIHRvIHN0b3AgUlRDLg0KLSAgICAgKi8NCi0gICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfUlRDX1NUT1BfTUFTSzsNCi0gICAgDQotICAgIC8qIA0KLSAgICAgKiBXYWl0IGZvciBSVEMgaW50ZXJuYWwgc3luY2hyb25pemF0aW9uIHRvIHRha2UgcGxhY2UgYW5kIFJUQyB0byBhY3R1YWxseQ0KLSAgICAgKiBzdG9wLg0KLSAgICAgKi8NCi0gICAgZG8gew0KLSAgICAgICAgcnRjX3J1bm5pbmcgPSAgUlRDLT5DT05UUk9MX1JFRyAmIENPTlRST0xfUlVOTklOR19NQVNLOw0KLSAgICB9IHdoaWxlKHJ0Y19ydW5uaW5nKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfcmVzZXRfY291bnRlcg0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIHVpbnQzMl90IHVwbG9hZF9pbl9wcm9ncmVzczsNCi0gICAgDQotICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1JFU0VUX01BU0s7DQotICAgIA0KLSAgICAvKiBXYWl0IGZvciB0aGUgdXBsb2FkIHRvIGNvbXBsZXRlLiAqLw0KLSAgICBkbyB7DQotICAgICAgICB1cGxvYWRfaW5fcHJvZ3Jlc3MgPSBSVEMtPkNPTlRST0xfUkVHICYgQ09OVFJPTF9VUExPQURfTUFTSzsNCi0gICAgfSB3aGlsZSh1cGxvYWRfaW5fcHJvZ3Jlc3MpOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi11aW50MzJfdCBNU1NfUlRDX2dldF91cGRhdGVfZmxhZyh2b2lkKQ0KLXsNCi0gICAgdWludDMyX3QgdXBkYXRlZDsNCi0gICAgdXBkYXRlZCA9IFJUQy0+Q09OVFJPTF9SRUcgJiBDT05UUk9MX1VQREFURURfTUFTSzsNCi0gICAgcmV0dXJuIHVwZGF0ZWQ7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZyh2b2lkKQ0KLXsNCi0gICAgLyogQ2xlYXIgdGhlICJ1cGRhdGVkIiBjb250cm9sIGJpdC4gKi8NCi0gICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfVVBEQVRFRF9NQVNLOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19SVENfZW5hYmxlX2lycSh2b2lkKQ0KLXsNCi0gICAgLyoNCi0gICAgICogT25seSB0aGUgTlZJQyBsZXZlbCBpbnRlcnJ1cHQgZW5hYmxlIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4NCi0gICAgICogVGhlIFJUQyBsZXZlbCBpbnRlcnJ1cHQgZW5hYmxlIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhlIGFsYXJtIHNldHRpbmcNCi0gICAgICogZnVuY3Rpb25zLg0KLSAgICAgKiBUaGlzIGF2b2lkIHRoZSBNT0RFIHJlZ2lzdGVyIGJlaW5nIG1vZGlmaWVkIHdoZW5ldmVyIENvcnRleC1NMyBSVEMNCi0gICAgICogaW50ZXJydXB0cyBhcmUgZW5hYmxlZC9kaXNhYmxlZC4gDQotICAgICAqLw0KLSAgICBOVklDX0VuYWJsZUlSUShSVENfV2FrZXVwX0lSUW4pOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19kaXNhYmxlX2lycQ0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIC8qDQotICAgICAqIE9ubHkgdGhlIE5WSUMgbGV2ZWwgaW50ZXJydXB0IGRpc2FibGUgaXMgcGVyZm9ybWVkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLg0KLSAgICAgKiBUaGlzIGF2b2lkIHRoZSBNT0RFIHJlZ2lzdGVyIGJlaW5nIG1vZGlmaWVkIHdoZW5ldmVyIENvcnRleC1NMyBSVEMNCi0gICAgICogaW50ZXJydXB0cyBhcmUgZW5hYmxlZC9kaXNhYmxlZC4gDQotICAgICAqLw0KLSAgICBOVklDX0Rpc2FibGVJUlEoUlRDX1dha2V1cF9JUlFuKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX2NsZWFyX2lycQ0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIC8qIENsZWFyIHdha2UgdXAgaW50ZXJydXB0IHNpZ25hbCAqLw0KLSAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9XQUtFVVBfQ0xSX01BU0s7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgZ2V0X2Nsb2NrX21vZGUoKSBmdW5jdGlvbiBnZXRzIHRoZSBjbG9jayBtb2RlIG9mIFJUQyBoYXJkd2FyZS4NCi0gIFBvc3NpYmxlIGNsb2NrIG1vZGVzIGFyZToNCi0gICAgTVNTX1JUQ19DQUxFTkRBUl9NT0RFDQotICAgIE1TU19SVENfQklOQVJZX01PREUNCi0gKi8NCi1zdGF0aWMgdWludDhfdA0KLWdldF9jbG9ja19tb2RlDQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgdWludDhfdCBjbG9ja19tb2RlOw0KLQ0KLSAgICBjbG9ja19tb2RlID0gKHVpbnQ4X3QpKFJUQy0+TU9ERV9SRUcgJiBNT0RFX0NMS19NT0RFX01BU0spOw0KLQ0KLSAgICByZXR1cm4oY2xvY2tfbW9kZSk7DQotfQ0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3J0Yy9tc3NfcnRjLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3J0Yy9tc3NfcnRjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmN2MxMDYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIFNtYXJ0RnVzaW9uMiBNU1MgUlRDIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyIHB1YmxpYyBBUEkuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1Mzk2ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjcgMjE6NTc6NTAgKzAwMDAgKFdlZCwgMjcgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgUlRDIEJhcmUgTWV0YWwgRHJpdmVyLg0KLQ0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIGEgcmVhbCB0aW1lIGNvdW50ZXINCi0gIChSVEMpIHRoYXQgY2FuIGdlbmVyYXRlIGFsYXJtcyBhbmQgd2FrZXVwIGludGVycnVwdHMgaW4gcmVhbCB0aW1lLiBUaGlzDQotICBzb2Z0d2FyZSBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgTVNTIFJUQyBhcw0KLSAgcGFydCBvZiBhIGJhcmUgbWV0YWwgc3lzdGVtIHdoZXJlIG5vIG9wZXJhdGluZyBzeXN0ZW0gaXMgYXZhaWxhYmxlLiBUaGUgZHJpdmVyDQotICBjYW4gYmUgYWRhcHRlZCBmb3IgdXNlIGFzIHBhcnQgb2YgYW4gb3BlcmF0aW5nIHN5c3RlbSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgb2YgdGhlIGFkYXB0YXRpb24gbGF5ZXIgYmV0d2VlbiB0aGUgZHJpdmVyIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGRyaXZlcg0KLSAgbW9kZWwgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhlIGRyaXZlci4NCi0gIA0KLSAgVGhlIE1TUyBSVEMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6DQotICAgIC0gSW5pdGlhbGl6YXRpb24gb2YgdGhlIFJUQw0KLSAgICAtIENvbmZpZ3VyYXRpb24gb2YgdGhlIFJUQyB0aW1lYmFzZQ0KLSAgICAtIENvbmZpZ3VyYXRpb24gYXMgYSBjYWxlbmRhciBvciBiaW5hcnkgbW9kZSBjb3VudGVyDQotICAgIC0gU2V0IHRoZSBjdXJyZW50IGNhbGVuZGFyIG9yIGJpbmFyeSBtb2RlIGNvdW50DQotICAgIC0gR2V0IHRoZSBjdXJyZW50IGNhbGVuZGFyIG9yIGJpbmFyeSBtb2RlIGNvdW50DQotICAgIC0gU3RhcnQgYW5kIHN0b3AgdGhlIFJUQyBjb3VudGluZw0KLSAgICAtIFNldCBhbGFybSBjb25kaXRpb25zDQotICAgIC0gRW5hYmxlLCBkaXNhYmxlIGFuZCBjbGVhciB0aGUgd2FrZXVwIGludGVycnVwdA0KLSAgICANCi0gIEBzZWN0aW9uIGh3X2RlcGVuZGVuY2llcyBIYXJkd2FyZSBGbG93IERlcGVuZGVuY2llcw0KLSAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYWxsIGZlYXR1cmVzIG9mIHRoZSBNU1MgUlRDIGlzIGNvdmVyZWQgYnkgdGhpcyBkcml2ZXINCi0gIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgY2xvY2sgc291cmNlIGRyaXZpbmcgdGhlIE1TUyBSVEMgY2xvY2sgKFJUQ0NMSykNCi0gIGlucHV0LiBUaGUgU21hcnRGdXNpb24yIE1TUyBjbG9jayBjb250cm9sbGVyIGNhbiBzdXBwbHkgb25lIG9mIHRocmVlIGNsb2NrDQotICBzb3VyY2VzIHRvIHRoZSBNU1MgUlRDIGNsb2NrIGlucHV0Og0KLSAgICAtIENyeXN0YWwgT3NjaWxsYXRvciAzMi43Njgga0h6DQotICAgIC0gMU1IeiBPc2NpbGxhdG9yDQotICAgIC0gNTBNSHogT3NjaWxsYXRvci4gICgyNSBNSHogaW4gYSAxLjB2IHBhcnQpLg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBNU1MgY29uZmlndXJhdG9yIHRvb2wgaW4gdGhlIGhhcmR3YXJlIGZsb3cgY29uZmlndXJlcyBvbmUNCi0gIG9mIHRoZXNlIGNsb2NrcyBhcyB0aGUgUlRDQ0xLIGlucHV0IHNvdXJjZS4NCi0gIFRoZSBiYXNlIGFkZHJlc3MgYW5kIHJlZ2lzdGVyIGFkZHJlc3NlcyBhbmQgaW50ZXJydXB0IG51bWJlciBhc3NpZ25tZW50IGZvcg0KLSAgdGhlIE1TUyBSVEMgYmxvY2sgYXJlIGRlZmluZWQgYXMgY29uc3RhbnRzIGluIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSEFMLiBZb3UNCi0gIG11c3QgZW5zdXJlIHRoYXQgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgZWl0aGVyIGluY2x1ZGVkIGluIHRoZSBzb2Z0d2FyZQ0KLSAgdG9vbCBjaGFpbiB1c2VkIHRvIGJ1aWxkIHlvdXIgcHJvamVjdCBvciBpcyBpbmNsdWRlZCBpbiB5b3VyIHByb2plY3QuDQotICANCi0gIEBzZWN0aW9uIHRoZW9yeV9vcCBUaGVvcnkgb2YgT3BlcmF0aW9uDQotICBUaGUgTVNTIFJUQyBkcml2ZXIgZnVuY3Rpb25zIGFyZSBncm91cGVkIGludG8gdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOg0KLSAgICAtIEluaXRpYWxpemF0aW9uIG9mIHRoZSBSVEMgZHJpdmVyIGFuZCBoYXJkd2FyZQ0KLSAgICAtIFNldHRpbmcgYW5kIHJlYWRpbmcgdGhlIFJUQyBjb3VudGVyIGN1cnJlbnQgdmFsdWUNCi0gICAgLSBTZXR0aW5nIFJUQyBhbGFybSB2YWx1ZXMNCi0gICAgLSBTdGFydGluZyBhbmQgc3RvcHBpbmcgdGhlIFJUQw0KLSAgICAtIEludGVycnVwdCBDb250cm9sDQotICAgIA0KLSAgSW5pdGlhbGl6YXRpb24NCi0gIFRoZSBNU1MgUlRDIGRyaXZlciBpcyBpbml0aWFsaXplZCB0aHJvdWdoIGEgY2FsbCB0byB0aGUgTVNTX1JUQ19pbml0KCkNCi0gIGZ1bmN0aW9uLiBUaGUgTVNTX1JUQ19pbml0KCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgUlRDDQotICBkcml2ZXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQuDQotICBUaGUgTVNTX1JUQ19pbml0KCkgZnVuY3Rpb246DQotICAgIC0gU3RvcHMgdGhlIFJUQyBjb3VudGVycyBhbmQgZGlzYWJsZXMgdGhlIFJUQyBhbGFybQ0KLSAgICAtIERpc2FibGVzIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBpbiB0aGUgUlRDIGFuZCBpbiB0aGUgQ29ydGV4LU0zDQotICAgICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpLg0KLSAgICAtIENsZWFycyBhbnkgcGVuZGluZyBSVEMgd2FrZXVwIGludGVycnVwdCBpbiB0aGUgUlRDIGFuZCBpbiB0aGUgQ29ydGV4LU0zDQotICAgICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpLg0KLSAgICAtIEVuYWJsZXMgdGhlIFJUQ19XQUtFVVBfQ1JbMF0gbWFzayBiaXQgaW4gdGhlIE1TUyBTeXN0ZW0gUmVnaXN0ZXIgdG8NCi0gICAgICBjb25uZWN0IHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCB0byB0aGUgQ29ydGV4LU0zIGludGVycnVwdCBjb250cm9sbGVyLg0KLSAgICAtIFJlc2V0cyB0aGUgUlRDIGNvdW50ZXJzIGFuZCB0aGUgYWxhcm0gYW5kIGNvbXBhcmUgcmVnaXN0ZXJzDQotICAgIC0gU2V0cyB0aGUgUlRDJ3Mgb3BlcmF0aW5nIG1vZGUgdG8gYmluYXJ5IGNvdW50ZXIgbW9kZSBvciBjYWxlbmRhciBjb3VudGVyDQotICAgICAgbW9kZSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBtb2RlIHBhcmFtZXRlcg0KLSAgICAtIFNldHMgdGhlIFJUQydzIHByZXNjYWxlciByZWdpc3RlciB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBwcmVzY2FsZXINCi0gICAgICBwYXJhbWV0ZXIuIFRoZSBmcmVxdWVuY3kgb2YgdGhlIGNsb2NrIHNvdXJjZSBkcml2aW5nIHRoZSBNU1MgUlRDIGNsb2NrDQotICAgICAgKFJUQ0NMSykgaW5wdXQgaXMgcmVxdWlyZWQgdG8gY2FsY3VsYXRlIHRoZSBwcmVzY2FsZXIgdmFsdWUuDQotICAgIA0KLSAgU2V0dGluZyBhbmQgUmVhZGluZyB0aGUgUlRDIENvdW50ZXIgVmFsdWUNCi0gIFRoZSBNU1MgUlRDIHN1cHBvcnRzIHR3byBtb2RlIG9mIG9wZXJhdGlvbiCWIGJpbmFyeSBtb2RlIGFuZCBjYWxlbmRhciBtb2RlLg0KLSAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc2V0IGFuZCByZWFkIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZQ0KLSAgY291bnRlciB3aGVuIHRoZSBNU1MgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbiBiaW5hcnkgbW9kZToNCi0gICAgLSBNU1NfUlRDX3NldF9iaW5hcnlfY291bnQoKSCWIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIGN1cnJlbnQNCi0gICAgICB2YWx1ZSBvZiB0aGUgUlRDIGJpbmFyeSBjb3VudGVyLg0KLSAgICAtIE1TU19SVENfZ2V0X2JpbmFyeV9jb3VudCgpIJYgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlYWQgdGhlIGN1cnJlbnQNCi0gICAgICB2YWx1ZSBvZiB0aGUgUlRDIGJpbmFyeSBjb3VudGVyLg0KLSAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc2V0IGFuZCByZWFkIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZQ0KLSAgY291bnRlciB0aGUgTVNTIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4gY2FsZW5kYXIgbW9kZToNCi0gICAgLSBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudCgpIJYgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgY3VycmVudA0KLSAgICAgIHZhbHVlIG9mIHRoZSBSVEMgY2FsZW5kYXIgY291bnRlci4NCi0gICAgLSBNU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudCgpIJYgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlYWQgdGhlIGN1cnJlbnQNCi0gICAgICB2YWx1ZSBvZiB0aGUgUlRDIGNhbGVuZGFyIGNvdW50ZXIuDQotIA0KLSAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmVzZXRzIHRoZSBSVEMgY291bnRlciBpbiBlaXRoZXIgYmluYXJ5IGFuZCBjYWxlbmRhcg0KLSAgb3BlcmF0aW5nIG1vZGU6DQotICAgIC0gTVNTX1JUQ19yZXNldF9jb3VudGVyKCkgliBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgUlRDIGNvdW50ZXIuDQotICAgIA0KLSAgU2V0dGluZyBSVEMgQWxhcm1zDQotICBUaGUgTVNTIFJUQyBjYW4gZ2VuZXJhdGUgYWxhcm1zIHdoZW4gdGhlIGNvdW50ZXIgbWF0Y2hlcyBhIHNwZWNpZmllZCBjb3VudA0KLSAgdmFsdWUgaW4gYmluYXJ5IG1vZGUgb3IgYSBkYXRlIGFuZCB0aW1lIGluIGNhbGVuZGFyIG1vZGUuDQotICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBzZXQgdXAgYWxhcm1zOg0KLSAgICAtIE1TU19SVENfc2V0X2JpbmFyeV9jb3VudF9hbGFybSgpIJYgVGhpcyBmdW5jdGlvbiBzZXRzIHVwIG9uZS1zaG90IG9yDQotICAgICAgcGVyaW9kaWMgYWxhcm1zIHdoZW4gdGhlIE1TUyBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluIGJpbmFyeSBtb2RlLg0KLSAgICAtIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtKCkgliBUaGlzIGZ1bmN0aW9uIHNldHMgdXAgb25lLXNob3Qgb3INCi0gICAgICBwZXJpb2RpYyBhbGFybXMgd2hlbiB0aGUgTVNTIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4gY2FsZW5kYXINCi0gICAgICBtb2RlLg0KLSAgTm90ZTogVGhlIGFsYXJtIGFzc2VydHMgYSB3YWtldXAgaW50ZXJydXB0IHRvIHRoZSBDb3J0ZXgtTTMuIFRoaXMgZnVuY3Rpb24NCi0gICAgICAgIGVuYWJsZXMgdGhlIFJUQ5JzIHdha2V1cCBpbnRlcnJ1cHQgb3V0cHV0LCBob3dldmVyIHRoZSBSVEMgd2FrZXVwDQotICAgICAgICBpbnRlcnJ1cHQgaW5wdXQgdG8gdGhlIENvcnRleC1NMyBOVklDIG11c3QgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IGJ5DQotICAgICAgICBjYWxsaW5nIHRoZSBNU1NfUlRDX2VuYWJsZV9pcnEoKSBmdW5jdGlvbi4gVGhlIGFsYXJtIGNhbiBiZSBkaXNhYmxlZCBhdA0KLSAgICAgICAgYW55IHRpbWUgYnkgY2FsbGluZyB0aGUgTVNTX1JUQ19kaXNhYmxlX2lycSgpIGZ1bmN0aW9uLiBhY3RpdmF0ZQ0KLSAgDQotICBTdGFydGluZyBhbmQgU3RvcHBpbmcgdGhlIFJUQyBDb3VudGVyDQotICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzdGFydCBhbmQgc3RvcCB0aGUgUlRDIGNvdW50ZXI6DQotICAgIC0gTVNTX1JUQ19zdGFydCgpIJYgVGhpcyBmdW5jdGlvbiBzdGFydHMgdGhlIFJUQyBjb3VudGVyLg0KLSAgICAtIE1TU19SVENfc3RvcCgpIJYgVGhpcyBmdW5jdGlvbiBzdG9wcyB0aGUgUlRDIGNvdW50ZXIuDQotICAgIA0KLSAgSW50ZXJydXB0IENvbnRyb2wNCi0gIFRoZSBNU1NfUlRDX2luaXQoKSBmdW5jdGlvbiBlbmFibGVzIHRoZSBSVENfV0FLRVVQX0NSWzBdIG1hc2sgYml0IGluIHRoZSBNU1MNCi0gIFN5c3RlbSBSZWdpc3RlciB0byBjb25uZWN0IHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCB0byB0aGUgQ29ydGV4LU0zIGludGVycnVwdA0KLSAgY29udHJvbGxlci4NCi0gIEFuIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCwgd2l0aCB3ZWFrDQotICBsaW5rYWdlLCBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91IG11c3QgcHJvdmlkZSB5b3VyIG93bg0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uLCB3aGljaCB3aWxsIG92ZXJyaWRlDQotICB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgdG8gc3VpdCB5b3VyIGFwcGxpY2F0aW9uLg0KLSAgVGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0IGhhbmRsZXIgaXMgYXMgZm9sbG93czoNCi0gICAgdm9pZCBSVENfV2FrZXVwX0lSUUhhbmRsZXIgKCB2b2lkICkNCi0gIFRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBpcyBjb250cm9sbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19SVENfZW5hYmxlX2lycSgpIJYgVGhlIE1TU19SVENfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIFJUQw0KLSAgICAgIHRvIGludGVycnVwdCB0aGUgQ29ydGV4LU0zIHdoZW4gYSB3YWtldXAgYWxhcm0gb2NjdXJzLg0KLSAgICAtIE1TU19SVENfZGlzYWJsZV9pcnEoKSCWIFRoZSBNU1NfUlRDX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gZGlzYWJsZXMgdGhlDQotICAgICAgUlRDIGZyb20gaW50ZXJydXB0aW5nIHRoZSBDb3J0ZXgtTTMgd2hlbiBhIHdha2V1cCBhbGFybSBvY2N1cnMuDQotICAgIC0gTVNTX1JUQ19jbGVhcl9pcnEoKSCWIFRoZSBNU1NfUlRDX2NsZWFyX2lycSgpIGZ1bmN0aW9uIGNsZWFycyBhIHBlbmRpbmcNCi0gICAgICBSVEMgd2FrZXVwIGludGVycnVwdCBhdCB0aGUgUlRDIHdha2V1cCBvdXRwdXQuIFlvdSBtdXN0IGNhbGwgdGhlDQotICAgICAgTVNTX1JUQ19jbGVhcl9pcnEoKSBmdW5jdGlvbiBhcyBwYXJ0IG9mIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlDQotICAgICAgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCkgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSAoSVNSKSBpbiBvcmRlciB0bw0KLSAgICAgIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0IGV2ZW50IHJldHJpZ2dlcmluZyBhIGNhbGwgdG8gdGhlIElTUi4NCi0NCi0gKi8vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLSNpZm5kZWYgTVNTX1JUQ19IXw0KLSNkZWZpbmUgTVNTX1JUQ19IXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX0JJTkFSWV9NT0RFIGNvbnN0YW50IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbW9kZSBwYXJhbWV0ZXIgdG8gdGhlDQotICBNU1NfUlRDX2luaXQoKSBmdW5jdGlvbi4gVGhlIFJUQyB3aWxsIHJ1biBpbiBiaW5hcnkgbW9kZSBpZiB0aGlzIGNvbnN0YW50IGlzDQotICB1c2VkLiBJbiBiaW5hcnkgbW9kZSwgdGhlIGNhbGVuZGFyIGNvdW50ZXIgY291bnRzIGNvbnNlY3V0aXZlbHkgZnJvbSAwIGFsbCB0aGUNCi0gIHdheSB0byAyXjQzLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1JUQ19CSU5BUllfTU9ERSAgICAgICAgICAgICAgIDB1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX0NBTEVOREFSX01PREUgY29uc3RhbnQgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBtb2RlIHBhcmFtZXRlciB0bw0KLSAgdGhlIE1TU19SVENfaW5pdCgpIGZ1bmN0aW9uLiBUaGUgUlRDIHdpbGwgcnVuIGluIGNhbGVuZGFyIG1vZGUgaWYgdGhpcw0KLSAgY29uc3RhbnQgaXMgdXNlZC4gSW4gY2FsZW5kYXIgbW9kZSwgdGhlIGNhbGVuZGFyIGNvdW50ZXIgY291bnRzIHNlY29uZHMsDQotICBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCB5ZWFycywgd2Vla2RheXMgYW5kIHdlZWtzLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1JUQ19DQUxFTkRBUl9NT0RFICAgICAgICAgICAgIDF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIgb2YgdGhlIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtKCkgZnVuY3Rpb24NCi0gIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfcnRjX2NhbGVuZGFyX3QgZGF0YSBzdHJ1Y3R1cmUgc3BlY2lmeWluZyB0aGUgZGF0ZSBhbmQNCi0gIHRpbWUgYXQgd2hpY2ggdGhlIGFsYXJtIGlzIHRvIG9jY3VyLiBZb3UgbXVzdCBhc3NpZ24gdGhlIHJlcXVpcmVkIGRhdGUgYW5kDQotICB0aW1lIHZhbHVlcyB0byB0aGUgbXNzX3J0Y19jYWxlbmRhcl90IHN0cnVjdHVyZSBiZWZvcmUgY2FsbGluZyB0aGUgZnVuY3Rpb24uDQotICBBbnkgb2YgdGhlIGZpZWxkcyBvZiB0aGUgbXNzX3J0Y19jYWxlbmRhcl90IHN0cnVjdHVyZSBjYW4gYmUgc2V0IHRvDQotICBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSwgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBub3QgdG8gYmUgY29uc2lkZXJlZCBpbg0KLSAgZGVjaWRpbmcgd2hlbiB0aGUgYWxhcm0gd2lsbCBvY2N1cjsgdGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiBzZXR0aW5nIHBlcmlvZGljDQotICBhbGFybXMuIA0KLSAqLw0KLSNkZWZpbmUgTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUgICAgICAweEZGdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBEYXlzIG9mIHRoZSB3ZWVrLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1JUQ19TVU5EQVkgICAgICAxdQ0KLSNkZWZpbmUgTVNTX1JUQ19NT05EQVkgICAgICAydQ0KLSNkZWZpbmUgTVNTX1JUQ19UVUVTREFZICAgICAzdQ0KLSNkZWZpbmUgTVNTX1JUQ19XRURORVNEQVkgICA0dQ0KLSNkZWZpbmUgTVNTX1JUQ19USFJVU0RBWSAgICA1dQ0KLSNkZWZpbmUgTVNTX1JUQ19GUklEQVkgICAgICA2dQ0KLSNkZWZpbmUgTVNTX1JUQ19TQVRVUkRBWSAgICA3dQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgbXNzX3J0Y19hbGFybV90eXBlX3QgZW51bWVyYXRpb24gaXMgdXNlZCBhcyB0aGUgYWxhcm1fdHlwZSBwYXJhbWV0ZXIgZm9yDQotICB0aGUgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnRfYWxhcm0oKSBhbmQgTVNTX1JUQ19zZXRfYmluYXJ5X2NvdW50X2FsYXJtKCkNCi0gIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBhbGFybSBzaG91bGQgb2NjdXIgb25seSBvbmUgdGltZSBvcg0KLSAgcGVyaW9kaWNhbGx5Lg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19SVENfU0lOR0xFX1NIT1RfQUxBUk0sDQotICAgIE1TU19SVENfUEVSSU9ESUNfQUxBUk0NCi19IG1zc19ydGNfYWxhcm1fdHlwZV90Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBBIHBvaW50ZXIgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIG1zc19ydGNfY2FsZW5kZXJfdCBkYXRhIHN0cnVjdHVyZSBpcyB1c2VkIHRvDQotICB3cml0ZSBuZXcgZGF0ZSBhbmQgdGltZSB2YWx1ZXMgdG8gdGhlIFJUQyB1c2luZyB0aGUNCi0gIE1TU19SVENfc2V0X3J0Y19jYWxlbmRhcl9jb3VudCgpIGFuZCBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybSgpDQotICBmdW5jdGlvbnMuIFRoZSBNU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudCgpIGZ1bmN0aW9uIGFsc28gdXNlcyBhIHBvaW50ZXIgdG8gYW4NCi0gIGluc3RhbmNlIG9mIHRoZSBtc3NfcnRjX2NhbGVuZGVyX3QgZGF0YSBzdHJ1Y3R1cmUgdG8gcmVhZCB0aGUgY3VycmVudCBkYXRlIGFuZA0KLSAgdGltZSB2YWx1ZSBmcm9tIHRoZSBSVEMuDQotICovDQotdHlwZWRlZiBzdHJ1Y3QgbXNzX3J0Y19jYWxlbmRhcg0KLXsNCi0gICAgIHVpbnQ4X3Qgc2Vjb25kOw0KLSAgICAgdWludDhfdCBtaW51dGU7DQotICAgICB1aW50OF90IGhvdXI7DQotICAgICB1aW50OF90IGRheTsNCi0gICAgIHVpbnQ4X3QgbW9udGg7DQotICAgICB1aW50OF90IHllYXI7DQotICAgICB1aW50OF90IHdlZWtkYXk7DQotICAgICB1aW50OF90IHdlZWs7DQotfSBtc3NfcnRjX2NhbGVuZGFyX3QgOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19pbml0KCkgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIFJUQyBkcml2ZXIgYW5kIGhhcmR3YXJlIHRvIGEga25vd24NCi0gIHN0YXRlLiANCi0gIFRvIGluaXRpYWxpemUgdGhlIFJUQyBoYXJkd2FyZSwgdGhpcyBmdW5jdGlvbjoNCi0gICAgLSBTdG9wcyB0aGUgUlRDIGNvdW50ZXJzIGFuZCBkaXNhYmxlcyB0aGUgUlRDIGFsYXJtDQotICAgIC0gRGlzYWJsZXMgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0IGluIHRoZSBSVEMgYW5kIGluIHRoZSBDb3J0ZXgtTTMNCi0gICAgICBpbnRlcnJ1cHQgY29udHJvbGxlciAoTlZJQykuDQotICAgIC0gQ2xlYXJzIGFueSBwZW5kaW5nIFJUQyB3YWtldXAgaW50ZXJydXB0IGluIHRoZSBSVEMgYW5kIGluIHRoZSBDb3J0ZXgtTTMNCi0gICAgICBpbnRlcnJ1cHQgY29udHJvbGxlciAoTlZJQykuDQotICAgIC0gUmVzZXRzIHRoZSBSVEMgY291bnRlcnMgYW5kIHRoZSBhbGFybSBhbmQgY29tcGFyZSByZWdpc3RlcnMNCi0gICAgLSBTZXRzIHRoZSBSVEMncyBvcGVyYXRpbmcgbW9kZSB0byBiaW5hcnkgY291bnRlciBtb2RlIG9yIGNhbGVuZGFyIGNvdW50ZXINCi0gICAgICBtb2RlLCBhcyBzcGVjaWZpZWQgYnkgdGhlIG1vZGUgcGFyYW1ldGVyDQotICAgIC0gU2V0cyB0aGUgUlRDJ3MgcHJlc2NhbGVyIHJlZ2lzdGVyIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIHByZXNjYWxlcg0KLSAgICAgIHBhcmFtZXRlcg0KLSAgVGhlIE1TUyBjbG9jayBjb250cm9sbGVyIGNhbiBzdXBwbHkgb25lIG9mIHRocmVlIGNsb2NrIHNvdXJjZXMgdG8gdGhlIFJUQw0KLSAgY2xvY2sgaW5wdXQgKFJUQ0NMSyk6DQotICAgIC0gQ3J5c3RhbCBPc2NpbGxhdG9yIDMyLjc2OCBrSHoNCi0gICAgLSAxTUh6IE9zY2lsbGF0b3INCi0gICAgLSA1ME1IeiBPc2NpbGxhdG9yLiAgKDI1IE1IeiBpbiBhIDEuMHYgcGFydCkuDQotICBGb3IgY2FsZW5kYXIgbW9kZSwgcHJvZ3JhbSB0aGUgcHJlc2NhbGVyIHJlZ2lzdGVyIHRvIGdlbmVyYXRlIGEgMUh6IHNpZ25hbA0KLSAgZnJvbSB0aGUgYWN0aXZlIFJUQ0NMSyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoNCi0gICAgcHJlc2NhbGVyID0gUlRDQ0xLIJYgMSAod2hlcmUgUlRDQ0xLIHVuaXQgaXMgSHopDQotICBGb3IgYSAzMi43Njgga0h6IGNsb2NrLCBzZXQgdGhlIHByZXNjYWxlciB0byAzMjc2OCAtIDEgPSAzMjc2Ny4gVGhlIHByZXNjYWxlcg0KLSAgcmVnaXN0ZXIgaXMgMjYgYml0cyB3aWRlLCBhbGxvd2luZyBjbG9jayBzb3VyY2VzIG9mIHVwIHRvIDY3IE1IeiB0byBnZW5lcmF0ZQ0KLSAgdGhlIDFIeiB0aW1lIGJhc2UuDQotICBGb3IgYmluYXJ5IG1vZGUsIHRoZSBwcmVzY2FsZXIgcmVnaXN0ZXIgY2FuIGJlIHByb2dyYW1tZWQgdG8gZ2VuZXJhdGUgYSAxSHoNCi0gIHRpbWUgYmFzZSBvciBhIGRpZmZlcmVudCB0aW1lIGJhc2UsIGFzIHJlcXVpcmVkLg0KLSAgDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBvcGVyYXRpbmcgbW9kZSBvZiB0aGUgUlRDLiBUaGUNCi0gICAgYWxsb3dlZCB2YWx1ZXMgZm9yIG1vZGUgYXJlOg0KLSAgICAgIC0gTVNTX1JUQ19CSU5BUllfTU9ERQ0KLSAgICAgIC0gTVNTX1JUQ19DQUxFTkRBUl9NT0RFDQotICAgIA0KLSAgQHBhcmFtIHByZXNjYWxlcg0KLSAgICBUaGUgcHJlc2NhbGVyIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHZhbHVlIHRvIGRpdmlkZSB0aGUgaW5jb21pbmcgUlRDIGNsb2NrDQotICAgIGJ5LCB0byBnZW5lcmF0ZSB0aGUgUlRDIHRpbWUgYmFzZSBzaWduYWwuIEZvciBjYWxlbmRhciBtb2RlLCBzZXQgdGhlDQotICAgIHByZXNjYWxlciB2YWx1ZSB0byBnZW5lcmF0ZSBhIDFIeiB0aW1lIGJhc2UgZnJvbSB0aGUgaW5jb21pbmcgUlRDIGNsb2NrDQotICAgIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGVxdWF0aW9uOg0KLSAgICAgICAgcHJlc2NhbGVyID0gUlRDQ0xLIJYgMSAgICAod2hlcmUgdGhlIFJUQ0NMSyB1bml0IGlzIEh6KQ0KLSAgICBGb3IgYmluYXJ5IG1vZGUsIHNldCB0aGUgcHJlc2NhbGVyIHZhbHVlIHRvIGdlbmVyYXRlIGEgMUh6IHRpbWUgYmFzZSBvciBhDQotICAgIGRpZmZlcmVudCB0aW1lIGJhc2UsIGFzIHJlcXVpcmVkLg0KLSAgICBUaGUgcHJlc2NhbGVyIHBhcmFtZXRlciBjYW4gYmUgYW55IGludGVnZXIgdmFsdWUgaW4gdGhlIHJhbmdlIDIgdG8gMl4yNi4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICAgIA0KLSAgVGhlIGV4YW1wbGUgY29kZSBiZWxvdyBzaG93cyBob3cgdGhlIFJUQyBjYW4gYmUgaW5pdGlhbGl6ZWQgb25seSBhZnRlciBhIHBvd2VyLW9uDQotICByZXNldC4NCi0gIEBjb2RlDQotICAgICNkZWZpbmUgUE9fUkVTRVRfREVURUNUX01BU0sgICAgMHgwMDAwMDAwMXUNCi0gICAgDQotICAgIHZvaWQgaW5pdF9hcHBsaWNhdGlvbih2b2lkKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBwb3dlcl9vbl9yZXNldDsNCi0gICAgICAgIHBvd2VyX29uX3Jlc2V0ID0gU1lTUkVHLT5SRVNFVF9TT1VSQ0VfQ1IgJiBQT19SRVNFVF9ERVRFQ1RfTUFTSzsNCi0gICAgICAgIGlmKHBvd2VyX29uX3Jlc2V0KQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIE1TU19SVENfaW5pdChNU1NfUlRDX0NBTEVOREFSX01PREUsIDMyNzY3KTsNCi0gICAgICAgICAgICBTWVNSRUctPlJFU0VUX1NPVVJDRV9DUiA9IFBPX1JFU0VUX0RFVEVDVF9NQVNLOw0KLSAgICAgICAgfQ0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX2luaXQNCi0oDQotICAgIHVpbnQ4X3QgbW9kZSwNCi0gICAgdWludDMyX3QgcHJlc2NhbGVyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfc2V0X3J0Y19jYWxlbmRhcl9jb3VudCgpIGZ1bmN0aW9uIHNldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlDQotICBSVEMgY2FsZW5kYXIgY291bnRlci4NCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbg0KLSAgICAgICAgY2FsZW5kYXIgY291bnRlciBtb2RlLg0KLSAgICAgICAgDQotICBAcGFyYW0gbmV3X3J0Y192YWx1ZQ0KLSAgICBUaGUgbmV3X3J0Y192YWx1ZSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc19ydGNfY2FsZW5kYXJfdCBkYXRhDQotICAgIHN0cnVjdHVyZSBzcGVjaWZ5aW5nIHRoZSBuZXcgZGF0ZSBhbmQgdGltZSB2YWx1ZSBmcm9tIHdoaWNoIHRoZSBSVEMgd2lsbA0KLSAgICBpbmNyZW1lbnQuIFlvdSBtdXN0IHBvcHVsYXRlIHRoZSBtc3NfcnRjX2NhbGVuZGFyX3Qgc3RydWN0dXJlIHdpdGggdGhlDQotICAgIHJlcXVpcmVkIGRhdGUgYW5kIHRpbWUgdmFsdWVzIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLQ0KLXZvaWQNCi1NU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudA0KLSgNCi0gICAgY29uc3QgbXNzX3J0Y19jYWxlbmRhcl90ICpuZXdfcnRjX3ZhbHVlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfc2V0X2JpbmFyeV9jb3VudCgpIGZ1bmN0aW9uIHNldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFJUQw0KLSAgYmluYXJ5IGNvdW50ZXIuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICAgIGJpbmFyeSBjb3VudGVyIG1vZGUuDQotICAgICAgICANCi0gIEBwYXJhbSBuZXdfcnRjX3ZhbHVlDQotICAgIFRoZSBuZXdfcnRjX3ZhbHVlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG5ldyBjb3VudCB2YWx1ZSBmcm9tIHdoaWNoIHRoZSBSVEMNCi0gICAgd2lsbCBpbmNyZW1lbnQuIFRoZSBiaW5hcnkgY291bnRlciBpcyA0MyBiaXRzIHdpZGUsIHNvIHRoZSBtYXhpbXVtIGFsbG93ZWQNCi0gICAgYmluYXJ5IHZhbHVlIGlzIDJeNDMuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotDQotdm9pZA0KLU1TU19SVENfc2V0X2JpbmFyeV9jb3VudA0KLSgNCi0gICAgdWludDY0X3QgbmV3X3J0Y192YWx1ZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudCgpIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFJUQw0KLSAgY2FsZW5kYXIgY291bnRlciB2aWEgdGhlIGRhdGEgc3RydWN0dXJlIHBvaW50ZWQgdG8gYnkgdGhlIHBfcnRjX2NhbGVuZGFyDQotICBwYXJhbWV0ZXIuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICAgIGNhbGVuZGFyIGNvdW50ZXIgbW9kZS4NCi0gICAgICAgIA0KLSAgQHBhcmFtIHBfcnRjX2NhbGVuZGFyDQotICAgIFRoZSBwX3J0Y19jYWxlbmRhciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc19ydGNfY2FsZW5kYXJfdCBkYXRhDQotICAgIHN0cnVjdHVyZSB3aGVyZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY2FsZW5kYXIgY291bnRlciB3aWxsIGJlIHdyaXR0ZW4gYnkNCi0gICAgdGhlIE1TU19SVENfZ2V0X2NhbGVuZGFyX2NvdW50KCkgZnVuY3Rpb24NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZA0KLU1TU19SVENfZ2V0X2NhbGVuZGFyX2NvdW50DQotKA0KLSAgICBtc3NfcnRjX2NhbGVuZGFyX3QgKnBfcnRjX2NhbGVuZGFyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfZ2V0X2JpbmFyeV9jb3VudCgpIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFJUQw0KLSAgYmluYXJ5IGNvdW50ZXIuIA0KLSAgTm90ZTogVGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAgICBiaW5hcnkgY291bnRlciBtb2RlLg0KLSAgICAgICAgDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFJUQyBiaW5hcnkgY291bnRlciBhcyBhbg0KLSAgICB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlci4NCi0gKi8NCi11aW50NjRfdA0KLU1TU19SVENfZ2V0X2JpbmFyeV9jb3VudCh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfc3RhcnQoKSBmdW5jdGlvbiBzdGFydHMgdGhlIFJUQyBpbmNyZW1lbnRpbmcuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19zdGFydCh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfc3RvcCgpIGZ1bmN0aW9uIHN0b3BzIHRoZSBSVEMgZnJvbSBpbmNyZW1lbnRpbmcuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19zdG9wKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19yZXNldF9jb3VudGVyKCkgZnVuY3Rpb24gcmVzZXRzIHRoZSBSVEMgY291bnRlcnMuIElmIHRoZSBjb3VudGVyDQotICB3YXMgcnVubmluZyBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGVuIGl0IGNvbnRpbnVlcyBpbmNyZW1lbnRpbmcgZnJvbQ0KLSAgdGhlIGNvdW50ZXKScyByZXNldCB2YWx1ZS4NCi0gIA0KLSAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkIE1TU19SVENfcmVzZXRfY291bnRlcih2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIFJUQyB3YWtldXAgb3V0cHV0IHRvIGludGVycnVwdA0KLSAgdGhlIENvcnRleC1NMyB3aGVuIGFuIGFsYXJtIG9jY3Vycy4gSXQgZW5hYmxlcyB0aGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQNCi0gIChSVENfV2FrZXVwX0lSUW4pIGluIHRoZSBDb3J0ZXgtTTMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpLiBUaGUNCi0gIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gUlRDIHdha2V1cCBpbnRlcnJ1cHQNCi0gIG9jY3Vycy4NCi0gIE5vdGU6IEFuIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCwgd2l0aCB3ZWFrDQotICAgICAgICBsaW5rYWdlLCBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91IG11c3QgcHJvdmlkZSB5b3VyIG93bg0KLSAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uLCB3aGljaCB3aWxsDQotICAgICAgICBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgdG8gc3VpdCB5b3VyIGFwcGxpY2F0aW9uLg0KLSAgTm90ZTogVGhpcyBmdW5jdGlvbiBvbmx5IGVuYWJsZXMgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0IGF0IHRoZSBDb3J0ZXgtTTMNCi0gICAgICAgIE5WSUMgbGV2ZWwuIFRoZSBhbGFybSBzZXR0aW5nIGZ1bmN0aW9ucyBlbmFibGUgdGhlIHdha2V1cCBpbnRlcnJ1cHQNCi0gICAgICAgIG91dHB1dCBmcm9tIHRoZSBSVEMuDQotICovDQotdm9pZCBNU1NfUlRDX2VuYWJsZV9pcnEodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gZGlzYWJsZXMgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0DQotICAoUlRDX1dha2V1cF9JUlFuKSBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdCBjb250cm9sbGVyIChOVklDKS4NCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gb25seSBkaXNhYmxlcyB0aGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQgYXQgdGhlIENvcnRleC1NMw0KLSAgICAgICAgTlZJQyBsZXZlbC4gSXQgZG9lcyBub3QgZGlzYWJsZSB0aGUgd2FrZXVwIGludGVycnVwdCBvdXRwdXQgZnJvbSB0aGUNCi0gICAgICAgIFJUQy4NCi0gICAgICAgIA0KLSAgIEBwYXJhbQ0KLSAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgIEByZXR1cm4NCi0gICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZCBNU1NfUlRDX2Rpc2FibGVfaXJxKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19jbGVhcl9pcnEoKSBmdW5jdGlvbiBjbGVhcnMgYSBwZW5kaW5nIHdha2V1cCBpbnRlcnJ1cHQgZnJvbSB0aGUNCi0gIFJUQy4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjbGVhciB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgaW50ZXJydXB0DQotICBjb250cm9sbGVyIChOVklDKTsgaXQgb25seSBjbGVhcnMgdGhlIHdha2V1cCBvdXRwdXQgZnJvbSB0aGUgUlRDLg0KLSAgTm90ZTogWW91IG11c3QgY2FsbCB0aGUgTVNTX1JUQ19jbGVhcl9pcnEoKSBmdW5jdGlvbiBhcyBwYXJ0IG9mIHlvdXINCi0gICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBSVEMgd2FrZXVwIGludGVycnVwdA0KLSAgICAgICAgc2VydmljZSByb3V0aW5lIChJU1IpIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0IGV2ZW50DQotICAgICAgICByZXRyaWdnZXJpbmcgYSBjYWxsIHRvIHRoZSBJU1IuDQotICAgICAgICANCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIG5vIHBhcmFtZXRlcnMuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICANCi0gIEV4YW1wbGU6DQotICBUaGUgZXhhbXBsZSBjb2RlIGJlbG93IGRlbW9pbnN0cmF0ZXMgaG93IHRoZSBNU1NfUlRDX2NsZWFyX2lycSgpIGZ1bmN0aW9uIGlzDQotICBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0IHNlcnZpY2VyIHJvdXRpbmUgdXNlZA0KLSAgYnkgYW4gYXBwbGljYXRpb24gdG8gaGFuZGxlIFJUQyBhbGFybXMuDQotICBAY29kZQ0KLSAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykNCi0gICAgX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCB2b2lkICkNCi0gICAgI2Vsc2UNCi0gICAgdm9pZCBSVENfV2FrZXVwX0lSUUhhbmRsZXIoIHZvaWQgKQ0KLSAgICAjZW5kaWYNCi0gICAgew0KLSAgICAgICAgcHJvY2Vzc19hbGFybSgpOw0KLSAgICAgICAgTVNTX1JUQ19jbGVhcl9pcnEoKTsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0qLw0KLXZvaWQgTVNTX1JUQ19jbGVhcl9pcnEodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybSgpIGZ1bmN0aW9uIHNldHMgdXAgdGhlIFJUQyB0byBnZW5lcmF0ZSBhbg0KLSAgYWxhcm0gd2hlbiB0aGUgUlRDIGNvdW50IHJlYWNoZXMgdGhlIHRpbWUvZGF0ZSBzcGVjaWZpZWQgYnkgdGhlIGFsYXJtX3ZhbHVlDQotICBwYXJhbWV0ZXIuIFRoZSBhbGFybSBhc3NlcnRzIGEgd2FrZXVwIGludGVycnVwdCB0byB0aGUgQ29ydGV4LU0zLiBUaGlzDQotICBmdW5jdGlvbiBlbmFibGVzIHRoZSBSVEOScyB3YWtldXAgaW50ZXJydXB0IG91dHB1dCwgaG93ZXZlciB0aGUgUlRDIHdha2V1cA0KLSAgaW50ZXJydXB0IGlucHV0IHRvIHRoZSBDb3J0ZXgtTTMgTlZJQyBtdXN0IGJlIGVuYWJsZWQgc2VwYXJhdGVseSBieSBjYWxsaW5nDQotICB0aGUgTVNTX1JUQ19lbmFibGVfaXJxKCkgZnVuY3Rpb24uIFRoZSBhbGFybSBjYW4gYmUgZGlzYWJsZWQgYXQgYW55IHRpbWUgYnkNCi0gIGNhbGxpbmcgdGhlIE1TU19SVENfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbi4NCi0gIA0KLSAgU2luZ2xlLXNob3QgYWxhcm0NCi0gIFRoZSBhbGFybSBjYW4gYmUgYSBzaW5nbGUtc2hvdCBhbGFybSwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIHNpbmdsZSB3YWtldXANCi0gIGludGVycnVwdCB0aGUgZmlyc3QgdGltZSB0aGUgUlRDIGNvdW50IHJlYWNoZXMgdGhlIHRpbWUvZGF0ZSBzcGVjaWZpZWQgYnkNCi0gIGFsYXJtX3ZhbHVlLiBBIHNpbmdsZSBzaG90IGFsYXJtIGlzIGFjaGlldmVkIGJ5IHNwZWNpZnlpbmcgYSB2YWx1ZSBmb3IgZXZlcnkNCi0gIGZpZWxkIG9mIHRoZSBtc3NfcnRjX2NhbGVuZGFyX3QgZGF0YSBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSB0aGUgYWxhcm1fdmFsdWUNCi0gIHBhcmFtZXRlci4gVGhlIFJUQyBjb3VudGVyIHdpbGwga2VlcCBpbmNyZW1lbnRpbmcgYWZ0ZXIgYSBzaW5nbGUgc2hvdCBhbGFybQ0KLSAgb2NjdXJzLg0KLSAgDQotICBQZXJpb2RpYyBhbGFybQ0KLSAgVGhlIGFsYXJtIGNhbiBhbHNvIGJlIGEgcGVyaW9kaWMgYWxhcm0sIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSB3YWtldXAgaW50ZXJydXB0DQotICBldmVyeSB0aW1lIHRoZSBSVEMgY291bnQgcmVhY2hlcyB0aGUgdGltZS9kYXRlIHNwZWNpZmllZCBieSBhbGFybV92YWx1ZSwgd2l0aA0KLSAgdGhlIGNvdW50ZXIgcnVubmluZyBpbiBhIGNvbnRpbnVvdXMgbG9vcC4gVGhlIHBlcmlvZGljIGFsYXJtIGNhbiBiZSBzZXQgdG8NCi0gIG9jY3VyIGV2ZXJ5IG1pbnV0ZSwgaG91ciwgZGF5LCBtb250aCwgeWVhciwgd2VlaywgZGF5IG9mIHRoZSB3ZWVrLCBvciBhbnkNCi0gIHZhbGlkIGNvbWJpbmF0aW9uIG9mIHRoZXNlLiBUaGlzIGlzIGFjaGlldmVkIGJ5IHNldHRpbmcgc29tZSBvZiB0aGUgZmllbGRzIG9mDQotICB0aGUgbXNzX3J0Y19jYWxlbmRhcl90IGRhdGEgc3RydWN0dXJlIHBvaW50ZWQgdG8gYnkgdGhlIGFsYXJtX3ZhbHVlIHBhcmFtZXRlciwNCi0gIHRvIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFLiBGb3IgZXhhbXBsZSwgc2V0dGluZyB0aGUgd2Vla2RheSBmaWVsZCB0bw0KLSAgTVNTX1JUQ19NT05EQVkgYW5kIGFsbCBvdGhlciBmaWVsZHMgdG8gTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUgd2lsbCByZXN1bHQNCi0gIGluIGFuIGFsYXJtIG9jY3VycmluZyBldmVyeSBNb25kYXkuIFlvdSBjYW4gcmVmaW5lIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSBhbGFybQ0KLSAgd2lsbCBvY2N1ciBieSBzcGVjaWZ5aW5nIHZhbHVlcyBmb3IgdGhlIGhvdXIsIG1pbnV0ZSBhbmQgc2Vjb25kIGZpZWxkcy4NCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbg0KLSAgICAgICAgY2FsZW5kYXIgY291bnRlciBtb2RlLg0KLSAgDQotICBAcGFyYW0gYWxhcm1fdmFsdWUNCi0gICAgVGhlIGFsYXJtX3ZhbHVlIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3J0Y19jYWxlbmRhcl90IGRhdGENCi0gICAgc3RydWN0dXJlIHNwZWNpZnlpbmcgdGhlIGRhdGUgYW5kIHRpbWUgYXQgd2hpY2ggdGhlIGFsYXJtIGlzIHRvIG9jY3VyLiBZb3UNCi0gICAgbXVzdCBhc3NpZ24gdGhlIHJlcXVpcmVkIGRhdGUgYW5kIHRpbWUgdmFsdWVzIHRvIHRoZSBtc3NfcnRjX2NhbGVuZGFyX3QNCi0gICAgc3RydWN0dXJlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIFNvbWUgb2YgdGhlIGZpZWxkcyB3aXRoaW4gdGhlDQotICAgIG1zc19ydGNfY2FsZW5kYXJfdCBzdHJ1Y3R1cmUgY2FuIGJlIHNldCB0byBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSwgdG8NCi0gICAgaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBub3QgdG8gYmUgY29uc2lkZXJlZCBpbiBkZWNpZGluZyB3aGVuIHRoZSBhbGFybSB3aWxsDQotICAgIG9jY3VyOyB0aGlzIGlzIG5lY2Vzc2FyeSB3aGVuIHNldHRpbmcgcGVyaW9kaWMgYWxhcm1zLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICAgICANCi0gIEV4YW1wbGVzOg0KLSAgDQotICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgaG93IHRvIGNvbmZpZ3VyZSB0aGUgUlRDIHRvIGdlbmVyYXRlIGENCi0gIHNpbmdsZSBjYWxlbmRhciBhbGFybSBhdCBhIHNwZWNpZmljIGRhdGUgYW5kIHRpbWUuIFRoZSBhbGFybSB3aWxsIG9ubHkgb2NjdXINCi0gIG9uY2UgYW5kIHRoZSBSVEMgd2lsbCBrZWVwIGluY3JlbWVudGluZyByZWdhcmRsZXNzIG9mIHRoZSBhbGFybSB0YWtpbmcgcGxhY2UuDQotICANCi0gIEBjb2RlDQotICAgIGNvbnN0IG1zc19ydGNfY2FsZW5kYXJfdCBpbml0aWFsX2NhbGVuZGFyX2NvdW50ID0NCi0gICAgew0KLSAgICAgICAgMTV1LCAgICAgc2Vjb25kDQotICAgICAgICAzMHUsICAgICBtaW51dGUNCi0gICAgICAgIDZ1LCAgICAgIGhvdXINCi0gICAgICAgIDZ1LCAgICAgIGRheQ0KLSAgICAgICAgOXUsICAgICAgbW9udGgNCi0gICAgICAgIDEydSwgICAgIHllYXINCi0gICAgICAgIDV1LCAgICAgIHdlZWtkYXkNCi0gICAgICAgIDM3dSAgICAgIHdlZWsNCi0gICAgfTsNCi0gICAgDQotICAgIG1zc19ydGNfY2FsZW5kYXJfdCBhbGFybV9jYWxlbmRhcl9jb3VudCA9DQotICAgIHsNCi0gICAgICAgIDE3dSwgICAgIHNlY29uZA0KLSAgICAgICAgMzB1LCAgICAgbWludXRlDQotICAgICAgICA2dSwgICAgICBob3VyDQotICAgICAgICA2dSwgICAgICBkYXkNCi0gICAgICAgIDl1LCAgICAgIG1vbnRoDQotICAgICAgICAxMnUsICAgICB5ZWFyDQotICAgICAgICA1dSwgICAgICB3ZWVrZGF5DQotICAgICAgICAzN3UgICAgICB3ZWVrDQotICAgIH07DQotICAgIA0KLSAgICBNU1NfUlRDX2luaXQoTVNTX1JUQ19DQUxFTkRBUl9NT0RFLCBSVENfUFJFU0NBTEVSKTsNCi0gICAgTVNTX1JUQ19jbGVhcl9pcnEoKTsNCi0gICAgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnQoJmluaXRpYWxfY2FsZW5kYXJfY291bnQpOw0KLSAgICBNU1NfUlRDX2VuYWJsZV9pcnEoKTsNCi0gICAgTVNTX1JUQ19zdGFydCgpOw0KLSAgICANCi0gICAgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnRfYWxhcm0oJmFsYXJtX2NhbGVuZGFyX2NvdW50KTsNCi0gIEBlbmRjb2RlDQotICANCi0gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb2RlIGRlbW9uc3RyYXRlcyBob3cgdG8gY29uZmlndXJlIHRoZSBSVEMgdG8gZ2VuZXJhdGUgYQ0KLSAgcGVyaW9kaWMgY2FsZW5kYXIgYWxhcm0uIFRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBnZW5lcmF0ZSBhbiBhbGFybSBldmVyeQ0KLSAgVHVlc2RheSBhdCAxNjo0NTowMC4gVGhlIGFsYXJtIHdpbGwgcmVvY2N1ciBldmVyeSB3ZWVrIHVudGlsIHRoZSBSVEMgd2FrZXVwDQotICBpbnRlcnJ1cHQgaXMgZGlzYWJsZWQgdXNpbmcgYSBjYWxsIHRvIE1TU19SVENfZGlzYWJsZV9pcnEoKS4NCi0gIA0KLSAgQGNvZGUNCi0gICAgbXNzX3J0Y19jYWxlbmRhcl90IGluaXRpYWxfY2FsZW5kYXJfY291bnQgPQ0KLSAgICB7DQotICAgICAgICA1OHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLXNlY29uZA0KLSAgICAgICAgNTl1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS1taW51dGUNCi0gICAgICAgIDIzdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0taG91cg0KLSAgICAgICAgMTB1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS1kYXkNCi0gICAgICAgIDl1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tbW9udGgNCi0gICAgICAgIDEydSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0teWVhcg0KLSAgICAgICAgTVNTX1JUQ19NT05EQVksICAgICAgICAgICAgICAgICA8LS13ZWVrZGF5DQotICAgICAgICAzN3UgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLXdlZWsNCi0gICAgfTsNCi0gICAgDQotICAgIG1zc19ydGNfY2FsZW5kYXJfdCBhbGFybV9jYWxlbmRhcl9jb3VudCA9DQotICAgIHsNCi0gICAgICAgIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFLCAgICAgPC0tc2Vjb25kDQotICAgICAgICA0NXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLW1pbnV0ZQ0KLSAgICAgICAgMTZ1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS1ob3VyDQotICAgICAgICBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSwgICAgIDwtLWRheQ0KLSAgICAgICAgTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUsICAgICA8LS1tb250aA0KLSAgICAgICAgTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUsICAgICA8LS15ZWFyDQotICAgICAgICBNU1NfUlRDX1RVRVNEQVksICAgICAgICAgICAgICAgIDwtLXdlZWtkYXkNCi0gICAgICAgIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFICAgICAgPC0td2Vlaw0KLSAgICB9Ow0KLSAgICANCi0gICAgTVNTX1JUQ19pbml0KE1TU19SVENfQ0FMRU5EQVJfTU9ERSwgUlRDX1BSRVNDQUxFUik7DQotICAgIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50KCZpbml0aWFsX2NhbGVuZGFyX2NvdW50KTsNCi0gICAgTVNTX1JUQ19lbmFibGVfaXJxKCk7DQotICAgIE1TU19SVENfc3RhcnQoKTsNCi0gICAgDQotICAgIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtKCZhbGFybV9jYWxlbmRhcl9jb3VudCk7DQotICBAZW5kY29kZQ0KLSAgDQotICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgdGhlIGNvZGUgdGhhdCB5b3UgbmVlZCB0byBpbmNsdWRlIGluDQotICB5b3VyIGFwcGxpY2F0aW9uIHRvIGhhbmRsZSBhbGFybXMuIEl0IGlzIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGZvciB0aGUNCi0gIFJUQyB3YWtldXAgaW50ZXJydXB0IGlucHV0IHRvIHRoZSBDb3J0ZXgtTTMgTlZJQy4gWW91IG5lZWQgdG8gYWRkIHlvdXINCi0gIGFwcGxpY2F0aW9uIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpbiBwbGFjZSBvZiB0aGUgcHJvY2Vzc19hbGFybSgpIGZ1bmN0aW9uIGJ1dA0KLSAgeW91IG11c3QgcmV0YWluIHRoZSBjYWxsIHRvIE1TU19SVENfY2xlYXJfaXJxKCkgdG8gZW5zdXJlIHRoYXQgdGhlIHNhbWUgYWxhcm0NCi0gIGRvZXMgbm90IHJldHJpZ2dlciB0aGUgaW50ZXJydXB0Lg0KLSAgDQotICBAY29kZQ0KLSAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykNCi0gICAgX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCB2b2lkICkNCi0gICAgI2Vsc2UNCi0gICAgdm9pZCBSVENfV2FrZXVwX0lSUUhhbmRsZXIoIHZvaWQgKQ0KLSAgICAjZW5kaWYNCi0gICAgew0KLSAgICAgICAgcHJvY2Vzc19hbGFybSgpOw0KLSAgICAgICAgTVNTX1JUQ19jbGVhcl9pcnEoKTsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtDQotKA0KLSAgICBjb25zdCBtc3NfcnRjX2NhbGVuZGFyX3QgKiBhbGFybV92YWx1ZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3NldF9iaW5hcnlfY291bnRfYWxhcm0oKSBmdW5jdGlvbiBzZXRzIHVwIHRoZSBSVEMgdG8gZ2VuZXJhdGUgYW4NCi0gIGFsYXJtIHdoZW4gdGhlIFJUQyBjb3VudCByZWFjaGVzIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIGFsYXJtX3ZhbHVlDQotICBwYXJhbWV0ZXIuIFRoZSBhbGFybSBhc3NlcnRzIGEgd2FrZXVwIGludGVycnVwdCB0byB0aGUgQ29ydGV4LU0zLiBUaGlzDQotICBmdW5jdGlvbiBlbmFibGVzIHRoZSBSVEOScyB3YWtldXAgaW50ZXJydXB0IG91dHB1dCwgaG93ZXZlciB0aGUgUlRDIHdha2V1cA0KLSAgaW50ZXJydXB0IGlucHV0IHRvIHRoZSBDb3J0ZXgtTTMgTlZJQyBtdXN0IGJlIGVuYWJsZWQgc2VwYXJhdGVseSBieSBjYWxsaW5nDQotICB0aGUgTVNTX1JUQ19lbmFibGVfaXJxKCkgZnVuY3Rpb24uIFRoZSBhbGFybSBjYW4gYmUgZGlzYWJsZWQgYXQgYW55IHRpbWUgYnkNCi0gIGNhbGxpbmcgdGhlIE1TU19SVENfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbi4NCi0NCi0gIFNpbmdsZS1zaG90IGFsYXJtDQotICBUaGUgYWxhcm0gY2FuIGJlIGEgc2luZ2xlLXNob3QgYWxhcm0sIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBzaW5nbGUgd2FrZXVwDQotICBpbnRlcnJ1cHQgdGhlIGZpcnN0IHRpbWUgdGhlIFJUQyBjb3VudCByZWFjaGVzIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlDQotICBhbGFybV92YWx1ZSBwYXJhbWV0ZXIuIFNldHRpbmcgdGhlIGFsYXJtX3ZhbHVlIHBhcmFtZXRlciB0bw0KLSAgTVNTX1JUQ19QRVJJT0RJQ19BTEFSTSBwcm9kdWNlcyBhIHNpbmdsZS1zaG90IGFsYXJtLiBUaGUgUlRDIGNvdW50ZXIgY29udGludWVzDQotICBpbmNyZW1lbnRpbmcgd2hlbiBhIHNpbmdsZSBzaG90IGFsYXJtIG9jY3Vycy4NCi0NCi0gIFBlcmlvZGljIGFsYXJtDQotICBUaGUgYWxhcm0gY2FuIGFsc28gYmUgYSBwZXJpb2RpYyBhbGFybSwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIHdha2V1cCBpbnRlcnJ1cHQNCi0gIGV2ZXJ5IHRpbWUgdGhlIFJUQyBjb3VudCByZWFjaGVzIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIGFsYXJtX3ZhbHVlDQotICBwYXJhbWV0ZXIuIFNldHRpbmcgdGhlIGFsYXJtX3ZhbHVlIHBhcmFtZXRlciB0byBNU1NfUlRDX1NJTkdMRV9TSE9UX0FMQVJNDQotICBwcm9kdWNlcyBhIHBlcmlvZGljIGFsYXJtLiBUaGUgUlRDIGNvdW50ZXIgYXV0b21hdGljYWxseSB3cmFwcyBhcm91bmQgdG8gemVybw0KLSAgYW5kIGNvbnRpbnVlcyBpbmNyZW1lbnRpbmcgd2hlbiBhIHBlcmlvZGljIGFsYXJtIG9jY3Vycy4NCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbg0KLSAgICAgICAgYmluYXJ5IGNvdW50ZXIgbW9kZQ0KLSAgDQotICBAcGFyYW0gYWxhcm1fdmFsdWUNCi0gICAgVGhlIGFsYXJtX3ZhbHVlIHBhcmFtZXRlciBpcyBhIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBSVEMNCi0gICAgY291bnRlciB2YWx1ZSB0aGF0IG11c3QgYmUgcmVhY2hlZCBmb3IgdGhlIHJlcXVlc3RlZCBhbGFybSB0byBvY2N1ci4NCi0gIA0KLSAgQHBhcmFtIGFsYXJtX3R5cGUNCi0gICAgVGhlIGFsYXJtX3R5cGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgYWxhcm0gaXMgYSBzaW5nbGUNCi0gICAgc2hvdCBvciBwZXJpb2RpYyBhbGFybS4gSXQgY2FuIG9ubHkgdGFrZSBvbmUgb2YgdGhlc2UgdHdvIHZhbHVlczoNCi0gICAgIC0gTVNTX1JUQ19TSU5HTEVfU0hPVF9BTEFSTSwNCi0gICAgIC0gTVNTX1JUQ19QRVJJT0RJQ19BTEFSTQ0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZCBNU1NfUlRDX3NldF9iaW5hcnlfY291bnRfYWxhcm0NCi0oDQotICAgIHVpbnQ2NF90IGFsYXJtX3ZhbHVlLA0KLSAgICBtc3NfcnRjX2FsYXJtX3R5cGVfdCBhbGFybV90eXBlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfZ2V0X3VwZGF0ZV9mbGFnKCkgZnVuY3Rpb24gaW5kaWNhdGVzIGlmIHRoZSBSVEMgY291bnRlciBoYXMNCi0gIGluY3JlbWVudGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8gTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpLiBJdCByZXR1cm5zDQotICB6ZXJvIGlmIG5vIFJUQyBjb3VudGVyIGluY3JlbWVudCBoYXMgb2NjdXJyZWQuIEl0IHJldHVybnMgYSBub24temVybyB2YWx1ZSBpZg0KLSAgdGhlIFJUQyBjb3VudGVyIGhhcyBpbmNyZW1lbnRlZC4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB3aGV0aGVyIHRoZSBSVEMgaXMNCi0gIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbiBjYWxlbmRhciBvciBiaW5hcnkgY291bnRlciBtb2RlLg0KLSAgDQotICBAcmV0dXJuDQotICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zLCANCi0gICB6ZXJvOiAgICAgaWYgdGhlIFJUQyBoYXMgbm90IGluY3JlbWVudGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8NCi0gICAgICAgICAgICAgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpLCANCi0gICBub24temVybzogaWYgdGhlIFJUQyBoYXMgaW5jcmVtZW50ZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bw0KLSAgICAgICAgICAgICBNU1NfUlRDX2NsZWFyX3VwZGF0ZV9mbGFnKCkuDQotDQotICAgDQotICBFeGFtcGxlDQotICBUaGlzIGV4YW1wbGUgd2FpdHMgZm9yIHRoZSBSVEMgdGltZXIgdG8gaW5jcmVtZW50IGJ5IG9uZSBzZWNvbmQuDQotICBAY29kZQ0KLSAgICB2b2lkIHdhaXRfc3RhcnRfb2Zfc2Vjb25kKHZvaWQpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90IHJ0Y19jb3VudF91cGRhdGVkOw0KLSAgICAgICAgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpOw0KLSAgICAgICAgZG8gew0KLSAgICAgICAgICAgIHJ0Y19jb3VudF91cGRhdGVkID0gTVNTX1JUQ19nZXRfdXBkYXRlX2ZsYWcoKTsNCi0gICAgICAgIH0gd2hpbGUoIXJ0Y19jb3VudF91cGRhdGVkKQ0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXVpbnQzMl90IE1TU19SVENfZ2V0X3VwZGF0ZV9mbGFnKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpIGZ1bmN0aW9uIGNsZWFycyB0aGUgQ09OVFJPTCByZWdpc3RlciBmbGFnIHRoYXQNCi0gIGlzIHNldCB3aGVuIHRoZSBSVEMgY291bnRlciBpbmNyZW1lbnRzLiBJdCBpcyB1c2VkIGFsb25nc2lkZSBmdW5jdGlvbg0KLSAgTVNTX1JUQ19nZXRfdXBkYXRlX2ZsYWcoKSB0byBkZXRlY3QgUlRDIGNvdW50ZXIgaW5jcmVtZW50cy4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgICANCi0gIEV4YW1wbGUNCi0gIFRoZSBleGFtcGxlIGJlbG93IHdpbGwgd2FpdCBmb3IgdGhlIFJUQyB0aW1lciB0byBpbmNyZW1lbnQgYnkgb25lIHNlY29uZC4NCi0gIEBjb2RlDQotICB2b2lkIHdhaXRfc3RhcnRfb2Zfc2Vjb25kKHZvaWQpDQotICB7DQotICAgICAgdWludDMyX3QgcnRjX2NvdW50X3VwZGF0ZWQ7DQotICAgICAgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpOw0KLSAgICAgIGRvIHsNCi0gICAgICAgICAgcnRjX2NvdW50X3VwZGF0ZWQgPSBNU1NfUlRDX2dldF91cGRhdGVfZmxhZygpOw0KLSAgICAgIH0gd2hpbGUoIXJ0Y19jb3VudF91cGRhdGVkKQ0KLSAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcodm9pZCk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBNU1NfUlRDX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX2NvbWJsay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX2NvbWJsay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGMyZTNhLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuYworKysgL2Rldi9udWxsCkBAIC0xLDcwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0RnVzaW9uMiBDT01CTEsgYWNjZXNzIGZ1bmN0aW9ucy4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU2MTUgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNSAxNDo0ODoxMCArMDEwMCAoRnJpLCAwNSBBcHIgMjAxMykgJA0KLSAqLw0KLSANCi0jaW5jbHVkZSAibXNzX2NvbWJsay5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogQ29udHJvbCByZWdpc3RlciBiaXQgbWFza3MuDQotICovDQotI2RlZmluZSBDUl9GTFVTSE9VVF9NQVNLICAgIDB4MDF1DQotI2RlZmluZSBDUl9TSVpFVFhfTUFTSyAgICAgIDB4MDR1DQotI2RlZmluZSBDUl9FTkFCTEVfTUFTSyAgICAgIDB4MTB1DQotI2RlZmluZSBDUl9MT09QQkFDS19NQVNLICAgIDB4MjB1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTdGF0dXMgYW5kIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXJzIGJpdCBtYXNrcy4NCi0gKi8NCi0jZGVmaW5lIFRYVE9LQVlfTUFTSyAgICAweDAxdQ0KLSNkZWZpbmUgUkNWT0tBWV9NQVNLICAgIDB4MDJ1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBEQVRBOCByZWdpc3RlciBiaXQgbWFza3MuDQotICovDQotI2RlZmluZSBEQVRBOF9DT01NQU5EX01BU0sgIDB4ODAwMHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIENPTUJMSyBkcml2ZXIgc3RhdGVzLg0KLSAqLw0KLSNkZWZpbmUgQ09NQkxLX0lETEUgICAgICAgICAgICAgMHUNCi0jZGVmaW5lIENPTUJMS19UWF9DTUQgICAgICAgICAgIDF1DQotI2RlZmluZSBDT01CTEtfVFhfREFUQSAgICAgICAgICAydQ0KLSNkZWZpbmUgQ09NQkxLX1dBSVRfUkVTUE9OU0UgICAgM3UNCi0jZGVmaW5lIENPTUJMS19SWF9SRVNQT05TRSAgICAgIDR1DQotI2RlZmluZSBDT01CTEtfVFhfUEFHRURfREFUQSAgICA1dQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ09NQkxLIGludGVycnVwdCBzZXJ2Y2llIHJvdXRpbmUuDQotICovDQotdm9pZCBDb21CbGtfSVJRSGFuZGxlcih2b2lkKTsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIExvY2FsIGZ1bmN0aW9ucy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBhYm9ydF9jdXJyZW50X2NtZCh2b2lkKTsNCi1zdGF0aWMgdm9pZCBzZW5kX2NtZF9vcGNvZGUodWludDhfdCBvcGNvZGUpOw0KLXN0YXRpYyB1aW50MzJfdCBmaWxsX3R4X2ZpZm8oY29uc3QgdWludDhfdCAqIHBfY21kLCB1aW50MzJfdCBjbWRfc2l6ZSk7DQotc3RhdGljIHZvaWQgaGFuZGxlX3R4X29rYXlfaXJxKHZvaWQpOw0KLXN0YXRpYyB2b2lkIGhhbmRsZV9yeF9va2F5X2lycSh2b2lkKTsNCi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9yZXF1ZXN0KHVpbnQxNl90IHJlc3BvbnNlX2xlbmd0aCk7DQotc3RhdGljIHZvaWQgcHJvY2Vzc19zeXNfY3RybF9jb21tYW5kKHVpbnQ4X3QgY21kX29wY29kZSk7DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHbG9iYWwgdmFyaWFibGVzOg0KLSAqLw0KLXN0YXRpYyB2b2xhdGlsZSB1aW50OF90IGdfY29tYmxrX2NtZF9vcGNvZGUgPSAwdTsNCi1zdGF0aWMgY29uc3QgdWludDhfdCAqIGdfY29tYmxrX3BfY21kID0gMHU7DQotc3RhdGljIHZvbGF0aWxlIHVpbnQxNl90IGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotc3RhdGljIGNvbnN0IHVpbnQ4X3QgKiBnX2NvbWJsa19wX2RhdGEgPSAwdTsNCi1zdGF0aWMgdm9sYXRpbGUgdWludDMyX3QgZ19jb21ibGtfZGF0YV9zaXplID0gMHU7DQotc3RhdGljIHVpbnQ4X3QgKiBnX2NvbWJsa19wX3Jlc3BvbnNlID0gMHU7DQotc3RhdGljIHVpbnQxNl90IGdfY29tYmxrX3Jlc3BvbnNlX3NpemUgPSAwdTsNCi1zdGF0aWMgdm9sYXRpbGUgdWludDE2X3QgZ19jb21ibGtfcmVzcG9uc2VfaWR4ID0gMHU7DQotc3RhdGljIGNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIgPSAwOw0KLQ0KLS8qdHlwZWRlZiB1aW50MzJfdCAoKmNvbWJsa19wYWdlX2hhbmRsZXJfdCkodWludDhfdCBjb25zdCAqKiBwcF9uZXh0X3BhZ2UpOw0KLSovDQotc3RhdGljIHVpbnQzMl90ICgqZ19jb21ibGtfcGFnZV9oYW5kbGVyKSh1aW50OF90IGNvbnN0ICoqIHBwX25leHRfcGFnZSkgPSAwOw0KLQ0KLXN0YXRpYyB1aW50OF90IGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDB1Ow0KLQ0KLXN0YXRpYyB1aW50OF90IGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX0lETEU7DQotDQotc3RhdGljIGNvbWJsa19hc3luY19ldmVudF9oYW5kbGVyX3QgZ19hc3luY19ldmVudF9oYW5kbGVyID0gMDsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX2luaXQoY29tYmxrX2FzeW5jX2V2ZW50X2hhbmRsZXJfdCBhc3luY19ldmVudF9oYW5kbGVyKQ0KLXsNCi0gICAgLyoNCi0gICAgICogRGlzYWJsZSBhbmQgY2xlYXIgcHJldmlvdXMgaW50ZXJydXB0cy4NCi0gICAgICovDQotICAgIE5WSUNfRGlzYWJsZUlSUShDb21CbGtfSVJRbik7DQotICAgIENPTUJMSy0+SU5UX0VOQUJMRSA9IDB1Ow0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShDb21CbGtfSVJRbik7DQotICAgIA0KLSAgICBnX2FzeW5jX2V2ZW50X2hhbmRsZXIgPSBhc3luY19ldmVudF9oYW5kbGVyOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogSW5pdGlhbGlhbGl6ZSBDT01CTEsgZHJpdmVyIHN0YXRlIHZhcmlhYmxlczoNCi0gICAgICovDQotICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDB1Ow0KLSAgICBnX2NvbWJsa19jbWRfb3Bjb2RlID0gMHU7DQotICAgIGdfY29tYmxrX3BfY21kID0gMHU7DQotICAgIGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3BfZGF0YSA9IDB1Ow0KLSAgICBnX2NvbWJsa19kYXRhX3NpemUgPSAwdTsNCi0gICAgZ19jb21ibGtfcF9yZXNwb25zZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9IDB1Ow0KLSAgICBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIgPSAwOw0KLSAgICANCi0gICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfSURMRTsNCi0gICAgDQotICAgIENPTUJMSy0+Q09OVFJPTCB8PSBDUl9FTkFCTEVfTUFTSzsNCi0gICAgQ09NQkxLLT5DT05UUk9MICY9IH5DUl9MT09QQkFDS19NQVNLOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBFbmFibGUgcmVjZWl2ZSBpbnRlcnJ1cHQgdG8gcmVjZWl2ZSBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20gdGhlIHN5c3RlbQ0KLSAgICAgKiBjb250cm9sbGVyLg0KLSAgICAgKi8NCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFICY9IH5UWFRPS0FZX01BU0s7DQotICAgIENPTUJMSy0+SU5UX0VOQUJMRSB8PSBSQ1ZPS0FZX01BU0s7DQotICAgIE5WSUNfRW5hYmxlSVJRKENvbUJsa19JUlFuKTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19zZW5kX2NtZF93aXRoX3B0cg0KLSgNCi0gICAgdWludDhfdCBjbWRfb3Bjb2RlLA0KLSAgICB1aW50MzJfdCBjbWRfcGFyYW1zX3B0ciwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIGNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCBjb21wbGV0aW9uX2hhbmRsZXINCi0pDQotew0KLSAgICB1aW50MzJfdCB0eF9va2F5Ow0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBEaXNhYmxlIGFuZCBjbGVhciBwcmV2aW91cyBpbnRlcnJ1cHRzLg0KLSAgICAgKi8NCi0gICAgTlZJQ19EaXNhYmxlSVJRKENvbUJsa19JUlFuKTsNCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFID0gMHU7DQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKENvbUJsa19JUlFuKTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogQWJvcnQgY3VycmVudCBjb21tYW5kIGlmIGFueS4NCi0gICAgICovDQotICAgIGFib3J0X2N1cnJlbnRfY21kKCk7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEluaXRpYWxpYWxpemUgQ09NQkxLIGRyaXZlciBzdGF0ZSB2YXJpYWJsZXM6DQotICAgICAqLw0KLSAgICBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAxdTsNCi0gICAgZ19jb21ibGtfY21kX29wY29kZSA9IGNtZF9vcGNvZGU7DQotICAgIGdfY29tYmxrX3BfY21kID0gMHU7DQotICAgIGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3BfZGF0YSA9IDB1Ow0KLSAgICBnX2NvbWJsa19kYXRhX3NpemUgPSAwdTsNCi0gICAgZ19jb21ibGtfcF9yZXNwb25zZSA9IHBfcmVzcG9uc2U7DQotICAgIGdfY29tYmxrX3Jlc3BvbnNlX3NpemUgPSByZXNwb25zZV9zaXplOw0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9pZHggPSAwdTsNCi0gICAgZ19jb21ibGtfcGFnZV9oYW5kbGVyID0gMHU7DQotICAgIGdfY29tYmxrX2NvbXBsZXRpb25faGFuZGxlciA9IGNvbXBsZXRpb25faGFuZGxlcjsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogU2VuZCBjb21tYW5kIG9wY29kZSBhcyBhIHNpbmdsZSBieXRlIHdyaXRlIHRvIHRoZSBUeCBGSUZPLg0KLSAgICAgKi8NCi0gICAgc2VuZF9jbWRfb3Bjb2RlKGdfY29tYmxrX2NtZF9vcGNvZGUpOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBTZW5kIHRoZSBjb21tYW5kIHBhcmFtZXRlcnMgcG9pbnRlciB0byB0aGUgVHggRklGTyBhcyBhIHNpbmdsZSA0IGJ5dGVzDQotICAgICAqIHdyaXRlIHRvIHRoZSBUeCBGSUZPLg0KLSAgICAgKi8NCi0gICAgQ09NQkxLLT5DT05UUk9MIHw9IENSX1NJWkVUWF9NQVNLOw0KLSAgICANCi0gICAgLyogV2FpdCBmb3Igc3BhY2UgdG8gYmVjb21lIGF2YWlsYWJsZSBpbiBUeCBGSUZPLiAqLw0KLSAgICBkbyB7DQotICAgICAgICB0eF9va2F5ID0gQ09NQkxLLT5TVEFUVVMgJiBUWFRPS0FZX01BU0s7DQotICAgIH0gd2hpbGUoMHUgPT0gdHhfb2theSk7DQotICAgIA0KLSAgICAvKiBTZW5kIGNvbW1hbmQgb3Bjb2RlLiAqLw0KLSAgICBDT01CTEstPkRBVEEzMiA9IGNtZF9wYXJhbXNfcHRyOw0KLSAgICANCi0gICAgQ09NQkxLLT5DT05UUk9MICY9IH5DUl9TSVpFVFhfTUFTSzsNCi0gICAgDQotICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1dBSVRfUkVTUE9OU0U7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEVuYWJsZSBpbnRlcnJ1cHQuDQotICAgICAqLw0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgfD0gUkNWT0tBWV9NQVNLOw0KLSAgICBOVklDX0VuYWJsZUlSUShDb21CbGtfSVJRbik7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfc2VuZF9jbWQNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2NtZCwNCi0gICAgdWludDE2X3QgY21kX3NpemUsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGEsDQotICAgIHVpbnQzMl90IGRhdGFfc2l6ZSwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIGNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCBjb21wbGV0aW9uX2hhbmRsZXINCi0pDQotew0KLSAgICB1aW50MzJfdCBzaXplX3NlbnQ7DQotICAgIA0KLSAgICBBU1NFUlQoY21kX3NpemUgPiAwKTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIERpc2FibGUgYW5kIGNsZWFyIHByZXZpb3VzIGludGVycnVwdHMuDQotICAgICAqLw0KLSAgICBOVklDX0Rpc2FibGVJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgPSAwdTsNCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogQWJvcnQgY3VycmVudCBjb21tYW5kIGlmIGFueS4NCi0gICAgICovDQotICAgIGFib3J0X2N1cnJlbnRfY21kKCk7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBJbml0aWFsaWFsaXplIENPTUJMSyBkcml2ZXIgc3RhdGUgdmFyaWFibGVzOg0KLSAgICAgKi8NCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMXU7DQotICAgIGdfY29tYmxrX2NtZF9vcGNvZGUgPSBwX2NtZFswXTsNCi0gICAgZ19jb21ibGtfcF9jbWQgPSBwX2NtZDsNCi0gICAgZ19jb21ibGtfY21kX3NpemUgPSBjbWRfc2l6ZTsNCi0gICAgZ19jb21ibGtfcF9kYXRhID0gcF9kYXRhOw0KLSAgICBnX2NvbWJsa19kYXRhX3NpemUgPSBkYXRhX3NpemU7DQotICAgIGdfY29tYmxrX3BfcmVzcG9uc2UgPSBwX3Jlc3BvbnNlOw0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9zaXplID0gcmVzcG9uc2Vfc2l6ZTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2VfaWR4ID0gMHU7DQotICAgIGdfY29tYmxrX3BhZ2VfaGFuZGxlciA9IDB1Ow0KLSAgICBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIgPSBjb21wbGV0aW9uX2hhbmRsZXI7DQotICAgIA0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgfD0gUkNWT0tBWV9NQVNLOw0KLQ0KLSAgICAvKg0KLSAgICAgKiBGaWxsIEZJRk8gd2l0aCBjb21tYW5kLg0KLSAgICAgKi8NCi0gICAgc2VuZF9jbWRfb3Bjb2RlKGdfY29tYmxrX2NtZF9vcGNvZGUpOw0KLSAgICBzaXplX3NlbnQgPSBmaWxsX3R4X2ZpZm8oJnBfY21kWzFdLCBjbWRfc2l6ZSAtIDF1KTsNCi0gICAgKytzaXplX3NlbnQ7ICAgIC8qIEFkanVzdCBmb3Igb3Bjb2RlIGJ5dGUgc2VudC4gKi8NCi0gICAgaWYoc2l6ZV9zZW50IDwgY21kX3NpemUpDQotICAgIHsNCi0gICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gZ19jb21ibGtfY21kX3NpemUgLSAodWludDE2X3Qpc2l6ZV9zZW50Ow0KLSAgICAgICAgZ19jb21ibGtfcF9jbWQgPSAmZ19jb21ibGtfcF9jbWRbc2l6ZV9zZW50XTsNCi0gICAgICAgIA0KLSAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfVFhfQ01EOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgZ19jb21ibGtfY21kX3NpemUgPSAwdTsNCi0gICAgICAgIGlmKGdfY29tYmxrX2RhdGFfc2l6ZSA+IDB1KQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1RYX0RBVEE7DQotICAgICAgICB9DQotICAgICAgICBlbHNlDQotICAgICAgICB7DQotICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfV0FJVF9SRVNQT05TRTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICAvKg0KLSAgICAgKiBFbmFibGUgaW50ZXJydXB0Lg0KLSAgICAgKi8NCi0gICAgTlZJQ19FbmFibGVJUlEoQ29tQmxrX0lSUW4pOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX3NlbmRfcGFnZWRfY21kDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9jbWQsDQotICAgIHVpbnQxNl90IGNtZF9zaXplLA0KLSAgICB1aW50OF90ICogcF9yZXNwb25zZSwNCi0gICAgdWludDE2X3QgcmVzcG9uc2Vfc2l6ZSwNCi0gICAgdWludDMyX3QgKCpwYWdlX3JlYWRfaGFuZGxlcikodWludDhfdCBjb25zdCAqKiksDQotICAgIHZvaWQgKCpjb21wbGV0aW9uX2hhbmRsZXIpKHVpbnQ4X3QgKiwgdWludDE2X3QpDQotKQ0KLXsNCi0gICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLSAgICB1aW50OF90IGlycV9lbmFibGUgPSAwdTsNCi0gICAgDQotICAgIEFTU0VSVChjbWRfc2l6ZSA+IDB1KTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIERpc2FibGUgYW5kIGNsZWFyIHByZXZpb3VzIGludGVycnVwdHMuDQotICAgICAqLw0KLSAgICBOVklDX0Rpc2FibGVJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgPSAwdTsNCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogQWJvcnQgY3VycmVudCBjb21tYW5kIGlmIGFueS4NCi0gICAgICovDQotICAgIGFib3J0X2N1cnJlbnRfY21kKCk7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBJbml0aWFsaWFsaXplIENPTUJMSyBkcml2ZXIgc3RhdGUgdmFyaWFibGVzOg0KLSAgICAgKi8NCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMXU7DQotICAgIGdfY29tYmxrX2NtZF9vcGNvZGUgPSBwX2NtZFswXTsNCi0gICAgZ19jb21ibGtfcF9jbWQgPSBwX2NtZDsNCi0gICAgZ19jb21ibGtfY21kX3NpemUgPSBjbWRfc2l6ZTsNCi0gICAgZ19jb21ibGtfcF9kYXRhID0gMDsNCi0gICAgZ19jb21ibGtfZGF0YV9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3BfcmVzcG9uc2UgPSBwX3Jlc3BvbnNlOw0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9zaXplID0gcmVzcG9uc2Vfc2l6ZTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2VfaWR4ID0gMHU7DQotICAgIGdfY29tYmxrX3BhZ2VfaGFuZGxlciA9IHBhZ2VfcmVhZF9oYW5kbGVyOw0KLSAgICBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIgPSBjb21wbGV0aW9uX2hhbmRsZXI7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBGaWxsIEZJRk8gd2l0aCBjb21tYW5kLg0KLSAgICAgKi8NCi0gICAgc2VuZF9jbWRfb3Bjb2RlKGdfY29tYmxrX2NtZF9vcGNvZGUpOw0KLSAgICBzaXplX3NlbnQgPSBmaWxsX3R4X2ZpZm8oJnBfY21kWzFdLCBjbWRfc2l6ZSAtIDF1KTsNCi0gICAgKytzaXplX3NlbnQ7ICAgIC8qIEFkanVzdCBmb3Igb3Bjb2RlIGJ5dGUgc2VudC4gKi8NCi0gICAgaWYoc2l6ZV9zZW50IDwgY21kX3NpemUpDQotICAgIHsNCi0gICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gZ19jb21ibGtfY21kX3NpemUgLSAodWludDE2X3Qpc2l6ZV9zZW50Ow0KLSAgICAgICAgZ19jb21ibGtfcF9jbWQgPSAmZ19jb21ibGtfcF9jbWRbc2l6ZV9zZW50XTsNCi0gICAgICAgIA0KLSAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfVFhfQ01EOw0KLSAgICAgICAgaXJxX2VuYWJsZSA9IFRYVE9LQVlfTUFTSyB8IFJDVk9LQVlfTUFTSzsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19UWF9QQUdFRF9EQVRBOw0KLSAgICAgICAgaXJxX2VuYWJsZSA9IFRYVE9LQVlfTUFTSyB8IFJDVk9LQVlfTUFTSzsNCi0gICAgfQ0KLQ0KLSAgICAvKg0KLSAgICAgKiBFbmFibGUgaW50ZXJydXB0Lg0KLSAgICAgKi8NCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFIHw9IGlycV9lbmFibGU7DQotICAgIE5WSUNfRW5hYmxlSVJRKENvbUJsa19JUlFuKTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDT01CTEsgaW50ZXJydXB0IGhhbmRsZXIuDQotICovDQotdm9pZCBDb21CbGtfSVJRSGFuZGxlcih2b2lkKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIHVpbnQ4X3QgdHhfb2theTsNCi0gICAgdWludDhfdCByY3Zfb2theTsNCi0gICAgDQotICAgIHN0YXR1cyA9ICh1aW50OF90KUNPTUJMSy0+U1RBVFVTOw0KLSAgICANCi0gICAgLyogTWFzayBvZmYgaW50ZXJydXB0IHRoYXQgYXJlIG5vdCBlbmFibGVkLiovDQotICAgIHN0YXR1cyAmPSBDT01CTEstPklOVF9FTkFCTEU7DQotICAgIA0KLSAgICByY3Zfb2theSA9IHN0YXR1cyAmIFJDVk9LQVlfTUFTSzsNCi0gICAgaWYocmN2X29rYXkpDQotICAgIHsNCi0gICAgICAgIGhhbmRsZV9yeF9va2F5X2lycSgpOw0KLSAgICB9DQotICAgICAgICANCi0gICAgdHhfb2theSA9IHN0YXR1cyAmIFRYVE9LQVlfTUFTSzsNCi0gICAgaWYodHhfb2theSkNCi0gICAgew0KLSAgICAgICAgaGFuZGxlX3R4X29rYXlfaXJxKCk7DQotICAgIH0NCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIGhhbmRsZV90eF9va2F5X2lycSh2b2lkKQ0KLXsNCi0gICAgc3dpdGNoKGdfY29tYmxrX3N0YXRlKQ0KLSAgICB7DQotICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgICAqIFRoZSBUWF9PS0FZIGludGVycnVwdCBzaG91bGQgb25seSBiZSBlbmFibGVkIGZvciBzdGF0ZXMgQ09NQkxLX1RYX0NNRA0KLSAgICAgICAgICogYW5kIENPTUJMS19UWF9EQVRBLiANCi0gICAgICAgICAqLw0KLSAgICAgICAgY2FzZSBDT01CTEtfVFhfQ01EOg0KLSAgICAgICAgICAgIGlmKGdfY29tYmxrX2NtZF9zaXplID4gMHUpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplX3NlbnQ7DQotICAgICAgICAgICAgICAgIHNpemVfc2VudCA9IGZpbGxfdHhfZmlmbyhnX2NvbWJsa19wX2NtZCwgZ19jb21ibGtfY21kX3NpemUpOw0KLSAgICAgICAgICAgICAgICBpZihzaXplX3NlbnQgPCBnX2NvbWJsa19jbWRfc2l6ZSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfY21kX3NpemUgPSBnX2NvbWJsa19jbWRfc2l6ZSAtICh1aW50MTZfdClzaXplX3NlbnQ7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19wX2NtZCA9ICZnX2NvbWJsa19wX2NtZFtzaXplX3NlbnRdOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfY21kX3NpemUgPSAwdTsNCi0gICAgICAgICAgICAgICAgICAgIGlmKGdfY29tYmxrX2RhdGFfc2l6ZSA+IDB1KQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1RYX0RBVEE7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfV0FJVF9SRVNQT05TRTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAgICAgKiBUaGlzIGlzIGFuIGludmFsaWQgc2l0dWF0aW9uIGluZGljYXRpbmcgYSBidWcgaW4gdGhlIGRyaXZlcg0KLSAgICAgICAgICAgICAgICAgKiBvciBjb3JydXB0ZWQgbWVtb3J5Lg0KLSAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgQVNTRVJUKDApOw0KLSAgICAgICAgICAgICAgICBhYm9ydF9jdXJyZW50X2NtZCgpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgY2FzZSBDT01CTEtfVFhfREFUQToNCi0gICAgICAgICAgICBpZihnX2NvbWJsa19kYXRhX3NpemUgPiAwdSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemVfc2VudDsNCi0gICAgICAgICAgICAgICAgc2l6ZV9zZW50ID0gZmlsbF90eF9maWZvKGdfY29tYmxrX3BfZGF0YSwgZ19jb21ibGtfZGF0YV9zaXplKTsNCi0gICAgICAgICAgICAgICAgaWYoc2l6ZV9zZW50IDwgZ19jb21ibGtfZGF0YV9zaXplKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19kYXRhX3NpemUgPSBnX2NvbWJsa19kYXRhX3NpemUgLSBzaXplX3NlbnQ7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19wX2RhdGEgPSAmZ19jb21ibGtfcF9kYXRhW3NpemVfc2VudF07DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBDT01CTEstPklOVF9FTkFCTEUgJj0gflRYVE9LQVlfTUFTSzsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1dBSVRfUkVTUE9OU0U7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgICAgICogVGhpcyBpcyBhbiBpbnZhbGlkIHNpdHVhdGlvbiBpbmRpY2F0aW5nIGEgYnVnIGluIHRoZSBkcml2ZXINCi0gICAgICAgICAgICAgICAgICogb3IgY29ycnVwdGVkIG1lbW9yeS4NCi0gICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgIEFTU0VSVCgwKTsNCi0gICAgICAgICAgICAgICAgYWJvcnRfY3VycmVudF9jbWQoKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgICAgIA0KLSAgICAgICAgY2FzZSBDT01CTEtfVFhfUEFHRURfREFUQToNCi0gICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAqIFJlYWQgYSBwYWdlIG9mIGRhdGEgaWYgcmVxdWlyZWQuDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgaWYoMHUgPT0gZ19jb21ibGtfZGF0YV9zaXplKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgaWYoZ19jb21ibGtfcGFnZV9oYW5kbGVyICE9IDApDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX2RhdGFfc2l6ZSA9IGdfY29tYmxrX3BhZ2VfaGFuZGxlcigmZ19jb21ibGtfcF9kYXRhKTsNCi0gICAgICAgICAgICAgICAgICAgIGlmKDB1ID09IGdfY29tYmxrX2RhdGFfc2l6ZSkNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBDT01CTEstPklOVF9FTkFCTEUgJj0gflRYVE9LQVlfTUFTSzsNCi0gICAgICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19XQUlUX1JFU1BPTlNFOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKDApOw0KLSAgICAgICAgICAgICAgICAgICAgYWJvcnRfY3VycmVudF9jbWQoKTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICANCi0gICAgICAgICAgICAvKg0KLSAgICAgICAgICAgICAqIFRyYW5zbWl0IHRoZSBwYWdlIGRhdGEgb3IgbW92ZSB0byBDT01CTEtfV0FJVF9SRVNQT05TRSBzdGF0ZSBpZg0KLSAgICAgICAgICAgICAqIG5vIGZ1cnRoZXIgcGFnZSBkYXRhIGNvdWxkIGJlIG9idGFpbmVkIGJ5IHRoZSBjYWxsIHRvIHRoZSBwYWdlDQotICAgICAgICAgICAgICogaGFuZGxlciBhYm92ZS4NCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBpZigwdSA9PSBnX2NvbWJsa19kYXRhX3NpemUpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBDT01CTEstPklOVF9FTkFCTEUgJj0gflRYVE9LQVlfTUFTSzsNCi0gICAgICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfV0FJVF9SRVNQT05TRTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgICAgICBzaXplX3NlbnQgPSBmaWxsX3R4X2ZpZm8oZ19jb21ibGtfcF9kYXRhLCBnX2NvbWJsa19kYXRhX3NpemUpOw0KLSAgICAgICAgICAgICAgICBnX2NvbWJsa19kYXRhX3NpemUgPSBnX2NvbWJsa19kYXRhX3NpemUgLSBzaXplX3NlbnQ7DQotICAgICAgICAgICAgICAgIGdfY29tYmxrX3BfZGF0YSA9ICZnX2NvbWJsa19wX2RhdGFbc2l6ZV9zZW50XTsNCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgICogVGhlIFRYX09LQVkgaW50ZXJydXB0IHNob3VsZCBOT1QgYmUgZW5hYmxlZCBmb3Igc3RhdGVzIENPTUJMS19JRExFLA0KLSAgICAgICAgICogQ09NQkxLX1dBSVRfUkVTUE9OU0UgYW5kIENPTUJMS19SWF9SRVNQT05TRS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgY2FzZSBDT01CTEtfSURMRToNCi0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX1dBSVRfUkVTUE9OU0U6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICBjYXNlIENPTUJMS19SWF9SRVNQT05TRToNCi0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8NCi0gICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgQ09NQkxLLT5JTlRfRU5BQkxFICY9IH5UWFRPS0FZX01BU0s7DQotICAgICAgICAgICAgY29tcGxldGVfcmVxdWVzdCgwdSk7DQotICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfSURMRTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICB9DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBoYW5kbGVfcnhfb2theV9pcnEodm9pZCkNCi17DQotICAgIHVpbnQxNl90IGRhdGExNjsNCi0gICAgdWludDE2X3QgaXNfY29tbWFuZDsNCi0gICAgDQotICAgIGRhdGExNiA9ICh1aW50MTZfdClDT01CTEstPkRBVEE4Ow0KLSAgICBpc19jb21tYW5kID0gZGF0YTE2ICYgREFUQThfQ09NTUFORF9NQVNLOw0KLSAgICAgICAgICAgIA0KLSAgICBzd2l0Y2goZ19jb21ibGtfc3RhdGUpDQotICAgIHsNCi0gICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgICogVGhlIFJDVl9PS0FZIGludGVycnVwdCBzaG91bGQgb25seSBiZSBlbmFibGVkIGZvciBzdGF0ZXMNCi0gICAgICAgICAqIENPTUJMS19XQUlUX1JFU1BPTlNFIGFuZCBDT01CTEtfUlhfUkVTUE9OU0UuIA0KLSAgICAgICAgICovDQotICAgICAgICBjYXNlIENPTUJMS19XQUlUX1JFU1BPTlNFOg0KLSAgICAgICAgICAgIGlmKGlzX2NvbW1hbmQpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICB1aW50OF90IHJ4ZWRfb3Bjb2RlOw0KLSAgICAgICAgICAgICAgICByeGVkX29wY29kZSA9ICh1aW50OF90KWRhdGExNjsNCi0gICAgICAgICAgICAgICAgaWYocnhlZF9vcGNvZGUgPT0gZ19jb21ibGtfY21kX29wY29kZSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfcmVzcG9uc2VfaWR4ID0gMHU7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19wX3Jlc3BvbnNlW2dfY29tYmxrX3Jlc3BvbnNlX2lkeF0gPSByeGVkX29wY29kZTsNCi0gICAgICAgICAgICAgICAgICAgICsrZ19jb21ibGtfcmVzcG9uc2VfaWR4Ow0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfUlhfUkVTUE9OU0U7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX3N5c19jdHJsX2NvbW1hbmQocnhlZF9vcGNvZGUpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgDQotICAgICAgICBjYXNlIENPTUJMS19SWF9SRVNQT05TRToNCi0gICAgICAgICAgICBpZihpc19jb21tYW5kKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDhfdCByeGVkX29wY29kZTsNCi0gICAgICAgICAgICAgICAgcnhlZF9vcGNvZGUgPSAodWludDhfdClkYXRhMTY7DQotICAgICAgICAgICAgICAgIHByb2Nlc3Nfc3lzX2N0cmxfY29tbWFuZChyeGVkX29wY29kZSk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGlmKGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA8IGdfY29tYmxrX3Jlc3BvbnNlX3NpemUpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgcnhlZF9kYXRhOw0KLSAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgICAgICByeGVkX2RhdGEgPSAodWludDhfdClkYXRhMTY7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19wX3Jlc3BvbnNlW2dfY29tYmxrX3Jlc3BvbnNlX2lkeF0gPSByeGVkX2RhdGE7DQotICAgICAgICAgICAgICAgICAgICArK2dfY29tYmxrX3Jlc3BvbnNlX2lkeDsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgaWYoZ19jb21ibGtfcmVzcG9uc2VfaWR4ID09IGdfY29tYmxrX3Jlc3BvbnNlX3NpemUpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlX3JlcXVlc3QoZ19jb21ibGtfcmVzcG9uc2VfaWR4KTsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX0lETEU7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgICogVGhlIFJDVl9PS0FZIGludGVycnVwdCBzaG91bGQgTk9UIGJlIGVuYWJsZWQgZm9yIHN0YXRlcw0KLSAgICAgICAgICogQ09NQkxLX0lETEUsIENPTUJMS19UWF9DTUQgYW5kIENPTUJMS19UWF9EQVRBLiANCi0gICAgICAgICAqLw0KLSAgICAgICAgY2FzZSBDT01CTEtfVFhfUEFHRURfREFUQToNCi0gICAgICAgICAgICAvKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IsIHdlIG5lZWQgdG8gdGVybWluYXRlIGxvYWRpbmcgdGhlIGRhdGEgKi8NCi0gICAgICAgICAgICBpZighaXNfY29tbWFuZCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGdfY29tYmxrX3BfcmVzcG9uc2VbMV0gPSAodWludDhfdClkYXRhMTY7DQotICAgICAgICAgICAgICAgIGNvbXBsZXRlX3JlcXVlc3QoMnUpOw0KLSAgICAgICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19JRExFOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBDT01CTEtfSURMRToNCi0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX0NNRDoNCi0gICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX0RBVEE6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICAgICAgaWYoaXNfY29tbWFuZCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQ4X3QgcnhlZF9vcGNvZGU7DQotICAgICAgICAgICAgICAgIHJ4ZWRfb3Bjb2RlID0gKHVpbnQ4X3QpZGF0YTE2Ow0KLSAgICAgICAgICAgICAgICBwcm9jZXNzX3N5c19jdHJsX2NvbW1hbmQocnhlZF9vcGNvZGUpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgDQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIGNvbXBsZXRlX3JlcXVlc3QoMHUpOw0KLSAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX0lETEU7DQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgY29tcGxldGVfcmVxdWVzdA0KLSgNCi0gICAgdWludDE2X3QgcmVzcG9uc2VfbGVuZ3RoDQotKQ0KLXsNCi0gICAgaWYoZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyICE9IDApDQotICAgIHsNCi0gICAgICAgIGdfY29tYmxrX2NvbXBsZXRpb25faGFuZGxlcihnX2NvbWJsa19wX3Jlc3BvbnNlLCByZXNwb25zZV9sZW5ndGgpOw0KLSAgICAgICAgZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyID0gMDsNCi0gICAgICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDB1Ow0KLSAgICB9DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBhYm9ydF9jdXJyZW50X2NtZCh2b2lkKQ0KLXsNCi0gICAgaWYoZ19yZXF1ZXN0X2luX3Byb2dyZXNzKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBmbHVzaF9pbl9wcm9ncmVzczsNCi0gICAgICAgIA0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIENhbGwgY29tcGxldGlvbiBoYW5kbGVyIGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSBtdWx0aSB0aHJlYWRlZCBzeXN0ZW0NCi0gICAgICAgICAqIHRvIGF2b2lkIGEgdGFzayBsb2NrdXAuDQotICAgICAgICAgKi8NCi0gICAgICAgIGNvbXBsZXRlX3JlcXVlc3QoZ19jb21ibGtfcmVzcG9uc2VfaWR4KTsNCi0gICAgICAgIA0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIEZsdXNoIHRoZSBGSUZPcw0KLSAgICAgICAgICovDQotICAgICAgICBDT01CTEstPkNPTlRST0wgfD0gQ1JfRkxVU0hPVVRfTUFTSzsNCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICBmbHVzaF9pbl9wcm9ncmVzcyA9IENPTUJMSy0+Q09OVFJPTCAmIENSX0ZMVVNIT1VUX01BU0s7DQotICAgICAgICB9IHdoaWxlKGZsdXNoX2luX3Byb2dyZXNzKTsNCi0gICAgfQ0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgc2VuZF9jbWRfb3Bjb2RlDQotKA0KLSAgICB1aW50OF90IG9wY29kZQ0KLSkNCi17DQotICAgIHVpbnQzMl90IHR4X29rYXk7DQotICAgIA0KLSAgICAvKiBTZXQgdHJhbnNtaXQgRklGTyB0byB0cmFuc2ZlciBieXRlcy4gKi8NCi0gICAgQ09NQkxLLT5DT05UUk9MICY9IH5DUl9TSVpFVFhfTUFTSzsNCi0gICAgDQotICAgIC8qIFdhaXQgZm9yIHNwYWNlIHRvIGJlY29tZSBhdmFpbGFibGUgaW4gVHggRklGTy4gKi8NCi0gICAgZG8gew0KLSAgICAgICAgdHhfb2theSA9IENPTUJMSy0+U1RBVFVTICYgVFhUT0tBWV9NQVNLOw0KLSAgICB9IHdoaWxlKDB1ID09IHR4X29rYXkpOw0KLSAgICANCi0gICAgLyogU2VuZCBjb21tYW5kIG9wY29kZS4gKi8NCi0gICAgQ09NQkxLLT5GUkFNRV9TVEFSVDggPSBvcGNvZGU7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdWludDMyX3QgZmlsbF90eF9maWZvDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9jbWQsDQotICAgIHVpbnQzMl90IGNtZF9zaXplDQotKQ0KLXsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgdHhfb2theTsNCi0gICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLQ0KLSAgICAvKiBTZXQgdHJhbnNtaXQgRklGTyB0byB0cmFuc2ZlciBieXRlcy4gKi8NCi0gICAgQ09NQkxLLT5DT05UUk9MICY9IH5DUl9TSVpFVFhfTUFTSzsNCi0gICAgDQotICAgIHNpemVfc2VudCA9IDB1Ow0KLSAgICB0eF9va2F5ID0gQ09NQkxLLT5TVEFUVVMgJiBUWFRPS0FZX01BU0s7DQotICAgIHdoaWxlKCh0eF9va2F5ICE9IDB1KSAmJiAoc2l6ZV9zZW50IDwgY21kX3NpemUpKQ0KLSAgICB7DQotICAgICAgICBDT01CTEstPkRBVEE4ID0gcF9jbWRbc2l6ZV9zZW50XTsNCi0gICAgICAgICsrc2l6ZV9zZW50Ow0KLSAgICAgICAgdHhfb2theSA9IENPTUJMSy0+U1RBVFVTICYgVFhUT0tBWV9NQVNLOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc2l6ZV9zZW50Ow0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgcHJvY2Vzc19zeXNfY3RybF9jb21tYW5kKHVpbnQ4X3QgY21kX29wY29kZSkNCi17DQotICAgIGlmKGdfYXN5bmNfZXZlbnRfaGFuZGxlciAhPSAwKQ0KLSAgICB7DQotICAgICAgICBnX2FzeW5jX2V2ZW50X2hhbmRsZXIoY21kX29wY29kZSk7DQotICAgIH0NCi19DQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX2NvbWJsay5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX2NvbWJsay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjliYTdmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogU21hcnRGdXNpb24yIENPTUJMSyBhY2Nlc3MgZnVuY3Rpb25zLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTE2MCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTE0IDE0OjUwOjQ5ICswMDAwIChUaHUsIDE0IE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBfX01TU19DT01CTEtfSF8NCi0jZGVmaW5lIF9fTVNTX0NPTUJMS19IXyAxDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICoNCi0gKi8NCi10eXBlZGVmIHZvaWQoKmNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCkodWludDhfdCAqIHBfcmVzcG9uc2UsIHVpbnQxNl90IHJlc3BvbnNlX3NpemUpOw0KLQ0KLXR5cGVkZWYgdWludDMyX3QgKCpjb21ibGtfcGFnZV9oYW5kbGVyX3QpKHVpbnQ4X3QgY29uc3QgKiogcHBfbmV4dF9wYWdlKTsNCi0NCi10eXBlZGVmIHZvaWQgKCpjb21ibGtfYXN5bmNfZXZlbnRfaGFuZGxlcl90KSh1aW50OF90IGV2ZW50X29wY29kZSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19pbml0KGNvbWJsa19hc3luY19ldmVudF9oYW5kbGVyX3QgYXN5bmNfZXZlbnRfaGFuZGxlcik7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19zZW5kX2NtZF93aXRoX3B0cg0KLSgNCi0gICAgdWludDhfdCBjbWRfb3Bjb2RlLA0KLSAgICB1aW50MzJfdCBjbWRfcGFyYW1zX3B0ciwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIGNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCBjb21wbGV0aW9uX2hhbmRsZXINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfc2VuZF9jbWQNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2NtZCwNCi0gICAgdWludDE2X3QgY21kX3NpemUsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGEsDQotICAgIHVpbnQzMl90IGRhdGFfc2l6ZSwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIGNvbWJsa19jb21wbGV0aW9uX2hhbmRsZXJfdCBjb21wbGV0aW9uX2hhbmRsZXINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfcmVhZA0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfZGF0YSwNCi0gICAgdWludDE2X3QgY21kX3NpemUsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplLA0KLSAgICBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgY29tcGxldGlvbl9oYW5kbGVyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX3NlbmRfcGFnZWRfY21kDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9jbWQsDQotICAgIHVpbnQxNl90IGNtZF9zaXplLA0KLSAgICB1aW50OF90ICogcF9yZXNwb25zZSwNCi0gICAgdWludDE2X3QgcmVzcG9uc2Vfc2l6ZSwNCi0gICAgdWludDMyX3QgKCopKHVpbnQ4X3QgY29uc3QgKiopLA0KLSAgICB2b2lkICgqY29tcGxldGlvbl9oYW5kbGVyKSh1aW50OF90ICosIHVpbnQxNl90KQ0KLSk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBfX01TU19DT01CTEtfSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3Nfc3lzX3NlcnZpY2VzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3Nfc3lzX3NlcnZpY2VzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NDUzYjUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5jCisrKyAvZGV2L251bGwKQEAgLTEsODEzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogU21hcnRGdXNpb24yIHN5c3RlbSBzZXJ2aWNlcy4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU2MTUgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNSAxNDo0ODoxMCArMDEwMCAoRnJpLCAwNSBBcHIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJtc3Nfc3lzX3NlcnZpY2VzLmgiDQotI2luY2x1ZGUgIm1zc19jb21ibGsuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotLyoNCi0gKiBTZXJ2aWNlIHJlcXVlc3QgY29tbWFuZCBvcGNvZGVzOg0KLSAqLw0KLSNkZWZpbmUgREVWSUNFX0NFUlRJRklDQVRFX1JFUVVFU1RfQ01EICAgICAgMHUNCi0jZGVmaW5lIFNFUklBTF9OVU1CRVJfUkVRVUVTVF9DTUQgICAgICAgICAgIDF1DQotI2RlZmluZSBGTEFTSF9GUkVFWkVfUkVRVUVTVF9DTUQgICAgICAgICAgICAydQ0KLSNkZWZpbmUgQUVTMTI4X1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgICAgM3UNCi0jZGVmaW5lIFVTRVJDT0RFX1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgIDR1DQotI2RlZmluZSBERVNJR05WRVJfUkVRVUVTVF9DTUQgICAgICAgICAgICAgICA1dQ0KLSNkZWZpbmUgQUVTMjU2X1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgICAgNnUNCi0jZGVmaW5lIEtFWVRSRUVfUkVRVUVTVF9DTUQgICAgICAgICAgICAgICAgIDl1DQotI2RlZmluZSBTSEEyNTZfUkVRVUVTVF9DTUQgICAgICAgICAgICAgICAgICAxMHUNCi0jZGVmaW5lIEhNQUNfUkVRVUVTVF9DTUQgICAgICAgICAgICAgICAgICAgIDEydQ0KLSNkZWZpbmUgUFBVRl9DSEFMTEVOR0VfUkVTUF9SRVFVRVNUX0NNRCAgICAgMTR1DQotI2RlZmluZSBJU1BfUFJPR1JBTU1JTkdfUkVRVUVTVF9DTUQgICAgICAgICAyMXUNCi0jZGVmaW5lIERJR0VTVF9DSEVDS19SRVFVRVNUX0NNRCAgICAgICAgICAgIDIzdQ0KLSNkZWZpbmUgTlJCR19TRUxGX1RFU1RfUkVRVUVTVF9DTUQgICAgICAgICAgNDB1DQotI2RlZmluZSBOUkJHX0lOU1RBTlRJQVRFX1JFUVVFU1RfQ01EICAgICAgICA0MXUNCi0jZGVmaW5lIE5SQkdfR0VORVJBVEVfUkVRVUVTVF9DTUQgICAgICAgICAgIDQydQ0KLSNkZWZpbmUgTlJCR19SRVNFRURfUkVRVUVTVF9DTUQgICAgICAgICAgICAgNDN1DQotI2RlZmluZSBOUkJHX1VOSU5TVEFOVElBVEVfUkVRVUVTVF9DTUQgICAgICA0NHUNCi0jZGVmaW5lIE5SQkdfUkVTRVRfUkVRVUVTVF9DTUQgICAgICAgICAgICAgIDQ1dQ0KLSNkZWZpbmUgRkxBU0hGUkVFWkVfU0hVVERPV05fQ01EICAgICAgICAgICAgMjI0dQ0KLSNkZWZpbmUgWkVST0laQVRJT05fUkVRVUVTVF9DTUQgICAgICAgICAgICAgMjQwdQ0KLQ0KLSNkZWZpbmUgUE9XRVJfT05fUkVTRVRfRElHRVNUX0VSUk9SX0NNRCAgICAgMjQxdQ0KLQ0KLS8qDQotICogU3lzdGVtIFNlcnZpY2VzIHJlcXVlc3RzIGxlbmd0aDoNCi0gKi8NCi0jZGVmaW5lIEZMQVNIX0ZSRUVaRV9SRVFVRVNUX0xFTkdUSCAgICAgICAgIDJ1DQotDQotLyoNCi0gKiBTZXJ2aWNlIHJlc3BvbnNlIGxlbmd0aHM6DQotICovDQotI2RlZmluZSBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIICAgICAgICAgICA2dQ0KLQ0KLSNkZWZpbmUgU0VSSUFMX05VTUJFUl9TRVJWX1JFU1BfTEVOR1RIICAgICAgNnUNCi0jZGVmaW5lIFVTRVJDT0RFX1NFUlZfUkVTUF9MRU5HVEggICAgICAgICAgIDZ1DQotI2RlZmluZSBERVNJR05WRVJfU0VSVl9SRVNQX0xFTkdUSCAgICAgICAgICA2dQ0KLSNkZWZpbmUgREVWSUNFX0NFUlRfU0VSVl9SRVNQX0xFTkdUSCAgICAgICAgNnUNCi0jZGVmaW5lIElTUF9QUk9HX1NFUlZfUkVTUF9MRU5HVEggICAgICAgICAgIDJ1DQotI2RlZmluZSBOUkJHX1JFU0VUX1NFUlZfUkVTUF9MRU5HVEggICAgICAgICAydQ0KLSNkZWZpbmUgTlJCR19TRUxGX1RFU1RfU0VSVl9SRVNQX0xFTkdUSCAgICAgMnUNCi0jZGVmaW5lIE5SQkdfVU5JTlNUX1NFUlZfUkVTUF9MRU5HVEggICAgICAgIDN1DQotDQotI2RlZmluZSBESUdFU1RfQ0hFQ0tfU0VSVl9SRVNQX0xFTkdUSCAgICAgICAydQ0KLSNkZWZpbmUgRkxBU0hfRlJFRVpFX1NFUlZfUkVTUF9MRU5HVEggICAgICAgMnUNCi0NCi0vKg0KLSAqIE5vbiBEZXRlcm1pbmlzdGljIFJhbmRvbSBCaXQgR2VuZXJhdG9yIGRlZmluZXM6DQotICovDQotI2RlZmluZSBJTlZBTElEX05SQkdfSEFORExFICAgICAweEZGdQ0KLQ0KLS8qDQotICogUlRDX1dBS0VVUF9DUiBzeXN0ZW0gcmVnaXN0ZXIgYml0IG1hc2tzOg0KLSAqLw0KLSNkZWZpbmUgUlRDX1dBS0VVUF9HNENfRU5fTUFTSyAgICAgIDB4MDAwMDAwMDR1DQotI2RlZmluZSBSVENfV0FLRVVQX0ZBQl9FTl9NQVNLICAgICAgMHgwMDAwMDAwMnUNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIExvY2FsIGZ1bmN0aW9ucy4NCi0gKi8NCi1zdGF0aWMgdm9pZCByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcih1aW50OF90ICogcF9yZXNwb25zZSwgdWludDE2X3QgcmVzcG9uc2Vfc2l6ZSk7DQotc3RhdGljIHZvaWQgc2lnbmFsX3JlcXVlc3Rfc3RhcnQodm9pZCk7DQotc3RhdGljIHVpbnQxNl90IHdhaXRfZm9yX3JlcXVlc3RfY29tcGxldGlvbih2b2lkKTsNCi1zdGF0aWMgdWludDhfdCBleGVjdXRlX3NlcnZpY2UNCi0oDQotICAgIHVpbnQ4X3QgY21kX29wY29kZSwNCi0gICAgdWludDhfdCAqIGNtZF9wYXJhbXNfcHRyLA0KLSAgICB1aW50OF90ICogcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX2xlbmd0aA0KLSk7DQotDQotc3RhdGljIHZvaWQgYXN5bmNocm9ub3VzX2V2ZW50X2hhbmRsZXIodWludDhfdCBldmVudF9vcGNvZGUpOw0KLQ0KLXN0YXRpYyB2b2lkIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5DQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcG9pbnRlciwNCi0gICAgdWludDhfdCB0YXJnZXRfYXJyYXlbXSwNCi0gICAgdWludDMyX3QgYXJyYXlfaW5kZXgNCi0pOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR2xvYmFsIHZhcmlhYmxlcw0KLSAqLw0KLXN0YXRpYyB2b2xhdGlsZSB1aW50OF90IGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDB1Ow0KLXN0YXRpYyB2b2xhdGlsZSB1aW50MTZfdCBnX2xhc3RfcmVzcG9uc2VfbGVuZ3RoID0gMHU7DQotc3RhdGljIHN5c19zZXJ2X2FzeW5jX2V2ZW50X2hhbmRsZXJfdCBnX2V2ZW50X2hhbmRsZXIgPSAwOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi12b2lkIE1TU19TWVNfaW5pdChzeXNfc2Vydl9hc3luY19ldmVudF9oYW5kbGVyX3QgZXZlbnRfaGFuZGxlcikNCi17DQotICAgIE1TU19DT01CTEtfaW5pdChhc3luY2hyb25vdXNfZXZlbnRfaGFuZGxlcik7DQotICAgIA0KLSAgICBnX2V2ZW50X2hhbmRsZXIgPSBldmVudF9oYW5kbGVyOw0KLSAgICANCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMHU7DQotICAgIGdfbGFzdF9yZXNwb25zZV9sZW5ndGggPSAwdTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIGFzeW5jaHJvbm91c19ldmVudF9oYW5kbGVyKHVpbnQ4X3QgZXZlbnRfb3Bjb2RlKQ0KLXsNCi0gICAgaWYoZ19ldmVudF9oYW5kbGVyICE9IDApDQotICAgIHsNCi0gICAgc3dpdGNoKGV2ZW50X29wY29kZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBjYXNlIEZMQVNIX0ZSRUVaRV9TSFVURE9XTl9PUENPREU6DQotICAgICAgICAgICAgY2FzZSBGTEFTSF9GUkVFWkVfRVhJVF9PUENPREU6DQotICAgICAgICAgICAgICAgIGdfZXZlbnRfaGFuZGxlcihldmVudF9vcGNvZGUpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgICAgIC8qIElnbm9yZSBhbGwgb3RoZXIgZXZlbnRzLiAqLw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X3NlcmlhbF9udW1iZXINCi0oDQotICAgIHVpbnQ4X3QgKiBwX3NlcmlhbF9udW1iZXINCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NFUklBTF9OVU1CRVJfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKFNFUklBTF9OVU1CRVJfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3NlcmlhbF9udW1iZXIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFUklBTF9OVU1CRVJfU0VSVl9SRVNQX0xFTkdUSCk7DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX2dldF91c2VyX2NvZGUNCi0oDQotICAgIHVpbnQ4X3QgKiBwX3VzZXJfY29kZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbVVNFUkNPREVfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKFVTRVJDT0RFX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF91c2VyX2NvZGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRVJDT0RFX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19nZXRfZGVzaWduX3ZlcnNpb24NCi0oDQotICAgIHVpbnQ4X3QgKiBwX2Rlc2lnbl92ZXJzaW9uDQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtERVNJR05WRVJfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKERFU0lHTlZFUl9SRVFVRVNUX0NNRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGVzaWduX3ZlcnNpb24sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFU0lHTlZFUl9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X2RldmljZV9jZXJ0aWZpY2F0ZQ0KLSgNCi0gICAgdWludDhfdCAqIHBfZGV2aWNlX2NlcnRpZmljYXRlDQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtERVZJQ0VfQ0VSVF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIA0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoREVWSUNFX0NFUlRJRklDQVRFX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9kZXZpY2VfY2VydGlmaWNhdGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9DRVJUX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19mbGFzaF9mcmVlemUodWludDhfdCBvcHRpb25zKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIHVpbnQxNl90IGFjdHVhbF9yZXNwb25zZV9sZW5ndGg7DQotICAgIHVpbnQ4X3QgZmxhc2hfZnJlZXplX3JlcVtGTEFTSF9GUkVFWkVfUkVRVUVTVF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHJlc3BvbnNlW0ZMQVNIX0ZSRUVaRV9TRVJWX1JFU1BfTEVOR1RIXTsNCi0NCi0gICAgLyoNCi0gICAgICogVGhlIEZsYXNoIEZyZWV6ZSBzeXN0ZW0gc2VydmljZSBpcyBub3QgYXZhaWxhYmxlIG9uIE0yUzA1MCByZXYgQSBhbmQgcmV2IEIuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMHgwMDAwRjgwMnUgIT0gU1lTUkVHLT5ERVZJQ0VfVkVSU0lPTik7DQotICAgIEFTU0VSVCgweDAwMDFGODAydSAhPSBTWVNSRUctPkRFVklDRV9WRVJTSU9OKTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEVuYWJsZSBSVEMgd2FrZS11cCBpbnRlcnJ1cHQgdG8gU3lzdGVtIENvbnRyb2xsZXIgYW5kIEZQR0EgZmFicmljLg0KLSAgICAgKi8NCi0gICAgU1lTUkVHLT5SVENfV0FLRVVQX0NSIHw9IChSVENfV0FLRVVQX0c0Q19FTl9NQVNLIHwgUlRDX1dBS0VVUF9GQUJfRU5fTUFTSyk7DQotDQotICAgIHNpZ25hbF9yZXF1ZXN0X3N0YXJ0KCk7DQotDQotICAgIGZsYXNoX2ZyZWV6ZV9yZXFbMF0gPSBGTEFTSF9GUkVFWkVfUkVRVUVTVF9DTUQ7DQotICAgIGZsYXNoX2ZyZWV6ZV9yZXFbMV0gPSBvcHRpb25zOw0KLQ0KLSAgICBNU1NfQ09NQkxLX3NlbmRfY21kKGZsYXNoX2ZyZWV6ZV9yZXEsICAgICAgICAgICAgICAgLyogcF9jbWQgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBGTEFTSF9GUkVFWkVfUkVRVUVTVF9MRU5HVEgsICAgIC8qIGNtZF9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwX2RhdGEgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAwdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRhdGFfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLCAgICAgICAgICAgICAgICAgICAgICAgLyogcF9yZXNwb25zZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIEZMQVNIX0ZSRUVaRV9TRVJWX1JFU1BfTEVOR1RILCAgLyogcmVzcG9uc2Vfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfY29tcGxldGlvbl9oYW5kbGVyKTsgICAgLyogY29tcGxldGlvbl9oYW5kbGVyICovDQotDQotICAgIGFjdHVhbF9yZXNwb25zZV9sZW5ndGggPSB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24oKTsNCi0gICAgDQotICAgIGlmKChGTEFTSF9GUkVFWkVfU0VSVl9SRVNQX0xFTkdUSCA9PSBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoKSAmJg0KLSAgICAgICAoRkxBU0hfRlJFRVpFX1JFUVVFU1RfQ01EID09IHJlc3BvbnNlWzBdKSkNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gcmVzcG9uc2VbMV07DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBNU1NfU1lTX1VORVhQRUNURURfRVJST1I7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi0jZGVmaW5lIEFFUzEyOF9LRVlfTEVOR1RIICAgMTZ1DQotI2RlZmluZSBJVl9MRU5HVEggICAgICAgICAgIDE2dQ0KLQ0KLSNkZWZpbmUgQUVTMjU2X0tFWV9MRU5HVEggICAzMnUNCi0NCi0jZGVmaW5lIEhNQUNfS0VZX0xFTkdUSCAgICAgMzJ1DQotDQotdWludDhfdCBNU1NfU1lTXzEyOGJpdF9hZXMNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBrZXksDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBpdiwNCi0gICAgdWludDE2X3QgbmJfYmxvY2tzLA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQ4X3QgKiBkZXN0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBzcmNfYWRkcikNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3QgcGFyYW1zWzQ0XTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIA0KLSAgICBtZW1jcHkoJnBhcmFtc1swXSwga2V5LCBBRVMxMjhfS0VZX0xFTkdUSCk7DQotICAgIG1lbWNweSgmcGFyYW1zWzE2XSwgaXYsIElWX0xFTkdUSCk7DQotICAgIA0KLSAgICBwYXJhbXNbMzJdID0gKHVpbnQ4X3QpbmJfYmxvY2tzOw0KLSAgICBwYXJhbXNbMzNdID0gKHVpbnQ4X3QpKG5iX2Jsb2NrcyA+PiA4dSk7DQotICAgIHBhcmFtc1szNF0gPSBtb2RlOw0KLSAgICBwYXJhbXNbMzVdID0gMHU7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkoZGVzdF9hZGRyLCBwYXJhbXMsIDM2dSk7DQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHNyY19hZGRyLCBwYXJhbXMsIDQwdSk7DQotI2Vsc2UgICAgDQotICAgIHBhcmFtc1szNl0gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkcik7DQotICAgIHBhcmFtc1szN10gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkciA+PiA4dSk7DQotICAgIHBhcmFtc1szOF0gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkciA+PiAxNnUpOw0KLSAgICBwYXJhbXNbMzldID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gMjR1KTsNCi0NCi0gICAgcGFyYW1zWzQwXSA9ICh1aW50OF90KSgodWludDMyX3Qpc3JjX2FkZHIpOw0KLSAgICBwYXJhbXNbNDFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiA4dSk7DQotICAgIHBhcmFtc1s0Ml0gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyID4+IDE2dSk7DQotICAgIHBhcmFtc1s0M10gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyID4+IDI0dSk7DQotI2VuZGlmDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShBRVMxMjhfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfMjU2Yml0X2Flcw0KLSggDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBrZXksDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBpdiwNCi0gICAgdWludDE2X3QgbmJfYmxvY2tzLA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQ4X3QgKiBkZXN0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBzcmNfYWRkcg0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3QgcGFyYW1zWzYwXTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIA0KLSAgICBtZW1jcHkoJnBhcmFtc1swXSwga2V5LCBBRVMyNTZfS0VZX0xFTkdUSCk7DQotICAgIG1lbWNweSgmcGFyYW1zWzMyXSwgaXYsIElWX0xFTkdUSCk7DQotICAgIA0KLSAgICBwYXJhbXNbNDhdID0gKHVpbnQ4X3QpbmJfYmxvY2tzOw0KLSAgICBwYXJhbXNbNDldID0gKHVpbnQ4X3QpKG5iX2Jsb2NrcyA+PiA4dSk7DQotICAgIHBhcmFtc1s1MF0gPSBtb2RlOw0KLSAgICBwYXJhbXNbNTFdID0gMHU7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkoZGVzdF9hZGRyLCBwYXJhbXMsIDUydSk7DQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHNyY19hZGRyLCBwYXJhbXMsIDU2dSk7DQotI2Vsc2UgICAgDQotICAgIHBhcmFtc1s1Ml0gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkcik7DQotICAgIHBhcmFtc1s1M10gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkciA+PiA4dSk7DQotICAgIHBhcmFtc1s1NF0gPSAodWludDhfdCkoKHVpbnQzMl90KWRlc3RfYWRkciA+PiAxNnUpOw0KLSAgICBwYXJhbXNbNTVdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gMjR1KTsNCi0NCi0gICAgcGFyYW1zWzU2XSA9ICh1aW50OF90KSgodWludDMyX3Qpc3JjX2FkZHIpOw0KLSAgICBwYXJhbXNbNTddID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiA4dSk7DQotICAgIHBhcmFtc1s1OF0gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyID4+IDE2dSk7DQotICAgIHBhcmFtc1s1OV0gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyID4+IDI0dSk7DQotI2VuZGlmDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShBRVMyNTZfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfc2hhMjU2DQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhX2luLA0KLSAgICB1aW50MzJfdCBsZW5ndGgsDQotICAgIHVpbnQ4X3QgKiByZXN1bHQNCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHBhcmFtc1sxMl07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgcGFyYW1zWzBdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGgpOw0KLSAgICBwYXJhbXNbMV0gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCA+PiA4dSk7DQotICAgIHBhcmFtc1syXSA9ICh1aW50OF90KSgodWludDMyX3QpbGVuZ3RoID4+IDE2dSk7DQotICAgIHBhcmFtc1szXSA9ICh1aW50OF90KSgodWludDMyX3QpbGVuZ3RoID4+IDI0dSk7DQotICAgIA0KLSNpZiAxDQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHJlc3VsdCwgcGFyYW1zLCA0dSk7DQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHBfZGF0YV9pbiwgcGFyYW1zLCA4dSk7DQotI2Vsc2UNCi0gICAgcGFyYW1zWzRdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClyZXN1bHQpOw0KLSAgICBwYXJhbXNbNV0gPSAodWludDhfdCkoKHVpbnQzMl90KXJlc3VsdCA+PiA4dSk7DQotICAgIHBhcmFtc1s2XSA9ICh1aW50OF90KSgodWludDMyX3QpcmVzdWx0ID4+IDE2dSk7DQotICAgIHBhcmFtc1s3XSA9ICh1aW50OF90KSgodWludDMyX3QpcmVzdWx0ID4+IDI0dSk7DQotDQotICAgIHBhcmFtc1s4XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luKTsNCi0gICAgcGFyYW1zWzldID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2RhdGFfaW4gPj4gOHUpOw0KLSAgICBwYXJhbXNbMTBdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2RhdGFfaW4gPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzExXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luID4+IDI0dSk7DQotI2VuZGlmDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShTSEEyNTZfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfaG1hYw0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIGtleSwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfZGF0YV9pbiwNCi0gICAgdWludDMyX3QgbGVuZ3RoLA0KLSAgICB1aW50OF90ICogcF9yZXN1bHQNCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHBhcmFtc1s1OF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgbWVtY3B5KCZwYXJhbXNbMF0sIGtleSwgSE1BQ19LRVlfTEVOR1RIKTsNCi0gICAgDQotICAgIHBhcmFtc1szMl0gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCk7DQotICAgIHBhcmFtc1szM10gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCA+PiA4dSk7DQotICAgIHBhcmFtc1szNF0gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCA+PiAxNnUpOw0KLSAgICBwYXJhbXNbMzVdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGggPj4gMjR1KTsNCi0jaWYgMQ0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShwX2RhdGFfaW4sIHBhcmFtcywgMzZ1KTsNCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocF9yZXN1bHQsIHBhcmFtcywgNDB1KTsNCi0jZWxzZSAgICANCi0gICAgcGFyYW1zWzM2XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luKTsNCi0gICAgcGFyYW1zWzM3XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luID4+IDh1KTsNCi0gICAgcGFyYW1zWzM4XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luID4+IDE2dSk7DQotICAgIHBhcmFtc1szOV0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbiA+PiAyNHUpOw0KLQ0KLSAgICBwYXJhbXNbNDBdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3Jlc3VsdCk7DQotICAgIHBhcmFtc1s0MV0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVzdWx0ID4+IDh1KTsNCi0gICAgcGFyYW1zWzQyXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9yZXN1bHQgPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzQzXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9yZXN1bHQgPj4gMjR1KTsNCi0jZW5kaWYNCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKEhNQUNfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfbnJiZ19zZWxmX3Rlc3Qodm9pZCkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICB1aW50MTZfdCBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoOw0KLSAgICB1aW50OF90IHNlbGZfdGVzdDsNCi0gICAgdWludDhfdCByZXNwb25zZVtOUkJHX1NFTEZfVEVTVF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgDQotICAgIHNpZ25hbF9yZXF1ZXN0X3N0YXJ0KCk7DQotICAgIA0KLSAgICBzZWxmX3Rlc3QgPSBOUkJHX1NFTEZfVEVTVF9SRVFVRVNUX0NNRDsNCi0NCi0gICAgTVNTX0NPTUJMS19zZW5kX2NtZCgmc2VsZl90ZXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwX2NtZCAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzZWxmX3Rlc3QpLCAgICAgICAgICAgICAgICAgIC8qIGNtZF9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9kYXRhICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGF0YV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9yZXNwb25zZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIE5SQkdfU0VMRl9URVNUX1NFUlZfUkVTUF9MRU5HVEgsICAgIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcik7ICAgICAgICAvKiBjb21wbGV0aW9uX2hhbmRsZXIgKi8NCi0gICAgDQotICAgIGFjdHVhbF9yZXNwb25zZV9sZW5ndGggPSB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24oKTsNCi0gICAgDQotICAgIGlmKChOUkJHX1NFTEZfVEVTVF9TRVJWX1JFU1BfTEVOR1RIID09IGFjdHVhbF9yZXNwb25zZV9sZW5ndGgpICYmDQotICAgICAgIChOUkJHX1NFTEZfVEVTVF9SRVFVRVNUX0NNRCA9PSByZXNwb25zZVswXSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHJlc3BvbnNlWzFdOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwZXJzb25hbGl6YXRpb25fc3RyLA0KLSAgICB1aW50MTZfdCBwZXJzb25hbGl6YXRpb25fc3RyX2xlbmd0aCwNCi0gICAgdWludDhfdCAqIHBfbnJiZ19oYW5kbGUNCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IGludGFudGlhdGVfcGFyYW1zWzddOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0jaWYgMQ0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShwZXJzb25hbGl6YXRpb25fc3RyLCBpbnRhbnRpYXRlX3BhcmFtcywgMHUpOw0KLSNlbHNlICAgIA0KLSAgICBpbnRhbnRpYXRlX3BhcmFtc1swXSA9ICh1aW50OF90KSgodWludDMyX3QpcGVyc29uYWxpemF0aW9uX3N0cik7DQotICAgIGludGFudGlhdGVfcGFyYW1zWzFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwZXJzb25hbGl6YXRpb25fc3RyID4+IDh1KTsNCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbMl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBlcnNvbmFsaXphdGlvbl9zdHIgPj4gMTZ1KTsNCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbM10gPSAodWludDhfdCkoKHVpbnQzMl90KXBlcnNvbmFsaXphdGlvbl9zdHIgPj4gMjR1KTsNCi0jZW5kaWYNCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbNF0gPSAodWludDhfdClwZXJzb25hbGl6YXRpb25fc3RyX2xlbmd0aDsNCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbNV0gPSAodWludDhfdCkocGVyc29uYWxpemF0aW9uX3N0cl9sZW5ndGggPj4gOHUpOw0KLSAgICBpbnRhbnRpYXRlX3BhcmFtc1s2XSA9IElOVkFMSURfTlJCR19IQU5ETEU7DQotICAgIA0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoTlJCR19JTlNUQU5USUFURV9SRVFVRVNUX0NNRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGFudGlhdGVfcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICBpZihNU1NfU1lTX1NVQ0NFU1MgPT0gc3RhdHVzKQ0KLSAgICB7DQotICAgICAgICAqcF9ucmJnX2hhbmRsZSA9IGludGFudGlhdGVfcGFyYW1zWzZdOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfZ2VuZXJhdGUNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX3JlcXVlc3RlZF9kYXRhLA0KLSAgICBjb25zdCB1aW50OF90ICogcF9hZGRpdGlvbmFsX2lucHV0LA0KLSAgICB1aW50OF90IHJlcXVlc3RlZF9sZW5ndGgsDQotICAgIHVpbnQ4X3QgYWRkaXRpb25hbF9pbnB1dF9sZW5ndGgsDQotICAgIHVpbnQ4X3QgcHJfcmVxLA0KLSAgICB1aW50OF90IG5yYmdfaGFuZGxlDQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgdWludDhfdCBnZW5lcmF0ZV9wYXJhbXNbMTJdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0jaWYgMQ0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShwX3JlcXVlc3RlZF9kYXRhLCBnZW5lcmF0ZV9wYXJhbXMsIDB1KTsNCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocF9hZGRpdGlvbmFsX2lucHV0LCBnZW5lcmF0ZV9wYXJhbXMsIDR1KTsNCi0jZWxzZQ0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbMF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVxdWVzdGVkX2RhdGEpOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbMV0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVxdWVzdGVkX2RhdGEgPj4gOHUpOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbMl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVxdWVzdGVkX2RhdGEgPj4gMTZ1KTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3JlcXVlc3RlZF9kYXRhID4+IDI0dSk7DQotICAgIGdlbmVyYXRlX3BhcmFtc1s0XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9hZGRpdGlvbmFsX2lucHV0KTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzVdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gOHUpOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbNl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCA+PiAxNnUpOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbN10gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCA+PiAyNHUpOw0KLSNlbmRpZg0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbOF0gPSByZXF1ZXN0ZWRfbGVuZ3RoOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbOV0gPSBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aDsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzEwXSA9IHByX3JlcTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzExXSA9IG5yYmdfaGFuZGxlOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKE5SQkdfR0VORVJBVEVfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9wYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX3Jlc2VlZA0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfYWRkaXRpb25hbF9pbnB1dCwNCi0gICAgdWludDhfdCBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aCwNCi0gICAgdWludDhfdCBucmJnX2hhbmRsZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3QgcGFyYW1zWzZdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0jaWYgMQ0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShwX2FkZGl0aW9uYWxfaW5wdXQsIHBhcmFtcywgMHUpOw0KLSNlbHNlDQotICAgIHBhcmFtc1swXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9hZGRpdGlvbmFsX2lucHV0KTsNCi0gICAgcGFyYW1zWzFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gOHUpOw0KLSAgICBwYXJhbXNbMl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCA+PiAxNnUpOw0KLSAgICBwYXJhbXNbM10gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCA+PiAyNHUpOw0KLSNlbmRpZg0KLSAgICBwYXJhbXNbNF0gPSAodWludDhfdClhZGRpdGlvbmFsX2lucHV0X2xlbmd0aDsNCi0gICAgcGFyYW1zWzVdID0gbnJiZ19oYW5kbGU7DQotICAgIA0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoTlJCR19SRVNFRURfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX3VuaW5zdGFudGlhdGUNCi0oDQotICAgIHVpbnQ4X3QgbnJiZ19oYW5kbGUNCi0pDQotew0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgdWludDE2X3QgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aDsNCi0gICAgdWludDhfdCB1bmluc3RhbnRpYXRlX3JlcVsyXTsNCi0gICAgdWludDhfdCByZXNwb25zZVtOUkJHX1VOSU5TVF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgDQotICAgIHNpZ25hbF9yZXF1ZXN0X3N0YXJ0KCk7DQotICAgIA0KLSAgICB1bmluc3RhbnRpYXRlX3JlcVswXSA9IE5SQkdfVU5JTlNUQU5USUFURV9SRVFVRVNUX0NNRDsNCi0gICAgdW5pbnN0YW50aWF0ZV9yZXFbMV0gPSBucmJnX2hhbmRsZTsNCi0NCi0gICAgTVNTX0NPTUJMS19zZW5kX2NtZCh1bmluc3RhbnRpYXRlX3JlcSwgICAgICAgICAgICAgIC8qIHBfY21kICovDQotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuaW5zdGFudGlhdGVfcmVxKSwgICAgICAvKiBjbWRfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9kYXRhICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkYXRhX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfcmVzcG9uc2UgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBOUkJHX1VOSU5TVF9TRVJWX1JFU1BfTEVOR1RILCAgIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcik7ICAgIC8qIGNvbXBsZXRpb25faGFuZGxlciAqLw0KLSAgICANCi0gICAgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aCA9IHdhaXRfZm9yX3JlcXVlc3RfY29tcGxldGlvbigpOw0KLSAgICANCi0gICAgaWYoKE5SQkdfVU5JTlNUX1NFUlZfUkVTUF9MRU5HVEggPT0gYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aCkgJiYNCi0gICAgICAgKE5SQkdfVU5JTlNUQU5USUFURV9SRVFVRVNUX0NNRCA9PSByZXNwb25zZVswXSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHJlc3BvbnNlWzFdOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotc3RhdGljIHVpbnQ4X3QgZ19pc3BfcmVzcG9uc2VbSVNQX1BST0dfU0VSVl9SRVNQX0xFTkdUSF07DQotdm9pZCAoKmdfaXNwX2NvbXBsZXRpb25faGFuZGxlcikodWludDMyX3QpID0gMDsNCi0NCi1zdGF0aWMgdm9pZCBpc3Bfc3lzX2NvbXBsZXRpb25faGFuZGxlcg0KLSgNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsIA0KLSAgICB1aW50MTZfdCBsZW5ndGgNCi0pDQotew0KLSAgICBpZihnX2lzcF9jb21wbGV0aW9uX2hhbmRsZXIgIT0gMCkNCi0gICAgew0KLSAgICAgICAgZ19pc3BfY29tcGxldGlvbl9oYW5kbGVyKHBfcmVzcG9uc2VbMV0pOw0KLSAgICB9DQotfQ0KLQ0KLXZvaWQgTVNTX1NZU19zdGFydF9pc3ANCi0oDQotICAgIHVpbnQ4X3QgbW9kZSwNCi0gICAgdWludDMyX3QgKCpwYWdlX3JlYWRfaGFuZGxlcikodWludDhfdCBjb25zdCAqKiksDQotICAgIHZvaWQgKCppc3BfY29tcGxldGlvbl9oYW5kbGVyKSh1aW50MzJfdCkNCi0pDQotew0KLSAgICB1aW50OF90IGlzcF9wcm9nX3JlcXVlc3RbMl07DQotICAgIA0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLSAgICANCi0gICAgaXNwX3Byb2dfcmVxdWVzdFswXSA9IElTUF9QUk9HUkFNTUlOR19SRVFVRVNUX0NNRDsNCi0gICAgaXNwX3Byb2dfcmVxdWVzdFsxXSA9IG1vZGU7DQotICAgIA0KLSAgICBnX2lzcF9jb21wbGV0aW9uX2hhbmRsZXIgPSBpc3BfY29tcGxldGlvbl9oYW5kbGVyOw0KLQ0KLSAgICBNU1NfQ09NQkxLX3NlbmRfcGFnZWRfY21kKGlzcF9wcm9nX3JlcXVlc3QsICAgICAgICAgICAgICAgICAvKiBwX2NtZCAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpc3BfcHJvZ19yZXF1ZXN0KSwgICAgICAgICAvKiBjbWRfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfaXNwX3Jlc3BvbnNlLCAgICAgICAgICAgICAgICAgICAvKiBwX3Jlc3BvbnNlICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNQX1BST0dfU0VSVl9SRVNQX0xFTkdUSCwgLyogcmVzcG9uc2Vfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfcmVhZF9oYW5kbGVyLCAgICAgICAgICAgICAgICAvKiBwYWdlX2hhbmRsZXIgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Bfc3lzX2NvbXBsZXRpb25faGFuZGxlcik7ICAgICAgLyogY29tcGxldGlvbl9oYW5kbGVyICovDQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfY2hlY2tfZGlnZXN0DQotKA0KLSAgICB1aW50OF90IG9wdGlvbnMNCi0pDQotew0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgdWludDE2X3QgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aDsNCi0gICAgdWludDhfdCBkaWdlc3RfY2hlY2tfcmVxWzJdOw0KLSAgICB1aW50OF90IHJlc3BvbnNlW0RJR0VTVF9DSEVDS19TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgDQotICAgIHNpZ25hbF9yZXF1ZXN0X3N0YXJ0KCk7DQotICAgIA0KLSAgICBkaWdlc3RfY2hlY2tfcmVxWzBdID0gRElHRVNUX0NIRUNLX1JFUVVFU1RfQ01EOw0KLSAgICBkaWdlc3RfY2hlY2tfcmVxWzFdID0gb3B0aW9uczsNCi0NCi0gICAgTVNTX0NPTUJMS19zZW5kX2NtZChkaWdlc3RfY2hlY2tfcmVxLCAgICAgICAgICAgICAgIC8qIHBfY21kICovDQotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRpZ2VzdF9jaGVja19yZXEpLCAgICAgICAvKiBjbWRfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9kYXRhICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkYXRhX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfcmVzcG9uc2UgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBESUdFU1RfQ0hFQ0tfU0VSVl9SRVNQX0xFTkdUSCwgIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcik7ICAgIC8qIGNvbXBsZXRpb25faGFuZGxlciAqLw0KLSAgICANCi0gICAgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aCA9IHdhaXRfZm9yX3JlcXVlc3RfY29tcGxldGlvbigpOw0KLSAgICANCi0gICAgaWYoKERJR0VTVF9DSEVDS19TRVJWX1JFU1BfTEVOR1RIID09IGFjdHVhbF9yZXNwb25zZV9sZW5ndGgpICYmDQotICAgICAgIChESUdFU1RfQ0hFQ0tfUkVRVUVTVF9DTUQgPT0gcmVzcG9uc2VbMF0pKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSByZXNwb25zZVsxXTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUjsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB1aW50OF90IGV4ZWN1dGVfc2VydmljZQ0KLSgNCi0gICAgdWludDhfdCBjbWRfb3Bjb2RlLA0KLSAgICB1aW50OF90ICogY21kX3BhcmFtc19wdHIsDQotICAgIHVpbnQ4X3QgKiByZXNwb25zZSwNCi0gICAgdWludDE2X3QgcmVzcG9uc2VfbGVuZ3RoDQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIHVpbnQxNl90IGFjdHVhbF9yZXNwb25zZV9sZW5ndGg7DQotICAgIA0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLSAgICANCi0gICAgTVNTX0NPTUJMS19zZW5kX2NtZF93aXRoX3B0cihjbWRfb3Bjb2RlLCAgICAgICAgICAgICAgICAgICAgLyogY21kX29wY29kZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCljbWRfcGFyYW1zX3B0ciwgICAgICAvKiBjbWRfcGFyYW1zX3B0ciAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBwX3Jlc3BvbnNlICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfbGVuZ3RoLCAgICAgICAgICAgICAgIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcik7ICAgLyogY29tcGxldGlvbl9oYW5kbGVyICovDQotICAgIA0KLSAgICBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoID0gd2FpdF9mb3JfcmVxdWVzdF9jb21wbGV0aW9uKCk7DQotICAgIA0KLSAgICBpZigocmVzcG9uc2VfbGVuZ3RoID09IGFjdHVhbF9yZXNwb25zZV9sZW5ndGgpICYmIChjbWRfb3Bjb2RlID09IHJlc3BvbnNlWzBdKSkNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gcmVzcG9uc2VbMV07DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBNU1NfU1lTX1VORVhQRUNURURfRVJST1I7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcg0KLSgNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUNCi0pDQotew0KLSAgICBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAwdTsNCi0gICAgZ19sYXN0X3Jlc3BvbnNlX2xlbmd0aCA9IHJlc3BvbnNlX3NpemU7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBzaWduYWxfcmVxdWVzdF9zdGFydCh2b2lkKQ0KLXsNCi0gICAgLyogV2FpdCBmb3IgY3VycmVudCByZXF1ZXN0IHRvIGNvbXBsZXRlLiAqLw0KLSAgICB3aGlsZShnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MpDQotICAgIHsNCi0gICAgICAgIDsNCi0gICAgfQ0KLSAgICANCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMXU7DQotICAgIGdfbGFzdF9yZXNwb25zZV9sZW5ndGggPSAwdTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB1aW50MTZfdCB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24odm9pZCkNCi17DQotICAgIHdoaWxlKGdfcmVxdWVzdF9pbl9wcm9ncmVzcykNCi0gICAgew0KLSAgICAgICAgOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gZ19sYXN0X3Jlc3BvbnNlX2xlbmd0aDsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5DQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcG9pbnRlciwNCi0gICAgdWludDhfdCB0YXJnZXRfYXJyYXlbXSwNCi0gICAgdWludDMyX3QgYXJyYXlfaW5kZXgNCi0pDQotew0KLSAgICB0YXJnZXRfYXJyYXlbYXJyYXlfaW5kZXhdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwb2ludGVyKTsNCi0gICAgdGFyZ2V0X2FycmF5W2FycmF5X2luZGV4ICsgMV0gPSAodWludDhfdCkoKHVpbnQzMl90KXBvaW50ZXIgPj4gOHUpOw0KLSAgICB0YXJnZXRfYXJyYXlbYXJyYXlfaW5kZXggKyAyXSA9ICh1aW50OF90KSgodWludDMyX3QpcG9pbnRlciA+PiAxNnUpOw0KLSAgICB0YXJnZXRfYXJyYXlbYXJyYXlfaW5kZXggKyAzXSA9ICh1aW50OF90KSgodWludDMyX3QpcG9pbnRlciA+PiAyNHUpOw0KLX0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3Nfc3lzX3NlcnZpY2VzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3Nfc3lzX3NlcnZpY2VzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZWZjYzMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsODgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogU21hcnRGdXNpb24yIE1TUyBTeXN0ZW0gU2VydmljZXMgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIgcHVibGljIEFQSS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU1OTEgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNCAxNTo1NToxMSArMDEwMCAoVGh1LCAwNCBBcHIgMjAxMykgJA0KLSAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovLyoqDQotICBAbWFpbnBhZ2UgU21hcnRGdXNpb24yIE1TUyBTeXN0ZW0gU2VydmljZXMgQmFyZSBNZXRhbCBEcml2ZXIuDQotDQotICBAc2VjdGlvbiBpbnRyb19zZWMgSW50cm9kdWN0aW9uDQotICBUaGUgU21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgaW5jbHVkZXMgYSBjb21tdW5pY2F0aW9uDQotICBibG9jayAoQ09NTV9CTEspIGFsbG93aW5nIGl0IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIFNtYXJ0RnVzaW9uMiBTeXN0ZW0NCi0gIENvbnRyb2xsZXIuIFRoZSBTbWFydEZ1c2lvbjIgU3lzdGVtIENvbnRyb2xsZXIgcGVyZm9ybXMgYSB2YXJpZXR5IG9mIHN5c3RlbQ0KLSAgd2lkZSBzZXJ2aWNlcy4gVGhpcyBzb2Z0d2FyZSBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIGFjY2Vzcw0KLSAgdGhlc2UgU3lzdGVtIFNlcnZpY2VzLiBUaGUgZHJpdmVyIGNhbiBiZSBhZGFwdGVkIGZvciB1c2UgYXMgcGFydCBvZiBhbg0KLSAgb3BlcmF0aW5nIHN5c3RlbSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRhcHRhdGlvbiBsYXllciBiZXR3ZWVuIHRoZQ0KLSAgZHJpdmVyIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGRyaXZlciBtb2RlbCBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGUNCi0gIGRyaXZlci4NCi0gIA0KLSAgQHNlY3Rpb24gaHdfZGVwZW5kZW5jaWVzIEhhcmR3YXJlIEZsb3cgRGVwZW5kZW5jaWVzDQotICBUaGUgTVNTIFN5c3RlbSBTZXJ2aWNlcyBkcml2ZXIgZG9lcyBub3QgcmVxdWlyZSBhbnkgY29uZmlndXJhdGlvbi4gSXQgcmVsaWVzDQotICBvbiB0aGUgU21hcnRGdXNpb24yIGNvbW11bmljYXRpb24gYmxvY2sgKE1TU19DT01NX0JMSykgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUNCi0gIFN5c3RlbSBDb250cm9sbGVyLiBUaGUgTVNTX0NPTU1fQkxLIGlzIGFsd2F5cyBlbmFibGVkLg0KLSAgVGhlIGJhc2UgYWRkcmVzcywgcmVnaXN0ZXIgYWRkcmVzc2VzIGFuZCBpbnRlcnJ1cHQgbnVtYmVyIGFzc2lnbm1lbnQgZm9yIHRoZQ0KLSAgTVNTX0NPTU1fQkxLIGFyZSBkZWZpbmVkIGFzIGNvbnN0YW50cyBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91IG11c3QNCi0gIGVuc3VyZSB0aGF0IHRoZSBsYXRlc3QgU21hcnRGdXNpb24yIENNU0lTIEhBTCBpcyBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdA0KLSAgc2V0dGluZ3Mgb2YgdGhlIHNvZnR3YXJlIHRvb2wgY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3QgYW5kIHRoYXQgaXQgaXMNCi0gIGdlbmVyYXRlZCBpbnRvIHlvdXIgcHJvamVjdC4NCi0gIA0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gIFRoZSBTeXN0ZW0gU2VydmljZXMgZHJpdmVyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU21hcnRGdXNpb24yIFN5c3RlbQ0KLSAgQ29udHJvbGxlciBzZXJ2aWNlcy4gVGhlc2Ugc3lzdGVtIHNlcnZpY2VzIGFyZSBsb29zZWx5IGdyb3VwZWQgaW50byB0aGUNCi0gIGZvbGxvd2luZyBmZWF0dXJlczoNCi0gICAgLSBSZWFkaW5nIHN5c3RlbSBpbmZvcm1hdGlvbg0KLSAgICAtIENyeXB0b2dyYXBoeQ0KLSAgICAtIE5vbi1kZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yDQotICAgIC0gRmxhc2gqRnJlZXplDQotICBOb3RlOiBSZWZlciB0byB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb25zIGZvciBmdXJ0aGVyIGRldGFpbHMgYWJvdXQgdGhlDQotICAgICAgICBmZWF0dXJlcyBvZiBlYWNoIGluZGl2aWR1YWwgc2VydmljZS4NCi0NCi0gIFJlYWRpbmcgU3lzdGVtIEluZm9ybWF0aW9uDQotICBUaGUgU3lzdGVtIFNlcnZpY2VzIGRyaXZlciBjYW4gYmUgdXNlZCB0byByZWFkIGluZm9ybWF0aW9uIGFib3V0IHRoZQ0KLSAgU21hcnRGdXNpb24yIGRldmljZSBhbmQgdGhlIGRlc2lnbiBwcm9ncmFtbWVkIGludG8gaXQgdXNpbmcgdGhlIGZvbGxvd2luZw0KLSAgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19TWVNfZ2V0X3NlcmlhbF9udW1iZXIoKQ0KLSAgICAtIE1TU19TWVNfZ2V0X3VzZXJfY29kZSgpDQotICAgIC0gTVNTX1NZU19nZXRfZGVzaWduX3ZlcnNpb24oKQ0KLSAgICAtIE1TU19TWVNfZ2V0X2RldmljZV9jZXJ0aWZpY2F0ZSgpDQotICAgIA0KLSAgQ3J5cHRvZ3JhcGh5IFNlcnZpY2VzDQotICBUaGUgU3lzdGVtIFNlcnZpY2VzIGRyaXZlciBwcm92aWRlcyBjcnlwdG9ncmFwaGljIHNlcnZpY2VzIHVzaW5nIHRoZSBmb2xsb3dpbmcNCi0gIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfU1lTXzEyOGJpdF9hZXMoKQ0KLSAgICAtIE1TU19TWVNfMjU2Yml0X2FlcygpDQotICAgIC0gTVNTX1NZU19zaGEyNTYoKQ0KLSAgICAtIE1TU19TWVNfaG1hYygpDQotICAgIA0KLSAgTm9uLURldGVybWluaXN0aWMgUmFuZG9tIEJpdCBHZW5lcmF0b3INCi0gIFRoZSBTeXN0ZW0gU2VydmljZXMgZHJpdmVyIHByb3ZpZGVzIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBzZXJ2aWNlcyB1c2luZw0KLSAgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlKCkNCi0gICAgLSBNU1NfU1lTX25yYmdfc2VsZl90ZXN0KCkNCi0gICAgLSBNU1NfU1lTX25yYmdfZ2VuZXJhdGUoKQ0KLSAgICAtIE1TU19TWVNfbnJiZ19yZXNlZWQoKQ0KLSAgICAtIE1TU19TWVNfbnJiZ191bmluc3RhbnRpYXRlKCkNCi0gICAgDQotICBGbGFzaCpGcmVlemUNCi0gIFRoZSBTeXN0ZW0gU2VydmljZXMgZHJpdmVyIGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgdGhlIHN5c3RlbSB0byBlbnRlcg0KLSAgRmxhc2gqRnJlZXplIG1vZGUgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoNCi0gICAgLSBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSgpDQotICAgIA0KLSAqLy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotDQotI2lmbmRlZiBfX01TU19TWVNfU0VSVklDRVNfSF8NCi0jZGVmaW5lIF9fTVNTX1NZU19TRVJWSUNFU19IXyAxDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU3RhdHVzIGNvZGVzOg0KLSAqLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgYnkgbXVsdGlwbGUgc2VydmljZXMgdG8gY29tbXVuaWNhdGUgdGhlIG91dGNvbWUgb2YgYQ0KLSAgc3lzdGVtIHNlcnZpY2VzIHJlcXVlc3QuIFRoZXNlIHN0YXR1cyBjb2RlcyBhcmUgdXNlZCBhY3Jvc3MgYWxsIHR5cGVzIG9mDQotICBzZXJ2aWNlcy4NCi0gIA0KLSAgLSBNU1NfU1lTX1NVQ0NFU1M6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHN5c3RlbSBzZXJ2aWNlcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiANCi0gICAgICANCi0gIC0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gZmFpbGVkIGluIGFuIHVuZXhwZWN0ZWQgd2F5Lg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1I6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIFN5c3RlbSBDb250cm9sbGVyIGNvdWxkIG5vdCBhY2Nlc3MgdGhlIG1lbW9yeSB1c2VkIHRvDQotICAgICAgcGFzcyBwYXJhbWV0ZXJzIHRvIHRoZSBTeXN0ZW0gQ29udHJvbGxlciBvciB0byByZXR1cm4gYSBzZXJ2aWNlIHJlc3VsdCB0bw0KLSAgICAgIHRoZSBDb3J0ZXgtTTMuDQotICAgICAgDQotICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9GQUNUT1JZOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0ZWQgc3lzdGVtIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgICBTbWFydEZ1c2lvbjIgZGV2aWNlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgcmVxdWVzdGVkIHN5c3RlbSBzZXJ2aWNlIGhhcyBiZWVuIGRpc2FibGVkIGFzIHBhcnQgb2YNCi0gICAgICB0aGUgaGFyZHdhcmUgZGVzaWduLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgIDB1DQotI2RlZmluZSBNU1NfU1lTX1VORVhQRUNURURfRVJST1IgICAgICAgICAgICAgICAgMjAwdQ0KLQ0KLSNkZWZpbmUgTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SICAgICAgICAgICAgICAgIDEyN3UNCi0jZGVmaW5lIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9GQUNUT1JZICAgICAyNTR1DQotI2RlZmluZSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUiAgICAgICAgMjU1dQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogUHJvZ3JhbW1pbmcgc2VydmljZXMgc3BlY2lmaWMgc3RhdHVzIGNvZGVzOg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19DSEFJTklOR19NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAxdQ0KLSNkZWZpbmUgTVNTX1NZU19VTkVYUEVDVEVEX0RBVEFfUkVDRUlWRUQgICAgICAgICAgICAydQ0KLSNkZWZpbmUgTVNTX1NZU19JTlZBTElEX0VOQ1JZUFRJT05fS0VZICAgICAgICAgICAgICAzdQ0KLSNkZWZpbmUgTVNTX1NZU19JTlZBTElEX0NPTVBPTkVOVF9IRUFERVIgICAgICAgICAgICA0dQ0KLSNkZWZpbmUgTVNTX1NZU19CQUNLX0xFVkVMX05PVF9TQVRJU0ZJRUQgICAgICAgICAgICA1dQ0KLSNkZWZpbmUgTVNTX1NZU19EU05fQklORElOR19NSVNNQVRDSCAgICAgICAgICAgICAgICA3dQ0KLSNkZWZpbmUgTVNTX1NZU19JTExFR0FMX0NPTVBPTkVOVF9TRVFVRU5DRSAgICAgICAgICA4dQ0KLSNkZWZpbmUgTVNTX1NZU19JTlNVRkZJQ0lFTlRfREVWX0NBUEFCSUxJVElFUyAgICAgICA5dQ0KLSNkZWZpbmUgTVNTX1NZU19JTkNPUlJFQ1RfREVWSUNFX0lEICAgICAgICAgICAgICAgICAxMHUNCi0jZGVmaW5lIE1TU19TWVNfVU5TVVBQT1JURURfQklUU1RSRUFNX1BST1RfVkVSICAgICAgMTF1DQotI2RlZmluZSBNU1NfU1lTX1ZFUklGWV9OT1RfUEVSTUlUVEVEX09OX0JJVFNUUiAgICAgIDEydQ0KLSNkZWZpbmUgTVNTX1NZU19BQk9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjd1DQotI2RlZmluZSBNU1NfU1lTX05WTV9WRVJJRllfRkFJTEVEICAgICAgICAgICAgICAgICAgIDEyOXUNCi0jZGVmaW5lIE1TU19TWVNfREVWSUNFX1NFQ1VSSVRZX1BST1RFQ1RFRCAgICAgICAgICAgMTMwdQ0KLSNkZWZpbmUgTVNTX1NZU19QUk9HUkFNTUlOR19NT0RFX05PVF9FTkFCTEVEICAgICAgICAxMzF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBldmVudF9vcGNvZGUgcGFyYW1ldGVyIGZvciB0aGUNCi0gIGV2ZW50X2hhbmRsZXIoKSBmdW5jdGlvbiByZWdpc3RlcmVkIHdpdGggdGhlIE1TU19TWVNfaW5pdCgpIGZ1bmN0aW9uLiBUaGV5IGFyZQ0KLSAgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIGFzeW5jaHJvbm91cyBldmVudCBpcyBub3RpZmllZCB0byB0aGUgQ29ydGV4LU0zIHNvZnR3YXJlDQotICBieSB0aGUgU3lzdGVtIENvbnRyb2xsZXIuIEFzeW5jaHJvbm91cyBldmVudHMgYXJlIHNlbnQgYnkgdGhlIFN5c3RlbQ0KLSAgQ29udHJvbGxlciB0byB0aGUgQ29ydGV4LU0zIHdoZW4gc29tZSBzeXN0ZW0gZXZlbnRzIG9mIGludGVyZXN0IG9jY3VyLg0KLSAgDQotICAtIEZMQVNIX0ZSRUVaRV9TSFVURE9XTl9PUENPREU6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHN5c3RlbSBpcyBiZWluZyBzaHV0ZG93biBhcyBhIHJlc3VsdCBvZiBlbnRlcmluZyB0aGUNCi0gICAgICBGbGFzaCpGcmVlemUgbW9kZS4NCi0gICAgICANCi0gIC0gRkxBU0hfRlJFRVpFX0VYSVRfT1BDT0RFOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gaXMgZXhpdGluZyBGbGFzaCpGcmVlemUgbW9kZS4NCi0gKi8NCi0jZGVmaW5lIEZMQVNIX0ZSRUVaRV9TSFVURE9XTl9PUENPREUgICAgMHhFMHUNCi0jZGVmaW5lIEZMQVNIX0ZSRUVaRV9FWElUX09QQ09ERSAgICAgICAgMHhFMXUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIGZvciB0aGUNCi0gIE1TU19TWVNfZmxhc2hfZnJlZXplKCkgZnVuY3Rpb24uDQotICANCi0gIC0gTVNTX1NZU19GUEdBX1BPV0VSX0RPV046DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIE1TU19TWVNfZmxhc2hfZnJlZXplKCkgZnVuY3Rpb24gc2hvdWxkIHJlcXVlc3QgdGhlIEZQR0ENCi0gICAgICBmYWJyaWMgdG8gZW50ZXIgRmxhc2gqRnJlZXplIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfRU5WTTBfUE9XRVJfRE9XTjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgTVNTX1NZU19mbGFzaF9mcmVlemUoKSBmdW5jdGlvbiBzaG91bGQgcmVxdWVzdCBlTlZNMCB0bw0KLSAgICAgIGVudGVyIEZsYXNoKkZyZWV6ZSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX0VOVk0xX1BPV0VSX0RPV046DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIE1TU19TWVNfZmxhc2hfZnJlZXplKCkgZnVuY3Rpb24gc2hvdWxkIHJlcXVlc3QgZU5WTTEgdG8NCi0gICAgICBlbnRlciBGbGFzaCpGcmVlemUgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19NUExMX1BPV0VSX0RPV046DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIE1TU19TWVNfZmxhc2hfZnJlZXplKCkgZnVuY3Rpb24gc2hvdWxkIHJlcXVlc3QgdGhlIE1TUw0KLSAgICAgIFBMTCB0byBlbnRlciBGbGFzaCpGcmVlemUgbW9kZS4NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfRlBHQV9QT1dFUl9ET1dOICAgICAweDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19FTlZNMF9QT1dFUl9ET1dOICAgIDB4MDF1DQotI2RlZmluZSBNU1NfU1lTX0VOVk0xX1BPV0VSX0RPV04gICAgMHgwMnUNCi0jZGVmaW5lIE1TU19TWVNfTVBMTF9QT1dFUl9ET1dOICAgICAweDA0dQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbW9kZSBwYXJhbWV0ZXIgZm9yIHRoZQ0KLSAgTVNTX1NZU18xMjhhZXMoKSBhbmQgTVNTX1NZU18yNTZiaXRfYWVzKCkgZnVuY3Rpb25zLg0KLSAgDQotICAtIE1TU19TWVNfRUNCX0VOQ1JZUFQ6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNyeXB0b2dyYXBoeSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSBlbmNyeXB0aW9uIHVzaW5nDQotICAgICAgdGhlIEVsZWN0cm9uaWMgQ29kZWJvb2sgKEVDQikgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19FQ0JfREVDUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGRlY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgRWxlY3Ryb25pYyBDb2RlYm9vayAoRUNCKSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX0NCQ19FTkNSWVBUOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjcnlwdG9ncmFwaHkgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gZW5jcnlwdGlvbiB1c2luZw0KLSAgICAgIHRoZSBDaXBoZXItQmxvY2sgQ2hhaW5pbmcgKENCQykgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19DQkNfREVDUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGRlY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgQ2lwaGVyLUJsb2NrIENoYWluaW5nIChDQkMpIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfT0ZCX0VOQ1JZUFQ6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNyeXB0b2dyYXBoeSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSBlbmNyeXB0aW9uIHVzaW5nDQotICAgICAgdGhlIE91dHB1dCBGZWVkYmFjayAoT0ZCKSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX09GQl9ERUNSWVBUOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjcnlwdG9ncmFwaHkgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gZGVjcnlwdGlvbiB1c2luZw0KLSAgICAgIHRoZSBPdXRwdXQgRmVlZGJhY2sgKE9GQikgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19DVFJfRU5DUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGVuY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgQ291bnRlciAoQ1RSKSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX0NUUl9ERUNSWVBUOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjcnlwdG9ncmFwaHkgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gZGVjcnlwdGlvbiB1c2luZw0KLSAgICAgIHRoZSBDb3VudGVyIChDVFIpIG1vZGUuDQotICovDQotI2RlZmluZSBNU1NfU1lTX0VDQl9FTkNSWVBUICAgICAweDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19FQ0JfREVDUllQVCAgICAgMHg4MHUNCi0jZGVmaW5lIE1TU19TWVNfQ0JDX0VOQ1JZUFQgICAgIDB4MDF1DQotI2RlZmluZSBNU1NfU1lTX0NCQ19ERUNSWVBUICAgICAweDgxdQ0KLSNkZWZpbmUgTVNTX1NZU19PRkJfRU5DUllQVCAgICAgMHgwMnUNCi0jZGVmaW5lIE1TU19TWVNfT0ZCX0RFQ1JZUFQgICAgIDB4ODJ1DQotI2RlZmluZSBNU1NfU1lTX0NUUl9FTkNSWVBUICAgICAweDAzdQ0KLSNkZWZpbmUgTVNTX1NZU19DVFJfREVDUllQVCAgICAgMHg4M3UNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgVGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIGJ5IG5vbiBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIChORFJCRykNCi0gIHNlcnZpY2VzIHRvIGNvbW11bmljYXRlIHRoZSBvdXRjb21lIG9mIGEgc3lzdGVtIHNlcnZpY2VzIHJlcXVlc3QuIFRoZXNlIHN0YXR1cw0KLSAgY29kZXMgYXJlIG9ubHkgdXNlZCBieSBORFJCRyBzZXJ2aWNlcy4NCi0gIA0KLSAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IGEgY2F0YXN0cm9waGljIGVycm9yIG9jY3VycmVkLiANCi0gICAgICANCi0gIC0gTVNTX1NZU19OUkJHX01BWF9JTlNUX0VYQ0VFREVEOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBORFJCRyBpbnN0YW5jZXMgaGFzIGJlZW4gZXhjZWVkZWQuDQotICAgICAgWW91IG5lZWQgdG8gcmVsZWFzZSBhbHJlYWR5IGluc3RhbnRpYXRlZCBORFJCRyBpbnN0YW5jZXMgdXNpbmcgdGhlDQotICAgICAgTVNTX1NZU19uZHJiZ191bmluc3RhbnRpYXRlKCkgZnVuY3Rpb24uDQotICAgICAgDQotICAtIE1TU19TWVNfTlJCR19JTlZBTElEX0hBTkRMRToNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgaGFuZGxlIHBhcmFtZXRlciBoYXMgYW4gaW52YWxpZCB2YWx1ZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRzoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgcmVxdWVzdGVkIHJhbmRvbSBudW1iZXIgaXMgdG9vIGxvbmcuIFRoZSByZXF1ZXN0ZWQNCi0gICAgICBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyB0aGF0IGNhbiBiZSBnZW5lcmF0ZWQuDQotICAgICAgDQotICAtIE1TU19TWVNfTlJCR19NQVhfTEVOR1RIX0VYQ0VFREVEOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBzdXBwbGllZCBhZGRpdGlvbmFsIGRhdGEgbGVuZ3RoIGlzIGV4Y2VlZGVkLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19OUkJHX0NBVEFTVFJPUEhJQ19FUlJPUiAgICAgMXUNCi0jZGVmaW5lIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRCAgICAgIDJ1DQotI2RlZmluZSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUgICAgICAgICAzdQ0KLSNkZWZpbmUgTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRyAgICAgICAgNHUNCi0jZGVmaW5lIE1TU19TWVNfTlJCR19NQVhfTEVOR1RIX0VYQ0VFREVEICAgIDV1DQotDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBzeXNfc2Vydl9hc3luY19ldmVudF9oYW5kbGVyX3QgdHlwZWRlZiBzcGVjaWZpZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBvZg0KLSAgYW4gYXN5bmNocm9ub3VzIGV2ZW50IGhhbmRsZXIgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBTeXN0ZW0gU2VydmljZXMNCi0gIGRyaXZlciB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cy4gVGhpcyBpcyB0aGUgcHJvdG90eXBlIG9mIGEgZnVuY3Rpb24gY2FuDQotICBiZSBvcHRpb25hbGx5IGltcGxlbWVudGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0byBoYW5kbGUgYXN5bmNocm9ub3VzIGV2ZW50cw0KLSAgc3VjaCBhcyBGbGFzaCpGcmVlemUgc2h1dGRvd24gYW5kIEZsYXNoKkZyZWV6ZSBleGl0Lg0KLSAqLw0KLXR5cGVkZWYgdm9pZCAoKnN5c19zZXJ2X2FzeW5jX2V2ZW50X2hhbmRsZXJfdCkodWludDhfdCBldmVudF9vcGNvZGUpOw0KLSANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhpcyBjb25zdGFudCBpcyB1c2VkIGFzIHBhcmFtZXRlciB0byB0aGUgTVNTX1NZU19pbml0KCkgZnVuY3Rpb24gdG8gaW5kaWNhdGUNCi0gIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNvZGUgZG9lcyBub3Qgc3VwcGx5IGFuIGFzeW5jaHJvbm91cyBldmVudCBoYW5kbGVyDQotICBmdW5jdGlvbi4NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfTk9fRVZFTlRfSEFORExFUiAgICAoKHN5c19zZXJ2X2FzeW5jX2V2ZW50X2hhbmRsZXJfdCkwKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19pbml0IGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzeXN0ZW0gc2VydmljZXMgY29tbXVuaWNhdGlvbiB3aXRoDQotICB0aGUgU3lzdGVtIENvbnRyb2xsZXIuDQotICAgDQotICBAcGFyYW0NCi0gICAgVGhlIGV2ZW50X2hhbmRsZXIgcGFyYW1ldGVyIHNwZWNpZmllcyBhbiBvcHRpb25hbCBhc3luY2hyb25vdXMgZXZlbnQNCi0gICAgaGFuZGxlciBmdW5jdGlvbi4gVGhpcyBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHRoZQ0KLSAgICBhcHBsaWNhdGlvbi4gSXQgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIFN5c3RlbSBTZXJ2aWNlcyBkcml2ZXIgd2hlbmV2ZXIgYW4NCi0gICAgYXN5bmNocm9ub3VzIGV2ZW50IGlzIHJlY2VpdmVkIGZyb20gdGhlIFNtYXJ0RnVzaW9uMiBTeXN0ZW0gY29udHJvbGxlci4NCi0gICAgVGhpcyBldmVudCBoYW5kbGVyIGlzIHR5cGljYWxseSB1c2VkIHRvIGhhbmRsZSBlbnRyeSBhbmQgZXhpdCBvZg0KLSAgICBGbGFzaCpGcmVlemUgbW9kZS4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZCBNU1NfU1lTX2luaXQoc3lzX3NlcnZfYXN5bmNfZXZlbnRfaGFuZGxlcl90IGV2ZW50X2hhbmRsZXIpOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRGV2aWNlIGFuZCBEZXNpZ24gSW5mb3JtYXRpb24gU2VydmljZXMuDQotICovDQotIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19nZXRfc2VyaWFsX251bWJlciBmdW5jdGlvbiBmZXRjaGVzIHRoZSAxMjgtYml0IERldmljZSBTZXJpYWwNCi0gIE51bWJlciAoRFNOKS4NCi0gIA0KLSAgQHBhcmFtIHBfc2VyaWFsX251bWJlcg0KLSAgICBUaGUgcF9zZXJpYWxfbnVtYmVyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIDE2LWJ5dGVzIGJ1ZmZlciB3aGVyZSB0aGUNCi0gICAgc2VyaWFsIG51bWJlciB3aWxsIGJlIHdyaXR0ZW4gYnkgdGhpcyBzeXN0ZW0gc2VydmljZS4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19nZXRfc2VyaWFsX251bWJlciBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19nZXRfc2VyaWFsX251bWJlcg0KLSgNCi0gICAgdWludDhfdCAqIHBfc2VyaWFsX251bWJlcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gICBUaGUgTVNTX1NZU19nZXRfdXNlcl9jb2RlIGZ1bmN0aW9ucyBmZXRjaGVzIHRoZSAzMi1iaXQgVVNFUkNPREUuDQotICANCi0gIEBwYXJhbSBwX3VzZXJfY29kZQ0KLSAgICBUaGUgcF91c2VyX2NvZGUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgNC1ieXRlcyBidWZmZXIgd2hlcmUgdGhlDQotICAgIFVTRVJDT0RFIHdpbGwgYmUgd3JpdHRlbiBieSB0aGlzIHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX2dldF91c2VyX2NvZGUgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1VORVhQRUNURURfRVJST1INCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X3VzZXJfY29kZQ0KLSgNCi0gICAgdWludDhfdCAqIHBfdXNlcl9jb2RlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfZ2V0X2Rlc2lnbl92ZXJzaW9uIGZ1bmN0aW9uIGZldGNoZXMgdGhlIGRlc2lnbiB2ZXJzaW9uLg0KLSAgDQotICBAcGFyYW0gcF9kZXNpZ25fdmVyc2lvbg0KLSAgICBUaGUgcF9kZXNpZ25fdmVyc2lvbiBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSAyLWJ5dGVzIGJ1ZmZlciB3aGVyZSB0aGUNCi0gICAgZGVzaWduIHZlcnNpb24gd2lsbCBiZSB3cml0dGVuIGJ5IHRoaXMgc3lzdGVtIHNlcnZpY2UuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfZ2V0X2Rlc2lnbl92ZXJzaW9uIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SDQotICovDQotdWludDhfdCBNU1NfU1lTX2dldF9kZXNpZ25fdmVyc2lvbg0KLSgNCi0gICAgdWludDhfdCAqIHBfZGVzaWduX3ZlcnNpb24NCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19nZXRfZGV2aWNlX2NlcnRpZmljYXRlIGZ1bmN0aW9uIGZldGNoZXMgdGhlIGRldmljZSBjZXJ0aWZpY2F0ZS4NCi0gIA0KLSAgQHBhcmFtIHBfZGV2aWNlX2NlcnRpZmljYXRlDQotICAgIFRoZSBwX2RldmljZV9jZXJ0aWZpY2F0ZSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSA1MTItYnl0ZXMgYnVmZmVyDQotICAgIHdoZXJlIHRoZSBkZXZpY2UgY2VydGlmaWNhdGUgd2lsbCBiZSB3cml0dGVuIGJ5IHRoaXMgc3lzdGVtIHNlcnZpY2UuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfZ2V0X2RldmljZV9jZXJ0aWZpY2F0ZSBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzDQotICAgIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19nZXRfZGV2aWNlX2NlcnRpZmljYXRlDQotKA0KLSAgICB1aW50OF90ICogcF9kZXZpY2VfY2VydGlmaWNhdGUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19mbGFzaF9mcmVlemUgZnVuY3Rpb24gcmVxdWVzdHMgdGhlIEZQR0EgdG8gZW50ZXIgdGhlIEZsYXNoKkZyZWV6ZQ0KLSAgbW9kZS4NCi0gIA0KLSAgQHBhcmFtIG9wdGlvbnMNCi0gICAgVGhlIG9wdGlvbnMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHBvd2VyIGRvd24gYWRkaXRpb25hbCBwYXJ0cyBvZg0KLSAgICBTbWFydEZ1c2lvbjIgd2hlbiB0aGUgRlBHQSBmYWJyaWMgZW50ZXJzIEZsYXNoKkZyZWV6ZSBtb2RlLiBUaGlzIHBhcmFtZXRlcg0KLSAgICBpcyBhIGJpdCBtYXNrIG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoNCi0gICAgICAgIC0gTVNTX1NZU19GUEdBX1BPV0VSX0RPV04NCi0gICAgICAgIC0gTVNTX1NZU19FTlZNMF9QT1dFUl9ET1dODQotICAgICAgICAtIE1TU19TWVNfRU5WTTFfUE9XRVJfRE9XTg0KLSAgICAgICAgLSBNU1NfU1lTX01QTExfUE9XRVJfRE9XTg0KLSAgICBNU1NfU1lTX0ZQR0FfUE9XRVJfRE9XTiBvbiBpdHMgb3duIHdpbGwgb25seSBwb3dlciBkb3duIHRoZSBGUEdBIGZhYnJpYy4NCi0gICAgTVNTX1NZU19FTlZNMF9QT1dFUl9ET1dOIGFuZCBNU1NfU1lTX0VOVk0xX1BPV0VSX0RPV04gc3BlY2lmeSB0aGF0IGVOVk0NCi0gICAgYmxvY2tzIDAgYW5kIDEgcmVzcGVjdGl2ZWx5IHNob3VsZCBlbnRlciB0aGUgZGVlcCBwb3dlciBkb3duIHN0YXRlIGR1cmluZw0KLSAgICBGbGFzaCpGcmVlemUuDQotICAgIE1TU19TWVNfTVBMTF9QT1dFUl9ET1dOIHNwZWNpZmllcyB0aGF0IHRoZSBNU1MgUExMIGlzIHBvd2VyZWQgZG93biBkdXJpbmcNCi0gICAgdGhlIEZsYXNoKkZyZWV6ZSBwZXJpb2QuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19mbGFzaF9mcmVlemUgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1VORVhQRUNURURfRVJST1INCi0gICAgICAgIA0KLSAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgdG8gcmVxdWVzdCB0aGUgRlBHQSBmYWJyaWMgYW5kIGJvdGgNCi0gIGVOVk0wIGFuZCBlTlZNMSB0byBlbnRlciB0aGUgRmxhc2gqRnJlZXplIG1vZGU6DQotICBAY29kZQ0KLSAgICBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZShNU1NfU1lTX0ZQR0FfUE9XRVJfRE9XTiB8IE1TU19TWVNfRU5WTTBfUE9XRVJfRE9XTiB8IE1TU19TWVNfTVBMTF9QT1dFUl9ET1dOKTsNCi0gIEBlbmRjb2RlDQotICovDQotdWludDhfdCBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSh1aW50OF90IG9wdGlvbnMpOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ3J5cHRvZ3JhcGhpYyBTZXJ2aWNlcy4NCi0gKi8NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfMTI4Yml0X2FlcyBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNtYXJ0RnVzaW9uMiBBRVMtMTI4DQotICBjcnlwdG9ncmFwaHkgc2VydmljZS4NCi0gIA0KLSAgQHBhcmFtIGtleQ0KLSAgICBUaGUga2V5IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAxNi1ieXRlcyBhcnJheSBjb250YWluaW5nIHRoZSBrZXkgdG8gdXNlDQotICAgIGZvciB0aGUgcmVxdWVzdGVkIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb24uDQotICANCi0gIEBwYXJhbSBpdg0KLSAgICBUaGUgaXYgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIDE2LWJ5dGVzIGFycmF5IGNvbnRhaW5pbmcgdGhlDQotICAgIGludGlhbGl6YXRpb24gdmVjdG9yIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHJlcXVlc3RlZCANCi0gICAgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIG9wZXJhdGlvbi4gSXRzIHVzZSBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSBtb2RlLg0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgTW9kZSB8ICAgICAgICAgICAgIFVzYWdlICAgICAgICAgICAgICB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBFQ0IgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IENCQyAgfCBSYW5kb21pemF0aW9uLiAgICAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgT0ZCICB8IFJhbmRvbWl6YXRpb24uICAgICAgICAgICAgICAgICB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBDVFIgIHwgVXNlZCBhcyBpbml0aWFsIGNvdW50ZXIgdmFsdWUuIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICANCi0gIEBwYXJhbSBuYl9ibG9ja3MNCi0gICAgVGhlIG5iX2Jsb2NrcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgMTI4LWJpdCBibG9ja3Mgb2YNCi0gICAgcGxhaW50ZXh0L2NpcGhlcnRleHQgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBBRVMtMTI4IHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBjaXBoZXIgbW9kZSBvZiBvcGVyYXRpb24gYW5kIHdoZXRoZXIgdGhlDQotICAgIHNvdXJjZSB0ZXh0IG11c3QgYmUgZW5jcnlwdGVkIG9yIGRlY3J5cHRlZC4gVGhlIG1vZGVzIG9mIG9wZXJhdGlvbiBhcmU6DQotICAgICAgICAtIEVsZWN0cm9uaWMgQ29kZWJvb2sgKEVDQikNCi0gICAgICAgIC0gQ2lwaGVyLUJsb2NrIENoYWluaW5nIChDQkMpDQotICAgICAgICAtIE91dHB1dCBGZWVkYmFjayAoT0ZCKQ0KLSAgICAgICAgLSBDb3VudGVyIChDVFIpDQotICAgIFRoZSBDVFIgbW9kZSB1c2VzIHRoZSBjb250ZW50IG9mIHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgYXMgaXRzIGludGlhbA0KLSAgICBjb3VudGVyIHZhbHVlLiBUaGUgY291bnRlciBpbmNyZW1lbnQgaXMgMl42NC4NCi0gICAgQWxsb3dlZCB2YWx1ZXMgZm9yIHRoZSBtb2RlIHBhcmFtZXRlciBhcmU6DQotICAgICAgICAtIE1TU19TWVNfRUNCX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19FQ0JfREVDUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0NCQ19FTkNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ0JDX0RFQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19PRkJfRU5DUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX09GQl9ERUNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ1RSX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19DVFJfREVDUllQVA0KLSAgICANCi0gIEBwYXJhbSBkZXN0X2FkZHINCi0gICAgVGhlIGRlc3RfYWRkciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQNCi0gICAgb2YgdGhlIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb24gd2lsbCBiZSBzdG9yZWQuDQotICANCi0gIEBwYXJhbSBzcmNfYWRkcg0KLSAgICBUaGUgc3JjX2FkZHIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5IGJ1ZmZlciBjb250YWluZyB0aGUgc291cmNlDQotICAgIHBsYWludGV4dC9jaXBoZXJ0ZXh0IHRvIGJlIGVuY3J5cHRlZC9kZWNyeXB0ZWQuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfMTI4Yml0X2FlcyBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICovDQotdWludDhfdCBNU1NfU1lTXzEyOGJpdF9hZXMNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBrZXksDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBpdiwNCi0gICAgdWludDE2X3QgbmJfYmxvY2tzLA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQ4X3QgKiBkZXN0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBzcmNfYWRkcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTXzI1NmJpdF9hZXMgZnVuY3Rpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBTbWFydEZ1c2lvbjIgQUVTLTI1Ng0KLSAgY3J5cHRvZ3JhcGh5IHNlcnZpY2UuDQotICANCi0gIEBwYXJhbSBrZXkNCi0gICAgVGhlIGtleSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMzItYnl0ZXMgYXJyYXkgY29udGFpbmluZyB0aGUga2V5IHRvIHVzZQ0KLSAgICBmb3IgdGhlIHJlcXVlc3RlZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24gb3BlcmF0aW9uLg0KLSAgDQotICBAcGFyYW0gaXYNCi0gICAgVGhlIGl2IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAxNi1ieXRlcyBhcnJheSBjb250YWluaW5nIHRoZQ0KLSAgICBpbnRpYWxpemF0aW9uIHZlY3RvciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSByZXF1ZXN0ZWQgDQotICAgIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb24uIEl0cyB1c2UgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgbW9kZS4NCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IE1vZGUgfCAgICAgICAgICAgICBVc2FnZSAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgRUNCICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBDQkMgIHwgUmFuZG9taXphdGlvbi4gICAgICAgICAgICAgICAgIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IE9GQiAgfCBSYW5kb21pemF0aW9uLiAgICAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgQ1RSICB8IFVzZWQgYXMgaW5pdGlhbCBjb3VudGVyIHZhbHVlLiB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgDQotICBAcGFyYW0gbmJfYmxvY2tzDQotICAgIFRoZSBuYl9ibG9ja3MgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIDEyOC1iaXQgYmxvY2tzIG9mDQotICAgIHBsYWludGV4dC9jaXBoZXJ0ZXh0IHJlcXVlc3RlZCB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIEFFUy0xMjggc3lzdGVtIHNlcnZpY2UuDQotICANCi0gIEBwYXJhbSBtb2RlDQotICAgIFRoZSBtb2RlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGNpcGhlciBtb2RlIG9mIG9wZXJhdGlvbiBhbmQgd2hldGhlciB0aGUNCi0gICAgc291cmNlIHRleHQgbXVzdCBiZSBlbmNyeXB0ZWQgb3IgZGVjcnlwdGVkLiBUaGUgbW9kZXMgb2Ygb3BlcmF0aW9uIGFyZToNCi0gICAgICAgIC0gRWxlY3Ryb25pYyBDb2RlYm9vayAoRUNCKQ0KLSAgICAgICAgLSBDeXBoZXItQmxvY2sgQ2hhaW5pbmcgKENCQykNCi0gICAgICAgIC0gT3V0cHV0IEZlZWRiYWNrIChPRkIpDQotICAgICAgICAtIENvdW50ZXIgKENUUikNCi0gICAgVGhlIENUUiBtb2RlIHVzZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBhcyBpdHMgaW50aWFsDQotICAgIGNvdW50ZXIgdmFsdWUuIFRoZSBjb3VudGVyIGluY3JlbWVudCBpcyAyXjY0Lg0KLSAgICBBbGxvd2VkIHZhbHVlcyBmb3IgdGhlIG1vZGUgcGFyYW1ldGVyIGFyZToNCi0gICAgICAgIC0gTVNTX1NZU19FQ0JfRU5DUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0VDQl9ERUNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ0JDX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19DQkNfREVDUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX09GQl9FTkNSWVBUDQotICAgICAgICAtIE1TU19TWVNfT0ZCX0RFQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19DVFJfRU5DUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0NUUl9ERUNSWVBUDQotICAgIA0KLSAgQHBhcmFtIGRlc3RfYWRkcg0KLSAgICBUaGUgZGVzdF9hZGRyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBidWZmZXIgd2hlcmUgdGhlIHJlc3VsdA0KLSAgICBvZiB0aGUgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIG9wZXJhdGlvbiB3aWxsIGJlIHN0b3JlZC4NCi0gIA0KLSAgQHBhcmFtIHNyY19hZGRyDQotICAgIFRoZSBzcmNfYWRkciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgYnVmZmVyIGNvbnRhaW5nIHRoZSBzb3VyY2UNCi0gICAgcGxhaW50ZXh0L2NpcGhlcnRleHQgdG8gYmUgZW5jcnlwdGVkL2RlY3J5cHRlZC4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU18yNTZiaXRfYWVzIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gKi8NCi11aW50OF90IE1TU19TWVNfMjU2Yml0X2Flcw0KLSggDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBrZXksDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBpdiwNCi0gICAgdWludDE2X3QgbmJfYmxvY2tzLA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQ4X3QgKiBkZXN0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBzcmNfYWRkcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTX3NoYTI1NiBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNtYXJ0RnVzaW9uMiBTSEEtMjU2DQotICBjcnlwdG9ncmFwaHkgc2VydmljZS4NCi0gIA0KLSAgQHBhcmFtIHBfZGF0YV9pbg0KLSAgICBUaGUgcF9kYXRhX2luIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZQ0KLSAgICBkYXRhIHRoYXQgd2lsbCBiZSBoYXNoZWQgdXNpbmcgdGhlIFNIQS0yNTYgc3lzdGVtIHNlcnZpY2UuDQotICANCi0gIEBwYXJhbSBsZW5ndGgNCi0gICAgVGhlIGxlbmd0aCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBsZW5ndGggaW4gYml0cyBvZiB0aGUgZGF0YSB0byBoYXNoLg0KLSAgDQotICBAcGFyYW0gcmVzdWx0DQotICAgIFRoZSByZXN1bHQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIDMyIGJ5dGVzIGJ1ZmZlciB3aGVyZSB0aGUgaGFzaCByZXN1bHQNCi0gICAgd2lsbCBiZSBzdG9yZWQuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfc2hhMjU2IGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gKi8NCi11aW50OF90IE1TU19TWVNfc2hhMjU2DQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhX2luLA0KLSAgICB1aW50MzJfdCBsZW5ndGgsDQotICAgIHVpbnQ4X3QgKiByZXN1bHQNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19obWFjIGZ1bmN0aW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU21hcnRGdXNpb24yIEhNQUMNCi0gIGNyeXB0b2dyYXBoeSBzZXJ2aWNlLiBUaGUgSE1BQyBzeXN0ZW0gc2VydmljZSBnZW5lcmF0ZXMgbWVzc2FnZSBhdXRoZW50aWNhdGlvbg0KLSAgY29kZXMgdXNpbmcgdGhlIFNIQS0yNTYgaGFzaCBmdW5jdGlvbi4NCi0gIA0KLSAgQHBhcmFtIGtleQ0KLSAgICBUaGUga2V5IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAzMiBieXRlcyBhcnJheSBjb250YWluaW5nIHRoZSBrZXkgdXNlZA0KLSAgICB0byBnZW5lcmF0ZSB0aGUgbWVzc2FnZSBhdXRoZW50aWNhdGlvbiBjb2RlLg0KLSAgDQotICBAcGFyYW0gcF9kYXRhX2luDQotICAgIFRoZSBwX2RhdGFfaW4gcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgZGF0YSB0byBiZSBhdXRoZW50aWNhdGVkLg0KLSAgDQotICBAcGFyYW0gbGVuZ3RoDQotICAgIFRoZSBsZW5ndGggcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRhdGEgYnl0ZXMgZm9yIHdoaWNoIHRvIGdlbmVyYXRlDQotICAgIHRoZSBhdXRoZW50aWNhdGlvbiBjb2RlLiBJdCBpcyB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IHRoZQ0KLSAgICBwX2RhdGFfaW4gcGFyYW1ldGVyLg0KLSAgDQotICBAcGFyYW0gcF9yZXN1bHQNCi0gICAgVGhlIHBfcmVzdWx0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAzMiBieXRlcyBidWZmZXIgd2hlcmUgdGhlDQotICAgIGF1dGhlbnRpY2F0aW9uIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBITUFDIHN5c3RlbSBzZXJ2aWNlIHdpbGwgYmUgc3RvcmVkLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX2htYWMgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19obWFjDQotKA0KLSAgICBjb25zdCB1aW50OF90ICoga2V5LA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhX2luLA0KLSAgICB1aW50MzJfdCBsZW5ndGgsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3VsdA0KLSk7DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDUkkgTGljZW5zZWQgU2VydmljZXMuDQotICovDQotI2RlZmluZSBTWVNfU0VSVklDRV9OT1RfTElDRU5DRUQgICAgICAgIDI0M3UNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE5vbiBEZXRlcm1pbmlzdGljIFJhbmRvbSBCaXQgR2VuZXJhdG9yIFNlcnZpY2VzLg0KLSAqLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19ucmJnX3NlbGZfdGVzdCgpIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VsZiB0ZXN0IG9mIHRoZQ0KLSAgbm9uLWRldGVybWluaXN0aWMgcmFuZG9tIGJpdCBnZW5lcmF0b3IgKE5SQkcpLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX25yYmdfc2VsZl90ZXN0IGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWQ0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX3NlbGZfdGVzdCh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfbnJiZ19pbnN0YW50aWF0ZSgpIGZ1bmN0aW9uIGluc3RhbnRpYXRlcyBhIG5vbi1kZXRlcm1pbmlzdGljDQotICByYW5kb20gYml0IGdlbmVyYXRvciAoTlJCRykgaW5zdGFuY2UuIEEgbWF4aW11bSBvZiB0d28gY29uY3VycmVudCBpbnN0YW5jZXMNCi0gIGFyZSBhdmFpbGFibGUuDQotICANCi0gIEBwYXJhbSBwZXJzb25hbGl6YXRpb25fc3RyDQotICAgIFRoZSBwZXJzb25hbGl6YXRpb25fc3RyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgY29udGFpbmluZyBhDQotICAgIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIHBlcnNvbmFsaXphdGlvbiBzdHJpbmcuIFRoZSBwZXJzb25hbGl6YXRpb24gc3RyaW5nDQotICAgIGNhbiBiZSB1cCB0byAxMjggYnl0ZXMgbG9uZy4NCi0gIA0KLSAgQHBhcmFtIHBlcnNvbmFsaXphdGlvbl9zdHJfbGVuZ3RoDQotICAgIFRoZSBwZXJzb25hbGl6YXRpb25fc3RyX2xlbmd0aCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUNCi0gICAgcGVyc29uYWxpemF0aW9uIHN0cmluZyBwb2ludGVkIHRvIGJ5IHBlcnNvbmFsaXphdGlvbl9zdHIuDQotICANCi0gIEBwYXJhbSBwX25yYmdfaGFuZGxlDQotICAgIFRoZSBwX25yYmdfaGFuZGxlIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBieXRlIHRoYXQgd2lsbCBjb250YWluIHRoZQ0KLSAgICBoYW5kbGUgb2YgdGhlIGluc3RhbnRpYXRlZCBOUkJHIGlmIHRoaXMgZnVuY3Rpb24gY2FsbCBzdWNlZWRzLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTlJCR19DQVRBU1RST1BISUNfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX01BWF9JTlNUX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfTlJCR19JTlZBTElEX0hBTkRMRQ0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfR0VOX1JFUV9UT09fQklHDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfTEVOR1RIX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9GQUNUT1JZDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwZXJzb25hbGl6YXRpb25fc3RyLA0KLSAgICB1aW50MTZfdCBwZXJzb25hbGl6YXRpb25fc3RyX2xlbmd0aCwNCi0gICAgdWludDhfdCAqIHBfbnJiZ19oYW5kbGUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19ucmJnX2dlbmVyYXRlIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIHJhbmRvbSBiaXQgc2VxdWVuY2UgdXAgdG8NCi0gIDEyOCBieXRlcyBsb25nLg0KLSAgDQotICBAcGFyYW0gcF9yZXF1ZXN0ZWRfZGF0YQ0KLSAgICBUaGUgcF9yZXF1ZXN0ZWRfZGF0YSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdGhlIHJlcXVlc3RlZA0KLSAgICByYW5kb20gZGF0YSB3aWxsIGJlIHN0b3JlZCBvbiBjb21wbGV0aW9uIG9mIHRoaXMgc3lzdGVtIHNlcnZpZGUuDQotICANCi0gIEBwYXJhbSBwX2FkZGl0aW9uYWxfaW5wdXQNCi0gICAgVGhlIHBfYWRkaXRpb25hbF9pbnB1dCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZw0KLSAgICBhZGRpdGlvbmFsIGlucHV0IGRhdGEgZm9yIHRoZSByYW5kb20gYml0IGdlbmVyYXRpb24uDQotICANCi0gIEBwYXJhbSByZXF1ZXN0ZWRfbGVuZ3RoDQotICAgIFRoZSByZXF1ZXN0ZWRfbGVuZ3RoIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiByYW5kb20gZGF0YSBieXRlcw0KLSAgICByZXF1ZXN0ZWQgdG8gYmUgZ2VuZXJhdGVkLiBUaGUgbWF4aW11bSBnZW5lcmF0ZWQgZGF0YSBsZW5ndGggaXMgMTI4IGJ5dGVzLg0KLSAgDQotICBAcGFyYW0gYWRkaXRpb25hbF9pbnB1dF9sZW5ndGgNCi0gICAgVGhlIGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRkaXRvbmFsDQotICAgIGlucHV0IGJ5dGVzIHRvIHVzZSBpbiB0aGUgcmFuZG9tIGRhdGEgZ2VuZXJhdGlvbi4NCi0gIA0KLSAgQHBhcmFtIHByX3JlcQ0KLSAgICBUaGUgcHJfcmVxIHBhcmFtZXRlciBzcGVjaWZpZXMgaWYgcHJlZGljdGlvbiByZXNpc3RhbmNlIGlzIHJlcXVlc3RlZC4NCi0gIA0KLSAgQHBhcmFtIG5yYmdfaGFuZGxlDQotICAgIFRoZSBucmJnX2hhbmRsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoaWNoIG5vbi1kZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQNCi0gICAgZ2VuZXJhdG9yIChOUkJHKSBpbnN0YW5jZSB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJhbmRvbSBkYXRhLiBUaGUNCi0gICAgdmFsdWUgb2YgbnJiZ19oYW5kbGUgaXMgb2J0YWluZWQgYXMgYSByZXN1bHQgb2YgYSBwcmV2aW91cyBjYWxsIHRvIHRoZQ0KLSAgICBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUoKSBmdW5jdGlvbi4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19ucmJnX2dlbmVyYXRlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWQ0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAgIA0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX2dlbmVyYXRlDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9yZXF1ZXN0ZWRfZGF0YSwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfYWRkaXRpb25hbF9pbnB1dCwNCi0gICAgdWludDhfdCByZXF1ZXN0ZWRfbGVuZ3RoLA0KLSAgICB1aW50OF90IGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoLA0KLSAgICB1aW50OF90IHByX3JlcSwNCi0gICAgdWludDhfdCBucmJnX2hhbmRsZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTX25yYmdfcmVzZWVkKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZXNlZWQgdGhlIG5vbi1kZXRlcm1pbmlzdGljDQotICByYW5kb20gYml0IGdlbmVyYXRvciAoTlJCRykgaWRlbnRpZmllZCBieSB0aGUgbnJiZ19oYW5kbGUgcGFyYW1ldGVyLg0KLSAgDQotICBAcGFyYW0gcF9hZGRpdGlvbmFsX2lucHV0DQotICAgIFRoZSBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbA0KLSAgICBpbnB1dCBieXRlcyB1c2VkIHRvIHJlc2VlZCB0aGUgTlJCRyBpZGVudGlmaWVkIGJ5IHRoZSBucmJnX2hhbmRsZSBwYXJhbWV0ZXIuDQotICANCi0gIEBwYXJhbSBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aA0KLSAgICBUaGUgYWRkaXRpb25hbF9pbnB1dF9sZW5ndGggcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwNCi0gICAgaW5wdXQgYnl0ZXMgdXNlZCB0byByZXNlZWQgdGhlIE5SQkcuDQotICANCi0gIEBwYXJhbSBucmJnX2hhbmRsZQ0KLSAgICBUaGUgbnJiZ19oYW5kbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBOUkJHIGluc3RhbmNlIHRvIHJlc2VlZC4gVGhlIHZhbHVlDQotICAgIG9mIG5yYmdfaGFuZGxlIGlzIG9idGFpbmVkIGFzIGEgcmVzdWx0IG9mIGEgcHJldmlvdXMgY2FsbCB0byB0aGUNCi0gICAgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlKCkgZnVuY3Rpb24uDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfbnJiZ19yZXNlZWQgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTlJCR19DQVRBU1RST1BISUNfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX01BWF9JTlNUX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfTlJCR19JTlZBTElEX0hBTkRMRQ0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfR0VOX1JFUV9UT09fQklHDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfTEVOR1RIX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9GQUNUT1JZDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICAgDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfcmVzZWVkDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9hZGRpdGlvbmFsX2lucHV0LA0KLSAgICB1aW50OF90IGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoLA0KLSAgICB1aW50OF90IG5yYmdfaGFuZGxlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfbnJiZ191bmluc3RhbnRpYXRlKCkgZnVuY3Rpb24gcmVsZWFzZXMgdGhlIG5vbi1kZXRlcm1pbmlzdGljDQotICByYW5kb20gYml0IGdlbmVyYXRvciAoTlJCRykgaWRlbnRpZmllZCBieSB0aGUgbnJiZ19oYW5kbGUgcGFyYW1ldGVyLg0KLSAgDQotICBAcGFyYW0gbnJiZ19oYW5kbGUNCi0gICAgVGhlIG5yYmdfaGFuZGxlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggTlJCRyBpbnN0YW5jZSB3aWxsIGJlIHJlbGVhc2VkLg0KLSAgICBUaGUgdmFsdWUgb2YgbnJiZ19oYW5kbGUgaXMgb2J0YWluZWQgYXMgYSByZXN1bHQgb2YgYSBwcmV2aW91cyBjYWxsIHRvIHRoZQ0KLSAgICBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUoKSBmdW5jdGlvbi4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19ucmJnX3VuaW5zdGFudGlhdGUgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTlJCR19DQVRBU1RST1BISUNfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX01BWF9JTlNUX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfTlJCR19JTlZBTElEX0hBTkRMRQ0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfR0VOX1JFUV9UT09fQklHDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfTEVOR1RIX0VYQ0VFREVEDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9GQUNUT1JZDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICAgDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfdW5pbnN0YW50aWF0ZQ0KLSgNCi0gICAgdWludDhfdCBucmJnX2hhbmRsZQ0KLSk7DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBQcm9ncmFtbWluZyBTZXJ2aWNlcy4NCi0gKi8NCi0NCi0jZGVmaW5lIE1TU19TWVNfUFJPR19BVVRIRU5USUNBVEUgICAgMHUNCi0jZGVmaW5lIE1TU19TWVNfUFJPR19QUk9HUkFNICAgICAgICAgMXUNCi0jZGVmaW5lIE1TU19TWVNfUFJPR19WRVJJRlkgICAgICAgICAgMnUNCi0gICANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIElTUCBTZXJ2aWNlIGFsbG93cyB0aGUgTVNTIENvcnRleC1NMyBwcm9jZXNzb3IgdG8gZGlyZWN0bHkgcHJvdmlkZSBhDQotICBiaXRzdHJlYW0gZm9yIHByb2dyYW1taW5nLiBUaGUgSVNQIFNlcnZpY2UgaXMgaW5pdGlhdGVkIGJ5IGEgY2FsbCB0bw0KLSAgTVNTX1NZU19zdGFydF9pc3AoKS4gVGhlIElTUCBTZXJ2aWNlIGNhbjoNCi0gICAgLSBhdXRoZW50aWNhdGUgYSBwcm9ncmFtbWluZyBiaXRzdHJlYW0NCi0gICAgLSBwcm9ncmFtIGEgYml0c3RyZWFtDQotICAgIC0gdmVyaWZ5IHRoYXQgYSBwcm9ncmFtbWluZyBiaXRzdHJlYW0gaGFzIGJlZW4gY29ycmVjdGx5IHByb2dyYW1tZWQNCi0NCi0gIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgdHdvIGZ1bmN0aW9ucyBhcyBwYXJhbWV0ZXIgdG8gdGhlDQotICBNU1NfU1lTX3N0YXJ0X2lzcCgpIGZ1bmN0aW9uLiBUaGUgZmlyc3QgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBJU1ANCi0gIFNlcnZpY2UgdG8gcmVhZCB0aGUgcHJvZ3JhbW1pbmcgYml0c3RyZWFtLiBUaGUgc2Vjb25kIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBieQ0KLSAgdGhlIElTUCBTZXJ2aWNlIHRvIG5vdGlmeSB0aGUgYXBwbGljYXRpb24gdGhhdCB0aGUgSVNQIFNlcnZpY2UgY29tcGxldGVkLg0KLSAgDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIElTUCBzZXJ2aWNlIHRvIHBlcmZvcm0uIEl0IGNhbiBiZSBvbmUgb2Y6DQotICAgICAgICAtIE1TU19TWVNfUFJPR19BVVRIRU5USUNBVEUNCi0gICAgICAgIC0gTVNTX1NZU19QUk9HX1BST0dSQU0NCi0gICAgICAgIC0gTVNTX1NZU19QUk9HX1ZFUklGWQ0KLSANCi0gIEBwYXJhbSBwYWdlX3JlYWRfaGFuZGxlcg0KLSAgICBUaGUgcGFnZV9yZWFkX2hhbmRsZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdpdGggdGhlDQotICAgIGZvbGxvd2luZyBwcm90b3R5cGU6DQotICAgICAgICB1aW50MzJfdCBwYWdlX3JlYWRfaGFuZGxlcih1aW50OCBjb25zdCAqKiBwcF9uZXh0X3BhZ2UpOw0KLSANCi0gIEBwYXJhbSBpc3BfY29tcGxldGlvbl9oYW5kbGVyDQotICAgIFRoZSBpc3BfY29tcGxldGlvbl9oYW5kbGVyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZQ0KLSAgICBmb2xsb3dpbmcgcHJvdG90eXBlLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIElTUCBzZXJ2aWNlDQotICAgIGNvbXBsZXRlcy4NCi0gDQotICAgIFRoZSBpc3BfY29tcGxldGlvbl9oYW5kbGVyIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdGF0dXMNCi0gICAgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX0NIQUlOSU5HX01JU01BVENIDQotICAgICAgICAtIE1TU19TWVNfVU5FWFBFQ1RFRF9EQVRBX1JFQ0VJVkVEDQotICAgICAgICAtIE1TU19TWVNfSU5WQUxJRF9FTkNSWVBUSU9OX0tFWQ0KLSAgICAgICAgLSBNU1NfU1lTX0lOVkFMSURfQ09NUE9ORU5UX0hFQURFUg0KLSAgICAgICAgLSBNU1NfU1lTX0JBQ0tfTEVWRUxfTk9UX1NBVElTRklFRA0KLSAgICAgICAgLSBNU1NfU1lTX0RTTl9CSU5ESU5HX01JU01BVENIDQotICAgICAgICAtIE1TU19TWVNfSUxMRUdBTF9DT01QT05FTlRfU0VRVUVOQ0UNCi0gICAgICAgIC0gTVNTX1NZU19JTlNVRkZJQ0lFTlRfREVWX0NBUEFCSUxJVElFUw0KLSAgICAgICAgLSBNU1NfU1lTX0lOQ09SUkVDVF9ERVZJQ0VfSUQNCi0gICAgICAgIC0gTVNTX1NZU19VTlNVUFBPUlRFRF9CSVRTVFJFQU1fUFJPVF9WRVINCi0gICAgICAgIC0gTVNTX1NZU19WRVJJRllfTk9UX1BFUk1JVFRFRF9PTl9CSVRTVFINCi0gICAgICAgIC0gTVNTX1NZU19BQk9SVA0KLSAgICAgICAgLSBNU1NfU1lTX05WTV9WRVJJRllfRkFJTEVEDQotICAgICAgICAtIE1TU19TWVNfREVWSUNFX1NFQ1VSSVRZX1BST1RFQ1RFRA0KLSAgICAgICAgLSBNU1NfU1lTX1BST0dSQU1NSU5HX01PREVfTk9UX0VOQUJMRUQNCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gICAgICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1NZU19zdGFydF9pc3ANCi0oDQotICAgIHVpbnQ4X3QgbW9kZSwNCi0gICAgdWludDMyX3QgKCpwYWdlX3JlYWRfaGFuZGxlcikodWludDhfdCBjb25zdCAqKiksDQotICAgIHZvaWQgKCppc3BfY29tcGxldGlvbl9oYW5kbGVyKSh1aW50MzJfdCkNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBSZWNhbGN1bGF0ZXMgYW5kIGNvbXBhcmVzIGRpZ2VzdHMgb2Ygc2VsZWN0ZWQgY29tcG9uZW50cy4NCi0gIA0KLSAgQHBhcmFtIG9wdGlvbnMNCi0gICAgVGhlIG9wdGlvbnMgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBjb21wb25lbnRzJyBkaWdlc3Qgd2lsbCBiZSByZWNhbGN1bGF0ZWQNCi0gICAgYW5kIGNoZWNrZWQuIEVhY2ggYml0IGlzIHVzZWQgdG8gaWRlbnRpZnkgYSBjb21wb25ldG4gYXMgZm9sbG93czoNCi0gICAgICAgIC0gYml0IDA6IEZQR0EgZmFicmljDQotICAgICAgICAtIGJpdCAxOiBlTlZNMA0KLSAgICAgICAgLSBiaXQgMjogZU5WTTENCi0gICAgTm90ZTogVGhlIEZQR0EgZmFicmljIHdpbGwgZW50ZXIgdGhlIEZsYXNoRnJlZXplIHN0YXRlIGlmIHBvd2VyZWQgdXAgd2hlbg0KLSAgICAgICAgICBpdHMgZGlnZXN0IGlzIGNoZWNrZWQuDQotIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19jaGVja19kaWdlc3QgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkaWdlc3QgY2hlY2suIFRoZQ0KLSAgICBtZWFuaW5nIG9mIHRoZSBkaWdlc3QgY2hlY2sgcmV0dXJuIHZhbHVlIGlzIGFzIGZvbGxvd3M6DQotICAgICAgICBiaXQgMDogRmFicmljIGRpZ2VzdCBlcnJvcg0KLSAgICAgICAgYml0IDE6IEVOVk0wIGRpZ2VzdCBlcnJvcg0KLSAgICAgICAgYml0IDI6IEVOVk0xIGRpZ2VzdCBlcnJvcg0KLSAgICBBICcxJyBpbiBvbmUgb2YgdGhlIGFib3ZlIGJpdHMgaW5kaWNhdGVzIGEgZGlnZXN0IG1pc21hdGNoLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19ESUdFU1RfQ0hFQ0tfRkFCUklDICAgICAweDAxdQ0KLSNkZWZpbmUgTVNTX1NZU19ESUdFU1RfQ0hFQ0tfRU5WTTAgICAgICAweDAydQ0KLSNkZWZpbmUgTVNTX1NZU19ESUdFU1RfQ0hFQ0tfRU5WTTEgICAgICAweDA0dQ0KLQ0KLXVpbnQ4X3QgTVNTX1NZU19jaGVja19kaWdlc3QNCi0oDQotICAgIHVpbnQ4X3Qgb3B0aW9ucw0KLSk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBfX01TU19TWVNfU0VSVklDRVNfSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3RpbWVyL21zc190aW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc190aW1lci9tc3NfdGltZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I1ZTA1MS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3RpbWVyL21zc190aW1lci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTk1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEwLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgdGltZXIgZHJpdmVyIEFQSS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUxMTEgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMi0xOCAxNzowMzowOSArMDAwMCAoTW9uLCAxOCBGZWIgMjAxMykgJA0KLSAqLw0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovLyoqDQotICBAbWFpbnBhZ2UgU21hcnRGdXNpb24yIE1TUyBUaW1lciBCYXJlIE1ldGFsIERyaXZlci4NCi0NCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gIFRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSAoTVNTKSBpbmNsdWRlcyBhIHRpbWVyIGhhcmR3YXJlDQotICBibG9jayB3aGljaCBjYW4gYmUgdXNlZCBhcyB0d28gaW5kZXBlbmRlbnQgMzItYml0cyB0aW1lcnMgb3IgYXMgYSBzaW5nbGUNCi0gIDY0LWJpdHMgdGltZXIgaW4gcGVyaW9kaWMgb3Igb25lLXNob3QgbW9kZS4gDQotDQotICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBNU1MgdGltZXIgYXMgcGFydA0KLSAgb2YgYSBiYXJlIG1ldGFsIHN5c3RlbSB3aGVyZSBubyBvcGVyYXRpbmcgc3lzdGVtIGlzIGF2YWlsYWJsZS4gVGhlc2UgZHJpdmVycw0KLSAgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZSBhcyBwYXJ0IG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0gYnV0IHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgb2YgdGhlIGFkYXB0YXRpb24gbGF5ZXIgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkcml2ZXINCi0gIG1vZGVsIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgZHJpdmVyLg0KLSAgDQotICBAc2VjdGlvbiB0aGVvcnlfb3AgVGhlb3J5IG9mIE9wZXJhdGlvbg0KLSAgVGhlIE1TUyBUaW1lciBkcml2ZXIgdXNlcyB0aGUgU21hcnRGdXNpb24yICJDb3J0ZXggTWljcm9jb250cm9sZXIgU29mdHdhcmUNCi0gIEludGVyZmFjZSBTdGFuZGFyZCAtIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIiAoQ01TSVMtUEFMKSB0byBhY2Nlc3MgaGFkd2FyZQ0KLSAgcmVnaXN0ZXJzLiBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgU21hcnRGdXNpb24yIENNU0lTLVBBTCBpcyBlaXRoZXIgaW5jbHVkZWQNCi0gIGluIHRoZSBzb2Z0d2FyZSB0b29sY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3Qgb3IgaXMgaW5jbHVkZWQgaW4geW91cg0KLSAgcHJvamVjdC4gVGhlIG1vc3QgdXAtdG8tZGF0ZSBTbWFydEZ1c2lvbjIgQ01TSVMtUEFMIGZpbGVzIGNhbiBiZSBvYnRhaW5lZCB1c2luZw0KLSAgdGhlIEFjdGVsIEZpcm13YXJlIENhdGFsb2cuDQotICBUaGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBjYW4gYmUgdXNlZCBpbiBvbmUgb2YgdHdvIG11dHVhbGx5IGV4Y2x1c2l2ZSBtb2RlczsNCi0gIGVpdGhlciBhcyBhIHNpbmdsZSA2NC1iaXRzIHRpbWVyIG9yIGFzIHR3byBpbmRlcGVuZGVudCAzMi1iaXRzIHRpbWVycy4gVGhlIE1TUw0KLSAgVGltZXIgY2FuIGJlIHVzZWQgaW4gZWl0aGVyIHBlcmlvZGljIG1vZGUgb3Igb25lLXNob3QgbW9kZS4gQSB0aW1lciBjb25maWd1cmVkDQotICBmb3IgcGVyaW9kaWMgbW9kZSBvcGVyYXRpb25zIHdpbGwgZ2VuZXJhdGUgYW4gaW50ZXJydXB0IGFuZCByZWxvYWQgaXRzDQotICBkb3duLWNvdW50ZXIgd2hlbiBpdCByZWFjaGVzIDAuIFRoZSB0aW1lciB3aWxsIHRoZW4gY29udGludWUgZGVjcmVtZW50aW5nIGZyb20NCi0gIGl0cyByZWxvYWQgdmFsdWUgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgaW50ZXJydXB0IHRvIGJlIGNsZWFyZWQuIEEgdGltZXINCi0gIGNvbmZpZ3VyZWQgZm9yIG9uZS1zaG90IG1vZGUgd2lsbCBvbmx5IGdlbmVyYXRlIGFuIGludGVycnVwdCBvbmNlIHdoZW4gaXRzDQotICBkb3duLWNvdW50ZXIgcmVhY2hlcyAwLiBJdCBtdXN0IGJlIGV4cGxpdGNpdGx5IHJlbG9hZGVkIHRvIHN0YXJ0IGRlY3JlbWVudGluZw0KLSAgYWdhaW4uDQotICANCi0gIFRoZSBNU1MgVGltZXIgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoNCi0gICAgLSBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbg0KLSAgICAtIFRpbWVyIGNvbnRyb2wNCi0gICAgLSBJbnRlcnJ1cHQgY29udHJvbA0KLSAgDQotICBUaGUgTVNTIFRpbWVyIGRyaXZlciBwcm92aWRlcyB0aHJlZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1RJTTFfaW5pdCgpDQotICAgIC0gTVNTX1RJTTJfaW5pdCgpDQotICAgIC0gTVNTX1RJTTY0X2luaXQoKQ0KLSAgVGhlIE1TUyBUaW1lciBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMgYW5kIGF0DQotICBsZWFzdCBvbmUgb2YgdGhlbSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIE1TUyBUaW1lciBkcml2ZXIgZnVuY3Rpb25zDQotICBjYW4gYmUgY2FsbGVkLg0KLSAgWW91IHNob3VsZCBvbmx5IHVzZSB0aGUgTVNTX1RJTTFfaW5pdCgpIGFuZCBNU1NfVElNMl9pbml0KCkgZnVuY3Rpb25zIGlmIHlvdQ0KLSAgaW50ZW5kIHRvIHVzZSB0aGUgdGltZXIgaW4gMzItYml0cyBtb2RlLiBVc2UgdGhlIE1TU19USU02NF9pbml0KCkgZnVuY3Rpb24gaXMNCi0gIHlvdSBpbnRlbmQgdG8gdXNlIHRoZSBNU1MgVGltZXIgYXMgYSBzaW5nbGUgNjQtYml0cyB0aW1lci4gVGhlIGluaXRpYWxpemF0aW9uDQotICBmdW5jdGlvbnMgdGFrZSBhIHNpbmdsZSBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgb3BlcmF0aW5nIG1vZGUgb2YgdGhlIHRpbWVyDQotICBiZWluZyBpbml0aWFsaXplZC4NCi0gIA0KLSAgT25jZSBpbml0aWFsaXplZCBhIHRpbWVyIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19USU0xX2xvYWRfaW1tZWRpYXRlKCkNCi0gICAgLSBNU1NfVElNMV9sb2FkX2JhY2tncm91bmQoKQ0KLSAgICAtIE1TU19USU0xX2dldF9jdXJyZW50X3ZhbHVlKCkNCi0gICAgLSBNU1NfVElNMV9zdGFydCgpDQotICAgIC0gTVNTX1RJTTFfc3RvcCgpDQotICAgIC0gTVNTX1RJTTJfbG9hZF9pbW1lZGlhdGUoKQ0KLSAgICAtIE1TU19USU0yX2xvYWRfYmFja2dyb3VuZCgpDQotICAgIC0gTVNTX1RJTTJfZ2V0X2N1cnJlbnRfdmFsdWUoKQ0KLSAgICAtIE1TU19USU0yX3N0YXJ0KCkNCi0gICAgLSBNU1NfVElNMl9zdG9wKCkNCi0gICAgLSBNU1NfVElNNjRfbG9hZF9pbW1lZGlhdGUoKQ0KLSAgICAtIE1TU19USU02NF9sb2FkX2JhY2tncm91bmQoKQ0KLSAgICAtIE1TU19USU02NF9nZXRfY3VycmVudF92YWx1ZSgpDQotICAgIC0gTVNTX1RJTTY0X3N0YXJ0KCkNCi0gICAgLSBNU1NfVElNNjRfc3RvcCgpDQotICANCi0gIFRpbWVyIGludGVycnVwdHMgYXJlIGNvbnRyb2xsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1RJTTFfZW5hYmxlX2lycSgpDQotICAgIC0gTVNTX1RJTTFfZGlzYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU0xX2NsZWFyX2lycSgpDQotICAgIC0gTVNTX1RJTTJfZW5hYmxlX2lycSgpDQotICAgIC0gTVNTX1RJTTJfZGlzYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU0yX2NsZWFyX2lycSgpDQotICAgIC0gTVNTX1RJTTY0X2VuYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU02NF9kaXNhYmxlX2lycSgpDQotICAgIC0gTVNTX1RJTTY0X2NsZWFyX2lycSgpDQotICANCi0gIFRoZSBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciB0aGUgdGltZXIgaW50ZXJydXB0IGhhbmRsZXJzIGFyZToNCi0gICAgLSB2b2lkIFRpbWVyMV9JUlFIYW5kbGVyKCB2b2lkICkNCi0gICAgLSB2b2lkIFRpbWVyMl9JUlFIYW5kbGVyKCB2b2lkICkNCi0gIEVudHJpZXMgZm9yIHRoZXNlIGludGVycnVwdCBoYW5kbGVycyBhcmUgcHJvdmlkZWQgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUy1QQUwNCi0gIHZlY3RvciB0YWJsZS4gVG8gYWRkIGEgVGltZXIgMSBpbnRlcnJ1cHQgaGFuZGxlciwgeW91IG11c3QgaW1wbGVtZW50IGENCi0gIFRpbWVyMV9JUlFIYW5kbGVyKCApIGZ1bmN0aW9uIGFzIHBhcnQgb2YgeW91ciBhcHBsaWNhdGlvbiBjb2RlLiBUbyBhZGQgYQ0KLSAgVGltZXIgMiBpbnRlcnJ1cHQgaGFuZGxlciwgeW91IG11c3QgaW1wbGVtZW50IGEgVGltZXIyX0lSUUhhbmRsZXIoICkgZnVuY3Rpb24NCi0gIGFzIHBhcnQgb2YgeW91ciBhcHBsaWNhdGlvbiBjb2RlLiBXaGVuIHVzaW5nIHRoZSBNU1MgVGltZXIgYXMgYSA2NC1iaXQgdGltZXIsDQotICB5b3UgbXVzdCBpbXBsZW1lbnQgYSBUaW1lcjFfSVJRSGFuZGxlciggKSBmdW5jdGlvbiBhcyBwYXJ0IG9mIHlvdXINCi0gIGFwcGxpY2F0aW9uIGNvZGUuIFRoZSBUaW1lciAyIGludGVycnVwdCBpcyBub3QgdXNlZCB3aGVuIHRoZSBNU1MgVGltZXIgaXMNCi0gIGNvbmZpZ3VyZWQgYXMgYSA2NC1iaXQgdGltZXIuDQotICANCi0gKi8vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLSNpZm5kZWYgTVNTX1RJTUVSX0hfDQotI2RlZmluZSBNU1NfVElNRVJfSF8NCi0NCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmIA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogVGltZXIgbW9kZSBzZWxlY3Rpb24uIFRoaXMgZW51bWVyYXRpb24gaXMgdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvDQotICogcG9zc2libGUgdGltZXIgbW9kZXMgb2Ygb3BlcmF0aW9uOiBwZXJpb2RpYyBhbmQgb25lLXNob3QgbW9kZS4gSXQgaXMgdXNlZCBhcw0KLSAqIGFuIGFyZ3VtZW50IHRvIHRoZSBNU1NfVElNMV9pbml0KCksIE1TU19USU0yX2luaXQoKSBhbmQgTVNTX1RJTTY0X2luaXQoKQ0KLSAqIGZ1bmN0aW9ucy4NCi0gKiBNU1NfVElNRVJfUEVSSU9ESUNfTU9ERToNCi0gKiAgSW4gcGVyaW9kaWMgbW9kZSB0aGUgdGltZXIgZ2VuZXJhdGVzIGludGVycnVwdHMgYXQgY29uc3RhbnQgaW50ZXJ2YWxzLiBPbiANCi0gKiAgcmVhY2hpbmcgemVybywgdGhlIHRpbWVyJ3MgY291bnRlciBpcyByZWxvYWRlZCB3aXRoIGEgdmFsdWUgaGVsZCBpbiBhDQotICogIHJlZ2lzdGVyIGFuZCBiZWdpbnMgY291bnRpbmcgZG93biBhZ2Fpbi4NCi0gKiBNU1NfVElNRVJfT05FX1NIT1RfTU9ERToNCi0gKiAgVGhlIHRpbWVyIGdlbmVyYXRlcyBhIHNpbmdsZSBpbnRlcnJ1cHQgaW4gdGhpcyBtb2RlLiBPbiByZWFjaGluZyB6ZXJvLCB0aGUNCi0gKiAgdGltZXIncyBjb3VudGVyIGhhbHRzIHVudGlsIHJlcHJvZ3JhbW1lZCBieSB0aGUgdXNlci4NCi0gKi8NCi10eXBlZGVmIGVudW0gX19tc3NfdGltZXJfbW9kZV90DQotew0KLSAgICBNU1NfVElNRVJfUEVSSU9ESUNfTU9ERSA9IDAsDQotICAgIE1TU19USU1FUl9PTkVfU0hPVF9NT0RFID0gMQ0KLX0gbXNzX3RpbWVyX21vZGVfdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBmb3INCi0gIHVzZSBhcyBhIDMyLWJpdCB0aW1lciBhbmQgc2VsZWN0cyB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIFRpbWVyIDEuIFRoaXMgZnVuY3Rpb24NCi0gIHRha2VzIHRoZSBNU1MgVGltZXIgYmxvY2sgb3V0IG9mIHJlc2V0IGluIGNhc2UgdGhpcyBoYXNuknQgYmVlbiBkb25lIGFscmVhZHksDQotICBzdG9wcyBUaW1lciAxLCBkaXNhYmxlcyBpdHMgaW50ZXJydXB0IGFuZCBzZXRzIHRoZSBUaW1lciAxIG9wZXJhdGluZyBtb2RlLg0KLSAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBjYW5ub3QgYmUgdXNlZCBib3RoIGFzIGENCi0gIDY0LWJpdCBhbmQgMzItYml0IHRpbWVyLiBDYWxsaW5nIE1TU19USU0xX2luaXQoKSB3aWxsIG92ZXJ3cml0ZSBhbnkgcHJldmlvdXMNCi0gIGNvbmZpZ3VyYXRpb24gb2YgdGhlIE1TUyBUaW1lciBhcyBhIDY0LWJpdCB0aW1lci4NCi0NCi0gDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRpbWVyIHdpbGwgb3BlcmF0ZSBpbiBwZXJpb2RpYyBvcg0KLSAgICBvbmUtc2hvdCBtb2RlLiBBbGxvd2VkIHZhbHVlcyBmb3IgdGhpcyBwYXJhbWV0ZXIgYXJlOg0KLSAgICAgICAgLSBNU1NfVElNRVJfUEVSSU9ESUNfTU9ERQ0KLSAgICAgICAgLSBNU1NfVElNRVJfT05FX1NIT1RfTU9ERQ0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0xX2luaXQobXNzX3RpbWVyX21vZGVfdCBtb2RlKQ0KLXsNCi0gICAgTlZJQ19EaXNhYmxlSVJRKFRpbWVyMV9JUlFuKTsgICAgICAgICAgICAgLyogRGlzYWJsZSB0aW1lciAxIGlycSBpbiB0aGUgQ29ydGV4LU0zIE5WSUMgKi8gIA0KLSAgICANCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+U1lTUkVHX1RJTUVSX1NPRlRSRVNFVF9NQVNLOyAvKiBUYWtlIHRpbWVyIGJsb2NrIG91dCBvZiByZXNldCAqLw0KLSAgICANCi0gICAgVElNRVItPlRJTTY0X01PREUgPSAwdTsgICAgICAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gMzIgYml0cyBtb2RlICovDQotICAgIA0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xRU5BQkxFID0gMHU7ICAgICAgICAgICAgIC8qIGRpc2FibGUgdGltZXIgKi8NCi0gICAgVElNRVJfQklUQkFORC0+VElNMUlOVEVOID0gMHU7ICAgICAgICAgICAgICAvKiBkaXNhYmxlIGludGVycnVwdCAqLw0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xTU9ERSA9ICh1aW50MzJfdCltb2RlOyAgIC8qIHNldCBtb2RlIChjb250aW51b3VzL29uZS1zaG90KSAqLw0KLSAgICANCi0gICAgVElNRVItPlRJTTFfUklTID0gMXU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciB0aW1lciAxIGludGVycnVwdCAqLw0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShUaW1lcjFfSVJRbik7ICAgICAgICAvKiBjbGVhciB0aW1lciAxIGludGVycnVwdCB3aXRoaW4gTlZJQyAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX3N0YXJ0KCkgZnVuY3Rpb24gZW5hYmxlcyBUaW1lciAxIGFuZCBzdGFydHMgaXRzIGRvd24tY291bnRlcg0KLSAgZGVjcmVtZW50aW5nIGZyb20gdGhlIGxvYWRfdmFsdWUgc3BlY2lmaWVkIGluIHByZXZpb3VzIGNhbGxzIHRvIHRoZQ0KLSAgTVNTX1RJTTFfbG9hZF9pbW1lZGlhdGUoKSBvciBNU1NfVElNMV9sb2FkX2JhY2tncm91bmQoKSBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfc3RhcnQodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTFFTkFCTEUgPSAxdTsgICAgLyogZW5hYmxlIHRpbWVyICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTFfc3RvcCgpIGZ1bmN0aW9uIGRpc2FibGVzIFRpbWVyIDEgYW5kIHN0b3BzIGl0cyBkb3duLWNvdW50ZXINCi0gIGRlY3JlbWVudGluZy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9zdG9wKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xRU5BQkxFID0gMHU7ICAgIC8qIGRpc2FibGUgdGltZXIgKi8NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9nZXRfY3VycmVudF92YWx1ZSgpIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFRpbWVyIDENCi0gIGRvd24tY291bnRlci4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIDMyLWJpdHMgY3VycmVudCB2YWx1ZSBvZiB0aGUgVGltZXIgMSBkb3duLWNvdW50ZXIuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE1TU19USU0xX2dldF9jdXJyZW50X3ZhbHVlKHZvaWQpDQotew0KLSAgICByZXR1cm4gVElNRVItPlRJTTFfVkFMOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2xvYWRfaW1tZWRpYXRlKCkgZnVuY3Rpb24gbG9hZHMgdGhlIHZhbHVlIHBhc3NlZCBieSB0aGUNCi0gIGxvYWRfdmFsdWUgcGFyYW1ldGVyIGludG8gdGhlIFRpbWVyIDEgZG93bi1jb3VudGVyLiBUaGUgY291bnRlciB3aWxsIGRlY3JlbWVudA0KLSAgaW1tZWRpYXRlbHkgZnJvbSB0aGlzIHZhbHVlIG9uY2UgVGltZXIgMSBpcyBlbmFibGVkLiBUaGUgTVNTIFRpbWVyIHdpbGwNCi0gIGdlbmVyYXRlIGFuIGludGVycnVwdCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgemVybyBpZiBUaW1lciAxIGludGVycnVwdHMgYXJlDQotICBlbmFibGVkLiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBUaW1lciAxIGlzIGNvbmZpZ3VyZWQgZm9yDQotICBvbmUtc2hvdCBtb2RlIHRvIHRpbWUgYSBzaW5nbGUgZGVsYXkuDQotIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWUNCi0gICAgVGhlIGxvYWRfdmFsdWUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgdmFsdWUgZnJvbSB3aGljaCB0aGUgVGltZXIgMSBkb3duLWNvdW50ZXINCi0gICAgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcgZnJvbS4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9sb2FkX2ltbWVkaWF0ZSh1aW50MzJfdCBsb2FkX3ZhbHVlKQ0KLXsNCi0gICAgVElNRVItPlRJTTFfTE9BRFZBTCA9IGxvYWRfdmFsdWU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTFfbG9hZF9iYWNrZ3JvdW5kKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSB2YWx1ZSB0aGF0IHdpbGwNCi0gIGJlIHJlbG9hZGVkIGludG8gdGhlIFRpbWVyIDEgZG93bi1jb3VudGVyIHRoZSBuZXh0IHRpbWUgdGhlIGNvdW50ZXIgcmVhY2hlcw0KLSAgemVyby4gVGhpcyBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIFRpbWVyIDEgaXMgY29uZmlndXJlZCBmb3IgcGVyaW9kaWMNCi0gIG1vZGUgb3BlcmF0aW9uIHRvIHNlbGVjdCBvciBjaGFuZ2UgdGhlIGRlbGF5IHBlcmlvZCBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHRzDQotICBnZW5lcmF0ZWQgYnkgVGltZXIgMS4NCi0gDQotICBAcGFyYW0gbG9hZF92YWx1ZQ0KLSAgICBUaGUgbG9hZF92YWx1ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgbG9hZGVkIGludG8gdGhlDQotICAgIFRpbWVyIDEgZG93bi1jb3VudGVyIHRoZSBuZXh0IHRpbWUgdGhlIGRvd24tY291bnRlciByZWFjaGVzIHplcm8uIFRoZSBUaW1lcg0KLSAgICAxIGRvd24tY291bnRlciB3aWxsIHN0YXJ0IGRlY3JlbWVudGluZyBmcm9tIHRoaXMgdmFsdWUgYWZ0ZXIgdGhlIGN1cnJlbnQNCi0gICAgY291bnQgZXhwaXJlcy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9sb2FkX2JhY2tncm91bmQodWludDMyX3QgbG9hZF92YWx1ZSkNCi17DQotICAgIFRJTUVSLT5USU0xX0JHTE9BRFZBTCA9IGxvYWRfdmFsdWU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTFfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGludGVycnVwdCBnZW5lcmF0aW9uIGZvcg0KLSAgVGltZXIgMS4gVGhpcyBmdW5jdGlvbiBhbHNvIGVuYWJsZXMgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdA0KLSAgY29udHJvbGxlci4gVGhlIFRpbWVyMV9JUlFIYW5kbGVyKCkgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBhIFRpbWVyIDENCi0gIGludGVycnVwdCBvY2N1cnMuDQotICBOb3RlOiBOb3RlOiAJQSBUaW1lcjFfSVJRSGFuZGxlcigpIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCwgd2l0aA0KLSAgd2VhayBsaW5rYWdlLCBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTLVBBTC4gWW91IG11c3QgcHJvdmlkZSB5b3VyIG93bg0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFRpbWVyMV9JUlFIYW5kbGVyKCkgZnVuY3Rpb24sIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUNCi0gIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9lbmFibGVfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xSU5URU4gPSAxdTsNCi0gICAgTlZJQ19FbmFibGVJUlEoVGltZXIxX0lSUW4pOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIGludGVycnVwdCBnZW5lcmF0aW9uDQotICBmb3IgVGltZXIgMS4gVGhpcyBmdW5jdGlvbiBhbHNvIGRpc2FibGVzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMw0KLSAgaW50ZXJydXB0IGNvbnRyb2xsZXIuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfZGlzYWJsZV9pcnEodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTFJTlRFTiA9IDB1Ow0KLSAgICBOVklDX0Rpc2FibGVJUlEoVGltZXIxX0lSUW4pOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2NsZWFyX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2xlYXIgYSBwZW5kaW5nIGludGVycnVwdCBmcm9tDQotICBUaW1lciAxLiBUaGlzIGZ1bmN0aW9uIGFsc28gY2xlYXJzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQNCi0gIGNvbnRyb2xsZXIuDQotICBOb3RlOiBZb3UgbXVzdCBjYWxsIHRoZSBNU1NfVElNMV9jbGVhcl9pcnEoKSBmdW5jdGlvbiBhcyBwYXJ0IG9mIHlvdXINCi0gIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUaW1lcjFfSVJRSGFuZGxlcigpIFRpbWVyIDEgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZQ0KLSAgKElTUikgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUgc2FtZSBpbnRlcnJ1cHQgZXZlbnQgcmV0cmlnZ2VyaW5nIGEgY2FsbCB0byB0aGUNCi0gIElTUi4NCi0NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9jbGVhcl9pcnEodm9pZCkNCi17DQotICAgIFRJTUVSLT5USU0xX1JJUyA9IDF1Ow0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0yX2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBmb3INCi0gIHVzZSBhcyBhIDMyLWJpdCB0aW1lciBhbmQgc2VsZWN0cyB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIFRpbWVyIDIuIFRoaXMgZnVuY3Rpb24NCi0gIHRha2VzIHRoZSBNU1MgVGltZXIgYmxvY2sgb3V0IG9mIHJlc2V0IGluIGNhc2UgdGhpcyBoYXNuknQgYmVlbiBkb25lIGFscmVhZHksDQotICBzdG9wcyBUaW1lciAyLCBkaXNhYmxlcyBpdHMgaW50ZXJydXB0IGFuZCBzZXRzIHRoZSBUaW1lciAyIG9wZXJhdGluZyBtb2RlLg0KLSAgTm90ZTogUGxlYXNlIG5vdGUgdGhhdCB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBjYW5ub3QgYmUgdXNlZCBib3RoIGFzDQotICBhIDY0LWJpdCBhbmQgMzItYml0IHRpbWVyLiBDYWxsaW5nIE1TU19USU0yX2luaXQoKSB3aWxsIG92ZXJ3cml0ZSBhbnkgcHJldmlvdXMNCi0gIGNvbmZpZ3VyYXRpb24gb2YgdGhlIE1TUyBUaW1lciBhcyBhIDY0LWJpdCB0aW1lci4NCi0gIA0KLSAgQHBhcmFtIG1vZGUNCi0gICAgVGhlIG1vZGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSB0aW1lciB3aWxsIG9wZXJhdGUgaW4gcGVyaW9kaWMgb3INCi0gICAgb25lLXNob3QgbW9kZS4gQWxsb3dlZCB2YWx1ZXMgZm9yIHRoaXMgcGFyYW1ldGVyIGFyZToNCi0gICAgICAgIC0gTVNTX1RJTUVSX1BFUklPRElDX01PREUNCi0gICAgICAgIC0gTVNTX1RJTUVSX09ORV9TSE9UX01PREUgDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTJfaW5pdChtc3NfdGltZXJfbW9kZV90IG1vZGUpDQotew0KLSAgICBOVklDX0Rpc2FibGVJUlEoVGltZXIyX0lSUW4pOyAgICAgICAgICAgICAvKiBEaXNhYmxlIHRpbWVyIDIgaXJxIGluIHRoZSBDb3J0ZXgtTTMgTlZJQyAqLyAgDQotICAgIA0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5TWVNSRUdfVElNRVJfU09GVFJFU0VUX01BU0s7IC8qIFRha2UgdGltZXIgYmxvY2sgb3V0IG9mIHJlc2V0ICovDQotICAgIA0KLSAgICBUSU1FUi0+VElNNjRfTU9ERSA9IDB1OyAgICAgICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byAzMiBiaXRzIG1vZGUgKi8NCi0gICAgDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTJFTkFCTEUgPSAwdTsgICAgICAgICAgICAgLyogZGlzYWJsZSB0aW1lciAqLw0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0ySU5URU4gPSAwdTsgICAgICAgICAgICAgIC8qIGRpc2FibGUgaW50ZXJydXB0ICovDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTJNT0RFID0gKHVpbnQzMl90KW1vZGU7ICAgLyogc2V0IG1vZGUgKGNvbnRpbnVvdXMvb25lLXNob3QpICovDQotICAgIA0KLSAgICBUSU1FUi0+VElNMl9SSVMgPSAxdTsgICAgICAgICAgICAgICAgICAgICAgIC8qIGNsZWFyIHRpbWVyIDIgaW50ZXJydXB0ICovDQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKFRpbWVyMl9JUlFuKTsgICAgICAgIC8qIGNsZWFyIHRpbWVyIDIgaW50ZXJydXB0IHdpdGhpbiBOVklDICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfc3RhcnQoKSBmdW5jdGlvbiBlbmFibGVzIFRpbWVyIDIgYW5kICBzdGFydHMgaXRzIGRvd24tY291bnRlcg0KLSAgZGVjcmVtZW50aW5nIGZyb20gdGhlIGxvYWRfdmFsdWUgc3BlY2lmaWVkIGluIHByZXZpb3VzIGNhbGxzIHRvIHRoZQ0KLSAgTVNTX1RJTTJfbG9hZF9pbW1lZGlhdGUoKSBvciBNU1NfVElNMl9sb2FkX2JhY2tncm91bmQoKSBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTJfc3RhcnQodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTJFTkFCTEUgPSAxdTsgICAgLyogZW5hYmxlIHRpbWVyICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfc3RvcCgpIGZ1bmN0aW9uIGRpc2FibGVzIFRpbWVyIDIgYW5kIHN0b3BzIGl0cyBkb3duLWNvdW50ZXINCi0gIGRlY3JlbWVudGluZy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMl9zdG9wKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0yRU5BQkxFID0gMHU7ICAgIC8qIGRpc2FibGUgdGltZXIgKi8NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMl9nZXRfY3VycmVudF92YWx1ZSgpIHJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFRpbWVyIDINCi0gIGRvd24tY291bnRlci4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdWludDMyX3QgTVNTX1RJTTJfZ2V0X2N1cnJlbnRfdmFsdWUodm9pZCkNCi17DQotICAgIHJldHVybiBUSU1FUi0+VElNMl9WQUw7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfbG9hZF9pbW1lZGlhdGUoKSBmdW5jdGlvbiBsb2FkcyB0aGUgdmFsdWUgcGFzc2VkIGJ5IHRoZQ0KLSAgbG9hZF92YWx1ZSBwYXJhbWV0ZXIgaW50byB0aGUgVGltZXIgMiBkb3duLWNvdW50ZXIuIFRoZSBjb3VudGVyIHdpbGwgZGVjcmVtZW50DQotICBpbW1lZGlhdGVseSBmcm9tIHRoaXMgdmFsdWUgb25jZSBUaW1lciAyIGlzIGVuYWJsZWQuIFRoZSBNU1MgVGltZXIgd2lsbA0KLSAgZ2VuZXJhdGUgYW4gaW50ZXJydXB0IHdoZW4gdGhlIGNvdW50ZXIgcmVhY2hlcyB6ZXJvIGlmIFRpbWVyIDIgaW50ZXJydXB0cyBhcmUNCi0gIGVuYWJsZWQuIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIFRpbWVyIDIgaXMgY29uZmlndXJlZCBmb3INCi0gIG9uZS1zaG90IG1vZGUgdG8gdGltZSBhIHNpbmdsZSBkZWxheS4NCi0gIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWUNCi0gICAgVGhlIGxvYWRfdmFsdWUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgdmFsdWUgZnJvbSB3aGljaCB0aGUgVGltZXIgMg0KLSAgICBkb3duLWNvdW50ZXIgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcuIA0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX2xvYWRfaW1tZWRpYXRlKHVpbnQzMl90IGxvYWRfdmFsdWUpDQotew0KLSAgICBUSU1FUi0+VElNMl9MT0FEVkFMID0gbG9hZF92YWx1ZTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMl9sb2FkX2JhY2tncm91bmQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHZhbHVlIHRoYXQgd2lsbA0KLSAgYmUgcmVsb2FkZWQgaW50byB0aGUgVGltZXIgMiBkb3duLWNvdW50ZXIgdGhlIG5leHQgdGltZSB0aGUgY291bnRlciByZWFjaGVzDQotICB6ZXJvLiBUaGlzIGZ1bmN0aW9uIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gVGltZXIgMiBpcyBjb25maWd1cmVkIGZvciBwZXJpb2RpYw0KLSAgbW9kZSBvcGVyYXRpb24gdG8gc2VsZWN0IG9yIGNoYW5nZSB0aGUgZGVsYXkgcGVyaW9kIGJldHdlZW4gdGhlIGludGVycnVwdHMNCi0gIGdlbmVyYXRlZCBieSBUaW1lciAyLg0KLSAgDQotICBAcGFyYW0gbG9hZF92YWx1ZQ0KLSAgICBUaGUgbG9hZF92YWx1ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgbG9hZGVkIGludG8gdGhlDQotICAgIFRpbWVyIDIgZG93bi1jb3VudGVyIHRoZSBuZXh0IHRpbWUgdGhlIGRvd24tY291bnRlciByZWFjaGVzIHplcm8uIFRoZSBUaW1lcg0KLSAgICAyIGRvd24tY291bnRlciB3aWxsIHN0YXJ0IGRlY3JlbWVudGluZyBmcm9tIHRoaXMgdmFsdWUgYWZ0ZXIgdGhlIGN1cnJlbnQNCi0gICAgY291bnQgZXhwaXJlcy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMl9sb2FkX2JhY2tncm91bmQodWludDMyX3QgbG9hZF92YWx1ZSkNCi17DQotICAgIFRJTUVSLT5USU0yX0JHTE9BRFZBTCA9IGxvYWRfdmFsdWU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGludGVycnVwdCBnZW5lcmF0aW9uIGZvcg0KLSAgVGltZXIgMi4gVGhpcyBmdW5jdGlvbiBhbHNvIGVuYWJsZXMgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdA0KLSAgY29udHJvbGxlci4gVGhlIFRpbWVyMl9JUlFIYW5kbGVyKCkgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBhIFRpbWVyIDINCi0gIGludGVycnVwdCBvY2N1cnMuDQotICBOb3RlOiBBIFRpbWVyMl9JUlFIYW5kbGVyKCkgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBkZWZpbmVkLCB3aXRoIHdlYWsNCi0gIGxpbmthZ2UsIGluIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMtUEFMLiBZb3UgbXVzdCBwcm92aWRlIHlvdXIgb3duIGltcGxlbWVudGF0aW9uDQotICBvZiB0aGUgVGltZXIyX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiwgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0DQotICBpbXBsZW1lbnRhdGlvbiwgdG8gc3VpdCB5b3VyIGFwcGxpY2F0aW9uLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX2VuYWJsZV9pcnEodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTJJTlRFTiA9IDF1Ow0KLSAgICBOVklDX0VuYWJsZUlSUSggVGltZXIyX0lSUW4gKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMl9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbg0KLSAgZm9yIFRpbWVyIDIuIFRoaXMgZnVuY3Rpb24gYWxzbyBkaXNhYmxlcyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIGludGVycnVwdCBjb250cm9sbGVyLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX2Rpc2FibGVfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0ySU5URU4gPSAwdTsNCi0gICAgTlZJQ19EaXNhYmxlSVJRKFRpbWVyMl9JUlFuKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMl9jbGVhcl9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNsZWFyIGEgcGVuZGluZyBpbnRlcnJ1cHQgZnJvbQ0KLSAgVGltZXIgMi4gVGhpcyBmdW5jdGlvbiBhbHNvIGNsZWFycyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgaW50ZXJydXB0DQotICBjb250cm9sbGVyLg0KLSAgTm90ZTogWW91IG11c3QgY2FsbCB0aGUgTVNTX1RJTTJfY2xlYXJfaXJxKCkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyDQotICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVGltZXIyX0lSUUhhbmRsZXIoKSBUaW1lciAyIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUNCi0gIChJU1IpIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0IGV2ZW50IHJldHJpZ2dlcmluZyBhIGNhbGwgdG8gdGhlDQotICBJU1IuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTJfY2xlYXJfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUi0+VElNMl9SSVMgPSAxdTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNNjRfaW5pdCgpIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBTbWFydEZ1c2lvbjIgTVNTIFRpbWVyIGJsb2NrIGZvcg0KLSAgdXNlIGFzIGEgc2luZ2xlIDY0LWJpdCB0aW1lciBhbmQgc2VsZWN0cyB0aGUgb3BlcmF0aW5nIG1vZGUgb2YgdGhlIHRpbWVyLiBUaGlzDQotICBmdW5jdGlvbiB0YWtlcyB0aGUgTVNTIFRpbWVyIGJsb2NrIG91dCBvZiByZXNldCBpbiBjYXNlIHRoaXMgaGFzbpJ0IGJlZW4gZG9uZQ0KLSAgYWxyZWFkeSwgc3RvcHMgdGhlIHRpbWVyLCBkaXNhYmxlcyBpdHMgaW50ZXJydXB0cyBhbmQgc2V0cyB0aGUgdGltZXIncw0KLSAgb3BlcmF0aW5nIG1vZGUuDQotICBOb3RlOiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBTbWFydEZ1c2lvbjIgTVNTIFRpbWVyIGJsb2NrIGNhbm5vdCBiZSB1c2VkIGJvdGggYXMNCi0gIGEgNjQtYml0IGFuZCAzMi1iaXQgdGltZXIuIENhbGxpbmcgTVNTX1RJTTY0X2luaXQoKSB3aWxsIG92ZXJ3cml0ZSBhbnkgcHJldmlvdXMNCi0gIGNvbmZpZ3VyYXRpb24gb2YgdGhlIE1TUyBUaW1lciBhcyBhIDMyLWJpdCB0aW1lci4NCi0NCi0gIEBwYXJhbSBtb2RlDQotICAgIFRoZSBtb2RlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgdGltZXIgd2lsbCBvcGVyYXRlIGluIHBlcmlvZGljIG9yDQotICAgIG9uZS1zaG90IG1vZGUuIEFsbG93ZWQgdmFsdWVzIGZvciB0aGlzIHBhcmFtZXRlciBhcmU6DQotICAgICAgICAtIE1TU19USU1FUl9QRVJJT0RJQ19NT0RFDQotICAgICAgICAtIE1TU19USU1FUl9PTkVfU0hPVF9NT0RFIA0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU02NF9pbml0KG1zc190aW1lcl9tb2RlX3QgbW9kZSkNCi17DQotICAgIE5WSUNfRGlzYWJsZUlSUShUaW1lcjFfSVJRbik7ICAgICAgICAgLyogZGlzYWJsZSB0aW1lciAxIGludGVycnVwdCB3aXRoaW4gTlZJQyAqLw0KLSAgICBOVklDX0Rpc2FibGVJUlEoVGltZXIyX0lSUW4pOyAgICAgICAgIC8qIGRpc2FibGUgdGltZXIgMiBpbnRlcnJ1cHQgd2l0aGluIE5WSUMgKi8NCi0gICAgDQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgJj0gflNZU1JFR19USU1FUl9TT0ZUUkVTRVRfTUFTSzsgLyogVGFrZSB0aW1lciBibG9jayBvdXQgb2YgcmVzZXQgKi8NCi0gICAgDQotICAgIFRJTUVSLT5USU02NF9NT0RFID0gMXU7ICAgICAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIDY0IGJpdHMgbW9kZSAqLw0KLSAgICANCi0gICAgVElNRVJfQklUQkFORC0+VElNNjRFTkFCTEUgPSAwdTsgICAgICAgICAgICAvKiBkaXNhYmxlIHRpbWVyICovDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTY0SU5URU4gPSAwdTsgICAgICAgICAgICAgLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8NCi0gICAgVElNRVJfQklUQkFORC0+VElNNjRNT0RFID0gKHVpbnQzMl90KW1vZGU7ICAvKiBzZXQgbW9kZSAoY29udGludW91cy9vbmUtc2hvdCkgKi8NCi0gICAgDQotICAgIFRJTUVSLT5USU0xX1JJUyA9IDF1OyAgICAgICAgICAgICAgICAgICAvKiBjbGVhciB0aW1lciAxIGludGVycnVwdCAqLw0KLSAgICBUSU1FUi0+VElNMl9SSVMgPSAxdTsgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgdGltZXIgMiBpbnRlcnJ1cHQgKi8NCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoVGltZXIxX0lSUW4pOyAgICAvKiBjbGVhciB0aW1lciAxIGludGVycnVwdCB3aXRoaW4gTlZJQyAqLw0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShUaW1lcjJfSVJRbik7ICAgIC8qIGNsZWFyIHRpbWVyIDIgaW50ZXJydXB0IHdpdGhpbiBOVklDICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X3N0YXJ0KCkgZnVuY3Rpb24gZW5hYmxlcyB0aGUgNjQtYml0IHRpbWVyIGFuZCBzdGFydHMgaXRzDQotICBkb3duLWNvdW50ZXIgZGVjcmVtZW50aW5nIGZyb20gdGhlIGxvYWRfdmFsdWUgc3BlY2lmaWVkIGluIHByZXZpb3VzIGNhbGxzIHRvDQotICB0aGUgTVNTX1RJTTY0X2xvYWRfaW1tZWRpYXRlKCkgb3IgTVNTX1RJTTY0X2xvYWRfYmFja2dyb3VuZCgpIGZ1bmN0aW9ucy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfc3RhcnQodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTY0RU5BQkxFID0gMXU7ICAgIC8qIGVuYWJsZSB0aW1lciAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9zdG9wKCkgZnVuY3Rpb24gZGlzYWJsZXMgdGhlIDY0LWJpdCB0aW1lciBhbmQgc3RvcHMgaXRzDQotICBkb3duLWNvdW50ZXIgZGVjcmVtZW50aW5nLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU02NF9zdG9wKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU02NEVOQUJMRSA9IDB1OyAgICAvKiBkaXNhYmxlIHRpbWVyICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2dldF9jdXJyZW50X3ZhbHVlKCkgaXMgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZQ0KLSAgNjQtYml0IHRpbWVyIGRvd24tY291bnRlci4gDQotIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfdQ0KLSAgICBUaGUgbG9hZF92YWx1ZV91IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAzMi1iaXQgdmFyaWFibGUgd2hlcmUgdGhlIHVwcGVyDQotICAgIDMyIGJpdHMgb2YgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgd2lsbCBiZSBjb3BpZWQuDQotICAgIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfbA0KLSAgICBUaGUgbG9hZF92YWx1ZV9sIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAzMi1iaXQgdmFyaWFibGUgd2hlcmUgdGhlIGxvd2VyDQotICAgIDMyIGJpdHMgb2YgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgd2lsbCBiZSBjb3BpZWQuDQotICAgIA0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIHVpbnQzMl90IGN1cnJlbnRfdmFsdWVfdSA9IDA7DQotICAgIHVpbnQzMl90IGN1cnJlbnRfdmFsdWVfbCA9IDA7DQotICAgIE1TU19USU02NF9nZXRfY3VycmVudF92YWx1ZSggJmN1cnJlbnRfdmFsdWVfdSwgJmN1cnJlbnRfdmFsdWVfbCApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfZ2V0X2N1cnJlbnRfdmFsdWUNCi0oDQotICAgIHVpbnQzMl90ICogbG9hZF92YWx1ZV91LA0KLSAgICB1aW50MzJfdCAqIGxvYWRfdmFsdWVfbA0KLSkNCi17DQotICAgICpsb2FkX3ZhbHVlX2wgPSBUSU1FUi0+VElNNjRfVkFMX0w7DQotICAgICpsb2FkX3ZhbHVlX3UgPSBUSU1FUi0+VElNNjRfVkFMX1U7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2xvYWRfaW1tZWRpYXRlKCkgZnVuY3Rpb24gbG9hZHMgdGhlIHZhbHVlcyBwYXNzZWQgYnkgdGhlDQotICBsb2FkX3ZhbHVlX3UgYW5kIGxvYWRfdmFsdWVfbCBwYXJhbWV0ZXJzIGludG8gdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIuDQotICBUaGUgY291bnRlciB3aWxsIGRlY3JlbWVudCBpbW1lZGlhdGVseSBmcm9tIHRoZSBjb25jYXRlbmF0ZWQgNjQtYml0IHZhbHVlIG9uY2UNCi0gIHRoZSA2NC1iaXQgdGltZXIgaXMgZW5hYmxlZC4gVGhlIE1TUyBUaW1lciB3aWxsIGdlbmVyYXRlIGFuIGludGVycnVwdCB3aGVuIHRoZQ0KLSAgY291bnRlciByZWFjaGVzIHplcm8gaWYgNjQtYml0IHRpbWVyIGludGVycnVwdHMgYXJlIGVuYWJsZWQuIFRoaXMgZnVuY3Rpb24gaXMNCi0gIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiB0aGUgNjQtYml0IHRpbWVyIGlzIGNvbmZpZ3VyZWQgZm9yIG9uZS1zaG90IG1vZGUgdG8NCi0gIHRpbWUgYSBzaW5nbGUgZGVsYXkuDQotIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfdQ0KLSAgICBUaGUgbG9hZF92YWx1ZV91IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB0aW1lcg0KLSAgICBsb2FkIHZhbHVlIGZyb20gd2hpY2ggdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcuDQotICAgIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfbA0KLSAgICBUaGUgbG9hZF92YWx1ZV9sIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB0aW1lcg0KLSAgICBsb2FkIHZhbHVlIGZyb20gd2hpY2ggdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2xvYWRfaW1tZWRpYXRlDQotKA0KLSAgICB1aW50MzJfdCBsb2FkX3ZhbHVlX3UsDQotICAgIHVpbnQzMl90IGxvYWRfdmFsdWVfbA0KLSkNCi17DQotICAgIFRJTUVSLT5USU02NF9MT0FEVkFMX1UgPSBsb2FkX3ZhbHVlX3U7DQotICAgIFRJTUVSLT5USU02NF9MT0FEVkFMX0wgPSBsb2FkX3ZhbHVlX2w7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2xvYWRfYmFja2dyb3VuZCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgNjQtYml0IHZhbHVlDQotICB0aGF0IHdpbGwgYmUgcmVsb2FkZWQgaW50byB0aGUgNjQtYml0IHRpbWVyIGRvd24tY291bnRlciB0aGUgbmV4dCB0aW1lIHRoZQ0KLSAgY291bnRlciByZWFjaGVzIHplcm8uIFRoaXMgZnVuY3Rpb24gaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiB0aGUgNjQtYml0IHRpbWVyIGlzDQotICBjb25maWd1cmVkIGZvciBwZXJpb2RpYyBtb2RlIG9wZXJhdGlvbiB0byBzZWxlY3Qgb3IgY2hhbmdlIHRoZSBkZWxheSBwZXJpb2QNCi0gIGJldHdlZW4gdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSA2NC1iaXQgdGltZXIuDQotIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfdQ0KLSAgICBUaGUgbG9hZF92YWx1ZV91IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB0aW1lcg0KLSAgICBsb2FkIHZhbHVlLiBUaGUgY29uY2F0ZW5hdGVkIDY0LWJpdCB2YWx1ZSBmb3JtZWQgZnJvbSBsb2FkX3ZhbHVlX3UgYW5kDQotICAgIGxvYWRfdmFsdWVfbCB3aWxsIGJlIGxvYWRlZCBpbnRvIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHRoZSBuZXh0DQotICAgIHRpbWUgdGhlIGRvd24tY291bnRlciByZWFjaGVzIHplcm8uIFRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgc3RhcnQNCi0gICAgZGVjcmVtZW50aW5nIGZyb20gdGhlIGNvbmNhdGVuYXRlZCA2NC1iaXQgdmFsdWUgYWZ0ZXIgdGhlIGN1cnJlbnQgY291bnQNCi0gICAgZXhwaXJlcy4NCi0gICAgDQotICBAcGFyYW0gbG9hZF92YWx1ZV9sDQotICAgIFRoZSBsb2FkX3ZhbHVlX2wgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgNjQtYml0IHRpbWVyDQotICAgIGxvYWQgdmFsdWUuIFRoZSBjb25jYXRlbmF0ZWQgNjQtYml0IHZhbHVlIGZvcm1lZCBmcm9tIGxvYWRfdmFsdWVfdSBhbmQNCi0gICAgbG9hZF92YWx1ZV9sIHdpbGwgYmUgbG9hZGVkIGludG8gdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgdGhlIG5leHQgdGltZQ0KLSAgICB0aGUgZG93bi1jb3VudGVyIHJlYWNoZXMgemVyby4gVGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgd2lsbCBzdGFydA0KLSAgICBkZWNyZW1lbnRpbmcgZnJvbSB0aGUgY29uY2F0ZW5hdGVkIDY0LWJpdCB2YWx1ZSBhZnRlciB0aGUgY3VycmVudCBjb3VudA0KLSAgICBleHBpcmVzLg0KLSANCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfbG9hZF9iYWNrZ3JvdW5kDQotKA0KLSAgICB1aW50MzJfdCBsb2FkX3ZhbHVlX3UsDQotICAgIHVpbnQzMl90IGxvYWRfdmFsdWVfbA0KLSkNCi17DQotICAgIFRJTUVSLT5USU02NF9CR0xPQURWQUxfVSA9IGxvYWRfdmFsdWVfdTsNCi0gICAgVElNRVItPlRJTTY0X0JHTE9BRFZBTF9MID0gbG9hZF92YWx1ZV9sOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9lbmFibGVfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBlbmFibGUgaW50ZXJydXB0IGdlbmVyYXRpb24gZm9yDQotICB0aGUgNjQtYml0IHRpbWVyLiBUaGlzIGZ1bmN0aW9uIGFsc28gZW5hYmxlcyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIGludGVycnVwdCBjb250cm9sbGVyLiBUaGUgVGltZXIxX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIGENCi0gIDY0LWJpdCB0aW1lciBpbnRlcnJ1cHQgb2NjdXJzLg0KLSAgTm90ZTogQSBUaW1lcjFfSVJRSGFuZGxlcigpIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCwgd2l0aCB3ZWFrDQotICBsaW5rYWdlLCBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTLVBBTC4gWW91IG11c3QgcHJvdmlkZSB5b3VyIG93bg0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFRpbWVyMV9JUlFIYW5kbGVyKCkgZnVuY3Rpb24sIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUNCi0gIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0gIE5vdGU6IFRoZSBNU1NfVElNNjRfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGVuYWJsZXMgYW5kIHVzZXMgVGltZXIgMSBpbnRlcnJ1cHRzDQotICBmb3IgdGhlIDY0LWJpdCB0aW1lci4gVGltZXIgMiBpbnRlcnJ1cHRzIHJlbWFpbiBkaXNhYmxlZC4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfZW5hYmxlX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNNjRJTlRFTiA9IDF1Ow0KLSAgICBOVklDX0VuYWJsZUlSUShUaW1lcjFfSVJRbik7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIGludGVycnVwdCBnZW5lcmF0aW9uDQotICBmb3IgdGhlIDY0LWJpdCB0aW1lci4gVGhpcyBmdW5jdGlvbiBhbHNvIGRpc2FibGVzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlDQotICBDb3J0ZXgtTTMgaW50ZXJydXB0IGNvbnRyb2xsZXIuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2Rpc2FibGVfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU02NElOVEVOID0gMHU7DQotICAgIE5WSUNfRGlzYWJsZUlSUShUaW1lcjFfSVJRbik7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2NsZWFyX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2xlYXIgYSBwZW5kaW5nIGludGVycnVwdCBmcm9tDQotICB0aGUgNjQtYml0IHRpbWVyLiBUaGlzIGZ1bmN0aW9uIGFsc28gY2xlYXJzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMw0KLSAgaW50ZXJydXB0IGNvbnRyb2xsZXIuDQotICBOb3RlOiBZb3UgbXVzdCBjYWxsIHRoZSBNU1NfVElNNjRfY2xlYXJfaXJxKCkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyDQotICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVGltZXIxX0lSUUhhbmRsZXIoKSA2NC1iaXQgdGltZXIgaW50ZXJydXB0IHNlcnZpY2UNCi0gIHJvdXRpbmUgKElTUikgaW4gb3JkZXIgdG8gcHJldmVudCB0aGUgc2FtZSBpbnRlcnJ1cHQgZXZlbnQgcmV0cmlnZ2VyaW5nIGENCi0gIGNhbGwgdG8gdGhlIElTUi4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfY2xlYXJfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUi0+VElNNjRfUklTID0gMXU7DQotfQ0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLypNU1NfVElNRVJfSF8qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMDBhY2MuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSBNTVVBUlQgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXINCi0gKiBpbXBsZW1lbnRhdGlvbi4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU2MTAgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNSAxNDoxOTozMCArMDEwMCAoRnJpLCAwNSBBcHIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJtc3NfdWFydC5oIg0KLSNpbmNsdWRlICJtc3NfdWFydF9yZWdzLmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL21zc19hc3NlcnQuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvaHdfcmVnX2lvLmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL3N5c3RlbV9tMnN4eHguaCINCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIERlZmluZXMNCi0gKi8NCi0jZGVmaW5lIFRYX0NPTVBMRVRFICAgICAgICAgICAgMHUNCi0jZGVmaW5lIFRYX0ZJRk9fU0laRSAgICAgICAgICAgMTZ1DQotDQotI2RlZmluZSBGQ1JfVFJJR19MRVZFTF9NQVNLICAgIDB4QzB1DQotDQotI2RlZmluZSBJSVJGX01BU0sgICAgICAgICAgICAgIDB4MEZ1DQotDQotI2RlZmluZSBJTlZBTElEX0lOVEVSUlVQVCAgICAgIDB1DQotI2RlZmluZSBJTlZBTElEX0lSUV9IQU5ETEVSICAgICgobXNzX3VhcnRfaXJxX2hhbmRsZXJfdCkgMCkNCi0jZGVmaW5lIE5VTExfSEFORExFUiAgICAgICAgICAgKChtc3NfdWFydF9pcnFfaGFuZGxlcl90KSAwKQ0KLQ0KLSNkZWZpbmUgTVNTX1VBUlRfREFUQV9SRUFEWSAgICAoKHVpbnQ4X3QpIDB4MDEpDQotDQotI2RlZmluZSBTWU5DX0FTWU5DX01PREVfTUFTSyAgICgweDd1KQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogUG9zc2libGUgdmFsdWVzIGZvciBJbnRlcnJ1cHQgSWRlbnRpZmljYXRpb24gUmVnaXN0ZXIgRmllbGQuDQotICovDQotI2RlZmluZSBJSVJGX01PREVNX1NUQVRVUyAgIDB4MDB1DQotI2RlZmluZSBJSVJGX1RIUkUgICAgICAgICAgIDB4MDJ1DQotI2RlZmluZSBJSVJGX01NSSAgICAgICAgICAgIDB4MDN1DQotI2RlZmluZSBJSVJGX1JYX0RBVEEgICAgICAgIDB4MDR1DQotI2RlZmluZSBJSVJGX1JYX0xJTkVfU1RBVFVTIDB4MDZ1DQotI2RlZmluZSBJSVJGX0RBVEFfVElNRU9VVCAgIDB4MEN1DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBSZWNlaXZlciBlcnJvciBzdGF0dXMgbWFzay4NCi0gKi8NCi0jZGVmaW5lIFNUQVRVU19FUlJPUl9NQVNLICAgICggTVNTX1VBUlRfT1ZFUlVOX0VSUk9SIHwgTVNTX1VBUlRfUEFSSVRZX0VSUk9SIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9GUkFNSU5HX0VSUk9SICB8IE1TU19VQVJUX0JSRUFLX0VSUk9SIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9GSUZPX0VSUk9SKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29ydGV4LU0zIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIHRoZSBNU1MgVUFSVA0KLSAqIGRyaXZlci4NCi0gKi8NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBVQVJUMF9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbHNlDQotdm9pZCBVQVJUMF9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbmRpZg0KLQ0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQ0KLV9fYXR0cmlidXRlX18oKF9faW50ZXJydXB0X18pKSB2b2lkIFVBUlQxX0lSUUhhbmRsZXIodm9pZCk7DQotI2Vsc2UNCi12b2lkIFVBUlQxX0lSUUhhbmRsZXIodm9pZCk7DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBMb2NhbCBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIHZvaWQgZ2xvYmFsX2luaXQobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbGluZV9jb25maWcpOw0KLXN0YXRpYyB2b2lkIE1TU19VQVJUX2lzcihtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0KTsNCi1zdGF0aWMgdm9pZCBkZWZhdWx0X3R4X2hhbmRsZXIobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCk7DQotDQotc3RhdGljIHZvaWQgY29uZmlnX2JhdWRfZGl2aXNvcnMNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRyYXRlDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEluc3RhbmNlIGRlZmluaXRpb25zDQotICovDQotbXNzX3VhcnRfaW5zdGFuY2VfdCBnX21zc191YXJ0MDsNCi1tc3NfdWFydF9pbnN0YW5jZV90IGdfbXNzX3VhcnQxOw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogUHVibGljIEZ1bmN0aW9ucw0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90KiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSkNCi17DQotICAgIC8qIFRoZSBkcml2ZXIgZXhwZWN0cyBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEgdG8gYmUgdGhlIG9ubHkNCi0gICAgICogbXNzX3VhcnRfaW5zdGFuY2VfdCBpbnN0YW5jZXMgdXNlZCB0byBpZGVudGlmeSBVQVJUMCBhbmQgVUFSVDEuICovDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgLyogUGVyZm9ybSBnZW5lcmljIGluaXRpYWxpemF0aW9uICovDQotICAgIGdsb2JhbF9pbml0KHRoaXNfdWFydCwgYmF1ZF9yYXRlLCBsaW5lX2NvbmZpZyk7DQotDQotICAgIC8qIERpc2FibGUgTElOIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsIEVMSU4pOw0KLQ0KLSAgICAvKiBEaXNhYmxlIElyREEgbW9kZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSwgRUlSRCk7DQotDQotICAgIC8qIERpc2FibGUgU21hcnRDYXJkIE1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsIEVFUlIpOw0KLQ0KLSAgICAvKiBzZXQgZGVmYXVsdCB0eCBoYW5kbGVyIGZvciBhdXRvbWF0ZWQgVFggdXNpbmcgaW50ZXJydXB0IGluIFVTQVJUIG1vZGUgKi8NCi0gICAgdGhpc191YXJ0LT50eF9oYW5kbGVyID0gZGVmYXVsdF90eF9oYW5kbGVyOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19VQVJUX2xpbl9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90KiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSkNCi17DQotICAgIC8qIFRoZSBkcml2ZXIgZXhwZWN0cyBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEgdG8gYmUgdGhlIG9ubHkNCi0gICAgICogbXNzX3VhcnRfaW5zdGFuY2VfdCBpbnN0YW5jZXMgdXNlZCB0byBpZGVudGlmeSBVQVJUMCBhbmQgVUFSVDEuICovDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgLyogUGVyZm9ybSBnZW5lcmljIGluaXRpYWxpemF0aW9uICovDQotICAgIGdsb2JhbF9pbml0KHRoaXNfdWFydCwgYmF1ZF9yYXRlLCBsaW5lX2NvbmZpZyk7DQotDQotICAgICAvKiBFbmFibGUgTElOIG1vZGUgKi8NCi0gICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLCBFTElOKTsNCi0NCi0gICAgLyogRGlzYWJsZSBJckRBIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsIEVJUkQpOw0KLQ0KLSAgICAvKiBEaXNhYmxlIFNtYXJ0Q2FyZCBNb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLCBFRVJSKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2lyZGFfaW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcsDQotICAgIG1zc191YXJ0X3J6aV9wb2xhcml0eV90IHJ4cG9sLA0KLSAgICBtc3NfdWFydF9yemlfcG9sYXJpdHlfdCB0eHBvbCwNCi0gICAgbXNzX3VhcnRfcnppX3B1bHNld2lkdGhfdCBwdw0KLSkNCi17DQotICAgIC8qIFRoZSBkcml2ZXIgZXhwZWN0cyBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEgdG8gYmUgdGhlIG9ubHkNCi0gICAgICogbXNzX3VhcnRfaW5zdGFuY2VfdCBpbnN0YW5jZXMgdXNlZCB0byBpZGVudGlmeSBVQVJUMCBhbmQgVUFSVDEuICovDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgLyogUGVyZm9ybSBnZW5lcmljIGluaXRpYWxpemF0aW9uICovDQotICAgIGdsb2JhbF9pbml0KHRoaXNfdWFydCwgYmF1ZF9yYXRlLCBsaW5lX2NvbmZpZyk7DQotDQotICAgICAvKiBFbmFibGUgTElOIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsIEVMSU4pOw0KLQ0KLSAgICAvKiBEaXNhYmxlIElyREEgbW9kZSAqLw0KLSAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsIEVJUkQpOw0KLSAgICAoKHJ4cG9sID09IE1TU19VQVJUX0FDVElWRV9MT1cpID8gY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRUlSWCkgOg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVJUlgpKTsNCi0NCi0gICAgKCh0eHBvbCA9PSBNU1NfVUFSVF9BQ1RJVkVfTE9XKSA/IGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVJVFgpIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFSVRYKSk7DQotDQotICAgICgocHcgPT0gTVNTX1VBUlRfM19CWV8xNikgPyBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFSVRQKSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRUlUUCkpOw0KLSAgICAvKiBEaXNhYmxlIFNtYXJ0Q2FyZCBNb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLCBFRVJSKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NtYXJ0Y2FyZF9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90KiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSkNCi17DQotICAgIC8qIFRoZSBkcml2ZXIgZXhwZWN0cyBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEgdG8gYmUgdGhlIG9ubHkNCi0gICAgICogbXNzX3VhcnRfaW5zdGFuY2VfdCBpbnN0YW5jZXMgdXNlZCB0byBpZGVudGlmeSBVQVJUMCBhbmQgVUFSVDEuICovDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgLyogUGVyZm9ybSBnZW5lcmljIGluaXRpYWxpemF0aW9uICovDQotICAgIGdsb2JhbF9pbml0KHRoaXNfdWFydCwgYmF1ZF9yYXRlLCBsaW5lX2NvbmZpZyk7DQotDQotICAgIC8qIERpc2FibGUgTElOIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsIEVMSU4pOw0KLQ0KLSAgICAvKiBEaXNhYmxlIElyREEgbW9kZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSwgRUlSRCk7DQotDQotICAgIC8qIEVuYWJsZSBTbWFydENhcmQgTW9kZSA6IE9ubHkgd2hlbiBkYXRhIGlzIDgtYml0IGFuZCAyIHN0b3AgYml0cyovDQotICAgIGlmKCAoIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfVFdPX1NUT1BfQklUUykgPT0NCi0gICAgICAgIChsaW5lX2NvbmZpZyAmIChNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX1RXT19TVE9QX0JJVFMpKSkNCi0gICAgew0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLCBFRVJSKTsNCi0gICAgICAgIC8qIEVuYWJsZSBzaW5nbGUgd2lyZSBoYWxmLWR1cGxleCBtb2RlICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRVNXTSk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3BvbGxlZF90eA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHBidWZmLA0KLSAgICB1aW50MzJfdCB0eF9zaXplDQotKQ0KLXsNCi0gICAgdWludDMyX3QgY2hhcl9pZHggPSAwdTsNCi0gICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLSAgICB1aW50OF90IHN0YXR1czsNCi0NCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQocGJ1ZmYgIT0gKCAodWludDhfdCAqKTApKTsNCi0gICAgQVNTRVJUKHR4X3NpemUgPiAwdSk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAgKHBidWZmICE9ICgodWludDhfdCAqKTApKSAmJiAodHhfc2l6ZSA+IDB1KSkNCi0gICAgew0KLSAgICAgICAgIC8qIFJlbWFpbiBpbiB0aGlzIGxvb3AgdW50aWwgdGhlIGVudGlyZSBpbnB1dCBidWZmZXINCi0gICAgICAgICAgKiBoYXMgYmVlbiB0cmFuc2ZlcnJlZCB0byB0aGUgVUFSVC4NCi0gICAgICAgICAgKi8NCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICAvKiBSZWFkIHRoZSBMaW5lIFN0YXR1cyBSZWdpc3RlciBhbmQgdXBkYXRlIHRoZSBzdGlja3kgcmVjb3JkICovDQotICAgICAgICAgICAgc3RhdHVzID0gdGhpc191YXJ0LT5od19yZWctPkxTUjsNCi0gICAgICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotDQotICAgICAgICAgICAgLyogQ2hlY2sgaWYgVFggRklGTyBpcyBlbXB0eS4gKi8NCi0gICAgICAgICAgICBpZihzdGF0dXMgJiBNU1NfVUFSVF9USFJFKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDMyX3QgZmlsbF9zaXplID0gVFhfRklGT19TSVpFOw0KLQ0KLSAgICAgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmFuc21pdC4gKi8NCi0gICAgICAgICAgICAgICAgaWYodHhfc2l6ZSA8IFRYX0ZJRk9fU0laRSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZmlsbF9zaXplID0gdHhfc2l6ZTsNCi0gICAgICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgICAgICAvKiBGaWxsIHRoZSBUWCBGSUZPIHdpdGggdGhlIGNhbGN1bGF0ZWQgdGhlIG51bWJlciBvZiBieXRlcy4gKi8NCi0gICAgICAgICAgICAgICAgZm9yKHNpemVfc2VudCA9IDB1OyBzaXplX3NlbnQgPCBmaWxsX3NpemU7ICsrc2l6ZV9zZW50KQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAvKiBTZW5kIG5leHQgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIuICovDQotICAgICAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+VEhSID0gcGJ1ZmZbY2hhcl9pZHhdOw0KLSAgICAgICAgICAgICAgICAgICAgY2hhcl9pZHgrKzsNCi0gICAgICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiB1bnRyYW5zbWl0dGVkIGJ5dGVzIHJlbWFpbmluZy4gKi8NCi0gICAgICAgICAgICAgICAgdHhfc2l6ZSAtPSBzaXplX3NlbnQ7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfSB3aGlsZSh0eF9zaXplKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfcG9sbGVkX3R4X3N0cmluZw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfc3pfc3RyaW5nDQotKQ0KLXsNCi0gICAgdWludDMyX3QgY2hhcl9pZHggPSAwdTsNCi0gICAgdWludDMyX3QgZmlsbF9zaXplOw0KLSAgICB1aW50OF90IGRhdGFfYnl0ZTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKHBfc3pfc3RyaW5nICE9ICgodWludDhfdCAqKTApKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChwX3N6X3N0cmluZyAhPSAoKHVpbnQ4X3QgKikwKSkpDQotICAgIHsNCi0gICAgICAgIC8qIEdldCB0aGUgZmlyc3QgZGF0YSBieXRlIGZyb20gdGhlIGlucHV0IGJ1ZmZlciAqLw0KLSAgICAgICAgZGF0YV9ieXRlID0gcF9zel9zdHJpbmdbY2hhcl9pZHhdOw0KLQ0KLSAgICAgICAgLyogRmlyc3QgY2hlY2sgZm9yIHRoZSBOVUxMIHRlcm1pbmF0b3IgYnl0ZS4NCi0gICAgICAgICAqIFRoZW4gcmVtYWluIGluIHRoaXMgbG9vcCB1bnRpbCB0aGUgZW50aXJlIHN0cmluZyBpbiB0aGUgaW5wdXQgYnVmZmVyDQotICAgICAgICAgKiBoYXMgYmVlbiB0cmFuc2ZlcnJlZCB0byB0aGUgVUFSVC4NCi0gICAgICAgICAqLw0KLSAgICAgICAgd2hpbGUoMHUgIT0gZGF0YV9ieXRlKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIFdhaXQgdW50aWwgVFggRklGTyBpcyBlbXB0eS4gKi8NCi0gICAgICAgICAgICBkbyB7DQotICAgICAgICAgICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+c3RhdHVzIHw9IHN0YXR1czsNCi0gICAgICAgICAgICB9IHdoaWxlICgwdSA9PSAoc3RhdHVzICYgTVNTX1VBUlRfVEhSRSkpOw0KLQ0KLSAgICAgICAgICAgIC8qIFNlbmQgYnl0ZXMgZnJvbSB0aGUgaW5wdXQgYnVmZmVyIHVudGlsIHRoZSBUWCBGSUZPIGlzIGZ1bGwNCi0gICAgICAgICAgICAgKiBvciB3ZSByZWFjaCB0aGUgTlVMTCB0ZXJtaW5hdG9yIGJ5dGUuDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgZmlsbF9zaXplID0gMHU7DQotICAgICAgICAgICAgd2hpbGUoKDB1ICE9IGRhdGFfYnl0ZSkgJiYgKGZpbGxfc2l6ZSA8IFRYX0ZJRk9fU0laRSkpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAvKiBTZW5kIHRoZSBkYXRhIGJ5dGUgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPlRIUiA9IGRhdGFfYnl0ZTsNCi0gICAgICAgICAgICAgICAgKytmaWxsX3NpemU7DQotICAgICAgICAgICAgICAgIGNoYXJfaWR4Kys7DQotICAgICAgICAgICAgICAgIC8qIEdldCB0aGUgbmV4dCBkYXRhIGJ5dGUgZnJvbSB0aGUgaW5wdXQgYnVmZmVyICovDQotICAgICAgICAgICAgICAgIGRhdGFfYnl0ZSA9IHBfc3pfc3RyaW5nW2NoYXJfaWR4XTsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2lycV90eA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHBidWZmLA0KLSAgICB1aW50MzJfdCB0eF9zaXplDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQocGJ1ZmYgIT0gKCh1aW50OF90ICopMCkpOw0KLSAgICBBU1NFUlQodHhfc2l6ZSA+IDB1KTsNCi0NCi0gICAgaWYoKHR4X3NpemUgPiAwdSkgJiYgKCBwYnVmZiAhPSAoKHVpbnQ4X3QgKikwKSkgJiYNCi0gICAgICAoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkpDQotICAgIHsNCi0gICAgICAgIC8qSW5pdGlhbGlzZSB0aGUgdHJhbnNtaXQgaW5mbyBmb3IgdGhlIFVBUlQgaW5zdGFuY2Ugd2l0aCB0aGUgYXJndW1lbnRzLiovDQotICAgICAgICB0aGlzX3VhcnQtPnR4X2J1ZmZlciA9IHBidWZmOw0KLSAgICAgICAgdGhpc191YXJ0LT50eF9idWZmX3NpemUgPSB0eF9zaXplOw0KLSAgICAgICAgdGhpc191YXJ0LT50eF9pZHggPSAodWludDE2X3QpMDsNCi0NCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgLyogYXNzaWduIGRlZmF1bHQgaGFuZGxlciBmb3IgZGF0YSB0cmFuc2ZlciAqLw0KLSAgICAgICAgdGhpc191YXJ0LT50eF9oYW5kbGVyID0gZGVmYXVsdF90eF9oYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogZW5hYmxlcyBUWCBpbnRlcnJ1cHQgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFVEJFSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLWludDhfdA0KLU1TU19VQVJUX3R4X2NvbXBsZXRlDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgaW50OF90IHJldF92YWx1ZSA9IDA7DQotICAgIHVpbnQ4X3Qgc3RhdHVzID0gMHU7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogUmVhZCB0aGUgTGluZSBTdGF0dXMgUmVnaXN0ZXIgYW5kIHVwZGF0ZSB0aGUgc3RpY2t5IHJlY29yZC4gKi8NCi0gICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotDQotICAgICAgICBpZigoVFhfQ09NUExFVEUgPT0gdGhpc191YXJ0LT50eF9idWZmX3NpemUpICYmDQotICAgICAgICAgICAoKHN0YXR1cyAmIE1TU19VQVJUX1RFTVQpICE9IDB1KSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICByZXRfdmFsdWUgPSAoaW50OF90KTE7DQotICAgICAgICB9DQotICAgIH0NCi0gICAgcmV0dXJuIHJldF92YWx1ZTsNCi19DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotc2l6ZV90DQotTVNTX1VBUlRfZ2V0X3J4DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50OF90ICogcnhfYnVmZiwNCi0gICAgc2l6ZV90IGJ1ZmZfc2l6ZQ0KLSkNCi17DQotICAgIHNpemVfdCByeF9zaXplID0gMHU7DQotICAgIHVpbnQ4X3Qgc3RhdHVzID0gMHU7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKHJ4X2J1ZmYgIT0gKCh1aW50OF90ICopMCkpOw0KLSAgICBBU1NFUlQoYnVmZl9zaXplID4gMHUpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKHJ4X2J1ZmYgIT0gKCh1aW50OF90ICopMCkpICYmIChidWZmX3NpemUgPiAwdSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotDQotICAgICAgICB3aGlsZSgoKHN0YXR1cyAmIE1TU19VQVJUX0RBVEFfUkVBRFkpICE9IDB1KSAmJg0KLSAgICAgICAgICAgICAgKHJ4X3NpemUgPCBidWZmX3NpemUpKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHJ4X2J1ZmZbcnhfc2l6ZV0gPSB0aGlzX3VhcnQtPmh3X3JlZy0+UkJSOw0KLSAgICAgICAgICAgICsrcnhfc2l6ZTsNCi0gICAgICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgICAgIHRoaXNfdWFydC0+c3RhdHVzIHw9IHN0YXR1czsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICByZXR1cm4gcnhfc2l6ZTsNCi19DQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2VuYWJsZV9pcnENCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV90IGlycV9tYXNrDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoTVNTX1VBUlRfSU5WQUxJRF9JUlEgPiBpcnFfbWFzayk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9JUlEgPiBpcnFfbWFzaykpDQotICAgIHsNCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgLyogaXJxX21hc2sgZW5jb2Rpbmc6IDEtIGVuYWJsZQ0KLSAgICAgICAgICogYml0IDAgLSBSZWNlaXZlIERhdGEgQXZhaWxhYmxlIEludGVycnVwdA0KLSAgICAgICAgICogYml0IDEgLSBUcmFuc21pdHRlciBIb2xkaW5nICBSZWdpc3RlciBFbXB0eSBJbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCAyIC0gUmVjZWl2ZXIgTGluZSBTdGF0dXMgSW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgMyAtIE1vZGVtIFN0YXR1cyBJbnRlcnJ1cHQNCi0gICAgICAgICAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPklFUiB8PSAodWludDhfdClpcnFfbWFzayAmIElJUkZfTUFTSzsNCi0NCi0gICAgICAgIC8qDQotICAgICAgICAgKiBiaXQgNCAtIFJlY2VpdmVyIHRpbWUtb3V0IGludGVycnVwdA0KLSAgICAgICAgICogYml0IDUgLSBOQUNLIC8gRVJSIHNpZ25hbCBpbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCA2IC0gUElEIHBhcml0eSBlcnJvciBpbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCA3IC0gTElOIGJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCA4IC0gTElOIFN5bmMgZGV0ZWN0aW9uIGludGVycnVwdA0KLSAgICAgICAgICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+SUVNIHw9ICh1aW50OF90KSgoKHVpbnQzMl90KWlycV9tYXNrICYgfigodWludDMyX3QpSUlSRl9NQVNLKSkgPj4gNHUpOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIENvcnRleC1NMyBOVklDLiAqLw0KLSAgICAgICAgTlZJQ19FbmFibGVJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9pcnENCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV90IGlycV9tYXNrDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBpcnFfbWFzayBlbmNvZGluZzogMSAtIGRpc2FibGUNCi0gICAgICAgICAqIGJpdCAwIC0gUmVjZWl2ZSBEYXRhIEF2YWlsYWJsZSBJbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCAxIC0gVHJhbnNtaXR0ZXIgSG9sZGluZyAgUmVnaXN0ZXIgRW1wdHkgSW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgMiAtIFJlY2VpdmVyIExpbmUgU3RhdHVzIEludGVycnVwdA0KLSAgICAgICAgICogYml0IDMgLSBNb2RlbSBTdGF0dXMgSW50ZXJydXB0DQotICAgICAgICAgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5JRVIgJj0gKCh1aW50OF90KSh+KCh1aW50MzJfdClpcnFfbWFzayAmICh1aW50MzJfdClJSVJGX01BU0spKSk7DQotDQotICAgICAgICAvKg0KLSAgICAgICAgICogYml0IDQgLSBSZWNlaXZlciB0aW1lLW91dCBpbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCA1IC0gTkFDSyAvIEVSUiBzaWduYWwgaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgNiAtIFBJRCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgNyAtIExJTiBicmVhayBkZXRlY3Rpb24gaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgOCAtIExJTiBTeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQNCi0gICAgICAgICAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPklFTSB8PSAodWludDhfdCkofigoKHVpbnQzMl90KWlycV9tYXNrICYgfigodWludDMyX3QpSUlSRl9NQVNLKSkgPj4gOHUpKTsNCi0NCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgaWYoaXJxX21hc2sgPT0gSUlSRl9NQVNLKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIERpc2FibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICAgICAgTlZJQ19EaXNhYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotDQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9yeF9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogICAgICAgdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90ICAgICAgaGFuZGxlciwNCi0gICAgbXNzX3VhcnRfcnhfdHJpZ19sZXZlbF90ICAgIHRyaWdnZXJfbGV2ZWwNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIgKTsNCi0gICAgQVNTRVJUKHRyaWdnZXJfbGV2ZWwgPCBNU1NfVUFSVF9GSUZPX0lOVkFMSURfVFJJR19MRVZFTCk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKSAmJg0KLSAgICAgICAodHJpZ2dlcl9sZXZlbCA8IE1TU19VQVJUX0ZJRk9fSU5WQUxJRF9UUklHX0xFVkVMKSkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5yeF9oYW5kbGVyID0gaGFuZGxlcjsNCi0NCi0gICAgICAgIC8qIFNldCB0aGUgcmVjZWl2ZSBpbnRlcnJ1cHQgdHJpZ2dlciBsZXZlbC4gKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5GQ1IgPSAodGhpc191YXJ0LT5od19yZWctPkZDUiAmDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QpKH4oKHVpbnQ4X3QpRkNSX1RSSUdfTEVWRUxfTUFTSykpKSB8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QpdHJpZ2dlcl9sZXZlbDsNCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIHJlY2VpdmUgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVSLEVSQkZJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9sb29wYmFjaw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqICAgdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9sb29wYmFja190ICAgICBsb29wYmFjaw0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKE1TU19VQVJUX0lOVkFMSURfTE9PUEJBQ0sgPiBsb29wYmFjayk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSB8fA0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9MT09QQkFDSyA+IGxvb3BiYWNrKSkNCi0gICAgew0KLSAgICAgICAgc3dpdGNoKGxvb3BiYWNrKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGNhc2UgTVNTX1VBUlRfTE9DQUxfTE9PUEJBQ0tfT0ZGOg0KLSAgICAgICAgICAgICAgICAvKiBEaXNhYmxlIGxvY2FsIGxvb3BiYWNrICovDQotICAgICAgICAgICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TUNSLExPT1ApOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09OOg0KLSAgICAgICAgICAgICAgICAvKiBFbmFibGUgbG9jYWwgbG9vcGJhY2sgKi8NCi0gICAgICAgICAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TUNSLExPT1ApOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIE1TU19VQVJUX1JFTU9URV9MT09QQkFDS19PRkY6DQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9BVVRPX0VDSE9fT0ZGOg0KLSAgICAgICAgICAgICAgICAvKiBEaXNhYmxlIHJlbW90ZSBsb29wYmFjayAmIGF1dG9tYXRpYyBlY2hvKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPk1DUiAmPSB+UkxPT1BfTUFTSzsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9SRU1PVEVfTE9PUEJBQ0tfT046DQotICAgICAgICAgICAgICAgIC8qIEVuYWJsZSByZW1vdGUgbG9vcGJhY2sgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPk1DUiB8PSAoMXUgPDwgUkxPT1ApOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIE1TU19VQVJUX0FVVE9fRUNIT19PTjoNCi0gICAgICAgICAgICAgICAgLyogRW5hYmxlIGF1dG9tYXRpYyBlY2hvICovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5NQ1IgfD0gKDF1IDw8IEVDSE8pOw0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIE1TU19VQVJUX0lOVkFMSURfTE9PUEJBQ0s6DQotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byBkZWZhdWx0LiAqLw0KLSAgICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgICAgIEFTU0VSVCgwKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBVQVJUMCBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLg0KLSAqIFVBUlQwX0lSUUhhbmRsZXIgaXMgaW5jbHVkZWQgd2l0aGluIHRoZSBDb3J0ZXgtTTMgdmVjdG9yIHRhYmxlIGFzIHBhcnQgb2YgdGhlDQotICogRnVzaW9uIDIgQ01TSVMuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgVUFSVDBfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbHNlDQotdm9pZCBVQVJUMF9JUlFIYW5kbGVyKHZvaWQpDQotI2VuZGlmDQotew0KLSAgICBNU1NfVUFSVF9pc3IoJmdfbXNzX3VhcnQwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBVQVJUMSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLg0KLSAqIFVBUlQyX0lSUUhhbmRsZXIgaXMgaW5jbHVkZWQgd2l0aGluIHRoZSBDb3J0ZXgtTTMgdmVjdG9yIHRhYmxlIGFzIHBhcnQgb2YgdGhlDQotICogRnVzaW9uIDIgQ01TSVMuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgVUFSVDFfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbHNlDQotdm9pZCBVQVJUMV9JUlFIYW5kbGVyKHZvaWQpDQotI2VuZGlmDQotew0KLSAgICBNU1NfVUFSVF9pc3IoJmdfbXNzX3VhcnQxKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9yeHN0YXR1c19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+bGluZXN0c19oYW5kbGVyID0gaGFuZGxlcjsNCi0NCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIHJlY2VpdmVyIGxpbmUgc3RhdHVzIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFTFNJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF90eF9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+dHhfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBNYWtlIFRYIGJ1ZmZlciBpbmZvIGludmFsaWQgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+dHhfYnVmZmVyID0gKGNvbnN0IHVpbnQ4X3QgKikwOw0KLSAgICAgICAgdGhpc191YXJ0LT50eF9idWZmX3NpemUgPSAwdTsNCi0NCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIHRyYW5zbWl0dGVyIGhvbGRpbmcgcmVnaXN0ZXIgRW1wdHkgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVSLEVUQkVJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+bW9kZW1zdHNfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBtb2RlbSBzdGF0dXMgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVSLEVEU1NJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotc2l6ZV90DQotTVNTX1VBUlRfZmlsbF90eF9maWZvDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBjb25zdCB1aW50OF90ICogdHhfYnVmZmVyLA0KLSAgICBzaXplX3QgdHhfc2l6ZQ0KLSkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzID0gMHU7DQotICAgIHNpemVfdCBzaXplX3NlbnQgPSAwdTsNCi0NCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQodHhfYnVmZmVyICE9ICggKHVpbnQ4X3QgKikwKSk7DQotICAgIEFTU0VSVCh0eF9zaXplID4gMCk7DQotDQotICAgIC8qIEZpbGwgdGhlIFVBUlQncyBUeCBGSUZPIHVudGlsIHRoZSBGSUZPIGlzIGZ1bGwgb3IgdGhlIGNvbXBsZXRlIGlucHV0DQotICAgICAqIGJ1ZmZlciBoYXMgYmVlbiB3cml0dGVuLiAqLw0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKHR4X2J1ZmZlciAhPSAoKHVpbnQ4X3QgKikwKSkgICAmJg0KLSAgICAgICAodHhfc2l6ZSA+IDB1KSkNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gdGhpc191YXJ0LT5od19yZWctPkxTUjsNCi0gICAgICAgIHRoaXNfdWFydC0+c3RhdHVzIHw9IHN0YXR1czsNCi0NCi0gICAgICAgIGlmKHN0YXR1cyAmIE1TU19VQVJUX1RIUkUpDQotICAgICAgICB7DQotICAgICAgICAgICAgdWludDMyX3QgZmlsbF9zaXplID0gVFhfRklGT19TSVpFOw0KLQ0KLSAgICAgICAgICAgIGlmKHR4X3NpemUgPCBUWF9GSUZPX1NJWkUpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBmaWxsX3NpemUgPSB0eF9zaXplOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAvKiBGaWxsIHVwIEZJRk8gKi8NCi0gICAgICAgICAgICBmb3Ioc2l6ZV9zZW50ID0gMHU7IHNpemVfc2VudCA8IGZpbGxfc2l6ZTsgKytzaXplX3NlbnQpDQotICAgICAgICAgICAgew0KLQ0KLSAgICAgICAgICAgICAgICAvKiBTZW5kIG5leHQgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIuICovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5USFIgPSB0eF9idWZmZXJbc2l6ZV9zZW50XTsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0NCi0gICAgcmV0dXJuIHNpemVfc2VudDsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdWludDhfdA0KLU1TU19VQVJUX2dldF9yeF9zdGF0dXMNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICB1aW50OF90IHN0YXR1cyA9IE1TU19VQVJUX0lOVkFMSURfUEFSQU07DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIEV4dHJhY3QgVUFSVCByZWNlaXZlIGVycm9yIHN0YXR1cy4NCi0gICAgICAgICAqIEJpdCAxIC0gT3ZlcmZsb3cgZXJyb3Igc3RhdHVzDQotICAgICAgICAgKiBCaXQgMiAtIFBhcml0eSBlcnJvciBzdGF0dXMNCi0gICAgICAgICAqIEJpdCAzIC0gRnJhbWUgZXJyb3Igc3RhdHVzDQotICAgICAgICAgKiBCaXQgNCAtIEJyZWFrIGludGVycnVwdCBpbmRpY2F0b3INCi0gICAgICAgICAqIEJpdCA3IC0gRklGTyBkYXRhIGVycm9yIHN0YXR1cw0KLSAgICAgICAgICovDQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSAodGhpc191YXJ0LT5od19yZWctPkxTUik7DQotICAgICAgICBzdGF0dXMgPSAodGhpc191YXJ0LT5zdGF0dXMgJiBTVEFUVVNfRVJST1JfTUFTSyk7DQotICAgICAgICAvKiBDbGVhciB0aGUgc3RpY2t5IHN0YXR1cyBhZnRlciByZWFkaW5nICovDQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyA9IDB1Ow0KLSAgICB9DQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXMgPSBNU1NfVUFSVF9JTlZBTElEX1BBUkFNOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBFeHRyYWN0IFVBUlQgbW9kZW0gc3RhdHVzIGFuZCBwbGFjZSBpbiBsb3dlciBiaXRzIG9mICJzdGF0dXMiLg0KLSAgICAgICAgICogQml0IDAgLSBEZWx0YSBDbGVhciB0byBTZW5kIEluZGljYXRvcg0KLSAgICAgICAgICogQml0IDEgLSBEZWx0YSBDbGVhciB0byBSZWNlaXZlIEluZGljYXRvcg0KLSAgICAgICAgICogQml0IDIgLSBUcmFpbGluZyBlZGdlIG9mIFJpbmcgSW5kaWNhdG9yIGRldGVjdG9yDQotICAgICAgICAgKiBCaXQgMyAtIERlbHRhIERhdGEgQ2FycmllciBEZXRlY3QgaW5kaWNhdG9yDQotICAgICAgICAgKiBCaXQgNCAtIENsZWFyIFRvIFNlbmQNCi0gICAgICAgICAqIEJpdCA1IC0gRGF0YSBTZXQgUmVhZHkNCi0gICAgICAgICAqIEJpdCA2IC0gUmluZyBJbmRpY2F0b3INCi0gICAgICAgICAqIEJpdCA3IC0gRGF0YSBDYXJyaWVyIERldGVjdA0KLSAgICAgICAgICovDQotICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TVNSOw0KLSAgICB9DQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cy4NCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdWludDhfdA0KLU1TU19VQVJUX2dldF90eF9zdGF0dXMNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICB1aW50OF90IHN0YXR1cyA9IE1TU19VQVJUX1RYX0JVU1k7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogUmVhZCB0aGUgTGluZSBTdGF0dXMgUmVnaXN0ZXIgYW5kIHVwZGF0ZSB0aGUgc3RpY2t5IHJlY29yZC4gKi8NCi0gICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotICAgICAgICAvKg0KLSAgICAgICAgICogRXh0cmFjdCB0aGUgdHJhbnNtaXQgc3RhdHVzIGJpdHMgZnJvbSB0aGUgVUFSVCdzIExpbmUgU3RhdHVzIFJlZ2lzdGVyLg0KLSAgICAgICAgICogQml0IDUgLSBUcmFuc21pdHRlciBIb2xkaW5nIFJlZ2lzdGVyL0ZJRk8gRW1wdHkgKFRIUkUpIHN0YXR1cy4gKElmID0gMSwgVFggRklGTyBpcyBlbXB0eSkNCi0gICAgICAgICAqIEJpdCA2IC0gVHJhbnNtaXR0ZXIgRW1wdHkgKFRFTVQpIHN0YXR1cy4gKElmID0gMSwgYm90aCBUWCBGSUZPIGFuZCBzaGlmdCByZWdpc3RlciBhcmUgZW1wdHkpDQotICAgICAgICAgKi8NCi0gICAgICAgIHN0YXR1cyAmPSAoTVNTX1VBUlRfVEhSRSB8IE1TU19VQVJUX1RFTVQpOw0KLSAgICB9DQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfYnJlYWsNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIHNldCBicmVhayBjaGFyZWN0ZXIgb24gVHggbGluZSAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TENSLFNCKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfY2xlYXJfYnJlYWsNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIHJlbW92ZSBicmVhayBjaGFyZWN0ZXIgZnJvbSBUeCBsaW5lICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixTQik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9waWRwZWlfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPnBpZF9wZWlfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoIHRoaXNfdWFydC0+aXJxbiApOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIFBJRCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVNLEVQSURfUEVJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9saW5icmVha19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+YnJlYWtfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoIHRoaXNfdWFydC0+aXJxbiApOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIExJTiBicmVhayBkZXRlY3Rpb24gaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVNLEVMSU5CSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbGluc3luY19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+c3luY19oYW5kbGVyID0gaGFuZGxlcjsNCi0NCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBpbnRlcnJ1cHRzICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUSggdGhpc191YXJ0LT5pcnFuICk7DQotDQotICAgICAgICAvKiBFbmFibGUgTElOIHN5bmMgZGV0ZWN0aW9uIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFTSxFTElOU0kpOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIENvcnRleC1NMyBOVklDLiAqLw0KLSAgICAgICAgTlZJQ19FbmFibGVJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X25hY2tfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPm5hY2tfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoIHRoaXNfdWFydC0+aXJxbiApOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIExJTiBzeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQuICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JRU0sRU5BQ0tJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9yeF90aW1lb3V0X2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUik7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKSkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5ydG9faGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoIHRoaXNfdWFydC0+aXJxbiApOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIHJlY2VpdmVyIHRpbWVvdXQgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVNLEVSVE9JKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2VuYWJsZV9oYWxmX2R1cGxleA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogZW5hYmxlIHNpbmdsZSB3aXJlIGhhbGYtZHVwbGV4IG1vZGUgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFU1dNKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9oYWxmX2R1cGxleA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogZW5hYmxlIHNpbmdsZSB3aXJlIGhhbGYtZHVwbGV4IG1vZGUgKi8NCi0gICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLEVTV00pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfZW5kaWFuDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9lbmRpYW5fdCBlbmRpYW4NCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChNU1NfVUFSVF9JTlZBTElEX0VORElBTiA+IGVuZGlhbik7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9FTkRJQU4gPiBlbmRpYW4pKQ0KLSAgICB7DQotICAgICAgICAvKiBDb25maWd1cmUgTVNCIGZpcnN0IC8gTFNCIGZpcnN0IGZvciByZWNlaXZlciAqLw0KLSAgICAgICAgKChNU1NfVUFSVF9MSVRUTEVFTkQgPT0gZW5kaWFuKSA/IChjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9SWCkpIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVfTVNCX1JYKSkpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfdHhfZW5kaWFuDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9lbmRpYW5fdCBlbmRpYW4NCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChNU1NfVUFSVF9JTlZBTElEX0VORElBTiA+IGVuZGlhbik7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9FTkRJQU4gPiBlbmRpYW4pKQ0KLSAgICB7DQotICAgICAgICAvKiBDb25maWd1cmUgTVNCIGZpcnN0IC8gTFNCIGZpcnN0IGZvciB0cmFuc21pdHRlciAqLw0KLSAgICAgICAgKChNU1NfVUFSVF9MSVRUTEVFTkQgPT0gZW5kaWFuKSA/IChjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9UWCkpIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVfTVNCX1RYKSkgKSA7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9maWx0ZXJfbGVuZ3RoDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9maWx0ZXJfbGVuZ3RoX3QgbGVuZ3RoDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoTVNTX1VBUlRfSU5WQUxJRF9GSUxURVJfTEVOR1RIID4gbGVuZ3RoKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChNU1NfVUFSVF9JTlZBTElEX0ZJTFRFUl9MRU5HVEggPiBsZW5ndGgpKQ0KLSAgICB7DQotICAgICAgICAvKiBDb25maWd1cmUgZ2xpdGNoIGZpbHRlciBsZW5ndGggKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5HRlIgPSAodWludDhfdClsZW5ndGg7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2VuYWJsZV9hZm0NCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBEaXNhYmxlIFJYIEZJRk8gdGlsbCBhZGRyZXNzIGZsYWcgd2l0aCBjb3JyZWN0IGFkZHJlc3MgaXMgcmVjZWl2ZWQgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFQUZNKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9hZm0NCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBFbmFibGUgUlggRklGTyBpcnJlc3BlY3RpdmUgb2YgYWRkcmVzcyBmbGFnIGFuZA0KLSAgICAgICAgICAgY29ycmVjdCBhZGRyZXNzIGlzIHJlY2VpdmVkICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFQUZNKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZW5hYmxlX2FmY2xlYXINCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBFbmFibGUgYWRkcmVzcyBmbGFnIGNsZWFyaW5nICovDQotICAgICAgICAvKiBEaXNhYmxlIFJYIEZJRk8gdGlsbCBhbm90aGVyIGFkZHJlc3MgZmxhZyB3aXRoDQotICAgICAgICAgICBjb3JyZWN0IGFkZHJlc3MgaXMgcmVjZWl2ZWQgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFQUZDKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9hZmNsZWFyDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogRGlzYWJsZSBhZGRyZXNzIGZsYWcgY2xlYXJpbmcgKi8NCi0gICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLEVBRkMpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfcnhfdGltZW91dA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCB0aW1lb3V0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBMb2FkIHRoZSByZWNlaXZlIHRpbWVvdXQgdmFsdWUgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5SVE8gPSB0aW1lb3V0Ow0KLSAgICAgICAgLypFbmFibGUgcmVjZWl2ZXIgdGltZS1vdXQgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFUlRPKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9yeF90aW1lb3V0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKkRpc2FibGUgcmVjZWl2ZXIgdGltZS1vdXQgKi8NCi0gICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLEVSVE8pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfdHhfdGltZV9ndWFyZA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCB0aW1lZ3VhcmQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIExvYWQgdGhlIHRyYW5zbWl0dGVyIHRpbWUgZ3VhcmQgdmFsdWUgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5UVEcgPSB0aW1lZ3VhcmQ7DQotICAgICAgICAvKkVuYWJsZSB0cmFuc21pdHRlciB0aW1lIGd1YXJkICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRVRURyk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfdHhfdGltZV9ndWFyZA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLypEaXNhYmxlIHRyYW5zbWl0dGVyIHRpbWUgZ3VhcmQgKi8NCi0gICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLEVUVEcpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfYWRkcmVzcw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCBhZGRyZXNzDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+QURSID0gYWRkcmVzczsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3JlYWR5X21vZGUNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X3JlYWR5X21vZGVfdCBtb2RlDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoTVNTX1VBUlRfSU5WQUxJRF9SRUFEWV9NT0RFID4gbW9kZSk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9SRUFEWV9NT0RFID4gbW9kZSApICkNCi0gICAgew0KLSAgICAgICAgLyogQ29uZmlndXJlIG1vZGUgMCBvciBtb2RlIDEgZm9yIFRYUkRZIGFuZCBSWFJEWSAqLw0KLSAgICAgICAgKChNU1NfVUFSVF9SRUFEWV9NT0RFMCA9PSBtb2RlKSA/IGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+RkNSLFJEWU1PREUpIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5GQ1IsUkRZTU9ERSkgKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIENvbmZpZ3VyZSBiYXVkIGRpdmlzb3JzIHVzaW5nIGZyYWN0aW9uYWwgYmF1ZCByYXRlIGlmIHBvc3NpYmxlLg0KLSAqLw0KLXN0YXRpYyB2b2lkDQotY29uZmlnX2JhdWRfZGl2aXNvcnMNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRyYXRlDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBiYXVkX3ZhbHVlOw0KLSAgICAgICAgdWludDMyX3QgYmF1ZF92YWx1ZV9ieV82NDsNCi0gICAgICAgIHVpbnQzMl90IGJhdWRfdmFsdWVfYnlfMTI4Ow0KLSAgICAgICAgdWludDMyX3QgZnJhY3Rpb25hbF9iYXVkX3ZhbHVlOw0KLSAgICAgICAgdWludDMyX3QgcGNsa19mcmVxOw0KLQ0KLSAgICAgICAgdGhpc191YXJ0LT5iYXVkcmF0ZSA9IGJhdWRyYXRlOw0KLQ0KLSAgICAgICAgLyogRm9yY2UgdGhlIHZhbHVlIG9mIHRoZSBDTVNJUyBnbG9iYWwgdmFyaWFibGVzIGhvbGRpbmcgdGhlIHZhcmlvdXMgc3lzdGVtDQotICAgICAgICAgICogY2xvY2sgZnJlcXVlbmNpZXMgdG8gYmUgdXBkYXRlZC4gKi8NCi0gICAgICAgIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSgpOw0KLSAgICAgICAgaWYodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBwY2xrX2ZyZXEgPSBnX0ZyZXF1ZW5jeVBDTEswOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHBjbGtfZnJlcSA9IGdfRnJlcXVlbmN5UENMSzE7DQotICAgICAgICB9DQotDQotICAgICAgICAvKg0KLSAgICAgICAgICogQ29tcHV0ZSBiYXVkIHZhbHVlIGJhc2VkIG9uIHJlcXVlc3RlZCBiYXVkIHJhdGUgYW5kIFBDTEsgZnJlcXVlbmN5Lg0KLSAgICAgICAgICogVGhlIGJhdWQgdmFsdWUgaXMgY29tcHV0ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoNCi0gICAgICAgICAqICAgICAgYmF1ZF92YWx1ZSA9IFBDTEtfRnJlcXVlbmN5IC8gKGJhdWRfcmF0ZSAqIDE2KQ0KLSAgICAgICAgICovDQotICAgICAgICBiYXVkX3ZhbHVlX2J5XzEyOCA9ICg4dSAqIHBjbGtfZnJlcSkgLyBiYXVkcmF0ZTsNCi0gICAgICAgIGJhdWRfdmFsdWVfYnlfNjQgPSBiYXVkX3ZhbHVlX2J5XzEyOCAvIDJ1Ow0KLSAgICAgICAgYmF1ZF92YWx1ZSA9IGJhdWRfdmFsdWVfYnlfNjQgLyA2NHU7DQotICAgICAgICBmcmFjdGlvbmFsX2JhdWRfdmFsdWUgPSBiYXVkX3ZhbHVlX2J5XzY0IC0gKGJhdWRfdmFsdWUgKiA2NHUpOw0KLSAgICAgICAgZnJhY3Rpb25hbF9iYXVkX3ZhbHVlICs9IChiYXVkX3ZhbHVlX2J5XzEyOCAtIChiYXVkX3ZhbHVlICogMTI4dSkpIC0gKGZyYWN0aW9uYWxfYmF1ZF92YWx1ZSAqIDJ1KTsNCi0NCi0gICAgICAgIC8qIEFzc2VydCBpZiBpbnRlZ2VyIGJhdWQgdmFsdWUgZml0cyBpbiAxNi1iaXQuICovDQotICAgICAgICBBU1NFUlQoYmF1ZF92YWx1ZSA8PSBVSU5UMTZfTUFYKTsNCi0NCi0gICAgICAgIGlmKGJhdWRfdmFsdWUgPD0gKHVpbnQzMl90KVVJTlQxNl9NQVgpDQotICAgICAgICB7DQotICAgICAgICAgICAgaWYoYmF1ZF92YWx1ZSA+IDF1KQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgICAgICogVXNlIEZyYXRpb25hbCBiYXVkIHJhdGUgZGl2aXNvcnMNCi0gICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgIC8qIHNldCBkaXZpc29yIGxhdGNoICovDQotICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixETEFCKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogbXNiIG9mIGJhdWQgdmFsdWUgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkRNUiA9ICh1aW50OF90KShiYXVkX3ZhbHVlID4+IDgpOw0KLSAgICAgICAgICAgICAgICAvKiBsc2Igb2YgYmF1ZCB2YWx1ZSAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+RExSID0gKHVpbnQ4X3QpYmF1ZF92YWx1ZTsNCi0NCi0gICAgICAgICAgICAgICAgLyogcmVzZXQgZGl2aXNvciBsYXRjaCAqLw0KLSAgICAgICAgICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixETEFCKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogRW5hYmxlIEZyYWN0aW9uYWwgYmF1ZCByYXRlICovDQotICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFRkJSKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogTG9hZCB0aGUgZnJhY3Rpb25hbCBiYXVkIHJhdGUgcmVnaXN0ZXIgKi8NCi0gICAgICAgICAgICAgICAgQVNTRVJUKGZyYWN0aW9uYWxfYmF1ZF92YWx1ZSA8PSAodWludDMyX3QpVUlOVDhfTUFYKTsNCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkRGUiA9ICh1aW50OF90KWZyYWN0aW9uYWxfYmF1ZF92YWx1ZTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgICAgICogRG8gTk9UIHVzZSBGcmF0aW9uYWwgYmF1ZCByYXRlIGRpdmlzb3JzLg0KLSAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgLyogc2V0IGRpdmlzb3IgbGF0Y2ggKi8NCi0gICAgICAgICAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TENSLERMQUIpOw0KLQ0KLSAgICAgICAgICAgICAgICAvKiBtc2Igb2YgYmF1ZCB2YWx1ZSAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+RE1SID0gKHVpbnQ4X3QpKGJhdWRfdmFsdWUgPj4gOHUpOw0KLSAgICAgICAgICAgICAgICAvKiBsc2Igb2YgYmF1ZCB2YWx1ZSAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+RExSID0gKHVpbnQ4X3QpYmF1ZF92YWx1ZTsNCi0NCi0gICAgICAgICAgICAgICAgLyogcmVzZXQgZGl2aXNvciBsYXRjaCAqLw0KLSAgICAgICAgICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixETEFCKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogRGlzYWJsZSBGcmFjdGlvbmFsIGJhdWQgcmF0ZSAqLw0KLSAgICAgICAgICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFRkJSKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF91c2FydF9tb2RlDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF91c2FydF9tb2RlX3QgbW9kZQ0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKE1TU19VQVJUX0lOVkFMSURfU1lOQ19NT0RFID4gbW9kZSk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9TWU5DX01PREUgPiBtb2RlKSkNCi0gICAgew0KLSAgICAgICAgLyogTm90aGluZyB0byBkbyBmb3IgdGhlIGJhdWRyYXRlOiBvcGVyYXRlcyBhdCBQQ0xLIC8gMiArIGdsaXRjaCBmaWx0ZXIgbGVuZ3RoICovDQotICAgICAgICAvKiBDbGVhciB0aGUgRVNZTiBiaXRzIDI6MCAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPk1NMCAmPSB+U1lOQ19BU1lOQ19NT0RFX01BU0s7DQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+TU0wIHw9ICh1aW50OF90KW1vZGU7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBMb2NhbCBGdW5jdGlvbnMNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEdsb2JhbCBpbml0aWFsaXphdGlvbiBmb3IgYWxsIG1vZGVzDQotICovDQotc3RhdGljIHZvaWQgZ2xvYmFsX2luaXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSkNCi17DQotICAgIC8qIFRoZSBkcml2ZXIgZXhwZWN0cyBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEgdG8gYmUgdGhlIG9ubHkNCi0gICAgICogbXNzX3VhcnRfaW5zdGFuY2VfdCBpbnN0YW5jZXMgdXNlZCB0byBpZGVudGlmeSBVQVJUMCBhbmQgVUFSVDEuICovDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWcgPSBVQVJUMDsNCi0gICAgICAgIHRoaXNfdWFydC0+aXJxbiA9IFVBUlQwX0lSUW47DQotICAgICAgICAvKiByZXNldCBVQVJUMCAqLw0KLSAgICAgICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiB8PSBTWVNSRUdfTU1VQVJUMF9TT0ZUUkVTRVRfTUFTSzsNCi0gICAgICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBVQVJUMCBpbnRlcnJ1cHQgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKFVBUlQwX0lSUW4pOw0KLSAgICAgICAgLyogVGFrZSBVQVJUMCBvdXQgb2YgcmVzZXQuICovDQotICAgICAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5TWVNSRUdfTU1VQVJUMF9TT0ZUUkVTRVRfTUFTSzsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnID0gVUFSVDE7DQotICAgICAgICB0aGlzX3VhcnQtPmlycW4gPSBVQVJUMV9JUlFuOw0KLSAgICAgICAgLyogUmVzZXQgVUFSVDEgKi8NCi0gICAgICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgfD0gU1lTUkVHX01NVUFSVDFfU09GVFJFU0VUX01BU0s7DQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgVUFSVDEgaW50ZXJydXB0ICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShVQVJUMV9JUlFuKTsNCi0gICAgICAgIC8qIFRha2UgVUFSVDEgb3V0IG9mIHJlc2V0LiAqLw0KLSAgICAgICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+U1lTUkVHX01NVUFSVDFfU09GVFJFU0VUX01BU0s7DQotICAgIH0NCi0NCi0gICAgLyogZGlzYWJsZSBpbnRlcnJ1cHRzICovDQotICAgIHRoaXNfdWFydC0+aHdfcmVnLT5JRVIgPSAwdTsNCi0NCi0gICAgLyogRklGTyBjb25maWd1cmF0aW9uICovDQotICAgIHRoaXNfdWFydC0+aHdfcmVnLT5GQ1IgPSAodWludDhfdClNU1NfVUFSVF9GSUZPX1NJTkdMRV9CWVRFOw0KLSAgICAvKiBjbGVhciByZWNlaXZlciBGSUZPICovDQotICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkZDUixDTEVBUl9SWF9GSUZPKTsNCi0gICAgLyogY2xlYXIgdHJhbnNtaXR0ZXIgRklGTyAqLw0KLSAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5GQ1IsQ0xFQVJfVFhfRklGTyk7DQotDQotICAgIC8qIHNldCBkZWZhdWx0IFJFQURZIG1vZGUgOiBNb2RlIDAqLw0KLSAgICAvKiBlbmFibGUgUlhSRFlOIGFuZCBUWFJEWU4gcGlucy4gVGhlIGVhcmxpZXIgRkNSIHdyaXRlIHRvIHNldCB0aGUgVFggRklGTw0KLSAgICAgKiB0cmlnZ2VyIGxldmVsIGluYWR2ZXJ0ZW50bHkgZGlzYWJsZWQgdGhlIEZDUl9SWFJEWV9UWFJEWU5fRU4gYml0LiAqLw0KLSAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5GQ1IsUlhSRFlfVFhSRFlOX0VOKTsNCi0NCi0gICAgLyogZGlzYWJsZSBsb29wYmFjayA6IGxvY2FsICogcmVtb3RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TUNSLExPT1ApOw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1DUixSTE9PUCk7DQotDQotICAgIC8qIHNldCBkZWZhdWx0IFRYIGVuZGlhbiAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9UWCk7DQotICAgIC8qIHNldCBkZWZhdWx0IFJYIGVuZGlhbiAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9SWCk7DQotDQotICAgIC8qIGRlZmF1bHQgQUZNIDogZGlzYWJsZWQgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRUFGTSk7DQotDQotICAgIC8qIGRpc2FibGUgVFggdGltZSBnYXVyZCAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFVFRHKTsNCi0NCi0gICAgLyogc2V0IGRlZmF1bHQgUlggdGltZW91dCAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFUlRPKTsNCi0NCi0gICAgLyogZGlzYWJsZSBmcmFjdGlvbmFsIGJhdWQtcmF0ZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFRkJSKTsNCi0NCi0gICAgLyogZGlzYWJsZSBzaW5nbGUgd2lyZSBtb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLEVTV00pOw0KLQ0KLSAgICAvKiBzZXQgZmlsdGVyIHRvIG1pbmltdW0gdmFsdWUgKi8NCi0gICAgdGhpc191YXJ0LT5od19yZWctPkdGUiA9IDB1Ow0KLSAgICAvKiBzZXQgZGVmYXVsdCBUWCB0aW1lIGdhdXJkICovDQotICAgIHRoaXNfdWFydC0+aHdfcmVnLT5UVEcgPSAwdTsNCi0gICAgLyogc2V0IGRlZmF1bHQgUlggdGltZW91dCAqLw0KLSAgICB0aGlzX3VhcnQtPmh3X3JlZy0+UlRPID0gMHU7DQotDQotICAgIC8qDQotICAgICAqIENvbmZpZ3VyZSBiYXVkIHJhdGUgZGl2aXNvcnMuIFRoaXMgdXNlcyB0aGUgZnJhdGlvbmFsIGJhdWQgcmF0ZSBkaXZpc29yDQotICAgICAqIHdoZXJlIHBvc3NpYmxlIHRvIHByb3ZpZGUgdGhlIG1vc3QgYWNjdXJhdGUgYmF1ZCByYXQgcG9zc2libGUuDQotICAgICAqLw0KLSAgICBjb25maWdfYmF1ZF9kaXZpc29ycyh0aGlzX3VhcnQsIGJhdWRfcmF0ZSk7DQotDQotICAgIC8qIHNldCB0aGUgbGluZSBjb250cm9sIHJlZ2lzdGVyIChiaXQgbGVuZ3RoLCBzdG9wIGJpdHMsIHBhcml0eSkgKi8NCi0gICAgdGhpc191YXJ0LT5od19yZWctPkxDUiA9IGxpbmVfY29uZmlnOw0KLQ0KLSAgICAvKiBJbnN0YW5jZSBzZXR1cCAqLw0KLSAgICB0aGlzX3VhcnQtPmJhdWRyYXRlID0gYmF1ZF9yYXRlOw0KLSAgICB0aGlzX3VhcnQtPmxpbmVjb25maWcgPSBsaW5lX2NvbmZpZzsNCi0gICAgdGhpc191YXJ0LT50eF9idWZmX3NpemUgPSBUWF9DT01QTEVURTsNCi0gICAgdGhpc191YXJ0LT50eF9idWZmZXIgPSAoY29uc3QgdWludDhfdCAqKTA7DQotICAgIHRoaXNfdWFydC0+dHhfaWR4ID0gMHU7DQotDQotICAgIC8qIERlZmF1bHQgaGFuZGxlcnMgZm9yIE1TUyBVQVJUIGludGVycnVwdHMgKi8NCi0gICAgdGhpc191YXJ0LT5yeF9oYW5kbGVyICAgICAgID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPnR4X2hhbmRsZXIgICAgICAgPSBOVUxMX0hBTkRMRVI7DQotICAgIHRoaXNfdWFydC0+bGluZXN0c19oYW5kbGVyICA9IE5VTExfSEFORExFUjsNCi0gICAgdGhpc191YXJ0LT5tb2RlbXN0c19oYW5kbGVyID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPnJ0b19oYW5kbGVyICAgICAgPSBOVUxMX0hBTkRMRVI7DQotICAgIHRoaXNfdWFydC0+bmFja19oYW5kbGVyICAgICA9IE5VTExfSEFORExFUjsNCi0gICAgdGhpc191YXJ0LT5waWRfcGVpX2hhbmRsZXIgID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPmJyZWFrX2hhbmRsZXIgICAgPSBOVUxMX0hBTkRMRVI7DQotICAgIHRoaXNfdWFydC0+c3luY19oYW5kbGVyICAgICA9IE5VTExfSEFORExFUjsNCi0NCi0gICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RpY2t5IHN0YXR1cyAqLw0KLSAgICB0aGlzX3VhcnQtPnN0YXR1cyA9IDB1Ow0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgdHJpZ2dlcmVkIGJ5IGFueSBNU1MgVUFSVCBpbnRlcnJ1cHQuIFRoaXMgcm91dGluZQ0KLSAqIHdpbGwgY2FsbCB0aGUgaGFuZGxlciBmdW5jdGlvbiBhcHByb3ByaWF0ZSB0byB0aGUgaW50ZXJydXB0IGZyb20gdGhlDQotICogaGFuZGxlcnMgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggdGhlIGRyaXZlciB0aHJvdWdoIGNhbGxzIHRvIHRoZQ0KLSAqIE1TU19VQVJUX3NldF8qX2hhbmRsZXIoKSBmdW5jdGlvbnMsIG9yIGl0IHdpbGwgY2FsbCB0aGUgZGVmYXVsdF90eF9oYW5kbGVyKCkNCi0gKiBmdW5jdGlvbiBpbiByZXNwb25zZSB0byB0cmFuc21pdCBpbnRlcnJ1cHRzIGlmIE1TU19VQVJUX2lycV90eCgpIGlzIHVzZWQgdG8NCi0gKiB0cmFuc21pdCBkYXRhLg0KLSAqLw0KLXN0YXRpYyB2b2lkDQotTVNTX1VBUlRfaXNyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgdWludDhfdCBpaXJmOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIGlpcmYgPSB0aGlzX3VhcnQtPmh3X3JlZy0+SUlSICYgSUlSRl9NQVNLOw0KLQ0KLSAgICAgICAgc3dpdGNoIChpaXJmKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGNhc2UgSUlSRl9NT0RFTV9TVEFUVVM6ICAvKiBNb2RlbSBzdGF0dXMgaW50ZXJydXB0ICovDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+bW9kZW1zdHNfaGFuZGxlcik7DQotICAgICAgICAgICAgICAgIGlmKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPm1vZGVtc3RzX2hhbmRsZXIpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT5tb2RlbXN0c19oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIElJUkZfVEhSRTogLyogVHJhbnNtaXR0ZXIgSG9sZGluZyBSZWdpc3RlciBFbXB0eSAqLw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnR4X2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT50eF9oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAoKih0aGlzX3VhcnQtPnR4X2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgSUlSRl9SWF9EQVRBOiAgICAgIC8qIFJlY2VpdmVkIERhdGEgQXZhaWxhYmxlICovDQotICAgICAgICAgICAgY2FzZSBJSVJGX0RBVEFfVElNRU9VVDogLyogUmVjZWl2ZWQgRGF0YSBUaW1lZC1vdXQgKi8NCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5yeF9oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+cnhfaGFuZGxlcikNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT5yeF9oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIElJUkZfUlhfTElORV9TVEFUVVM6ICAvKiBMaW5lIFN0YXR1cyBJbnRlcnJ1cHQgKi8NCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5saW5lc3RzX2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5saW5lc3RzX2hhbmRsZXIpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT5saW5lc3RzX2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgSUlSRl9NTUk6DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAvKiBJZGVudGlmeSBtdWx0aW1vZGUgaW50ZXJydXB0cyBhbmQgaGFuZGxlICovDQotDQotICAgICAgICAgICAgICAgIC8qIFJlY2VpdmVyIHRpbWUtb3V0IGludGVycnVwdCAqLw0KLSAgICAgICAgICAgICAgICBpZihyZWFkX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUlNLEVSVE9JKSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnJ0b19oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgICAgIGlmKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnJ0b19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+cnRvX2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIC8qIE5BQ0sgaW50ZXJydXB0ICovDQotICAgICAgICAgICAgICAgIGlmKHJlYWRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JSU0sRU5BQ0tJKSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPm5hY2tfaGFuZGxlcik7DQotICAgICAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5uYWNrX2hhbmRsZXIpDQotICAgICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT5uYWNrX2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgICAgIC8qIFBJRCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0ICovDQotICAgICAgICAgICAgICAgIGlmKHJlYWRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JSU0sRVBJRF9QRUkpKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+cGlkX3BlaV9oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgICAgIGlmKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnBpZF9wZWlfaGFuZGxlcikNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAoKih0aGlzX3VhcnQtPnBpZF9wZWlfaGFuZGxlcikpKHRoaXNfdWFydCk7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgICAgLyogTElOIGJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQgKi8NCi0gICAgICAgICAgICAgICAgaWYocmVhZF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklJTSxFTElOQkkpKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+YnJlYWtfaGFuZGxlcik7DQotICAgICAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5icmVha19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+YnJlYWtfaGFuZGxlcikpKHRoaXNfdWFydCk7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgICAgLyogTElOIFN5bmMgZGV0ZWN0aW9uIGludGVycnVwdCAqLw0KLSAgICAgICAgICAgICAgICBpZihyZWFkX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUlNLEVMSU5TSSkpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5zeW5jX2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+c3luY19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+c3luY19oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEFTU0VSVChJTlZBTElEX0lOVEVSUlVQVCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXN0YXRpYyB2b2lkDQotZGVmYXVsdF90eF9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKCggKHVpbnQ4X3QgKikwICkgIT0gdGhpc191YXJ0LT50eF9idWZmZXIpOw0KLSAgICBBU1NFUlQoMHUgPCB0aGlzX3VhcnQtPnR4X2J1ZmZfc2l6ZSk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoKCh1aW50OF90ICopMCApICE9IHRoaXNfdWFydC0+dHhfYnVmZmVyKSAmJg0KLSAgICAgICAoMHUgPCB0aGlzX3VhcnQtPnR4X2J1ZmZfc2l6ZSkpDQotICAgIHsNCi0gICAgICAgIC8qIFJlYWQgdGhlIExpbmUgU3RhdHVzIFJlZ2lzdGVyIGFuZCB1cGRhdGUgdGhlIHN0aWNreSByZWNvcmQuICovDQotICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gc3RhdHVzOw0KLQ0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGEgVEhSRSBpbnRlcnJ1cHQuDQotICAgICAgICAgKiBWZXJpZnkgdGhhdCB0aGlzIGlzIHRydWUgYmVmb3JlIHByb2NlZWRpbmcgdG8gdHJhbnNtaXQgZGF0YS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgaWYoc3RhdHVzICYgTVNTX1VBUlRfVEhSRSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1aW50MzJfdCBpOw0KLSAgICAgICAgICAgIHVpbnQzMl90IGZpbGxfc2l6ZSA9IFRYX0ZJRk9fU0laRTsNCi0gICAgICAgICAgICB1aW50MzJfdCB0eF9yZW1haW4gPSB0aGlzX3VhcnQtPnR4X2J1ZmZfc2l6ZSAtIHRoaXNfdWFydC0+dHhfaWR4Ow0KLQ0KLSAgICAgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHRyYW5zbWl0LiAqLw0KLSAgICAgICAgICAgIGlmKHR4X3JlbWFpbiA8IFRYX0ZJRk9fU0laRSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGZpbGxfc2l6ZSA9IHR4X3JlbWFpbjsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLyogRmlsbCB0aGUgVFggRklGTyB3aXRoIHRoZSBjYWxjdWxhdGVkIHRoZSBudW1iZXIgb2YgYnl0ZXMuICovDQotICAgICAgICAgICAgZm9yKGkgPSAwdTsgaSA8IGZpbGxfc2l6ZTsgKytpKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyogU2VuZCBuZXh0IGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyLiAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+VEhSID0gdGhpc191YXJ0LT50eF9idWZmZXJbdGhpc191YXJ0LT50eF9pZHhdOw0KLSAgICAgICAgICAgICAgICArK3RoaXNfdWFydC0+dHhfaWR4Ow0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0NCi0gICAgICAgIC8qIEZsYWcgVHggYXMgY29tcGxldGUgaWYgYWxsIGRhdGEgaGFzIGJlZW4gcHVzaGVkIGludG8gdGhlIFR4IEZJRk8uICovDQotICAgICAgICBpZih0aGlzX3VhcnQtPnR4X2lkeCA9PSB0aGlzX3VhcnQtPnR4X2J1ZmZfc2l6ZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB0aGlzX3VhcnQtPnR4X2J1ZmZfc2l6ZSA9IFRYX0NPTVBMRVRFOw0KLSAgICAgICAgICAgIC8qIGRpc2FibGVzIFRYIGludGVycnVwdCAqLw0KLSAgICAgICAgICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVSLEVUQkVJKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLX0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnQvbXNzX3VhcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RhYmI3OC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnQvbXNzX3VhcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2MzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTEtMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtIE1NVUFSVCBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlcg0KLSAqIHB1YmxpYyBBUEkuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NjEwICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDUgMTQ6MTk6MzAgKzAxMDAgKEZyaSwgMDUgQXByIDIwMTMpICQNCi0gKi8NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgVUFSVCBCYXJlIE1ldGFsIERyaXZlci4NCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICBUaGUgU21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgaW5jbHVkZXMgdHdvIG11bHRpLW1vZGUgVUFSVA0KLSAgKE1NVUFSVCkgcGVyaXBoZXJhbHMgZm9yIHNlcmlhbCBjb21tdW5pY2F0aW9uLiBUaGlzIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZg0KLSAgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgTVNTIE1NVUFSVHMgIGFzIHBhcnQgb2YgYSBiYXJlIG1ldGFsIHN5c3RlbQ0KLSAgd2hlcmUgbm8gb3BlcmF0aW5nIHN5c3RlbSBpcyBhdmFpbGFibGUuIFRoZXNlIGRyaXZlcnMgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZQ0KLSAgYXMgcGFydCBvZiBhbiBvcGVyYXRpbmcgc3lzdGVtLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyDQotICBiZXR3ZWVuIHRoaXMgZHJpdmVyIGFuZCB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGRyaXZlciBtb2RlbCBpcyBvdXRzaWRlIHRoZQ0KLSAgc2NvcGUgb2YgdGhpcyBkcml2ZXIuDQotICBOb3RlOiBNU1MgVUFSVCBpcyBzeW5vbnltb3VzIHdpdGggTVNTIE1NVUFSVCBpbiB0aGlzIGRvY3VtZW50Lg0KLSAgDQotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gIEBzZWN0aW9uIGh3X2RlcGVuZGVuY2llcyBIYXJkd2FyZSBGbG93IERlcGVuZGVuY2llcw0KLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICBUaGUgY29uZmlndXJhdGlvbiBvZiBhbGwgZmVhdHVyZXMgb2YgdGhlIE1TUyBNTVVBUlQgcGVyaXBoZXJhbHMgaXMgY292ZXJlZCBieQ0KLSAgdGhpcyBkcml2ZXIgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBTbWFydEZ1c2lvbjIgSU9NVVggY29uZmlndXJhdGlvbi4NCi0gIFNtYXJ0RnVzaW9uMiBhbGxvd3MgbXVsdGlwbGUgbm9uLWNvbmN1cnJlbnQgdXNlcyBvZiBzb21lIGV4dGVybmFsIHBpbnMgdGhyb3VnaA0KLSAgSU9NVVggY29uZmlndXJhdGlvbi4gVGhpcyBmZWF0dXJlIGFsbG93cyBvcHRpbWl6YXRpb24gb2YgZXh0ZXJuYWwgcGluIHVzYWdlIGJ5DQotICBhc3NpZ25pbmcgZXh0ZXJuYWwgcGlucyBmb3IgdXNlIGJ5IGVpdGhlciB0aGUgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSBvciB0aGUNCi0gIEZQR0EgZmFicmljLiBUaGUgTVNTIE1NVUFSVCBzZXJpYWwgc2lnbmFscyBhcmUgcm91dGVkIHRocm91Z2ggSU9NVVhzIHRvIHRoZQ0KLSAgU21hcnRGdXNpb24yIGRldmljZSBleHRlcm5hbCBwaW5zLiBUaGUgTVNTIE1NVUFSVCBzZXJpYWwgc2lnbmFscyBtYXkgYWxzbyBiZQ0KLSAgcm91dGVkIHRocm91Z2ggSU9NVVhzIHRvIHRoZSBTbWFydEZ1c2lvbjIgRlBHQSBmYWJyaWMuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uDQotICBJT01VWCwgcmVmZXIgdG8gdGhlIElPTVVYIHNlY3Rpb24gb2YgdGhlIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXINCi0gIFN1YnN5c3RlbSAoTVNTKSBVc2VyknMgR3VpZGUuDQotICBUaGUgSU9NVVhzIGFyZSBjb25maWd1cmVkIHVzaW5nIHRoZSBTbWFydEZ1c2lvbjIgTVNTIGNvbmZpZ3VyYXRvciB0b29sLiBZb3UNCi0gIG11c3QgZW5zdXJlIHRoYXQgdGhlIE1TUyBNTVVBUlQgcGVyaXBoZXJhbHMgYXJlIGVuYWJsZWQgYW5kIGNvbmZpZ3VyZWQgaW4gdGhlDQotICBTbWFydEZ1c2lvbjIgTVNTIGNvbmZpZ3VyYXRvciBpZiB5b3Ugd2lzaCB0byB1c2UgdGhlbS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24NCi0gIElPTVVYcywgcmVmZXIgdG8gdGhlIElPTVVYIHNlY3Rpb24gb2YgdGhlIFNtYXJ0RnVzaW9uMiBNaWNyb2NvbnRyb2xsZXINCi0gIFN1YnN5c3RlbSAoTVNTKSBVc2VyknMgR3VpZGUuDQotICBUaGUgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGludGVycnVwdCBudW1iZXIgYXNzaWdubWVudCBmb3IgdGhlDQotICBNU1MgTU1VQVJUIHBlcmlwaGVyYWxzIGFyZSBkZWZpbmVkIGFzIGNvbnN0YW50cyBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4NCi0gIFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBsYXRlc3QgU21hcnRGdXNpb24yIENNU0lTIEhBTCBpcyBpbmNsdWRlZCBpbiB0aGUNCi0gIHByb2plY3Qgc2V0dGluZ3Mgb2YgdGhlIHNvZnR3YXJlIHRvb2wgY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3QgYW5kDQotICB0aGF0IGl0IGlzIGdlbmVyYXRlZCBpbnRvIHlvdXIgcHJvamVjdC4NCi0gIA0KLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICBAc2VjdGlvbiB0aGVvcnlfb3AgVGhlb3J5IG9mIE9wZXJhdGlvbg0KLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICBUaGUgTVNTIE1NVUFSVCBkcml2ZXIgZnVuY3Rpb25zIGFyZSBncm91cGVkIGludG8gdGhlIGZvbGxvd2luZyBjYXRlZ29yaWVzOg0KLSAgICAtIEluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucw0KLSAgICAtIFBvbGxlZCB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMNCi0gICAgLSBJbnRlcnJ1cHQgZHJpdmVuIHRyYW5zbWl0IGFuZCByZWNlaXZlIGZ1bmN0aW9ucw0KLSAgICANCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbg0KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFRoZSBNU1MgTU1VQVJUIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZm91ciBicm9hZCBtb2RlcyBvZiBvcGVyYXRpb246DQotICAgIC0gVUFSVCBvciBVU0FSVCBtb2RlDQotICAgIC0gTElOIG1vZGUNCi0gICAgLSBJckRBIG1vZGUNCi0gICAgLSBTbWFydGNhcmQgb3IgSVNPIDc4MTYgbW9kZQ0KLSAgVGhlIE1TUyBNTVVBUlQgZHJpdmVyIHByb3ZpZGVzIHRoZSBNU1NfVUFSVF9pbml0KCksIE1TU19VQVJUX2xpbl9pbml0KCksDQotICBNU1NfVUFSVF9pcmRhX2luaXQoKSBhbmQgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKSBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUNCi0gIE1TUyBNTVVBUlRzIGZvciBvcGVyYXRpb24gaW4gb25lIG9mIHRoZXNlIG1vZGVzLiBPbmUgb2YgdGhlc2UgaW5pdGlhbGl6YXRpb24NCi0gIGZ1bmN0aW9ucyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIE1TUyBNTVVBUlQgZHJpdmVyIGZ1bmN0aW9ucyBjYW4gYmUNCi0gIGNhbGxlZC4gVGhlIE1TUyBNTVVBUlQgb3BlcmF0aW5nIG1vZGVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmU7IHRoZXJlZm9yZSBvbmx5DQotICBvbmUgb2YgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBtdXN0IGJlIGNhbGxlZC4gVGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUNCi0gIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBpcyBhIHBvaW50ZXIgdG8gb25lIG9mIHR3byBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmVzDQotICB1c2VkIHRvIHN0b3JlIHN0YXRlIGluZm9ybWF0aW9uIGZvciBlYWNoIE1TUyBNTVVBUlQuIEEgcG9pbnRlciB0byB0aGVzZSBkYXRhDQotICBzdHJ1Y3R1cmVzIGlzIGFsc28gdXNlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIG1hbnkgb2YgdGhlIGRyaXZlciBmdW5jdGlvbnMNCi0gIHRvIGlkZW50aWZ5IHdoaWNoIE1TUyBNTVVBUlQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBjYWxsZWQgZnVuY3Rpb24uIFRoZSBuYW1lcyBvZg0KLSAgdGhlc2UgdHdvIGRhdGEgc3RydWN0dXJlcyBhcmUgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLiBUaGVyZWZvcmUsIGFueSBjYWxsDQotICB0byBhbiBNU1MgTU1VQVJUIGZ1bmN0aW9uIHNob3VsZCBiZSBvZiB0aGUgZm9ybSANCi0gIE1TU19VQVJUX2Z1bmN0aW9uX25hbWUoICZnX21zc191YXJ0MCwgLi4uICkgb3INCi0gIE1TU19VQVJUX2Z1bmN0aW9uX25hbWUoICZnX21zc191YXJ0MSwgLi4uICkuDQotICANCi0gIFVBUlQgb3IgVVNBUlQgTW9kZQ0KLSAgRm9yIHRoZSBVQVJUIG9yIFVTQVJUIG1vZGVzIG9mIG9wZXJhdGlvbiwgdGhlIE1TUyBNTVVBUlQgZHJpdmVyIGlzIGluaXRpYWxpemVkDQotICB0aHJvdWdoIGEgY2FsbCB0byB0aGUgTVNTX1VBUlRfaW5pdCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBVQVJUknMNCi0gIGNvbmZpZ3VyYXRpb24gYXMgaXRzIHBhcmFtZXRlcnMuIFRoZSBNU1NfVUFSVF9pbml0KCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQNCi0gIGJlZm9yZSBhbnkgb3RoZXIgTVNTIE1NVUFSVCBkcml2ZXIgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQuDQotICBUaGUgTVNTX1VBUlRfaW5pdCgpIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIGJhdWQgcmF0ZSBiYXNlZCBvbiB0aGUgaW5wdXQgYmF1ZA0KLSAgcmF0ZSBwYXJhbWV0ZXIgYW5kIGlmIHBvc3NpYmxlIHVzZXMgYSBmcmFjdGlvbmFsIGJhdWQgcmF0ZSBmb3IgZ3JlYXRlcg0KLSAgcHJlY2lzaW9uLiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBMSU4sIElyREEgYW5kIFNtYXJ0Q2FyZCBtb2Rlcy4NCi0gIA0KLSAgTElOIG1vZGUNCi0gIEZvciB0aGUgTElOIG1vZGUgb2Ygb3BlcmF0aW9uLCB0aGUgTVNTIE1NVUFSVCBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBhDQotICBjYWxsIHRvIHRoZSBNU1NfVUFSVF9saW5faW5pdCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBMSU4gbm9kZZJzDQotICBjb25maWd1cmF0aW9uIGFzIGl0cyBwYXJhbWV0ZXJzLiBUaGUgTVNTX1VBUlRfbGluX2luaXQoKSBmdW5jdGlvbiBtdXN0IGJlDQotICBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgTU1VQVJUIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4gVGhlDQotICBNU1NfVUFSVF9saW5faW5pdCgpIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIGJhdWQgcmF0ZSBiYXNlZCBvbiB0aGUgaW5wdXQgYmF1ZA0KLSAgcmF0ZSBwYXJhbWV0ZXIgYW5kIGlmIHBvc3NpYmxlIHVzZXMgYSBmcmFjdGlvbmFsIGJhdWQgcmF0ZSBmb3IgZ3JlYXRlcg0KLSAgcHJlY2lzaW9uLiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBJckRBIGFuZCBTbWFydENhcmQgbW9kZXMuDQotICBUaGUgZHJpdmVyIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBMSU4gbW9kZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfVUFSVF9zZXRfYnJlYWsoKQ0KLSAgICAtIE1TU19VQVJUX2NsZWFyX2JyZWFrKCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfcGlkcGVpX2hhbmRsZXIoKQ0KLSAgICAtIE1TU19VQVJUX3NldF9saW5icmVha19oYW5kbGVyKCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfbGluc3luY19oYW5kbGVyKCkNCi0gIE5vdGU6IFRoZXNlIExJTiBtb2RlIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUNCi0gIE1TU19VQVJUX2xpbl9pbml0KCkgZnVuY3Rpb24gaXMgY2FsbGVkLg0KLSAgDQotICBJckRBIG1vZGUNCi0gIEZvciB0aGUgSXJEQSBtb2RlIG9mIG9wZXJhdGlvbiwgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZCB0aHJvdWdoIGEgY2FsbCB0bw0KLSAgdGhlIE1TU19VQVJUX2lyZGFfaW5pdCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBJckRBIG5vZGWScw0KLSAgY29uZmlndXJhdGlvbiBhcyBpdHMgcGFyYW1ldGVycy4gVGhlIE1TU19VQVJUX2lyZGFfaW5pdCgpIGZ1bmN0aW9uIG11c3QgYmUNCi0gIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIE1TUyBNTVVBUlQgZHJpdmVyIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLiBUaGUNCi0gIE1TU19VQVJUX2lyZGFfaW5pdCgpIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIGJhdWQgcmF0ZSBiYXNlZCBvbiB0aGUgaW5wdXQgYmF1ZA0KLSAgcmF0ZSBwYXJhbWV0ZXIgYW5kIGlmIHBvc3NpYmxlIHVzZXMgYSBmcmFjdGlvbmFsIGJhdWQgcmF0ZSBmb3IgZ3JlYXRlcg0KLSAgcHJlY2lzaW9uLiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBMSU4gYW5kIFNtYXJ0Q2FyZCBtb2Rlcy4NCi0gIA0KLSAgU21hcnRjYXJkIG9yIElTTyA3ODE2IG1vZGUNCi0gIEZvciB0aGUgU21hcnRjYXJkIG9yIElTTyA3ODE2IG1vZGUgb2Ygb3BlcmF0aW9uLCB0aGUgZHJpdmVyIGlzIGluaXRpYWxpemVkDQotICB0aHJvdWdoIGEgY2FsbCB0byB0aGUgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiB0YWtlcw0KLSAgdGhlIHNtYXJ0Y2FyZCBjb25maWd1cmF0aW9uIGFzIGl0cyBwYXJhbWV0ZXJzLiBUaGUgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKQ0KLSAgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgTU1VQVJUIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlDQotICBjYWxsZWQuIFRoZSBNU1NfVUFSVF9zbWFydGNhcmRfaW5pdCgpIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgdGhlIGJhdWQgcmF0ZSBiYXNlZA0KLSAgb24gdGhlIGlucHV0IGJhdWQgcmF0ZSBwYXJhbWV0ZXIgYW5kIGlmIHBvc3NpYmxlIHVzZXMgYSBmcmFjdGlvbmFsIGJhdWQgcmF0ZQ0KLSAgZm9yIGdyZWF0ZXIgcHJlY2lzaW9uLiBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBMSU4gYW5kIElyREEgbW9kZXMuDQotICBUaGUgZHJpdmVyIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBTbWFydGNhcmQgbW9kZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfVUFSVF9lbmFibGVfaGFsZmR1cGxleCgpDQotICAgIC0gTVNTX1VBUlRfZGlzYWJsZV9oYWxmZHVwbGV4KCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfbmFja19oYW5kbGVyKCkNCi0gIE5vdGU6IFRoZXNlIFNtYXJ0Y2FyZCBtb2RlIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBhZnRlcg0KLSAgdGhlIE1TU19VQVJUX3NtYXJ0Y2FyZF9pbml0KCkgZnVuY3Rpb24gaXMgY2FsbGVkLg0KLSAgDQotICBDb21tb24gQ29uZmlndXJhdGlvbiBGdW5jdGlvbnMNCi0gIFRoZSBkcml2ZXIgYWxzbyBwcm92aWRlcyB0aGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGFsbA0KLSAgTVNTIE1NVUFSVCBvcGVyYXRpbmcgbW9kZXMuIFRoZXNlIGNvbW1vbiBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBhcmUgYXMNCi0gIGZvbGxvd3M6DQotICAgIC0gTVNTX1VBUlRfc2V0X3J4X2VuZGlhbigpDQotICAgIC0gTVNTX1VBUlRfc2V0X3R4X2VuZGlhbigpDQotICAgIC0gTVNTX1VBUlRfZW5hYmxlX2FmY2xlYXIoKQ0KLSAgICAtIE1TU19VQVJUX2Rpc2FibGVfYWZjbGVhcigpDQotICAgIC0gTVNTX1VBUlRfZW5hYmxlX3J4X3RpbWVvdXQoKQ0KLSAgICAtIE1TU19VQVJUX2Rpc2FibGVfcnhfdGltZW91dCgpDQotICAgIC0gTVNTX1VBUlRfZW5hYmxlX3R4X3RpbWVfZ3VhcmQoKQ0KLSAgICAtIE1TU19VQVJUX2Rpc2FibGVfdHhfdGltZV9ndWFyZCgpDQotICAgIC0gTVNTX1VBUlRfc2V0X2FkZHJlc3MoKQ0KLSAgICAtIE1TU19VQVJUX3NldF9yZWFkeV9tb2RlKCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfdXNhcnRfbW9kZSgpDQotICAgIC0gTVNTX1VBUlRfc2V0X2ZpbHRlcl9sZW5ndGgoKQ0KLSAgICAtIE1TU19VQVJUX2VuYWJsZV9hZm0oKQ0KLSAgICAtIE1TU19VQVJUX2Rpc2FibGVfYWZtKCkNCi0gIE5vdGU6IFRoZXNlIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBhZnRlciBvbmUgb2YgdGhlDQotICAgICAgICBNU1NfVUFSVF9pbml0KCksIE1TU19VQVJUX2xpbl9pbml0KCksIE1TU19VQVJUX2lyZGFfaW5pdCgpIG9yDQotICAgICAgICBNU1NfVUFSVF9zbWFydGNhcmRfaW5pdCgpIGZ1bmN0aW9ucyBpcyBjYWxsZWQuDQotICANCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICANCi0gIFBvbGxlZCBUcmFuc21pdCBhbmQgUmVjZWl2ZSBPcGVyYXRpb25zDQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgVGhlIGRyaXZlciBjYW4gYmUgdXNlZCB0byB0cmFuc21pdCBhbmQgcmVjZWl2ZSBkYXRhIG9uY2UgaW5pdGlhbGl6ZWQuIA0KLSAgRGF0YSBpcyB0cmFuc21pdHRlZCB1c2luZyB0aGUgTVNTX1VBUlRfcG9sbGVkX3R4KCkgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMNCi0gIGJsb2NraW5nLCBtZWFuaW5nIHRoYXQgaXQgd2lsbCBvbmx5IHJldHVybiBvbmNlIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUNCi0gIGZ1bmN0aW9uIGhhcyBiZWVuIHNlbnQgdG8gdGhlIE1TUyBNTVVBUlQgaGFyZHdhcmUgdHJhbnNtaXR0ZXIuIERhdGEgcmVjZWl2ZWQNCi0gIGJ5IHRoZSBNU1MgTU1VQVJUIGhhcmR3YXJlIHJlY2VpdmVyIGNhbiBiZSByZWFkIGJ5IHRoZSBNU1NfVUFSVF9nZXRfcngoKQ0KLSAgZnVuY3Rpb24uDQotICBUaGUgTVNTX1VBUlRfcG9sbGVkX3R4X3N0cmluZygpIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHRyYW5zbWl0IGEgTlVMTCAokVwwkikNCi0gIHRlcm1pbmF0ZWQgc3RyaW5nIGluIHBvbGxlZCBtb2RlLiBUaGlzIGZ1bmN0aW9uIGlzIGJsb2NraW5nLCBtZWFuaW5nIHRoYXQgaXQNCi0gIHdpbGwgb25seSByZXR1cm4gb25jZSB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIHNlbnQgdG8gdGhlIE1TUw0KLSAgTU1VQVJUIGhhcmR3YXJlIHRyYW5zbWl0dGVyLg0KLSAgVGhlIE1TU19VQVJUX2ZpbGxfdHhfZmlmbygpIGZ1bmN0aW9uIGZpbGxzIHRoZSBNU1MgTU1VQVJUIGhhcmR3YXJlIHRyYW5zbWl0DQotICBGSUZPIHdpdGggZGF0YSBmcm9tIGEgYnVmZmVyIHBhc3NlZCBhcyBhIHBhcmFtZXRlciBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mDQotICBieXRlcyB0cmFuc2ZlcnJlZCB0byB0aGUgRklGTy4gSWYgdGhlIHRyYW5zbWl0IEZJRk8gaXMgbm90IGVtcHR5IHdoZW4gdGhlDQotICBNU1NfVUFSVF9maWxsX3R4X2ZpZm8oKSBmdW5jdGlvbiBpcyBjYWxsZWQgaXQgcmV0dXJucyBpbW1lZGlhdGVseSB3aXRob3V0DQotICB0cmFuc2ZlcnJpbmcgYW55IGRhdGEgdG8gdGhlIEZJRk8uDQotICANCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgSW50ZXJydXB0IERyaXZlbiBPcGVyYXRpb25zDQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFRoZSBkcml2ZXIgY2FuIGFsc28gdHJhbnNtaXQgb3IgcmVjZWl2ZSBkYXRhIHVuZGVyIGludGVycnVwdCBjb250cm9sLCBmcmVlaW5nDQotICB5b3VyIGFwcGxpY2F0aW9uIHRvIHBlcmZvcm0gb3RoZXIgdGFza3MgdW50aWwgYW4gaW50ZXJydXB0IG9jY3VycyBpbmRpY2F0aW5nDQotICB0aGF0IHRoZSBkcml2ZXKScyBhdHRlbnRpb24gaXMgcmVxdWlyZWQuDQotICANCi0gIEludGVycnVwdCBIYW5kbGVycw0KLSAgVGhlIE1TUyBNTVVBUlQgZHJpdmVyIHN1cHBvcnRzIGFsbCB0eXBlcyBvZiBpbnRlcnJ1cHQgdHJpZ2dlcmVkIGJ5IHRoZSBNU1MNCi0gIE1NVUFSVC4gVGhlIGRyaXZlcpJzIGludGVybmFsIHRvcCBsZXZlbCBpbnRlcnJ1cHQgaGFuZGxlciBpZGVudGlmaWVzIHRoZQ0KLSAgc291cmNlIG9mIHRoZSBNU1MgTU1VQVJUIGludGVycnVwdCBhbmQgY2FsbHMgdGhlIGNvcnJlc3BvbmRpbmcgbG93ZXIgbGV2ZWwNCi0gIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB5b3UgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggdGhlIGRyaXZlciB0aHJvdWdoIGNhbGxzDQotICB0byB0aGUgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSwgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSwNCi0gIE1TU19VQVJUX3NldF9yeHN0YXR1c19oYW5kbGVyKCksIGFuZCBNU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcigpDQotICBmdW5jdGlvbnMuIFlvdSBhcmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZXNlIGxvd2VyIGxldmVsIGludGVycnVwdA0KLSAgaGFuZGxlcnMgYXMgcGFydCBvZiB5b3VyIGFwcGxpY2F0aW9uIHByb2dyYW0gYW5kIHJlZ2lzdGVyaW5nIHRoZW0gd2l0aCB0aGUNCi0gIGRyaXZlci4NCi0gIE5vdGU6IFRoZSBTbWFydEZ1c2lvbjIgQ01TSVMtUEFMIGRlZmluZXMgdGhlIFVBUlQwX0lSUUhhbmRsZXIoKSBhbmQNCi0gICAgICAgIFVBUlQxX0lSUUhhbmRsZXIoKSBmdW5jdGlvbnMgKHdpdGggd2VhayBsaW5rYWdlKSBhbmQgYXNzaWducyB0aGVtIGFzIHRoZQ0KLSAgICAgICAgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZXMgKElTUikgZm9yIHRoZSBNU1MgTU1VQVJUIGludGVycnVwdCBpbnB1dHMgdG8NCi0gICAgICAgIHRoZSBDb3J0ZXgtTTMgTlZJQy4gVGhlIE1TUyBNTVVBUlQgZHJpdmVyIHByb3ZpZGVzIHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgICAgICAgZnVuY3Rpb25zIGZvciBib3RoIG9mIHRoZXNlIElTUnMgZnJvbSB3aGljaCBpdCBjYWxscyBpdHMgb3duIGludGVybmFsDQotICAgICAgICB0b3AgbGV2ZWwsIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uLg0KLSAgVGhlIE1TU19VQVJUX2VuYWJsZV9pcnEoKSBhbmQgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8NCi0gIGVuYWJsZSBvciBkaXNhYmxlIHRoZSByZWNlaXZlZCBsaW5lIHN0YXR1cywgcmVjZWl2ZWQgZGF0YSBhdmFpbGFibGUvY2hhcmFjdGVyDQotICB0aW1lb3V0LCB0cmFuc21pdCBob2xkaW5nIHJlZ2lzdGVyIGVtcHR5IGFuZCBtb2RlbSBzdGF0dXMgaW50ZXJydXB0cyBhdCB0aGUNCi0gIE1TUyBNTVVBUlQgbGV2ZWwuIFRoZSBNU1NfVUFSVF9lbmFibGVfaXJxKCkgZnVuY3Rpb24gYWxzbyBlbmFibGVzIHRoZSBNU1MNCi0gIE1NVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgYXQgdGhlIENvcnRleC1NMyBsZXZlbC4NCi0gIA0KLSAgVHJhbnNtaXR0aW5nIERhdGENCi0gIEludGVycnVwdC1kcml2ZW4gdHJhbnNtaXQgaXMgaW5pdGlhdGVkIGJ5IGEgY2FsbCB0byBNU1NfVUFSVF9pcnFfdHgoKSwNCi0gIHNwZWNpZnlpbmcgdGhlIGJsb2NrIG9mIGRhdGEgdG8gdHJhbnNtaXQuIFlvdXIgYXBwbGljYXRpb24gaXMgdGhlbiBmcmVlIHRvDQotICBwZXJmb3JtIG90aGVyIHRhc2tzIGFuZCBpbnF1aXJlIGxhdGVyIHdoZXRoZXIgdHJhbnNtaXQgaGFzIGNvbXBsZXRlZCBieQ0KLSAgY2FsbGluZyB0aGUgTVNTX1VBUlRfdHhfY29tcGxldGUoKSBmdW5jdGlvbi4gVGhlIE1TU19VQVJUX2lycV90eCgpIGZ1bmN0aW9uDQotICBlbmFibGVzIHRoZSBVQVJUknMgdHJhbnNtaXQgaG9sZGluZyByZWdpc3RlciBlbXB0eSAoVEhSRSkgaW50ZXJydXB0IGFuZCB0aGVuLA0KLSAgd2hlbiB0aGUgaW50ZXJydXB0IGdvZXMgYWN0aXZlLCB0aGUgZHJpdmVyknMgZGVmYXVsdCBUSFJFIGludGVycnVwdCBoYW5kbGVyDQotICB0cmFuc2ZlcnMgdGhlIGRhdGEgYmxvY2sgdG8gdGhlIFVBUlQgdW50aWwgdGhlIGVudGlyZSBibG9jayBpcyB0cmFuc21pdHRlZC4NCi0gIE5vdGU6IFlvdSBjYW4gdXNlIHRoZSBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uIHRvIGFzc2lnbiBhbg0KLSAgICAgICAgYWx0ZXJuYXRpdmUgaGFuZGxlciB0byB0aGUgVEhSRSBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSwgeW91IG11c3Qgbm90DQotICAgICAgICB1c2UgdGhlIE1TU19VQVJUX2lycV90eCgpIGZ1bmN0aW9uIHRvIGluaXRpYXRlIHRoZSB0cmFuc21pdCwgYXMgdGhpcw0KLSAgICAgICAgd2lsbCByZS1hc3NpZ24gdGhlIGRyaXZlcpJzIGRlZmF1bHQgVEhSRSBpbnRlcnJ1cHQgaGFuZGxlciB0byB0aGUgVEhSRQ0KLSAgICAgICAgaW50ZXJydXB0LiBJbnN0ZWFkLCB5b3VyIGFsdGVybmF0aXZlIFRIUkUgaW50ZXJydXB0IGhhbmRsZXIgbXVzdCBpbmNsdWRlDQotICAgICAgICBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX2ZpbGxfdHhfZmlmbygpIGZ1bmN0aW9uIHRvIHRyYW5zZmVyIHRoZSBkYXRhIHRvDQotICAgICAgICB0aGUgVUFSVC4NCi0gIA0KLSAgUmVjZWl2aW5nIERhdGENCi0gIEludGVycnVwdC1kcml2ZW4gcmVjZWl2ZSBpcyBwZXJmb3JtZWQgYnkgZmlyc3QgY2FsbGluZw0KLSAgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSB0byByZWdpc3RlciBhIHJlY2VpdmUgaGFuZGxlciBmdW5jdGlvbiB0aGF0IHdpbGwgYmUNCi0gIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW5ldmVyIHJlY2VpdmUgZGF0YSBpcyBhdmFpbGFibGUuIFlvdSBtdXN0IHByb3ZpZGUgdGhpcw0KLSAgcmVjZWl2ZSBoYW5kbGVyIGZ1bmN0aW9uIHdoaWNoIG11c3QgaW5jbHVkZSBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX2dldF9yeCgpDQotICBmdW5jdGlvbiB0byBhY3R1YWxseSByZWFkIHRoZSByZWNlaXZlZCBkYXRhLg0KLSAgDQotICAtLS0tLS0tLS0tLQ0KLSAgVUFSVCBTdGF0dXMNCi0gIC0tLS0tLS0tLS0tDQotICBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpIGlzIHVzZWQgdG8gcmVhZCB0aGUgcmVjZWl2ZXIgZXJyb3INCi0gIHN0YXR1cy4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBvdmVycnVuLCBwYXJpdHksIGZyYW1pbmcsIGJyZWFrLCBhbmQgRklGTw0KLSAgZXJyb3Igc3RhdHVzIG9mIHRoZSByZWNlaXZlci4NCi0gIFRoZSBmdW5jdGlvbiBNU1NfVUFSVF9nZXRfdHhfc3RhdHVzKCkgaXMgdXNlZCB0byByZWFkIHRoZSB0cmFuc21pdHRlciBzdGF0dXMuDQotICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyYW5zbWl0IGVtcHR5IChURU1UKSBhbmQgdHJhbnNtaXQgaG9sZGluZyByZWdpc3Rlcg0KLSAgZW1wdHkgKFRIUkUpIHN0YXR1cyBvZiB0aGUgdHJhbnNtaXR0ZXIuDQotICBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfZ2V0X21vZGVtX3N0YXR1cygpIGlzIHVzZWQgdG8gcmVhZCB0aGUgbW9kZW0gc3RhdHVzDQotICBmbGFncy4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtb2RlbSBzdGF0dXMgcmVnaXN0ZXIuDQotICANCi0gIC0tLS0tLS0tDQotICBMb29wYmFjaw0KLSAgLS0tLS0tLS0NCi0gIFRoZSBNU1NfVUFSVF9zZXRfbG9vcGJhY2soKSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBsb2NhbGx5IGxvb3BiYWNrIHRoZSBUeA0KLSAgYW5kIFJ4IGxpbmVzIG9mIGEgVUFSVC4gVGhpcyBpcyBub3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgbG9vcGJhY2sgb2YgVUFSVDANCi0gIHRvIFVBUlQxLCB3aGljaCBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbZJzIHN5c3RlbQ0KLSAgcmVnaXN0ZXJzLg0KLSAgDQotICovLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0jaWZuZGVmIF9fTVNTX1VBUlRfSF8NCi0jZGVmaW5lIF9fTVNTX1VBUlRfSF8gMQ0KLQ0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tMnN4eHguaCINCi0jaW5jbHVkZSA8c3RkZGVmLmg+DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIEJhdWQgcmF0ZXMNCi0gIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIHVzZWQgdG8gc3BlY2lmeSBzdGFuZGFyZCBiYXVkIHJhdGVzIGFzIGENCi0gIHBhcmFtZXRlciB0byB0aGUgTVNTX1VBUlRfaW5pdCgpIGZ1bmN0aW9uLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1VBUlRfMTEwX0JBVUQgICAgICAgMTEwDQotI2RlZmluZSBNU1NfVUFSVF8zMDBfQkFVRCAgICAgICAzMDANCi0jZGVmaW5lIE1TU19VQVJUXzEyMDBfQkFVRCAgICAgIDEyMDANCi0jZGVmaW5lIE1TU19VQVJUXzI0MDBfQkFVRCAgICAgIDI0MDANCi0jZGVmaW5lIE1TU19VQVJUXzQ4MDBfQkFVRCAgICAgIDQ4MDANCi0jZGVmaW5lIE1TU19VQVJUXzk2MDBfQkFVRCAgICAgIDk2MDANCi0jZGVmaW5lIE1TU19VQVJUXzE5MjAwX0JBVUQgICAgIDE5MjAwDQotI2RlZmluZSBNU1NfVUFSVF8zODQwMF9CQVVEICAgICAzODQwMA0KLSNkZWZpbmUgTVNTX1VBUlRfNTc2MDBfQkFVRCAgICAgNTc2MDANCi0jZGVmaW5lIE1TU19VQVJUXzExNTIwMF9CQVVEICAgIDExNTIwMA0KLSNkZWZpbmUgTVNTX1VBUlRfMjMwNDAwX0JBVUQgICAgMjMwNDAwDQotI2RlZmluZSBNU1NfVUFSVF80NjA4MDBfQkFVRCAgICA0NjA4MDANCi0jZGVmaW5lIE1TU19VQVJUXzkyMTYwMF9CQVVEICAgIDkyMTYwMA0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBEYXRhIEJpdHMgTGVuZ3RoDQotICBUaGUgZm9sbG93aW5nIGRlZmluZXMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHZhbHVlIG9mIHRoZSBNU1NfVUFSVF9pbml0KCkNCi0gIGZ1bmN0aW9uIGxpbmVfY29uZmlnIHBhcmFtZXRlci4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUX0RBVEFfNV9CSVRTICAgICAoICh1aW50OF90KSAweDAwICkNCi0jZGVmaW5lIE1TU19VQVJUX0RBVEFfNl9CSVRTICAgICAoICh1aW50OF90KSAweDAxICkNCi0jZGVmaW5lIE1TU19VQVJUX0RBVEFfN19CSVRTICAgICAoICh1aW50OF90KSAweDAyICkNCi0jZGVmaW5lIE1TU19VQVJUX0RBVEFfOF9CSVRTICAgICAoICh1aW50OF90KSAweDAzICkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgUGFyaXR5DQotICBUaGUgZm9sbG93aW5nIGRlZmluZXMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHZhbHVlIG9mIHRoZSBNU1NfVUFSVF9pbml0KCkNCi0gIGZ1bmN0aW9uIGxpbmVfY29uZmlnIHBhcmFtZXRlci4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUX05PX1BBUklUWSAgICAgICAgICAgKCAodWludDhfdCkgMHgwMCApDQotI2RlZmluZSBNU1NfVUFSVF9PRERfUEFSSVRZICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDggKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRVZFTl9QQVJJVFkgICAgICAgICAoICh1aW50OF90KSAweDE4ICkNCi0jZGVmaW5lIE1TU19VQVJUX1NUSUNLX1BBUklUWV8wICAgICAgKCAodWludDhfdCkgMHgzOCApDQotI2RlZmluZSBNU1NfVUFSVF9TVElDS19QQVJJVFlfMSAgICAgICggKHVpbnQ4X3QpIDB4MjggKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBOdW1iZXIgb2YgU3RvcCBCaXRzDQotICBUaGUgZm9sbG93aW5nIGRlZmluZXMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHZhbHVlIG9mIHRoZSBNU1NfVUFSVF9pbml0KCkNCi0gIGZ1bmN0aW9uIGxpbmVfY29uZmlnIHBhcmFtZXRlci4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUX09ORV9TVE9QX0JJVCAgICAgICAgKCAodWludDhfdCkgMHgwMCApDQotI2RlZmluZSBNU1NfVUFSVF9PTkVIQUxGX1NUT1BfQklUICAgICggKHVpbnQ4X3QpIDB4MDQgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfVFdPX1NUT1BfQklUUyAgICAgICAoICh1aW50OF90KSAweDA0ICkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgUmVjZWl2ZXIgRXJyb3IgU3RhdHVzDQotICBUaGUgZm9sbG93aW5nIGRlZmluZXMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBVQVJUIHJlY2VpdmVyIGVycm9yIHR5cGUuDQotICBUaGVzZSBiaXQgbWFzayBjb25zdGFudHMgYXJlIHVzZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQ0KLSAgTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpIGZ1bmN0aW9uIHRvIGZpbmQgb3V0IGlmIGFueSBlcnJvcnMgb2NjdXJyZWQgd2hpbGUNCi0gIHJlY2VpdmluZyBkYXRhLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1VBUlRfSU5WQUxJRF9QQVJBTSAgICAoICh1aW50OF90KTB4RkYgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfTk9fRVJST1IgICAgICAgICAoICh1aW50OF90KTB4MDAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfT1ZFUlVOX0VSUk9SICAgICAoICh1aW50OF90KTB4MDIgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfUEFSSVRZX0VSUk9SICAgICAoICh1aW50OF90KTB4MDQgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRlJBTUlOR19FUlJPUiAgICAoICh1aW50OF90KTB4MDggKQ0KLSNkZWZpbmUgTVNTX1VBUlRfQlJFQUtfRVJST1IgICAgICAoICh1aW50OF90KTB4MTAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRklGT19FUlJPUiAgICAgICAoICh1aW50OF90KTB4ODAgKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUcmFuc21pdHRlciBTdGF0dXMNCi0gIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBVQVJUIHRyYW5zbWl0dGVyIHN0YXR1cy4NCi0gIFRoZXNlIGJpdCBtYXNrIGNvbnN0YW50cyBhcmUgdXNlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlDQotICBNU1NfVUFSVF9nZXRfdHhfc3RhdHVzKCkgZnVuY3Rpb24gdG8gZmluZCBvdXQgdGhlIHN0YXR1cyBvZiB0aGUgdHJhbnNtaXR0ZXIuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9UWF9CVVNZICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfVEhSRSAgICAgICAgICAgICAoICh1aW50OF90KSAweDIwICkNCi0jZGVmaW5lIE1TU19VQVJUX1RFTVQgICAgICAgICAgICAgKCAodWludDhfdCkgMHg0MCApDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIE1vZGVtIFN0YXR1cw0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgbW9kZW0gc3RhdHVzLiBUaGVzZSBiaXQNCi0gIG1hc2sgY29uc3RhbnRzIGFyZSB1c2VkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUNCi0gIE1TU19VQVJUX2dldF9tb2RlbV9zdGF0dXMoKSBmdW5jdGlvbiB0byBmaW5kIG91dCB0aGUgbW9kZW0gc3RhdHVzIG9mDQotICB0aGUgVUFSVC4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUX0RDVFMgICAgICAgICAgICAgKCAodWludDhfdCkgMHgwMSApDQotI2RlZmluZSBNU1NfVUFSVF9ERFNSICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDIgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfVEVSSSAgICAgICAgICAgICAoICh1aW50OF90KSAweDA0ICkNCi0jZGVmaW5lIE1TU19VQVJUX0REQ0QgICAgICAgICAgICAgKCAodWludDhfdCkgMHgwOCApDQotI2RlZmluZSBNU1NfVUFSVF9DVFMgICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4MTAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRFNSICAgICAgICAgICAgICAoICh1aW50OF90KSAweDIwICkNCi0jZGVmaW5lIE1TU19VQVJUX1JJICAgICAgICAgICAgICAgKCAodWludDhfdCkgMHg0MCApDQotI2RlZmluZSBNU1NfVUFSVF9EQ0QgICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4ODAgKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGlzIHR5cGVkZWYgc3BlY2lmaWVzIHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgZm9yIHRoZSBNU1NfVUFSVF9lbmFibGVfaXJxKCkNCi0gIGFuZCBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9ucy4gVGhlIGRyaXZlciBkZWZpbmVzIGEgc2V0IG9mIGJpdCBtYXNrcw0KLSAgdGhhdCBhcmUgdXNlZCB0byBidWlsZCB0aGUgdmFsdWUgb2YgdGhlIGlycV9tYXNrIHBhcmFtZXRlci4gQSBiaXR3aXNlIE9SIG9mDQotICB0aGVzZSBiaXQgbWFza3MgaXMgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBsZSBNU1MgTU1VQVJUIGludGVycnVwdHMuDQotICovDQotdHlwZWRlZiB1aW50MTZfdCBtc3NfdWFydF9pcnFfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIHNwZWNpZnkgdGhlIGludGVycnVwdCBtYXNrcyB0byBlbmFibGUgYW5kIGRpc2FibGUgTVNTDQotICBNTVVBUlQgaW50ZXJydXB0cy4gVGhleSBhcmUgdXNlZCB0byBidWlsZCB0aGUgdmFsdWUgb2YgdGhlIGlycV9tYXNrIHBhcmFtZXRlcg0KLSAgZm9yIHRoZSBNU1NfVUFSVF9lbmFibGVfaXJxKCkgYW5kIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb25zLiBBIGJpdHdpc2UNCi0gIE9SIG9mIHRoZXNlIGNvbnN0YW50cyBpcyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIG11bHRpcGxlIGludGVycnVwdHMuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9SQkZfSVJRICAgICAgICAweDAwMQ0KLSNkZWZpbmUgTVNTX1VBUlRfVEJFX0lSUSAgICAgICAgMHgwMDINCi0jZGVmaW5lIE1TU19VQVJUX0xTX0lSUSAgICAgICAgIDB4MDA0DQotI2RlZmluZSBNU1NfVUFSVF9NU19JUlEgICAgICAgICAweDAwOA0KLSNkZWZpbmUgTVNTX1VBUlRfUlRPX0lSUSAgICAgICAgMHgwMTANCi0jZGVmaW5lIE1TU19VQVJUX05BQ0tfSVJRICAgICAgIDB4MDIwDQotI2RlZmluZSBNU1NfVUFSVF9QSURQRV9JUlEgICAgICAweDA0MA0KLSNkZWZpbmUgTVNTX1VBUlRfTElOQl9JUlEgICAgICAgMHgwODANCi0jZGVmaW5lIE1TU19VQVJUX0xJTlNfSVJRICAgICAgIDB4MTAwDQotI2RlZmluZSBNU1NfVUFSVF9JTlZBTElEX0lSUSAgICBVSU5UMTZfTUFYDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoaXMgZW51bWVyYXRpb24gc3BlY2lmaWVzIHRoZSByZWNlaXZlciBGSUZPIHRyaWdnZXIgbGV2ZWwuIFRoaXMgaXMgdGhlIG51bWJlcg0KLSAgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIHJlY2VpdmVkIGJlZm9yZSB0aGUgVUFSVCBnZW5lcmF0ZXMgYSByZWNlaXZlIGRhdGENCi0gIGF2YWlsYWJsZSBpbnRlcnJ1cHQuIEl0IHByb3ZpZGVzIHRoZSBhbGxvd2VkIHZhbHVlcyBmb3IgdGhlDQotICBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigpIGZ1bmN0aW9uIHRyaWdnZXJfbGV2ZWwgcGFyYW1ldGVyLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUX0ZJRk9fU0lOR0xFX0JZVEUgICAgPSAweDAwLA0KLSAgICBNU1NfVUFSVF9GSUZPX0ZPVVJfQllURVMgICAgID0gMHg0MCwNCi0gICAgTVNTX1VBUlRfRklGT19FSUdIVF9CWVRFUyAgICA9IDB4ODAsDQotICAgIE1TU19VQVJUX0ZJRk9fRk9VUlRFRU5fQllURVMgPSAweEMwLA0KLSAgICBNU1NfVUFSVF9GSUZPX0lOVkFMSURfVFJJR19MRVZFTA0KLX0gbXNzX3VhcnRfcnhfdHJpZ19sZXZlbF90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGlzIGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgbG9vcGJhY2sgY29uZmlndXJhdGlvbiBvZiB0aGUgVUFSVC4gSXQgcHJvdmlkZXMNCi0gIHRoZSBhbGxvd2VkIHZhbHVlcyBmb3IgdGhlIE1TU19VQVJUX3NldF9sb29wYmFjaygpIGZ1bmN0aW9uknMgbG9vcGJhY2sNCi0gIHBhcmFtZXRlci4gVXNlIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09OIHRvIHNldCB1cCB0aGUgVUFSVCB0byBsb2NhbGx5DQotICBsb29wYmFjayBpdHMgVHggYW5kIFJ4IGxpbmVzLiBVc2UgTVNTX1VBUlRfUkVNT1RFX0xPT1BCQUNLX09OIHRvIHNldCB1cCB0aGUNCi0gIFVBUlQgaW4gcmVtb3RlIGxvb3BiYWNrIG1vZGUuDQotICovDQotdHlwZWRlZiBlbnVtIHsNCi0gICAgTVNTX1VBUlRfTE9DQUxfTE9PUEJBQ0tfT0ZGLA0KLSAgICBNU1NfVUFSVF9MT0NBTF9MT09QQkFDS19PTiwNCi0gICAgTVNTX1VBUlRfUkVNT1RFX0xPT1BCQUNLX09GRiwNCi0gICAgTVNTX1VBUlRfUkVNT1RFX0xPT1BCQUNLX09OLA0KLSAgICBNU1NfVUFSVF9BVVRPX0VDSE9fT0ZGLA0KLSAgICBNU1NfVUFSVF9BVVRPX0VDSE9fT04sDQotICAgIE1TU19VQVJUX0lOVkFMSURfTE9PUEJBQ0sNCi19IG1zc191YXJ0X2xvb3BiYWNrX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIElyREEgaW5wdXQgLyBvdXRwdXQgcG9sYXJpdHkuDQotICBUaGlzIGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgUlpJIG1vZGVtIHBvbGFyaXR5IGZvciBpbnB1dCBhbmQgb3V0cHV0IHNpZ25hbHMuIA0KLSAgVGhpcyBpcyBwYXNzZWQgYXMgcGFyYW1ldGVycyBpbiBNU1NfVUFSVF9pcmRhX2luaXQoKSBmdW5jdGlvbi4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfVUFSVF9BQ1RJVkVfTE9XID0gMHUsDQotICAgIE1TU19VQVJUX0FDVElWRV9ISUdIID0gMXUsDQotICAgIE1TU19VQVJUX0lOVkFMSURfUE9MQVJJVFkNCi19IG1zc191YXJ0X3J6aV9wb2xhcml0eV90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBJckRBIGlucHV0IC8gb3V0cHV0IHB1bHNlIHdpZHRoLg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIFJaSSBtb2RlbSBwdWxzZSB3aWR0aCBmb3IgaW5wdXQgYW5kIG91dHB1dCBzaWduYWxzLiANCi0gIFRoaXMgaXMgcGFzc2VkIGFzIHBhcmFtZXRlcnMgaW4gTVNTX1VBUlRfaXJkYV9pbml0KCkgZnVuY3Rpb24uDQotICovDQotdHlwZWRlZiBlbnVtIHsNCi0gICAgTVNTX1VBUlRfM19CWV8xNiA9IDB1LA0KLSAgICBNU1NfVUFSVF8xX0JZXzQgPSAxdSwNCi0gICAgTVNTX1VBUlRfSU5WQUxJRF9QVw0KLX0gbXNzX3VhcnRfcnppX3B1bHNld2lkdGhfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVHggLyBSeCBlbmRpYW5lc3MuDQotICBUaGlzIGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgTVNCIGZpcnN0IG9yIExTQiBmaXJzdCBmb3IgTVNTIFVBUlQgdHJhbnNtaXR0ZXIgDQotICBhbmQgcmVjZWl2ZXIuIFRoZSBwYXJhbWV0ZXIgb2YgdGhpcyB0eXBlIHNoYWxsIGJlIHBhc3NlZCBpbiANCi0gIE1TU19VQVJUX3NldF9yeF9lbmRpYW4oKWFuZCBNU1NfVUFSVF9zZXRfdHhfZW5kaWFuKCkgZnVuY3Rpb25zLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUX0xJVFRMRUVORCwNCi0gICAgTVNTX1VBUlRfQklHRU5ELA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX0VORElBTg0KLX0gbXNzX3VhcnRfZW5kaWFuX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIEdsaXRjaCBmaWx0ZXIgbGVuZ3RoLg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIGdsaXRjaCBmaWx0ZXIgbGVuZ3RoLiBUaGUgZnVuY3Rpb24gDQotICBNU1NfVUFSVF9zZXRfZmlsdGVyX2xlbmd0aCgpIGFjY2VwdHMgdGhlIHBhcmFtZXRlciBvZiB0aGlzIHR5cGUuDQotICovDQotdHlwZWRlZiBlbnVtIHsNCi0gICAgTVNTX1VBUlRfTEVOMCA9IDAsDQotICAgIE1TU19VQVJUX0xFTjEgPSAxLA0KLSAgICBNU1NfVUFSVF9MRU4yID0gMiwNCi0gICAgTVNTX1VBUlRfTEVOMyA9IDMsDQotICAgIE1TU19VQVJUX0xFTjQgPSA0LA0KLSAgICBNU1NfVUFSVF9MRU41ID0gNSwNCi0gICAgTVNTX1VBUlRfTEVONiA9IDYsDQotICAgIE1TU19VQVJUX0xFTjcgPSA3LA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX0ZJTFRFUl9MRU5HVEggPSA4DQotfSBtc3NfdWFydF9maWx0ZXJfbGVuZ3RoX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRYUkRZIGFuZCBSWFJEWSBtb2RlLg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIFRYUkRZIGFuZCBSWFJEWSBzaWduYWwgbW9kZXMuIFRoZSBmdW5jdGlvbiANCi0gIE1TU19VQVJUX3NldF9yZWFkeV9tb2RlKCkgYWNjZXB0cyB0aGUgcGFyYW1ldGVyIG9mIHRoaXMgdHlwZS4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfVUFSVF9SRUFEWV9NT0RFMCwNCi0gICAgTVNTX1VBUlRfUkVBRFlfTU9ERTEsDQotICAgIE1TU19VQVJUX0lOVkFMSURfUkVBRFlfTU9ERQ0KLX0gbXNzX3VhcnRfcmVhZHlfbW9kZV90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBVU0FSVCBtb2RlIG9mIG9wZXJhdGlvbi4NCi0gIFRoaXMgZW51bWVyYXRpb24gc3BlY2lmaWVzIHRoZSBtb2RlIG9mIG9wZXJhdGlvbiBvZiBNU1MgVUFSVCB3aGVuIG9wZXJhdGluZyANCi0gIGFzIFVTQVJULiBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfc2V0X3VzYXJ0X21vZGUoKSBhY2NlcHRzIHRoZSBwYXJhbWV0ZXIgb2YgdGhpcyB0eXBlLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUX0FTWU5DX01PREUgICAgICAgICAgICAgICA9IDAsDQotICAgIE1TU19VQVJUX1NZTkNfU0xBVkVfUE9TX0VER0VfQ0xLICA9IDEsDQotICAgIE1TU19VQVJUX1NZTkNfU0xBVkVfTkVHX0VER0VfQ0xLICA9IDIsDQotICAgIE1TU19VQVJUX1NZTkNfTUFTVEVSX1BPU19FREdFX0NMSyA9IDMsDQotICAgIE1TU19VQVJUX1NZTkNfTUFTVEVSX05FR19FREdFX0NMSyA9IDQsDQotICAgIE1TU19VQVJUX0lOVkFMSURfU1lOQ19NT0RFICAgICAgICA9IDUNCi19IG1zc191YXJ0X3VzYXJ0X21vZGVfdDsNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgTVNTIFVBUlQgaW5zdGFuY2UgdHlwZS4NCi0gIFRoaXMgaXMgdHlwZSBkZWZpbml0aW9uIGZvciBNU1MgVUFSVCBpbnN0YW5jZS4gWW91IG5lZWQgdG8gY3JlYXRlIGFuZA0KLSAgbWFpbnRhaW4gYSByZWNvcmQgb2YgdGhpcyB0eXBlLiBUaGlzIGhvbGRzIGFsbCBkYXRhIHJlZ2FyZGluZyB0aGUgTVNTIFVBUlQNCi0gIGluc3RhbmNlDQotICovDQotdHlwZWRlZiBzdHJ1Y3QgIG1zc191YXJ0X2luc3RhbmNlIG1zc191YXJ0X2luc3RhbmNlX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIEludGVycnVwdCBoYW5kbGVyIHByb3RvdHlwZS4NCi0gIFRoaXMgdHlwZWRlZiBzcGVjaWZpZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgTVNTIFVBUlQgaW50ZXJydXB0IGhhbmRsZXJzLg0KLSAgQWxsIGludGVycnVwdCBoYW5kbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIE1TUyBVQVJUIGRyaXZlciBtdXN0IGJlIG9mIHRoaXMgdHlwZS4NCi0gIFRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZHJpdmVyIHRocm91Z2ggdGhlDQotICBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigpLCBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpLA0KLSAgTVNTX1VBUlRfc2V0X3J4c3RhdHVzX2hhbmRsZXIoKSwgYW5kIE1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyKCkNCi0gIGZ1bmN0aW9ucy4NCi0gIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBlaXRoZXIgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDEgdG8NCi0gIGlkZW50aWZ5IHRoZSBNU1MgVUFSVCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaGFuZGxlciBmdW5jdGlvbi4NCi0gKi8NCi10eXBlZGVmIHZvaWQgKCptc3NfdWFydF9pcnFfaGFuZGxlcl90KSggbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCApOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBtc3NfdWFydF9pbnN0YW5jZS4NCi0gIFRoZXJlIGlzIG9uZSBpbnN0YW5jZSBvZiB0aGlzIHN0cnVjdHVyZSBmb3IgZWFjaCBpbnN0YW5jZSBvZiB0aGUNCi0gIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW2ScyBVQVJUcy4gSW5zdGFuY2VzIG9mIHRoaXMgc3RydWN0dXJlIGFyZSB1c2VkIHRvDQotICBpZGVudGlmeSBhIHNwZWNpZmljIFVBUlQuIEEgcG9pbnRlciB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiB0aGUNCi0gIG1zc191YXJ0X2luc3RhbmNlX3Qgc3RydWN0dXJlIGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvDQotICBNU1MgVUFSVCBkcml2ZXIgZnVuY3Rpb25zIHRvIGlkZW50aWZ5IHdoaWNoIFVBUlQgc2hvdWxkIHBlcmZvcm0gdGhlDQotICByZXF1ZXN0ZWQgb3BlcmF0aW9uLg0KLSAqLw0KLXN0cnVjdCBtc3NfdWFydF9pbnN0YW5jZXsNCi0gICAgLyogQ01TSVMgcmVsYXRlZCBkZWZpbmVzIGlkZW50aWZ5aW5nIHRoZSBVQVJUIGhhcmR3YXJlLiAqLw0KLSAgICBVQVJUX1R5cGVEZWYgKiAgICAgICAgICBod19yZWc7ICAgICAvKiE8IFBvaW50ZXIgdG8gVUFSVCByZWdpc3RlcnMuICovDQotICAgIElSUW5fVHlwZSAgICAgICAgICAgICAgIGlycW47ICAgICAgIC8qITwgVUFSVCdzIENvcnRleC1NMyBOVklDIGludGVycnVwdCBudW1iZXIuICovDQotICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIGJhdWRyYXRlOyAgIC8qITwgT3BlcmF0aW5nIGJhdWQgcmF0ZS4gKi8NCi0gICAgdWludDhfdCAgICAgICAgICAgICAgICAgbGluZWNvbmZpZzsgLyohPCBMaW5lIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gKi8NCi0gICAgdWludDhfdCAgICAgICAgICAgICAgICAgc3RhdHVzOyAgICAgLyohPCBTdGlja3kgbGluZSBzdGF0dXMuICovDQotDQotICAgIC8qIHRyYW5zbWl0IHJlbGF0ZWQgaW5mbyAodXNlZCB3aXRoIGludGVycnVwdCBkcml2ZW4gdHJhbnNtaXQpOiAqLw0KLSAgICBjb25zdCB1aW50OF90ICogdHhfYnVmZmVyOyAgICAgICAgICAvKiE8IFBvaW50ZXIgdG8gdHJhbnNtaXQgYnVmZmVyLiAqLw0KLSAgICB1aW50MzJfdCAgICAgICAgdHhfYnVmZl9zaXplOyAgICAgICAvKiE8IFRyYW5zbWl0IGJ1ZmZlciBzaXplLiAqLw0KLSAgICB1aW50MzJfdCAgICAgICAgdHhfaWR4OyAgICAgICAgICAgICAvKiE8IEluZGV4IHdpdGhpbiB0cmFuc21pdCBidWZmZXIgb2YgbmV4dCBieXRlIHRvIHRyYW5zbWl0LiovDQotDQotICAgIC8qIGxpbmUgc3RhdHVzIGludGVycnVwdCBoYW5kbGVyOiovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgbGluZXN0c19oYW5kbGVyOyAgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgbGluZSBzdGF0dXMgaGFuZGxlci4gKi8NCi0gICAgLyogcmVjZWl2ZSBpbnRlcnJ1cHQgaGFuZGxlcjoqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IHJ4X2hhbmRsZXI7ICAgICAgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIHJlY2VpdmVyIGhhbmRsZXIuICovDQotICAgIC8qIHRyYW5zbWl0IGludGVycnVwdCBoYW5kbGVyOiovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgdHhfaGFuZGxlcjsgICAgICAgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgdHJhbnNtaXQgaGFuZGxlci4gKi8NCi0gICAgLyogbW9kZW0gc3RhdHVzIGludGVycnVwdCBoYW5kbGVyOiovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgbW9kZW1zdHNfaGFuZGxlcjsgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgbW9kZW0gc3RhdHVzIGhhbmRsZXIuICovDQotICAgIC8qIHJlY2VpdmVyIHRpbWVvdXQgaW50ZXJydXB0IGhhbmRsZXIgKi8NCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBydG9faGFuZGxlcjsgICAgICAgLyohPCBQb2ludGVyIHRvIHVzZXIgcmVnaXN0ZXJlZCByZWNlaXZlciB0aW1lb3V0IGhhbmRsZXIuICovDQotICAgIC8qIE5BQ0sgaW50ZXJydXB0IGhhbmRsZXIgKi8NCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBuYWNrX2hhbmRsZXI7ICAgICAgLyohPCBQb2ludGVyIHRvIHVzZXIgcmVnaXN0ZXJlZCBOQUNLIGhhbmRsZXIuICovDQotICAgIC8qIFBJRCBwYXJpdHkgcHJyb3IgaW50ZXJydXAgaGFuZGxlciAqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IHBpZF9wZWlfaGFuZGxlcjsgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIFBJRCBwYXJpdHkgZXJyb3IgaGFuZGxlci4gKi8NCi0gICAgLyogTElOIGJyZWFrIGludGVycnVwdCBoYW5kbGVyICovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgYnJlYWtfaGFuZGxlcjsgICAgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgTElOIGJyZWFrIGhhbmRsZXIuICovDQotICAgIC8qIExJTiBzeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQgaGFuZGxlciAqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IHN5bmNfaGFuZGxlcjsgICAgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIExJTiBzeW5jIGRlY3RlY3Rpb24gaGFuZGxlci4gKi8NCi19Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGlzIGluc3RhbmNlIG9mIG1zc191YXJ0X2luc3RhbmNlX3QgaG9sZHMgYWxsIGRhdGEgcmVsYXRlZCB0byB0aGUgb3BlcmF0aW9ucw0KLSAgcGVyZm9ybWVkIGJ5IFVBUlQwLiBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfaW5pdCgpIGluaXRpYWxpemVzIHRoaXMgc3RydWN0dXJlLg0KLSAgQSBwb2ludGVyIHRvIGdfbXNzX3VhcnQwIGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIE1TUyBVQVJUIGRyaXZlcg0KLSAgZnVuY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgVUFSVDAgc2hvdWxkIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24uDQotICovDQotZXh0ZXJuIG1zc191YXJ0X2luc3RhbmNlX3QgZ19tc3NfdWFydDA7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoaXMgaW5zdGFuY2Ugb2YgbXNzX3VhcnRfaW5zdGFuY2VfdCBob2xkcyBhbGwgZGF0YSByZWxhdGVkIHRvIHRoZSBvcGVyYXRpb25zDQotICBwZXJmb3JtZWQgYnkgVUFSVDEuIFRoZSBmdW5jdGlvbiBNU1NfVUFSVF9pbml0KCkgaW5pdGlhbGl6ZXMgdGhpcyBzdHJ1Y3R1cmUuDQotICBBIHBvaW50ZXIgdG8gZ19tc3NfdWFydDEgaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gTVNTIFVBUlQgZHJpdmVyDQotICBmdW5jdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCBVQVJUMSBzaG91bGQgcGVyZm9ybSB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi4NCi0gKi8NCi1leHRlcm4gbXNzX3VhcnRfaW5zdGFuY2VfdCBnX21zc191YXJ0MTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyBhbmQgY29uZmlndXJlcyBvbmUgb2YgdGhlIFNtYXJ0RnVzaW9uMg0KLSAgTVNTIFVBUlRzIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGFzIGEgcGFyYW1ldGVyLiBUaGUgY29uZmlndXJhdGlvbg0KLSAgcGFyYW1ldGVycyBhcmUgdGhlIGJhdWRfcmF0ZSB3aGljaCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBiYXVkIHZhbHVlIGFuZCB0aGUNCi0gIGxpbmVfY29uZmlnIHdoaWNoIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGluZSBjb25maWd1cmF0aW9uIChiaXQgbGVuZ3RoLA0KLSAgc3RvcCBiaXRzIGFuZCBwYXJpdHkpLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdCBzdHJ1Y3R1cmUNCi0gICAgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRvIGJlIGluaXRpYWxpemVkLiBUaGVyZSBhcmUgdHdvDQotICAgIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLCBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MNCi0gICAgVUFSVDAgYW5kIE1TUyBVQVJUMSByZXNwZWN0aXZlbHkuIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyDQotICAgIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4NCi0gICAgdGhlIFVBUlQgZHJpdmVyLi4NCi0NCi0gIEBwYXJhbSBiYXVkX3JhdGUNCi0gICAgVGhlIGJhdWRfcmF0ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUuIEl0IGNhbiBiZSBzcGVjaWZpZWQgZm9yDQotICAgIGNvbW1vbiBiYXVkIHJhdGVzkiB1c2luZyB0aGUgZm9sbG93aW5nIGRlZmluZXM6DQotICAgIJUgICBNU1NfVUFSVF8xMTBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzEyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80ODAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzk2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTkyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzg0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNTc2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTE1MjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzIzMDQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80NjA4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTIxNjAwX0JBVUQNCi0gICAgQWx0ZXJuYXRpdmVseSwgYW55IG5vbnN0YW5kYXJkIGJhdWQgcmF0ZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHNpbXBseSBwYXNzaW5nDQotICAgIHRoZSBhY3R1YWwgcmVxdWlyZWQgYmF1ZCByYXRlIGFzIHRoZSB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuDQotDQotICBAcGFyYW0gbGluZV9jb25maWcNCi0gICAgVGhlIGxpbmVfY29uZmlnIHBhcmFtZXRlciBpcyB0aGUgbGluZSBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgdGhlIGJpdCBsZW5ndGgsDQotICAgIG51bWJlciBvZiBzdG9wIGJpdHMgYW5kIHBhcml0eSBzZXR0aW5ncy4gVGhpcyBpcyBhIGJpdHdpc2UgT1Igb2Ygb25lIHZhbHVlDQotICAgIGZyb20gZWFjaCBvZiB0aGUgZm9sbG93aW5nIGdyb3VwcyBvZiBhbGxvd2VkIHZhbHVlczoNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHRyYW5zbWl0L3JlY2VpdmUgZGF0YSBiaXQgbGVuZ3RoOg0KLSAgICAgICAgTVNTX1VBUlRfREFUQV81X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfNl9CSVRTLA0KLSAgICAgICAgTVNTX1VBUlRfREFUQV83X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBwYXJpdHkgc2V0dGluZzoNCi0gICAgICAgIE1TU19VQVJUX05PX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfRVZFTl9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX09ERF9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8wDQotICAgICAgICBNU1NfVUFSVF9TVElDS19QQVJJVFlfMQ0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0b3AgYml0czoNCi0gICAgICAgIE1TU19VQVJUX09ORV9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfT05FSEFMRl9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfVFdPX1NUT1BfQklUUw0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICANCi0gICAgIHJldHVybigwKTsNCi0gIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2luaXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QqIHRoaXNfdWFydCwNCi0gICAgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICB1aW50OF90IGxpbmVfY29uZmlnDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSBUaGUgTVNTX1VBUlRfbGluX2luaXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIE1TUyBVQVJUIGZvciANCi0gTElOIG1vZGUgb2Ygb3BlcmF0aW9uLiBUaGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSB0aGUgYmF1ZF9yYXRlIHdoaWNoIGlzIA0KLSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBiYXVkIHZhbHVlIGFuZCB0aGUgbGluZV9jb25maWcgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IA0KLSB0aGUgbGluZSBjb25maWd1cmF0aW9uIChiaXQgbGVuZ3RoLCBzdG9wIGJpdHMgYW5kIHBhcml0eSkuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGJhdWRfcmF0ZQ0KLSAgICBUaGUgYmF1ZF9yYXRlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGJhdWQgcmF0ZS4gSXQgY2FuIGJlIHNwZWNpZmllZCBmb3INCi0gICAgY29tbW9uIGJhdWQgcmF0ZXOSIHVzaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5lczoNCi0gICAglSAgIE1TU19VQVJUXzExMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8yNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xOTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zODQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF81NzYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xMTUyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjMwNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ2MDgwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF85MjE2MDBfQkFVRA0KLSAgICBBbHRlcm5hdGl2ZWx5LCBhbnkgbm9uc3RhbmRhcmQgYmF1ZCByYXRlIGNhbiBiZSBzcGVjaWZpZWQgYnkgc2ltcGx5IHBhc3NpbmcNCi0gICAgdGhlIGFjdHVhbCByZXF1aXJlZCBiYXVkIHJhdGUgYXMgdGhlIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlci4NCi0NCi0gIEBwYXJhbSBsaW5lX2NvbmZpZw0KLSAgICBUaGUgbGluZV9jb25maWcgcGFyYW1ldGVyIGlzIHRoZSBsaW5lIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyB0aGUgYml0IGxlbmd0aCwNCi0gICAgbnVtYmVyIG9mIHN0b3AgYml0cyBhbmQgcGFyaXR5IHNldHRpbmdzLiBUaGlzIGlzIGEgYml0d2lzZSBPUiBvZiBvbmUgdmFsdWUNCi0gICAgZnJvbSBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgZ3JvdXBzIG9mIGFsbG93ZWQgdmFsdWVzOg0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBkYXRhIGJpdCBsZW5ndGg6DQotICAgICAgICBNU1NfVUFSVF9EQVRBXzVfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV82X0JJVFMsDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzdfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHBhcml0eSBzZXR0aW5nOg0KLSAgICAgICAgTVNTX1VBUlRfTk9fUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9FVkVOX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfT0REX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzANCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8xDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzOg0KLSAgICAgICAgTVNTX1VBUlRfT05FX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9PTkVIQUxGX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9UV09fU1RPUF9CSVRTDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgaW50IG1haW4odm9pZCkNCi0gIHsNCi0gICAgIE1TU19VQVJUX2xpbl9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgIHJldHVybigwKTsNCi0gIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9saW5faW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LCANCi0gICAgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICB1aW50OF90IGxpbmVfY29uZmlnDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2lyZGFfaW5pdCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgDQotICByZWZlcmVuY2VkIGJ5IHRoZSBwYXJhbWV0ZXIgdGhpc191YXJ0ICBmb3IgSXJEQSBtb2RlIG9mIG9wZXJhdGlvbi4gVGhpcyANCi0gIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIGFueSBvdGhlciBJckRBIGZ1bmN0aW9uYWxpdHkgc3BlY2lmaWMgDQotICBmdW5jdGlvbnMuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGJhdWRfcmF0ZQ0KLSAgICBUaGUgYmF1ZF9yYXRlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGJhdWQgcmF0ZS4gSXQgY2FuIGJlIHNwZWNpZmllZCBmb3INCi0gICAgY29tbW9uIGJhdWQgcmF0ZXOSIHVzaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5lczoNCi0gICAglSAgIE1TU19VQVJUXzExMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8yNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xOTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zODQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF81NzYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xMTUyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjMwNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ2MDgwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF85MjE2MDBfQkFVRA0KLSAgICBBbHRlcm5hdGl2ZWx5LCBhbnkgbm9uc3RhbmRhcmQgYmF1ZCByYXRlIGNhbiBiZSBzcGVjaWZpZWQgYnkgc2ltcGx5IHBhc3NpbmcNCi0gICAgdGhlIGFjdHVhbCByZXF1aXJlZCBiYXVkIHJhdGUgYXMgdGhlIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlci4NCi0NCi0gIEBwYXJhbSBsaW5lX2NvbmZpZw0KLSAgICBUaGUgbGluZV9jb25maWcgcGFyYW1ldGVyIGlzIHRoZSBsaW5lIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyB0aGUgYml0IGxlbmd0aCwNCi0gICAgbnVtYmVyIG9mIHN0b3AgYml0cyBhbmQgcGFyaXR5IHNldHRpbmdzLiBUaGlzIGlzIGEgYml0d2lzZSBPUiBvZiBvbmUgdmFsdWUNCi0gICAgZnJvbSBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgZ3JvdXBzIG9mIGFsbG93ZWQgdmFsdWVzOg0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBkYXRhIGJpdCBsZW5ndGg6DQotICAgICAgICBNU1NfVUFSVF9EQVRBXzVfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV82X0JJVFMsDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzdfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHBhcml0eSBzZXR0aW5nOg0KLSAgICAgICAgTVNTX1VBUlRfTk9fUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9FVkVOX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfT0REX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzANCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8xDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzOg0KLSAgICAgICAgTVNTX1VBUlRfT05FX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9PTkVIQUxGX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9UV09fU1RPUF9CSVRTDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaXJkYV9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCwNCi0gICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0FDVElWRV9MT1csDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9BQ1RJVkVfTE9XLA0KLSAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfM19CWV8xNik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfaXJkYV9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90KiB0aGlzX3VhcnQsIA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcsDQotICAgIG1zc191YXJ0X3J6aV9wb2xhcml0eV90IHJ4cG9sLA0KLSAgICBtc3NfdWFydF9yemlfcG9sYXJpdHlfdCB0eHBvbCwNCi0gICAgbXNzX3VhcnRfcnppX3B1bHNld2lkdGhfdCBwdw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zbWFydGNhcmRfaW5pdCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTVNTIFVBUlQgDQotICBmb3IgSVNPIDc4MTYgKHNtYXJ0Y2FyZCkgbW9kZSBvZiBvcGVyYXRpb24uIFRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIA0KLSAgdGhlIGJhdWRfcmF0ZSB3aGljaCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBiYXVkIHZhbHVlIGFuZCB0aGUgbGluZV9jb25maWcgDQotICB3aGljaCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGxpbmUgY29uZmlndXJhdGlvbiAoYml0IGxlbmd0aCwgc3RvcCBiaXRzIGFuZCBwYXJpdHkpLiANCi0gIFRoaXMgZnVuY3Rpb24gZGlzYWJsZXMgYWxsIG90aGVyIG1vZGVzIG9mIHRoZSBNU1MgVUFSVCBpbnN0YW5jZSBwb2ludGVkIGJ5IA0KLSAgdGhlIHBhcmFtZXRlciB0aGlzX3VhcnQuDQotICANCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gYmF1ZF9yYXRlDQotICAgIFRoZSBiYXVkX3JhdGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgYmF1ZCByYXRlLiBJdCBjYW4gYmUgc3BlY2lmaWVkIGZvcg0KLSAgICBjb21tb24gYmF1ZCByYXRlc5IgdXNpbmcgdGhlIGZvbGxvd2luZyBkZWZpbmVzOg0KLSAgICCVICAgTVNTX1VBUlRfMTEwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzMwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xMjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzI0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNDgwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF85NjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzE5MjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzM4NDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzU3NjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzExNTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8yMzA0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNDYwODAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzkyMTYwMF9CQVVEDQotICAgIEFsdGVybmF0aXZlbHksIGFueSBub25zdGFuZGFyZCBiYXVkIHJhdGUgY2FuIGJlIHNwZWNpZmllZCBieSBzaW1wbHkgcGFzc2luZw0KLSAgICB0aGUgYWN0dWFsIHJlcXVpcmVkIGJhdWQgcmF0ZSBhcyB0aGUgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyLg0KLQ0KLSAgQHBhcmFtIGxpbmVfY29uZmlnDQotICAgIFRoZSBsaW5lX2NvbmZpZyBwYXJhbWV0ZXIgaXMgdGhlIGxpbmUgY29uZmlndXJhdGlvbiBzcGVjaWZ5aW5nIHRoZSBiaXQgbGVuZ3RoLA0KLSAgICBudW1iZXIgb2Ygc3RvcCBiaXRzIGFuZCBwYXJpdHkgc2V0dGluZ3MuIFRoaXMgaXMgYSBiaXR3aXNlIE9SIG9mIG9uZSB2YWx1ZQ0KLSAgICBmcm9tIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBncm91cHMgb2YgYWxsb3dlZCB2YWx1ZXM6DQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSB0cmFuc21pdC9yZWNlaXZlIGRhdGEgYml0IGxlbmd0aDoNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfNV9CSVRTDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzZfQklUUywNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfN19CSVRTDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUw0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgcGFyaXR5IHNldHRpbmc6DQotICAgICAgICBNU1NfVUFSVF9OT19QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX0VWRU5fUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9PRERfUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9TVElDS19QQVJJVFlfMA0KLSAgICAgICAgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzENCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdG9wIGJpdHM6DQotICAgICAgICBNU1NfVUFSVF9PTkVfU1RPUF9CSVQNCi0gICAgICAgIE1TU19VQVJUX09ORUhBTEZfU1RPUF9CSVQNCi0gICAgICAgIE1TU19VQVJUX1RXT19TVE9QX0JJVFMNCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gICAgICBpbnQgbWFpbih2b2lkKQ0KLSAgICAgIHsNCi0gICAgICAgICBNU1NfVUFSVF9zbWFydGNhcmRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICAgcmV0dXJuKDApOw0KLSAgICAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9zbWFydGNhcmRfaW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LCANCi0gICAgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICB1aW50OF90IGxpbmVfY29uZmlnDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIGZ1bmN0aW9uIE1TU19VQVJUX3BvbGxlZF90eCgpIGlzIHVzZWQgdG8gdHJhbnNtaXQgZGF0YS4gSXQgdHJhbnNmZXJzIHRoZQ0KLSAgY29udGVudHMgb2YgdGhlIHRyYW5zbWl0dGVyIGRhdGEgYnVmZmVyLCBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIGludG8NCi0gIHRoZSBVQVJUknMgaGFyZHdhcmUgdHJhbnNtaXR0ZXIgRklGTy4gSXQgcmV0dXJucyB3aGVuIHRoZSBmdWxsIGNvbnRlbnQgb2YgdGhlDQotICB0cmFuc21pdCBkYXRhIGJ1ZmZlciBoYXMgYmVlbiB0cmFuc2ZlcnJlZCB0byB0aGUgVUFSVJJzIHRyYW5zbWl0IEZJRk8uIEl0IGlzDQotICBzYWZlIHRvIHJlbGVhc2Ugb3IgcmV1c2UgdGhlIG1lbW9yeSB1c2VkIGFzIHRoZSB0cmFuc21pdHRlciBkYXRhIGJ1ZmZlciBvbmNlDQotICB0aGlzIGZ1bmN0aW9uIHJldHVybnMuDQotDQotICBOb3RlOiAgICAgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgVUFSVJJzIGxpbmUgc3RhdHVzIHJlZ2lzdGVyIChMU1IpIHRvIHBvbGwNCi0gIGZvciB0aGUgYWN0aXZlIHN0YXRlIG9mIHRoZSB0cmFuc21pdHRlciBob2xkaW5nIHJlZ2lzdGVyIGVtcHR5IChUSFJFKSBiaXQNCi0gIGJlZm9yZSB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciB0byB0aGUgdHJhbnNtaXR0ZXIgRklGTy4gSXQNCi0gIHRyYW5zZmVycyBkYXRhIHRvIHRoZSB0cmFuc21pdHRlciBGSUZPIGluIGJsb2NrcyBvZiAxNiBieXRlcyBvciBsZXNzIGFuZA0KLSAgYWxsb3dzIHRoZSBGSUZPIHRvIGVtcHR5IGJlZm9yZSB0cmFuc2ZlcnJpbmcgdGhlIG5leHQgYmxvY2sgb2YgZGF0YS4NCi0NCi0gIE5vdGU6ICAgICBUaGUgYWN0dWFsIHRyYW5zbWlzc2lvbiBvdmVyIHRoZSBzZXJpYWwgY29ubmVjdGlvbiB3aWxsIHN0aWxsIGJlDQotICBpbiBwcm9ncmVzcyB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gVXNlIHRoZSBNU1NfVUFSVF9nZXRfdHhfc3RhdHVzKCkNCi0gIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgd2hlbiB0aGUgdHJhbnNtaXR0ZXIgaXMgZW1wdHkuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIHBidWZmDQotICAgIFRoZSBwYnVmZiBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8NCi0gICAgYmUgdHJhbnNtaXR0ZWQuDQotDQotICBAcGFyYW0gdHhfc2l6ZQ0KLSAgICBUaGUgdHhfc2l6ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGRhdGEgdG8NCi0gICAgYmUgdHJhbnNtaXR0ZWQuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgaW50IG1haW4odm9pZCkNCi0gIHsNCi0gICAgIHVpbnQ4X3QgbWVzc2FnZVsxMl0gPSAiSGVsbG8gV29ybGQiOw0KLQ0KLSAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsNCi0gICAgICAgICAgICAgICAgICAgDQotICAgICBNU1NfVUFSVF9wb2xsZWRfdHgoJmdfbXNzX3VhcnQwLCBtZXNzYWdlLCBzaXplb2YobWVzc2FnZSkpOw0KLSAgICAgDQotICAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9wb2xsZWRfdHgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwYnVmZiwNCi0gICAgdWludDMyX3QgdHhfc2l6ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBmdW5jdGlvbiBNU1NfVUFSVF9wb2xsZWRfdHhfc3RyaW5nKCkgaXMgdXNlZCB0byB0cmFuc21pdCBhIE5VTEwgKCdcMCcpDQotICB0ZXJtaW5hdGVkIHN0cmluZy4gSXQgdHJhbnNmZXJzIHRoZSB0ZXh0IHN0cmluZywgZnJvbSB0aGUgYnVmZmVyIHN0YXJ0aW5nIGF0DQotICB0aGUgYWRkcmVzcyBwb2ludGVkIHRvIGJ5IHBfc3pfc3RyaW5nIGludG8gdGhlIFVBUlSScyBoYXJkd2FyZSB0cmFuc21pdHRlcg0KLSAgRklGTy4gSXQgcmV0dXJucyB3aGVuIHRoZSBjb21wbGV0ZSBzdHJpbmcgaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gdGhlIFVBUlQncw0KLSAgdHJhbnNtaXQgRklGTy4gSXQgaXMgc2FmZSB0byByZWxlYXNlIG9yIHJldXNlIHRoZSBtZW1vcnkgdXNlZCBhcyB0aGUgc3RyaW5nDQotICBidWZmZXIgb25jZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMuDQotDQotICBOb3RlOiAgICAgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgVUFSVJJzIGxpbmUgc3RhdHVzIHJlZ2lzdGVyIChMU1IpIHRvIHBvbGwNCi0gIGZvciB0aGUgYWN0aXZlIHN0YXRlIG9mIHRoZSB0cmFuc21pdHRlciBob2xkaW5nIHJlZ2lzdGVyIGVtcHR5IChUSFJFKSBiaXQNCi0gIGJlZm9yZSB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciB0byB0aGUgdHJhbnNtaXR0ZXIgRklGTy4gSXQNCi0gIHRyYW5zZmVycyBkYXRhIHRvIHRoZSB0cmFuc21pdHRlciBGSUZPIGluIGJsb2NrcyBvZiAxNiBieXRlcyBvciBsZXNzIGFuZA0KLSAgYWxsb3dzIHRoZSBGSUZPIHRvIGVtcHR5IGJlZm9yZSB0cmFuc2ZlcnJpbmcgdGhlIG5leHQgYmxvY2sgb2YgZGF0YS4NCi0NCi0gIE5vdGU6ICAgICBUaGUgYWN0dWFsIHRyYW5zbWlzc2lvbiBvdmVyIHRoZSBzZXJpYWwgY29ubmVjdGlvbiB3aWxsIHN0aWxsIGJlDQotICBpbiBwcm9ncmVzcyB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gVXNlIHRoZSBNU1NfVUFSVF9nZXRfdHhfc3RhdHVzKCkNCi0gIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgd2hlbiB0aGUgdHJhbnNtaXR0ZXIgaXMgZW1wdHkuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIHBfc3pfc3RyaW5nDQotICAgIFRoZSBwX3N6X3N0cmluZyBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIE5VTEwNCi0gICAgKCdcMCcpIHRlcm1pbmF0ZWQgc3RyaW5nIHRvIGJlIHRyYW5zbWl0dGVkLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgICB1aW50OF90IG1lc3NhZ2VbMTJdID0gIkhlbGxvIFdvcmxkIjsNCi0NCi0gICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgIA0KLSAgICAgTVNTX1VBUlRfcG9sbGVkX3R4X3N0cmluZygmZ19tc3NfdWFydDAsIG1lc3NhZ2UpOw0KLSAgICAgDQotICAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9wb2xsZWRfdHhfc3RyaW5nDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBjb25zdCB1aW50OF90ICogcF9zel9zdHJpbmcNCi0pOw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfaXJxX3R4KCkgaXMgdXNlZCB0byBpbml0aWF0ZSBhbiBpbnRlcnJ1cHQtZHJpdmVuDQotICB0cmFuc21pdC4gSXQgcmV0dXJucyBpbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgYSBub3RlIG9mIHRoZSB0cmFuc21pdCBidWZmZXINCi0gIGxvY2F0aW9uIGFuZCBlbmFibGluZyB0cmFuc21pdCBpbnRlcnJ1cHRzIGJvdGggYXQgdGhlIFVBUlQgYW5kIENvcnRleC1NMyBOVklDDQotICBsZXZlbC4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHBvaW50ZXIgdmlhIHRoZSBwYnVmZiBwYXJhbWV0ZXIgdG8gYSBtZW1vcnkNCi0gIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIHRyYW5zbWl0LiBUaGUgbWVtb3J5IGJ1ZmZlciBzcGVjaWZpZWQgdGhyb3VnaA0KLSAgdGhpcyBwb2ludGVyIG11c3QgcmVtYWluIGFsbG9jYXRlZCBhbmQgY29udGFpbiB0aGUgZGF0YSB0byB0cmFuc21pdCB1bnRpbA0KLSAgdGhlIHRyYW5zbWl0IGNvbXBsZXRpb24gaGFzIGJlZW4gZGV0ZWN0ZWQgdGhyb3VnaCBjYWxscyB0byBmdW5jdGlvbg0KLSAgTVNTX1VBUlRfdHhfY29tcGxldGUoKS4gVGhlIGFjdHVhbCB0cmFuc21pc3Npb24gb3ZlciB0aGUgc2VyaWFsIGNvbm5lY3Rpb24NCi0gIGlzIHN0aWxsIGluIHByb2dyZXNzIHVudGlsIGNhbGxzIHRvIHRoZSBNU1NfVUFSVF90eF9jb21wbGV0ZSgpIGZ1bmN0aW9uDQotICBpbmRpY2F0ZSB0cmFuc21pdCBjb21wbGV0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9pcnFfdHgoKSBmdW5jdGlvbiBlbmFibGVzIGJvdGggdGhlIHRyYW5zbWl0IGhvbGRpbmcNCi0gIHJlZ2lzdGVyIGVtcHR5IChUSFJFKSBpbnRlcnJ1cHQgaW4gdGhlIFVBUlQgYW5kIHRoZSBNU1MgVUFSVCBpbnN0YW5jZQ0KLSAgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgTlZJQyBhcyBwYXJ0IG9mIGl0cyBpbXBsZW1lbnRhdGlvbi4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfaXJxX3R4KCkgZnVuY3Rpb24gYXNzaWducyBhbiBpbnRlcm5hbCBkZWZhdWx0IHRyYW5zbWl0DQotICBpbnRlcnJ1cHQgaGFuZGxlciBmdW5jdGlvbiB0byB0aGUgVUFSVJJzIFRIUkUgaW50ZXJydXB0LiBUaGlzIGludGVycnVwdA0KLSAgaGFuZGxlciBvdmVycmlkZXMgYW55IGN1c3RvbSBpbnRlcnJ1cHQgaGFuZGxlciB0aGF0IHlvdSBtYXkgaGF2ZSBwcmV2aW91c2x5DQotICByZWdpc3RlcmVkIHVzaW5nIHRoZSBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9pcnFfdHgoKSBmdW5jdGlvbpJzIGRlZmF1bHQgdHJhbnNtaXQgaW50ZXJydXB0DQotICBoYW5kbGVyIGRpc2FibGVzIHRoZSBVQVJUknMgVEhSRSBpbnRlcnJ1cHQgd2hlbiBhbGwgb2YgdGhlIGRhdGEgaGFzDQotICBiZWVuIHRyYW5zZmVycmVkIHRvIHRoZSBVQVJUJ3MgdHJhbnNtaXQgRklGTy4NCi0NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gcGJ1ZmYNCi0gICAgVGhlIHBidWZmIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YQ0KLSAgICB0byBiZSB0cmFuc21pdHRlZC4NCi0NCi0gIEBwYXJhbSB0eF9zaXplDQotICAgIFRoZSB0eF9zaXplIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZGF0YQ0KLSAgICB0byBiZSB0cmFuc21pdHRlZC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICBpbnQgbWFpbih2b2lkKQ0KLSAgew0KLSAgICAgdWludDhfdCB0eF9idWZmWzEwXSA9ICJhYmNkZWZnaGkiOw0KLSAgICAgDQotICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICANCi0gICAgIE1TU19VQVJUX2lycV90eCgmZ19tc3NfdWFydDAsIHR4X2J1ZmYsIHNpemVvZih0eF9idWZmKSk7DQotICAgICANCi0gICAgIHdoaWxlKDAgPT0gTVNTX1VBUlRfdHhfY29tcGxldGUoJmdfbXNzX3VhcnQwKSkNCi0gICAgIHsNCi0gICAgICAgICA7DQotICAgICB9DQotICAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9pcnFfdHgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwYnVmZiwNCi0gICAgdWludDMyX3QgdHhfc2l6ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF90eF9jb21wbGV0ZSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmluZCBvdXQgaWYgdGhlIGludGVycnVwdC1kcml2ZW4NCi0gIHRyYW5zbWl0IHByZXZpb3VzbHkgaW5pdGlhdGVkIHRocm91Z2ggYSBjYWxsIHRvIE1TU19VQVJUX2lycV90eCgpIGlzIGNvbXBsZXRlLg0KLSAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBmaW5kIG91dCB3aGVuIGl0IGlzIHNhZmUgdG8gcmV1c2Ugb3IgcmVsZWFzZSB0aGUNCi0gIG1lbW9yeSBidWZmZXIgaG9sZGluZyB0cmFuc21pdCBkYXRhLg0KLQ0KLSAgTm90ZTogICAgIFRoZSB0cmFuc2ZlciBvZiBhbGwgb2YgdGhlIGRhdGEgZnJvbSB0aGUgbWVtb3J5IGJ1ZmZlciB0byB0aGUgVUFSVJJzDQotICB0cmFuc21pdCBGSUZPIGFuZCB0aGUgYWN0dWFsIHRyYW5zbWlzc2lvbiBvdmVyIHRoZSBzZXJpYWwgY29ubmVjdGlvbiBhcmUgYm90aA0KLSAgY29tcGxldGUgd2hlbiBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX3R4X2NvbXBsZXRlKCkgZnVuY3Rpb24gaW5kaWNhdGVzIHRyYW5zbWl0DQotICBjb21wbGV0aW9uLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm4gYSBub24temVybyB2YWx1ZSBpZiB0cmFuc21pdCBoYXMgY29tcGxldGVkLCBvdGhlcndpc2UNCi0gICAgaXQgcmV0dXJucyB6ZXJvLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgU2VlIHRoZSBNU1NfVUFSVF9pcnFfdHgoKSBmdW5jdGlvbiBmb3IgYW4gZXhhbXBsZSB0aGF0IHVzZXMgdGhlDQotICAgIE1TU19VQVJUX3R4X2NvbXBsZXRlKCkgZnVuY3Rpb24uDQotICovDQotaW50OF90DQotTVNTX1VBUlRfdHhfY29tcGxldGUNCi0oDQotICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbiByZWFkcyB0aGUgY29udGVudCBvZiB0aGUgVUFSVCByZWNlaXZlcpJzIEZJRk8NCi0gIGFuZCBzdG9yZXMgaXQgaW4gdGhlIHJlY2VpdmUgYnVmZmVyIHRoYXQgaXMgcGFzc2VkIHZpYSB0aGUgcnhfYnVmZiBmdW5jdGlvbg0KLSAgcGFyYW1ldGVyLiBJdCBjb3BpZXMgZWl0aGVyIHRoZSBmdWxsIGNvbnRlbnRzIG9mIHRoZSBGSUZPIGludG8gdGhlIHJlY2VpdmUNCi0gIGJ1ZmZlciwgb3IganVzdCBlbm91Z2ggZGF0YSBmcm9tIHRoZSBGSUZPIHRvIGZpbGwgdGhlIHJlY2VpdmUgYnVmZmVyLA0KLSAgZGVwZW5kZW50IHVwb24gdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVyIHBhc3NlZCBieSB0aGUgYnVmZl9zaXplDQotICBwYXJhbWV0ZXIuIFRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkDQotICBpbnRvIHRoZSByZWNlaXZlIGJ1ZmZlciAuVGhpcyBmdW5jdGlvbiBpcyBub24tYmxvY2tpbmcgYW5kIHdpbGwgcmV0dXJuIDANCi0gIGltbWVkaWF0ZWx5IGlmIG5vIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQuDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX2dldF9yeCgpIGZ1bmN0aW9uIHJlYWRzIGFuZCBhY2N1bXVsYXRlcyB0aGUgcmVjZWl2ZXINCi0gIHN0YXR1cyBvZiB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgYmVmb3JlIHJlYWRpbmcgZWFjaCBieXRlIGZyb20gdGhlIHJlY2VpdmVyJ3MNCi0gIGRhdGEgcmVnaXN0ZXIvRklGTy4gVGhpcyBhbGxvd3MgdGhlIGRyaXZlciB0byBtYWludGFpbiBhIHN0aWNreSByZWNvcmQgb2YgYW55DQotICByZWNlaXZlciBlcnJvcnMgdGhhdCBvY2N1ciBhcyB0aGUgVUFSVCByZWNlaXZlcyBlYWNoIGRhdGEgYnl0ZTsgcmVjZWl2ZXINCi0gIGVycm9ycyB3b3VsZCBvdGhlcndpc2UgYmUgbG9zdCBhZnRlciBlYWNoIHJlYWQgZnJvbSB0aGUgcmVjZWl2ZXIncyBkYXRhIHJlZ2lzdGVyLg0KLSAgQSBjYWxsIHRvIHRoZSBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKCkgZnVuY3Rpb24gcmV0dXJucyBhbnkgcmVjZWl2ZXIgZXJyb3JzDQotICBhY2N1bXVsYXRlZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgTVNTX1VBUlRfZ2V0X3J4KCkgZnVuY3Rpb24uDQotDQotICBOb3RlOiAgICAgSWYgeW91IG5lZWQgdG8gcmVhZCB0aGUgZXJyb3Igc3RhdHVzIGZvciBlYWNoIGJ5dGUgcmVjZWl2ZWQsIHNldA0KLSAgdGhlIGJ1ZmZfc2l6ZSB0byAxIGFuZCByZWFkIHRoZSByZWNlaXZlIGxpbmUgZXJyb3Igc3RhdHVzIGZvciBlYWNoIGJ5dGUNCi0gIHVzaW5nIHRoZSBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKCkgZnVuY3Rpb24uDQotICBUaGUgTVNTX1VBUlRfZ2V0X3J4KCkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gcG9sbGVkIG1vZGUsIHdoZXJlIGl0IGlzIGNhbGxlZA0KLSAgYXQgcmVndWxhciBpbnRlcnZhbHMgdG8gZmluZCBvdXQgaWYgYW55IGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQsIG9yIGluIGludGVycnVwdA0KLSAgZHJpdmVuLW1vZGUsIHdoZXJlIGl0IGlzIGNhbGxlZCBhcyBwYXJ0IG9mIGEgcmVjZWl2ZSBoYW5kbGVyIHRoYXQgaXMgY2FsbGVkDQotICBieSB0aGUgZHJpdmVyIGFzIGEgcmVzdWx0IG9mIGRhdGEgYmVpbmcgcmVjZWl2ZWQuDQotDQotICBOb3RlOiAgICAgSW4gaW50ZXJydXB0IGRyaXZlbiBtb2RlIHlvdSBzaG91bGQgY2FsbCB0aGUgTVNTX1VBUlRfZ2V0X3J4KCkNCi0gIGZ1bmN0aW9uIGFzIHBhcnQgb2YgdGhlIHJlY2VpdmUgaGFuZGxlciBmdW5jdGlvbiB0aGF0IHlvdSByZWdpc3RlciB3aXRoDQotICB0aGUgTVNTIFVBUlQgZHJpdmVyIHRocm91Z2ggYSBjYWxsIHRvIE1TU19VQVJUX3NldF9yeF9oYW5kbGVyKCkuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIHJ4X2J1ZmYNCi0gICAgVGhlIHJ4X2J1ZmYgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciB3aGVyZSB0aGUgcmVjZWl2ZWQNCi0gICAgZGF0YSBpcyBjb3BpZWQuDQotDQotICBAcGFyYW0gYnVmZl9zaXplDQotICAgIFRoZSBidWZmX3NpemUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgcmVjZWl2ZSBidWZmZXIgaW4gYnl0ZXMuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZSBjb3BpZWQgaW50byB0aGUNCi0gICAgcnhfYnVmZiBidWZmZXIuIEl0IHJldHVybnMgMCBpZiBubyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLg0KLQ0KLSAgUG9sbGVkIG1vZGUgZXhhbXBsZToNCi0gIEBjb2RlDQotICAgaW50IG1haW4oIHZvaWQgKQ0KLSAgIHsNCi0gICAgICB1aW50OF90IHJ4X2J1ZmZbUlhfQlVGRl9TSVpFXTsNCi0gICAgICB1aW50MzJfdCByeF9pZHggID0gMDsNCi0NCi0gICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgICANCi0gICAgICB3aGlsZSgxKQ0KLSAgICAgIHsNCi0gICAgICAgICAgcnhfc2l6ZSA9IE1TU19VQVJUX2dldF9yeCgmZ19tc3NfdWFydDAsIHJ4X2J1ZmYsIHNpemVvZihyeF9idWZmKSk7DQotICAgICAgICAgIGlmKHJ4X3NpemUgPiAwKQ0KLSAgICAgICAgICB7DQotICAgICAgICAgICAgICBwcm9jZXNzX3J4X2RhdGEocnhfYnVmZiwgcnhfc2l6ZSk7DQotICAgICAgICAgIH0NCi0gICAgICAgICAgdGFza19hKCk7DQotICAgICAgICAgIHRhc2tfYigpOw0KLSAgICAgIH0NCi0gICAgICByZXR1cm4gMDsNCi0gICB9DQotICBAZW5kY29kZQ0KLQ0KLSAgSW50ZXJydXB0IGRyaXZlbiBleGFtcGxlOg0KLSAgQGNvZGUNCi0gICBpbnQgbWFpbiggdm9pZCApDQotICAgew0KLSAgICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQxLA0KLSAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsNCi0gICAgICAgICAgICAgICAgICAgIA0KLSAgICAgIE1TU19VQVJUX3NldF9yeF9oYW5kbGVyKCZnX21zc191YXJ0MSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YXJ0MV9yeF9oYW5kbGVyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0ZJRk9fU0lOR0xFX0JZVEUpOw0KLSAgICAgIA0KLSAgICAgIHdoaWxlKDEpDQotICAgICAgew0KLSAgICAgICAgICB0YXNrX2EoKTsNCi0gICAgICAgICAgdGFza19iKCk7DQotICAgICAgfQ0KLSAgICAgIHJldHVybiAwOw0KLSAgIH0NCi0NCi0gICB2b2lkIHVhcnQxX3J4X2hhbmRsZXIobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCkNCi0gICB7DQotICAgICAgdWludDhfdCByeF9idWZmW1JYX0JVRkZfU0laRV07DQotICAgICAgdWludDMyX3QgcnhfaWR4ICA9IDA7DQotICAgICAgcnhfc2l6ZSA9IE1TU19VQVJUX2dldF9yeCh0aGlzX3VhcnQsIHJ4X2J1ZmYsIHNpemVvZihyeF9idWZmKSk7DQotICAgICAgcHJvY2Vzc19yeF9kYXRhKHJ4X2J1ZmYsIHJ4X3NpemUpOw0KLSAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotc2l6ZV90DQotTVNTX1VBUlRfZ2V0X3J4DQotKA0KLSAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgdWludDhfdCAqIHJ4X2J1ZmYsDQotICAgc2l6ZV90IGJ1ZmZfc2l6ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSByZWNlaXZlIGhhbmRsZXINCi0gIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBhIFVBUlQgcmVjZWl2ZSBkYXRhIGF2YWlsYWJsZSAoUkRBKQ0KLSAgaW50ZXJydXB0IG9jY3Vycy4gWW91IG11c3QgY3JlYXRlIGFuZCByZWdpc3RlciB0aGUgcmVjZWl2ZSBoYW5kbGVyIGZ1bmN0aW9uDQotICB0byBzdWl0IHlvdXIgYXBwbGljYXRpb24gYW5kIGl0IG11c3QgaW5jbHVkZSBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX2dldF9yeCgpDQotICBmdW5jdGlvbiB0byBhY3R1YWxseSByZWFkIHRoZSByZWNlaXZlZCBkYXRhLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigpIGZ1bmN0aW9uIGVuYWJsZXMgYm90aCB0aGUgUkRBDQotICBpbnRlcnJ1cHQgaW4gdGhlIFVBUlQgYW5kIHRoZSBNU1MgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMw0KLSAgTlZJQyBhcyBwYXJ0DQotICBvZiBpdHMgaW1wbGVtZW50YXRpb24uDQotDQotICBOb3RlOiAgICAgWW91IGNhbiBkaXNhYmxlIHRoZSBSREEgaW50ZXJydXB0IG9uY2UgdGhlIGRhdGEgaXMgcmVjZWl2ZWQgYnkNCi0gIGNhbGxpbmcgdGhlIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24uIFRoaXMgaXMgeW91ciBjaG9pY2UgYW5kIGlzDQotICBkZXBlbmRlbnQgdXBvbiB5b3VyIGFwcGxpY2F0aW9uLg0KLQ0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBoYW5kbGVyDQotICAgIFRoZSBoYW5kbGVyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSByZWNlaXZlIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uDQotICAgIHByb3ZpZGVkIGJ5IHlvdXIgYXBwbGljYXRpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhIHJlc3VsdCBvZiBhIFVBUlQgUkRBDQotICAgIGludGVycnVwdC4gVGhpcyBoYW5kbGVyIGZ1bmN0aW9uIG11c3QgYmUgb2YgdHlwZSBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHBhcmFtIHRyaWdnZXJfbGV2ZWwNCi0gICAgVGhlIHRyaWdnZXJfbGV2ZWwgcGFyYW1ldGVyIGlzIHRoZSByZWNlaXZlIEZJRk8gdHJpZ2dlciBsZXZlbC4gVGhpcw0KLSAgICBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgcmVjZWl2ZWQgYmVmb3JlIHRoZSBVQVJUDQotICAgIHRyaWdnZXJzIGFuIFJEQSBpbnRlcnJ1cHQuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgI2RlZmluZSBSWF9CVUZGX1NJWkUgICAgNjQNCi0NCi0gIHVpbnQ4X3QgZ19yeF9idWZmW1JYX0JVRkZfU0laRV07DQotDQotICB2b2lkIHVhcnQwX3J4X2hhbmRsZXIobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCkNCi0gIHsNCi0gICAgICBNU1NfVUFSVF9nZXRfcngodGhpc191YXJ0LCAmZ19yeF9idWZmW2dfcnhfaWR4XSwgc2l6ZW9mKGdfcnhfYnVmZikpOw0KLSAgfQ0KLQ0KLSAgaW50IG1haW4odm9pZCkNCi0gIHsNCi0gICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgICANCi0gICAgICBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFydDBfcnhfaGFuZGxlciwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9GSUZPX1NJTkdMRV9CWVRFKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgICB3aGlsZSgxKQ0KLSAgICAgIHsNCi0gICAgICAgICA7DQotICAgICAgfQ0KLSAgICAgIHJldHVybigwKTsNCi0gICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqICAgICAgIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCAgICAgICAgICBoYW5kbGVyLA0KLSAgICBtc3NfdWFydF9yeF90cmlnX2xldmVsX3QgICAgdHJpZ2dlcl9sZXZlbA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfbG9vcGJhY2soKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGxvY2FsbHkgbG9vcGJhY2sgdGhlIFR4IGFuZA0KLSAgUnggbGluZXMgb2YgYSBVQVJULiBUaGlzIGlzIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHRoZSBsb29wYmFjayBvZiBVQVJUMA0KLSAgdG8gVUFSVDEsIHdoaWNoIGNhbiBiZSBhY2hpZXZlZCB0aHJvdWdoIHRoZSBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtknMNCi0gIHN5c3RlbSByZWdpc3RlcnMuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGxvb3BiYWNrDQotICAgIFRoZSBsb29wYmFjayBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBVQVJUknMgdHJhbnNtaXQNCi0gICAgYW5kIHJlY2VpdmUgbGluZXMgc2hvdWxkIGJlIGxvb3BlZCBiYWNrLiBBbGxvd2VkIHZhbHVlcyBhcmUgYXMgZm9sbG93czoNCi0gICAgICAtIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09ODQotICAgICAgLSBNU1NfVUFSVF9MT0NBTF9MT09QQkFDS19PRkYgDQotICAgICAgLSBNU1NfVUFSVF9SRU1PVEVfTE9PUEJBQ0tfT04NCi0gICAgICAtIE1TU19VQVJUX1JFTU9URV9MT09QQkFDS19PRkYgDQotICAgICAgLSBNU1NfVUFSVF9BVVRPX0VDSE9fT04NCi0gICAgICAtIE1TU19VQVJUX0FVVE9fRUNIT19PRkYNCi0gICAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgICAgTVNTX1VBUlRfc2V0X2xvb3BiYWNrKCZnX21zc191YXJ0MCwgTVNTX1VBUlRfTE9DQUxfTE9PUEJBQ0tfT0ZGKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9sb29wYmFjaw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqICAgdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9sb29wYmFja190ICAgICBsb29wYmFjaw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9lbmFibGVfaXJxKCkgZnVuY3Rpb24gZW5hYmxlcyB0aGUgTVNTIFVBUlQgaW50ZXJydXB0cyBzcGVjaWZpZWQNCi0gIGJ5IHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIuIFRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgTVNTIFVBUlQNCi0gIGludGVycnVwdHMgYnkgYml0IHBvc2l0aW9uLCBhcyBkZWZpbmVkIGluIHRoZSBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVyIChJRVIpDQotICBvZiBNU1MgVUFSVC4gVGhlIE1TUyBVQVJUIGludGVycnVwdHMgYW5kIHRoZWlyIGlkZW50aWZ5aW5nIGlycV9tYXNrIGJpdA0KLSAgcG9zaXRpb25zIGFyZSBhcyBmb2xsb3dzOg0KLSAgV2hlbiBhbiBpcnFfbWFzayBiaXQgcG9zaXRpb24gaXMgc2V0IHRvIDEsIHRoaXMgZnVuY3Rpb24gZW5hYmxlcyB0aGUNCi0gIGNvcnJlc3BvbmRpbmcgTVNTIFVBUlQgaW50ZXJydXB0IGluIHRoZSBJRVIgcmVnaXN0ZXIuIFdoZW4gYW4gaXJxX21hc2sgYml0DQotICBwb3NpdGlvbiBpcyBzZXQgdG8gMCwgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0knMgc3RhdGUgcmVtYWlucyB1bmNoYW5nZWQgaW4NCi0gIHRoZSBJRVIgcmVnaXN0ZXIuDQotICBOb3RlOiBUaGUgTVNTX1VBUlRfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGFsc28gZW5hYmxlcyB0aGUgTVNTIFVBUlQgaW5zdGFuY2UNCi0gICAgICAgIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIE5WSUMuDQotICAgICAgICANCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3Qgc3RydWN0dXJlDQotICAgIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybSB0aGUgcmVxdWVzdGVkDQotICAgIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLCBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsDQotICAgIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4gVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXINCi0gICAgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVA0KLSAgICBkcml2ZXIuDQotDQotICBAcGFyYW0gaXJxX21hc2sNCi0gICAgVGhlIGlycV9tYXNrIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNlbGVjdCB3aGljaCBvZiB0aGUgTVNTIFVBUlSScyBpbnRlcnJ1cHRzDQotICAgIHlvdSB3YW50IHRvIGVuYWJsZS4gVGhlIGFsbG93ZWQgdmFsdWUgZm9yIHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgaXMgb25lIG9mDQotICAgIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIG9yIGEgYml0d2lzZSBPUiBvZiBtb3JlIHRoYW4gb25lOg0KLSAgICAgIC0gTVNTX1VBUlRfUkJGX0lSUQkJKGJpdCBtYXNrID0gMHgwMDEpDQotICAgICAgLSBNU1NfVUFSVF9UQkVfSVJRCQkoYml0IG1hc2sgPSAweDAwMikNCi0gICAgICAtIE1TU19VQVJUX0xTX0lSUQkJKGJpdCBtYXNrID0gMHgwMDQpDQotICAgICAgLSBNU1NfVUFSVF9NU19JUlEJCShiaXQgbWFzayA9IDB4MDA4KQ0KLSAgICAgIC0gTVNTX1VBUlRfUlRPX0lSUQkJKGJpdCBtYXNrID0gMHgwMTApDQotICAgICAgLSBNU1NfVUFSVF9OQUNLX0lSUQkoYml0IG1hc2sgPSAweDAyMCkNCi0gICAgICAtIE1TU19VQVJUX1BJRFBFX0lSUQkoYml0IG1hc2sgPSAweDA0MCkNCi0gICAgICAtIE1TU19VQVJUX0xJTkJfSVJRCQkoYml0IG1hc2sgPSAweDA4MCkNCi0gICAgICAtIE1TU19VQVJUX0xJTlNfSVJRCQkoYml0IG1hc2sgPSAweDEwMCkNCi0gICAgICANCi0gIEByZXR1cm4NCi0gICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfZW5hYmxlX2lycSgmZ19tc3NfdWFydDAsKE1TU19VQVJUX1JCRl9JUlEgfCBNU1NfVUFSVF9UQkVfSVJRKSk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfaXJxDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfdCBpcnFfbWFzaw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBNU1MgVUFSVCBpbnRlcnJ1cHRzIHNwZWNpZmllZA0KLSAgYnkgdGhlIGlycV9tYXNrIHBhcmFtZXRlci4gVGhlIGlycV9tYXNrIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSBNU1MgVUFSVA0KLSAgaW50ZXJydXB0cyBieSBiaXQgcG9zaXRpb24sIGFzIGRlZmluZWQgaW4gdGhlIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgKElFUikNCi0gIG9mIE1TUyBVQVJULiBUaGUgTVNTIFVBUlQgaW50ZXJydXB0cyBhbmQgdGhlaXIgaWRlbnRpZnlpbmcgYml0IHBvc2l0aW9ucyBhcmUNCi0gIGFzIGZvbGxvd3M6DQotICBXaGVuIGFuIGlycV9tYXNrIGJpdCBwb3NpdGlvbiBpcyBzZXQgdG8gMSwgdGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUNCi0gIGNvcnJlc3BvbmRpbmcgTVNTIFVBUlQgaW50ZXJydXB0IGluIHRoZSBJRVIgcmVnaXN0ZXIuIFdoZW4gYW4gaXJxX21hc2sgYml0DQotICBwb3NpdGlvbiBpcyBzZXQgdG8gMCwgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0knMgc3RhdGUgcmVtYWlucyB1bmNoYW5nZWQgaW4NCi0gIHRoZSBJRVIgcmVnaXN0ZXIuDQotICBOb3RlOiBJZiB5b3UgZGlzYWJsZSBhbGwgZm91ciBvZiB0aGUgVUFSVJJzIGludGVycnVwdHMsIHRoZQ0KLSAgICAgICAgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbiBhbHNvIGRpc2FibGVzIHRoZSBNU1MgVUFSVCBpbnN0YW5jZQ0KLSAgICAgICAgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgTlZJQy4NCi0gICAgICAgIA0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBpcnFfbWFzaw0KLSAgICBUaGUgaXJxX21hc2sgcGFyYW1ldGVyIGlzIHVzZWQgdG8gc2VsZWN0IHdoaWNoIG9mIHRoZSBNU1MgVUFSVJJzIGludGVycnVwdHMNCi0gICAgeW91IHdhbnQgdG8gZGlzYWJsZS4gVGhlIGFsbG93ZWQgdmFsdWUgZm9yIHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgaXMgb25lIG9mDQotICAgIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIG9yIGEgYml0d2lzZSBPUiBvZiBtb3JlIHRoYW4gb25lOg0KLSAgICAgIC0gTVNTX1VBUlRfUkJGX0lSUSAgICAoYml0IG1hc2sgPSAweDAwMSkNCi0gICAgICAtIE1TU19VQVJUX1RCRV9JUlEgICAgKGJpdCBtYXNrID0gMHgwMDIpDQotICAgICAgLSBNU1NfVUFSVF9MU19JUlEgICAgIChiaXQgbWFzayA9IDB4MDA0KQ0KLSAgICAgIC0gTVNTX1VBUlRfTVNfSVJRICAgICAoYml0IG1hc2sgPSAweDAwOCkNCi0gICAgICAtIE1TU19VQVJUX1JUT19JUlEgICAgKGJpdCBtYXNrID0gMHgwMTApDQotICAgICAgLSBNU1NfVUFSVF9OQUNLX0lSUSAgIChiaXQgbWFzayA9IDB4MDIwKQ0KLSAgICAgIC0gTVNTX1VBUlRfUElEUEVfSVJRICAoYml0IG1hc2sgPSAweDA0MCkNCi0gICAgICAtIE1TU19VQVJUX0xJTkJfSVJRICAgKGJpdCBtYXNrID0gMHgwODApDQotICAgICAgLSBNU1NfVUFSVF9MSU5TX0lSUSAgIChiaXQgbWFzayA9IDB4MTAwKQ0KLSAgICAgIA0KLSAgQHJldHVybg0KLSAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9kaXNhYmxlX2lycSgmZ19tc3NfdWFydDAsIChNU1NfVUFSVF9SQkZfSVJRIHwgTVNTX1VBUlRfVEJFX0lSUSkpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9pcnENCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV90IGlycV9tYXNrDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9waWRwZWlfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgYXNzaWduIGEgY3VzdG9tIGludGVycnVwdCANCi0gIGhhbmRsZXIgZm9yIHRoZSBQSURQRUkgKFBJRCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0KSB3aGVuIHRoZSBNU1MgVUFSVCBpcyANCi0gIG9wZXJhdGluZyBpbiBMSU4gbW9kZS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGN1c3RvbSBoYW5kbGVyIGZ1bmN0aW9uLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUXyBzZXRfcGlkcGVpX2hhbmRsZXIoJmdfbXNzX3VhcnQwLCBteV9waWRwZWlfaGFuZGxlcik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcGlkcGVpX2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfbGluYnJlYWtfaGFuZGxlciAoKSBmdW5jdGlvbiBpcyB1c2VkIGFzc2lnbiBhIGN1c3RvbSANCi0gIGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgTElOIEJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQgIHdoZW4gdGhlIE1TUyBVQVJUIA0KLSAgaXMgb3BlcmF0aW5nIGluIExJTiBtb2RlLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBoYW5kbGVyDQotICAgIFRoZSBoYW5kbGVyIHBhcmFtZXRlciBpcyB0aGUgcG9pbnRlciB0byB0aGUgY3VzdG9tIGhhbmRsZXIgZnVuY3Rpb24uIA0KLSAgICBUaGlzIHBhcmFtZXRlciBpcyBvZiB0eXBlIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfc2V0X2xpbmJyZWFrX2hhbmRsZXIoJmdfbXNzX3VhcnQwLCBteV9icmVha19oYW5kbGVyKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9saW5icmVha19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X2xpbnN5bmNfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgYXNzaWduIGEgY3VzdG9tIGludGVycnVwdCANCi0gIGhhbmRsZXIgZm9yIHRoZSBMSU4gU3luYyBjaGFyYWN0ZXIgZGV0ZWN0aW9uIGludGVycnVwdCAgd2hlbiB0aGUgTVNTIFVBUlQgDQotICBpcyBvcGVyYXRpbmcgaW4gTElOIG1vZGUuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGhhbmRsZXINCi0gICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBjdXN0b20gaGFuZGxlciBmdW5jdGlvbi4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9zZXRfbGluc3luY19oYW5kbGVyKCZnX21zc191YXJ0MCwgbXlfbGluc3luY19oYW5kbGVyKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9saW5zeW5jX2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfbmFja19oYW5kbGVyKCkgZnVuY3Rpb24gaXMgdXNlZCBhc3NpZ24gYSBjdXN0b20gaW50ZXJydXB0IA0KLSAgaGFuZGxlciBmb3IgdGhlIE5BQ0sgY2hhcmFjdGVyIGRldGVjdGlvbiBpbnRlcnJ1cHQgIHdoZW4gdGhlIE1TUyBVQVJUIA0KLSAgaXMgb3BlcmF0aW5nIGluIFNtYXJ0Y2FyZCBtb2RlLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBoYW5kbGVyDQotICAgIFRoZSBoYW5kbGVyIHBhcmFtZXRlciBpcyB0aGUgcG9pbnRlciB0byB0aGUgY3VzdG9tIGhhbmRsZXIgZnVuY3Rpb24uIA0KLSAgICBUaGlzIHBhcmFtZXRlciBpcyBvZiB0eXBlIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfc2V0X25hY2tfaGFuZGxlcigmZ19tc3NfdWFydDAsIG15X25hY2tfaGFuZGxlcik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbmFja19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3J4X3RpbWVvdXRfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgYXNzaWduIGEgY3VzdG9tIA0KLSAgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoZSByZWNlaXZlciB0aW1lb3V0IGludGVycnVwdCAgd2hlbiB0aGUgTVNTIFVBUlQgaXMgDQotICBvcGVyYXRpbmcgaW4gbW9kZS4gSXQgZmluZHMgYXBwbGljYXRpb24gaW4gSXJEQSBtb2RlIG9mIG9wZXJhdGlvbi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGN1c3RvbSBoYW5kbGVyIGZ1bmN0aW9uLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX3NldF9yeF90aW1lb3V0X2hhbmRsZXIoJmdfbXNzX3VhcnQwLCBteV9yeHRpbWVvdXRfaGFuZGxlcik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfdGltZW91dF9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3J4c3RhdHVzX2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlZ2lzdGVyIGEgcmVjZWl2ZXINCi0gIHN0YXR1cyBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBhIFVBUlQgcmVjZWl2ZXINCi0gIGxpbmUgc3RhdHVzIChSTFMpIGludGVycnVwdCBvY2N1cnMuIFlvdSBtdXN0IGNyZWF0ZSBhbmQgcmVnaXN0ZXIgdGhlIGhhbmRsZXINCi0gIGZ1bmN0aW9uIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfc2V0X3J4c3RhdHVzX2hhbmRsZXIoKSBmdW5jdGlvbiBlbmFibGVzIGJvdGggdGhlIFJMUw0KLSAgaW50ZXJydXB0IGluIHRoZSBVQVJUIGFuZCB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIE5WSUMgYXMgcGFydCBvZiBpdHMgaW1wbGVtZW50YXRpb24uDQotDQotICBOb3RlOiAgICAgWW91IGNhbiBkaXNhYmxlIHRoZSBSTFMgaW50ZXJydXB0IHdoZW4gcmVxdWlyZWQgYnkgY2FsbGluZyB0aGUNCi0gIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24uIFRoaXMgaXMgeW91ciBjaG9pY2UgYW5kIGlzIGRlcGVuZGVudCB1cG9uDQotICB5b3VyIGFwcGxpY2F0aW9uLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBoYW5kbGVyDQotICAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgcmVjZWl2ZXIgbGluZSBzdGF0dXMgaW50ZXJydXB0DQotICAgICBoYW5kbGVyIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHlvdXIgYXBwbGljYXRpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhcyBhDQotICAgICByZXN1bHQgb2YgYSBVQVJUIFJMUyBpbnRlcnJ1cHQuIFRoaXMgaGFuZGxlciBmdW5jdGlvbiBtdXN0IGJlIG9mIHR5cGUNCi0gICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICBAcmV0dXJuDQotICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gIHZvaWQgdWFydF9yeHN0c19oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpDQotICB7DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICBzdGF0dXMgPSBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKHRoaXNfdWFydCk7DQotICAgIGlmKHN0YXR1cyAmIE1TU19VQVJUX09WRVJVTl9FUlJPUikNCi0gICAgew0KLSAgICAgICAgZGlzY2FyZF9yeF9kYXRhKCk7DQotICAgIH0NCi0gIH0NCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgIE1TU19VQVJUX2luaXQoICZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX09ORV9TVE9QX0JJVCApOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICBNU1NfVUFSVF9zZXRfcnhzdGF0dXNfaGFuZGxlcigmZ19tc3NfdWFydDAsIHVhcnRfcnhzdHNfaGFuZGxlcik7DQotDQotICAgIHdoaWxlKDEpDQotICAgIHsNCi0gICAgICAgIDsNCi0gICAgfQ0KLSAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhzdGF0dXNfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF90eF9oYW5kbGVyKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZWdpc3RlciBhIHRyYW5zbWl0IGhhbmRsZXINCi0gIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBhIFVBUlQgdHJhbnNtaXQgaG9sZGluZyByZWdpc3Rlcg0KLSAgZW1wdHkgKFRIUkUpIGludGVycnVwdCBvY2N1cnMuIFlvdSBtdXN0IGNyZWF0ZSBhbmQgcmVnaXN0ZXIgdGhlIHRyYW5zbWl0DQotICBoYW5kbGVyIGZ1bmN0aW9uIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4gWW91IGNhbiB1c2UgdGhlDQotICBNU1NfVUFSVF9maWxsX3R4X2ZpZm8oKSBmdW5jdGlvbiBpbiB5b3VyIHRyYW5zbWl0IGhhbmRsZXIgZnVuY3Rpb24gdG8NCi0gIHdyaXRlIGRhdGEgdG8gdGhlIHRyYW5zbWl0dGVyLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uIGVuYWJsZXMgYm90aCB0aGUgVEhSRQ0KLSAgaW50ZXJydXB0IGluIHRoZSBVQVJUIGFuZCB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIE5WSUMgYXMgcGFydCBvZiBpdHMgaW1wbGVtZW50YXRpb24uDQotDQotICBOb3RlOiAgICAgWW91IGNhbiBkaXNhYmxlIHRoZSBUSFJFIGludGVycnVwdCB3aGVuIHJlcXVpcmVkIGJ5IGNhbGxpbmcgdGhlDQotICBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uLiBUaGlzIGlzIHlvdXIgY2hvaWNlIGFuZCBpcyBkZXBlbmRlbnQgdXBvbg0KLSAgeW91ciBhcHBsaWNhdGlvbi4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfaXJxX3R4KCkgZnVuY3Rpb24gZG9lcyBub3QgdXNlIHRoZSB0cmFuc21pdCBoYW5kbGVyDQotICBmdW5jdGlvbiB0aGF0IHlvdSByZWdpc3RlciB3aXRoIHRoZSBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uLg0KLSAgSXQgdXNlcyBpdHMgb3duIGludGVybmFsIFRIUkUgaW50ZXJydXB0IGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBvdmVycmlkZXMNCi0gIGFueSBjdXN0b20gaW50ZXJydXB0IGhhbmRsZXIgdGhhdCB5b3UgcmVnaXN0ZXIgdXNpbmcgdGhlDQotICBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gICBAcGFyYW0gaGFuZGxlcg0KLSAgICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIHRyYW5zbWl0IGludGVycnVwdCBoYW5kbGVyDQotICAgICBmdW5jdGlvbiBwcm92aWRlZCBieSB5b3VyIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYXMgYSByZXN1bHQNCi0gICAgIG9mIGEgVUFSVCBUSFJFIGludGVycnVwdC4gVGhpcyBoYW5kbGVyIGZ1bmN0aW9uIG11c3QgYmUgb2YgdHlwZQ0KLSAgICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdC4NCi0NCi0gICBAcmV0dXJuDQotICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgIEV4YW1wbGU6DQotICAgQGNvZGUNCi0gICAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICAgIHVpbnQ4X3QgKiBnX3R4X2J1ZmZlcjsNCi0gICAgc2l6ZV90IGdfdHhfc2l6ZSA9IDA7DQotDQotICAgIHZvaWQgdWFydF90eF9oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpDQotICAgIHsNCi0gICAgICAgIHNpemVfdCBzaXplX2luX2ZpZm87DQotICAgICAgICBzaXplX2luX2ZpZm8gPSBNU1NfVUFSVF9maWxsX3R4X2ZpZm8odGhpc191YXJ0LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopZ190eF9idWZmZXIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ190eF9zaXplKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgICAgIGlmKHNpemVfaW5fZmlmbyAgPT0gIGdfdHhfc2l6ZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBnX3R4X3NpemUgPSAwOw0KLSAgICAgICAgICAgIE1TU19VQVJUX2Rpc2FibGVfaXJxKHRoaXNfdWFydCwgTVNTX1VBUlRfVEJFX0lSUSk7DQotICAgICAgICB9DQotICAgICAgICBlbHNlDQotICAgICAgICB7DQotICAgICAgICAgICAgZ190eF9idWZmZXIgPSAmZ190eF9idWZmZXJbc2l6ZV9pbl9maWZvXTsNCi0gICAgICAgICAgICBnX3R4X3NpemUgPSBnX3R4X3NpemUgLSBzaXplX2luX2ZpZm87DQotICAgICAgICB9DQotICAgIH0NCi0NCi0gICAgaW50IG1haW4odm9pZCkNCi0gICAgew0KLSAgICAgICAgdWludDhfdCBtZXNzYWdlWzEyXSA9ICJIZWxsbyB3b3JsZCI7DQotDQotICAgICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLQ0KLSAgICAgICAgZ190eF9idWZmZXIgPSBtZXNzYWdlOw0KLSAgICAgICAgZ190eF9zaXplID0gc2l6ZW9mKG1lc3NhZ2UpOw0KLQ0KLSAgICAgICAgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoJmdfbXNzX3VhcnQwLCB1YXJ0X3R4X2hhbmRsZXIpOw0KLQ0KLSAgICAgICAgd2hpbGUoMSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICA7DQotICAgICAgICB9DQotICAgICAgICByZXR1cm4oMCk7DQotICAgIH0NCi0gICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfdHhfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZWdpc3RlciBhIG1vZGVtDQotICBzdGF0dXMgaGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gYSBVQVJUIG1vZGVtIHN0YXR1cw0KLSAgKE1TKSBpbnRlcnJ1cHQgb2NjdXJzLiBZb3UgbXVzdCBjcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIHRvDQotICBzdWl0IHlvdXIgYXBwbGljYXRpb24uDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyKCkgZnVuY3Rpb24gZW5hYmxlcyBib3RoIHRoZSBNUw0KLSAgaW50ZXJydXB0IGluIHRoZSBVQVJUIGFuZCB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgTlZJQw0KLSAgYXMgcGFydCBvZiBpdHMgaW1wbGVtZW50YXRpb24uDQotDQotICBOb3RlOiAgICAgWW91IGNhbiBkaXNhYmxlIHRoZSBNUyBpbnRlcnJ1cHQgd2hlbiByZXF1aXJlZCBieSBjYWxsaW5nIHRoZQ0KLSAgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbi4gVGhpcyBpcyB5b3VyIGNob2ljZSBhbmQgaXMgZGVwZW5kZW50DQotICB1cG9uIHlvdXIgYXBwbGljYXRpb24uDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgIEBwYXJhbSBoYW5kbGVyDQotICAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgbW9kZW0gc3RhdHVzIGludGVycnVwdCBoYW5kbGVyDQotICAgICBmdW5jdGlvbiBwcm92aWRlZCBieSB5b3VyIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYXMgYSByZXN1bHQNCi0gICAgIG9mIGEgVUFSVCBNUyBpbnRlcnJ1cHQuIFRoaXMgaGFuZGxlciBmdW5jdGlvbiBtdXN0IGJlIG9mIHR5cGUNCi0gICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICAgQHJldHVybg0KLSAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gICBFeGFtcGxlOg0KLSAgIEBjb2RlDQotICAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICAgdm9pZCB1YXJ0X21vZGVtX2hhbmRsZXIobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCkNCi0gICB7DQotICAgICB1aW50OF90IHN0YXR1czsNCi0gICAgIHN0YXR1cyA9IE1TU19VQVJUX2dldF9tb2RlbV9zdGF0dXModGhpc191YXJ0KTsNCi0gICAgIGlmKHN0YXR1cyAmIE1TU19VQVJUX0NUUykNCi0gICAgIHsNCi0gICAgICAgIHVhcnRfY3RzX2hhbmRsZXIoKTsNCi0gICAgIH0NCi0gICB9DQotDQotICAgaW50IG1haW4odm9pZCkNCi0gICB7DQotICAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgTVNTX1VBUlRfc2V0X21vZGVtc3RhdHVzX2hhbmRsZXIoJmdfbXNzX3VhcnQwLCB1YXJ0X21vZGVtX2hhbmRsZXIpOw0KLQ0KLSAgICAgIHdoaWxlKDEpDQotICAgICAgew0KLSAgICAgICAgOw0KLSAgICAgIH0NCi0gICAgICByZXR1cm4oMCk7DQotICAgfQ0KLSAgIEBlbmRjb2RlDQotICovDQotDQotdm9pZA0KLU1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZmlsbF90eF9maWZvKCkgZnVuY3Rpb24gZmlsbHMgdGhlIFVBUlQncyBoYXJkd2FyZSB0cmFuc21pdHRlcg0KLSAgRklGTyB3aXRoIHRoZSBkYXRhIGZvdW5kIGluIHRoZSB0cmFuc21pdHRlciBidWZmZXIgdGhhdCBpcyBwYXNzZWQgdmlhIHRoZQ0KLSAgdHhfYnVmZmVyIGZ1bmN0aW9uIHBhcmFtZXRlci4gSWYgdGhlIHRyYW5zbWl0dGVyIEZJRk8gaXMgbm90IGVtcHR5IHdoZW4NCi0gIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGhvdXQgdHJhbnNmZXJyaW5nDQotICBhbnkgZGF0YSB0byB0aGUgRklGTzsgb3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdHJhbnNmZXJzIGRhdGEgZnJvbSB0aGUNCi0gIHRyYW5zbWl0dGVyIGJ1ZmZlciB0byB0aGUgRklGTyB1bnRpbCBpdCBpcyBmdWxsIG9yIHVudGlsIHRoZSBjb21wbGV0ZQ0KLSAgY29udGVudHMgb2YgdGhlIHRyYW5zbWl0dGVyIGJ1ZmZlciBoYXZlIGJlZW4gY29waWVkIGludG8gdGhlIEZJRk8uIFRoZQ0KLSAgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBpbnRvIHRoZSBVQVJUJ3MgdHJhbnNtaXR0ZXIgRklGTy4NCi0NCi0gIE5vdGU6ICAgICBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBVQVJUknMgbGluZSBzdGF0dXMgcmVnaXN0ZXIgKExTUikgdG8gY2hlY2sNCi0gIGZvciB0aGUgYWN0aXZlIHN0YXRlIG9mIHRoZSB0cmFuc21pdHRlciBob2xkaW5nIHJlZ2lzdGVyIGVtcHR5IChUSFJFKSBiaXQNCi0gIGJlZm9yZSB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIHRoZSBkYXRhIGJ1ZmZlciB0byB0aGUgdHJhbnNtaXR0ZXIgRklGTy4gSWYNCi0gIFRIUkUgaXMgMCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHksIHdpdGhvdXQgdHJhbnNmZXJyaW5nIGFueSBkYXRhDQotICB0byB0aGUgRklGTy4gSWYgVEhSRSBpcyAxLCB0aGUgZnVuY3Rpb24gdHJhbnNmZXJzIHVwIHRvIDE2IGJ5dGVzIG9mIGRhdGENCi0gIHRvIHRoZSBGSUZPIGFuZCB0aGVuIHJldHVybnMuDQotDQotICBOb3RlOiAgICAgVGhlIGFjdHVhbCB0cmFuc21pc3Npb24gb3ZlciB0aGUgc2VyaWFsIGNvbm5lY3Rpb24gd2lsbCBzdGlsbCBiZQ0KLSAgaW4gcHJvZ3Jlc3Mgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFVzZSB0aGUgTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygpDQotICBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gdGhlIHRyYW5zbWl0dGVyIGlzIGVtcHR5Lg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSB0eF9idWZmZXINCi0gICAgVGhlIHR4X2J1ZmZlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGENCi0gICAgdG8gYmUgdHJhbnNtaXR0ZWQuDQotDQotICBAcGFyYW0gdHhfc2l6ZQ0KLSAgICBUaGUgdHhfc2l6ZSBwYXJhbWV0ZXIgaXMgdGhlIHNpemUgaW4gYnl0ZXMsIG9mIHRoZSBkYXRhIHRvIGJlIHRyYW5zbWl0dGVkLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgaW50byB0aGUgVUFSVCdzDQotICAgIHRyYW5zbWl0dGVyIEZJRk8uDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgIHZvaWQgc2VuZF91c2luZ19pbnRlcnJ1cHQodWludDhfdCAqIHBidWZmLCBzaXplX3QgdHhfc2l6ZSkNCi0gICAgIHsNCi0gICAgICAgIHNpemVfdCBzaXplX2luX2ZpZm87DQotICAgICAgICBzaXplX2luX2ZpZm8gPSBNU1NfVUFSVF9maWxsX3R4X2ZpZm8oJmdfbXNzX3VhcnQwLCBwYnVmZiwgdHhfc2l6ZSk7DQotICAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXNpemVfdA0KLU1TU19VQVJUX2ZpbGxfdHhfZmlmbw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHR4X2J1ZmZlciwNCi0gICAgc2l6ZV90IHR4X3NpemUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlY2VpdmVyIGVycm9yIHN0YXR1cyBvZiB0aGUNCi0gIE1TUyBVQVJUIGluc3RhbmNlLiBJdCByZWFkcyBib3RoIHRoZSBjdXJyZW50IGVycm9yIHN0YXR1cyBvZiB0aGUgcmVjZWl2ZXIgZnJvbQ0KLSAgdGhlIFVBUlSScyBsaW5lIHN0YXR1cyByZWdpc3RlciAoTFNSKSBhbmQgdGhlIGFjY3VtdWxhdGVkIGVycm9yIHN0YXR1cyBmcm9tDQotICBwcmVjZWRpbmcgY2FsbHMgdG8gdGhlIE1TU19VQVJUX2dldF9yeCgpIGZ1bmN0aW9uLCBhbmQgaXQgY29tYmluZXMgdGhlbSB1c2luZw0KLSAgYSBiaXR3aXNlIE9SLiBJdCByZXR1cm5zIHRoZSBjdW11bGF0aXZlIG92ZXJydW4sIHBhcml0eSwgZnJhbWluZywgYnJlYWsgYW5kDQotICBGSUZPIGVycm9yIHN0YXR1cyBvZiB0aGUgcmVjZWl2ZXIsIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsIHRvDQotICBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKCksIGFzIGFuIDgtYml0IGVuY29kZWQgdmFsdWUuDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX2dldF9yeCgpIGZ1bmN0aW9uIHJlYWRzIGFuZCBhY2N1bXVsYXRlcyB0aGUgcmVjZWl2ZXINCi0gIHN0YXR1cyBvZiB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgYmVmb3JlIHJlYWRpbmcgZWFjaCBieXRlIGZyb20gdGhlIHJlY2VpdmVyknMNCi0gIGRhdGEgcmVnaXN0ZXIvRklGTy4gVGhlIGRyaXZlciBtYWludGFpbnMgYSBzdGlja3kgcmVjb3JkIG9mIHRoZSBjdW11bGF0aXZlDQotICByZWNlaXZlciBlcnJvciBzdGF0dXMsIHdoaWNoIHBlcnNpc3RzIGFmdGVyIHRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbg0KLSAgcmV0dXJucy4gVGhlIE1TU19VQVJUX2dldF9yeF9zdGF0dXMoKSBmdW5jdGlvbiBjbGVhcnMgdGhlIGRyaXZlcpJzIHN0aWNreQ0KLSAgcmVjZWl2ZXIgZXJyb3IgcmVjb3JkIGJlZm9yZSByZXR1cm5pbmcuDQotDQotICBOb3RlOiAgICAgVGhlIGRyaXZlcpJzIHRyYW5zbWl0IGZ1bmN0aW9ucyBhbHNvIHJlYWQgdGhlIGxpbmUgc3RhdHVzDQotICByZWdpc3RlciAoTFNSKSBhcyBwYXJ0IG9mIHRoZWlyIGltcGxlbWVudGF0aW9uLiBXaGVuIHRoZSBkcml2ZXIgcmVhZHMgdGhlDQotICBMU1IsIHRoZSBVQVJUIGNsZWFycyBhbnkgYWN0aXZlIHJlY2VpdmVyIGVycm9yIGJpdHMgaW4gdGhlIExTUi4gVGhpcyBjb3VsZA0KLSAgcmVzdWx0IGluIHRoZSBkcml2ZXIgbG9zaW5nIHJlY2VpdmVyIGVycm9ycy4gVG8gYXZvaWQgYW55IGxvc3Mgb2YgcmVjZWl2ZXINCi0gIGVycm9ycywgdGhlIHRyYW5zbWl0IGZ1bmN0aW9ucyBhbHNvIHVwZGF0ZSB0aGUgZHJpdmVyknMgc3RpY2t5IHJlY29yZCBvZiB0aGUNCi0gIGN1bXVsYXRpdmUgcmVjZWl2ZXIgZXJyb3Igc3RhdHVzIHdoZW5ldmVyIHRoZXkgcmVhZCB0aGUgTFNSLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBVQVJUknMgcmVjZWl2ZXIgZXJyb3Igc3RhdHVzIGFzIGFuIDgtYml0IHVuc2lnbmVkDQotICAgIGludGVnZXIuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyAwIGlmIG5vIHJlY2VpdmVyIGVycm9ycyBvY2N1cnJlZC4gVGhlIGRyaXZlcg0KLSAgICBwcm92aWRlcyBhIHNldCBvZiBiaXQgbWFzayBjb25zdGFudHMgdGhhdCBzaG91bGQgYmUgY29tcGFyZWQgd2l0aCBhbmQvb3INCi0gICAgdXNlZCB0byBtYXNrIHRoZSByZXR1cm5lZCB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIHJlY2VpdmVyIGVycm9yIHN0YXR1cy4NCi0gICAgV2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbXBhcmVkIHRvIHRoZSBmb2xsb3dpbmcgYml0IG1hc2tzLCBhIG5vbi16ZXJvDQotICAgIHJlc3VsdCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBvY2N1cnJlZDoNCi0gICAgICAgIJUgICBNU1NfVUFSVF9PVkVSUlVOX0VSUk9SICAgICAgKGJpdCBtYXNrID0gMHgwMikNCi0gICAgICAgIJUgICBNU1NfVUFSVF9QQVJJVFlfRVJST1IgICAgICAgKGJpdCBtYXNrID0gMHgwNCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9GUkFNSU5HX0VSUk9SICAgICAgKGJpdCBtYXNrID0gMHgwOCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9CUkVBS19FUlJPUiAgICAgICAgKGJpdCBtYXNrID0gMHgxMCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9GSUZPX0VSUk9SICAgICAoYml0IG1hc2sgPSAweDgwKQ0KLSAgICBXaGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcGFyZWQgdG8gdGhlIGZvbGxvd2luZyBiaXQgbWFzaywgYSBub24temVybw0KLSAgICByZXN1bHQgaW5kaWNhdGVzIHRoYXQgbm8gZXJyb3Igb2NjdXJyZWQ6DQotICAgICAgICCVICAgTVNTX1VBUlRfTk9fRVJST1IgICAgICAgKGJpdCBtYXNrID0gMHgwMCkNCi0gICAgVXBvbiB1bnN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGlzIGZ1bmN0aW9uIHJldHVybnM6DQotICAgICAgICCVICAgTVNTX1VBUlRfSU5WQUxJRF9QQVJBTSAgICAgIChiaXQgbWFzayA9IDB4RkYpDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgdWludDhfdCByeF9kYXRhW01BWF9SWF9EQVRBX1NJWkVdOw0KLSAgICB1aW50OF90IGVycl9zdGF0dXM7DQotICAgIGVycl9zdGF0dXMgPSBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKCZnX21zc191YXJ0MCk7DQotDQotICAgIGlmKE1TU19VQVJUX05PX0VSUk9SID09IGVycl9zdGF0dXMpDQotICAgIHsNCi0gICAgICAgcnhfc2l6ZSA9IE1TU19VQVJUX2dldF9yeCgmZ19tc3NfdWFydDAsIHJ4X2RhdGEsIE1BWF9SWF9EQVRBX1NJWkUpOw0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfcnhfc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2dldF9tb2RlbV9zdGF0dXMoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBtb2RlbSBzdGF0dXMgb2YgdGhlDQotICBNU1MgVUFSVCBpbnN0YW5jZS4gSXQgcmVhZHMgdGhlIG1vZGVtIHN0YXR1cyByZWdpc3RlciAoTVNSKSBhbmQgcmV0dXJucw0KLSAgdGhlIDggYml0IHZhbHVlLiBUaGUgYml0IGVuY29kaW5nIG9mIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBleGFjdGx5IHRoZQ0KLSAgc2FtZSBhcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYml0cyBpbiB0aGUgTVNSLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFVBUlQncyBNU1IgYXMgYW4gOCBiaXQNCi0gICAgdW5zaWduZWQgaW50ZWdlci4gVGhlIGRyaXZlciBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHNldCBvZiBiaXQgbWFzaw0KLSAgICBjb25zdGFudHMgdGhhdCBzaG91bGQgYmUgY29tcGFyZWQgd2l0aCBhbmQvb3IgdXNlZCB0byBtYXNrIHRoZQ0KLSAgICByZXR1cm5lZCB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIG1vZGVtIHN0YXR1czoNCi0gICAgICAgIJUgICBNU1NfVUFSVF9EQ1RTICAgKGJpdCBtYXNrID0gMHgwMSkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9ERFNSICAgKGJpdCBtYXNrID0gMHgwMikNCi0gICAgICAgIJUgICBNU1NfVUFSVF9URVJJICAgKGJpdCBtYXNrID0gMHgwNCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9ERENEICAgKGJpdCBtYXNrID0gMHgwOCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9DVFMgICAgKGJpdCBtYXNrID0gMHgxMCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9EU1IgICAgKGJpdCBtYXNrID0gMHgyMCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9SSSAgICAgKGJpdCBtYXNrID0gMHg0MCkNCi0gICAgICAgIJUgICBNU1NfVUFSVF9EQ0QgICAgKGJpdCBtYXNrID0gMHg4MCkNCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICB2b2lkIHVhcnRfbW9kZW1fc3RhdHVzX2lzcihtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0KQ0KLSAgICB7DQotICAgICAgICB1aW50OF90IHN0YXR1czsNCi0gICAgICAgIHN0YXR1cyA9IE1TU19VQVJUX2dldF9tb2RlbV9zdGF0dXModGhpc191YXJ0KTsNCi0gICAgICAgIGlmKCBzdGF0dXMgJiBNU1NfVUFSVF9EQ1RTICkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1YXJ0X2RjdHNfaGFuZGxlcigpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgaWYoIHN0YXR1cyAmIE1TU19VQVJUX0NUUyApDQotICAgICAgICB7DQotICAgICAgICAgICAgdWFydF9jdHNfaGFuZGxlcigpOw0KLSAgICAgICAgfQ0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2dldF90eF9zdGF0dXMoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc21pdHRlciBzdGF0dXMgb2YgdGhlDQotICBNU1MgVUFSVCBpbnN0YW5jZS4gSXQgcmVhZHMgYm90aCB0aGUgVUFSVJJzIGxpbmUgc3RhdHVzIHJlZ2lzdGVyIChMU1IpIGFuZA0KLSAgcmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSB0cmFuc21pdCBob2xkaW5nIHJlZ2lzdGVyIGVtcHR5IChUSFJFKSBhbmQNCi0gIHRyYW5zbWl0dGVyIGVtcHR5IChURU1UKSBiaXRzLioNCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgVUFSVJJzIHRyYW5zbWl0dGVyIHN0YXR1cyBhcyBhbiA4LWJpdCB1bnNpZ25lZA0KLSAgICBpbnRlZ2VyLiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgMCBpZiB0aGUgdHJhbnNtaXR0ZXIgc3RhdHVzIGJpdHMgYXJlIG5vdA0KLSAgICBzZXQgb3IgdGhlIGZ1bmN0aW9uIGV4ZWN1dGlvbiBmYWlsZWQuIFRoZSBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgYml0DQotICAgIG1hc2sgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGJlIGNvbXBhcmVkIHdpdGggYW5kL29yIHVzZWQgdG8gbWFzayB0aGUNCi0gICAgcmV0dXJuZWQgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSB0cmFuc21pdHRlciBzdGF0dXMuDQotICAgIFdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBjb21wYXJlZCB0byB0aGUgZm9sbG93aW5nIGJpdCBtYXNrLCBhIG5vbi16ZXJvDQotICAgIHJlc3VsdCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ycmVzcG9uZGluZyB0cmFuc21pdHRlciBzdGF0dXMgYml0IGlzIHNldDoNCi0gICAgICAgIJUgICBNU1NfVUFSVF9USFJFICAgICAgIChiaXQgbWFzayA9IDB4MjApDQotICAgICAgICCVICAgTVNTX1VBUlRfVEVNVCAgICAgICAoYml0IG1hc2sgPSAweDQwKQ0KLSAgICBXaGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcGFyZWQgdG8gdGhlIGZvbGxvd2luZyBiaXQgbWFzaywgYSBub24temVybw0KLSAgICByZXN1bHQgaW5kaWNhdGVzIHRoYXQgdGhlIHRyYW5zbWl0dGVyIGlzIGJ1c3kgb3IgdGhlIGZ1bmN0aW9uIGV4ZWN1dGlvbg0KLSAgICBmYWlsZWQuDQotICAgICAgICCVICAgTVNTX1VBUlRfVFhfQlVTWSAgICAgICAgKGJpdCBtYXNrID0gMHgwMCkNCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICB1aW50OF90IHR4X2J1ZmZbMTBdID0gImFiY2RlZmdoaSI7DQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfcG9sbGVkX3R4KCZnX21zc191YXJ0MCwgdHhfYnVmZiwgc2l6ZW9mKHR4X2J1ZmYpKTsNCi0NCi0gICAgd2hpbGUoIShNU1NfVUFSVF9URU1UICYgTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygmZ19tc3NfdWFydDApKSkNCi0gICAgew0KLSAgICAgICAgOw0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfdHhfc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9icmVhaygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2VuZCB0aGUgYnJlYWsgDQotICAoOSB6ZXJvcyBhZnRlciBzdG9wIGJpdCkgc2lnbmFsIG9uIHRoZSBUWCBsaW5lLiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIA0KLSAgb25seSB3aGVuIHRoZSBNU1MgVUFSVCBpcyBpbml0aWFsaXplZCBpbiBMSU4gbW9kZSBieSB1c2luZyBNU1NfVUFSVF9saW5faW5pdCgpLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLSAgDQotICAgIE1TU19VQVJUX3NldF9icmVhaygmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2JyZWFrDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2NsZWFyX2JyZWFrKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZW1vdmUgdGhlIGJyZWFrIHNpZ25hbCBvbiB0aGUgDQotICBUWCBsaW5lLiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIG9ubHkgd2hlbiB0aGUgTVNTIFVBUlQgaXMgaW5pdGlhbGl6ZWQgaW4gDQotICBMSU4gbW9kZSBieSB1c2luZyBNU1NfVUFSVF9saW5faW5pdCgpLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9jbGVhcl9icmVhaygmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfY2xlYXJfYnJlYWsNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZW5hYmxlX2hhbGZfZHVwbGV4KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBlbmFibGUgdGhlIGhhbGYtZHVwbGV4IA0KLSAgKHNpbmdsZSB3aXJlKSBtb2RlIGZvciB0aGUgTVNTIFVBUlQuIFRob3VnaCBpdCBmaW5kcyBhcHBsaWNhdGlvbiBpbiBTbWFydGNhcmQgDQotICBtb2RlLCBoYWxmLWR1cGxleCBtb2RlIGNhbiBiZSB1c2VkIGluIG90aGVyIG1vZGVzIGFzIHdlbGwuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZW5hYmxlX2hhbGZfZHVwbGV4KCZnX21zc191YXJ0MCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfZW5hYmxlX2hhbGZfZHVwbGV4DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2Rpc2FibGVfaGFsZl9kdXBsZXgoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGRpc2FibGUgdGhlIGhhbGYtZHVwbGV4IA0KLSAgKHNpbmdsZSB3aXJlKSBtb2RlIGZvciB0aGUgTVNTIFVBUlQuIFRob3VnaCBpdCBmaW5kcyBhcHBsaWNhdGlvbiBpbiBTbWFydGNhcmQgDQotICBtb2RlLCBoYWxmLWR1cGxleCBtb2RlIGNhbiBiZSB1c2VkIGluIG90aGVyIG1vZGVzIGFzIHdlbGwuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZGlzYWJsZV9oYWxmX2R1cGxleCgmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX2Rpc2FibGVfaGFsZl9kdXBsZXgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3J4X2VuZGlhbigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBMU0IgZmlyc3Qgb3IgDQotICBNU0IgZmlyc3Qgc2V0dGluZyBmb3IgTVNTIFVBUlQgcmVjZWl2ZXINCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotICANCi0gIEBwYXJhbSBlbmRpYW4NCi0gICAgVGhlIGVuZGlhbiBwYXJhbWV0ZXIgdGVsbHMgdGhlIExTQiBmaXJzdCBvciBNU0IgZmlyc3QgY29uZmlndXJhdGlvbi4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfZW5kaWFuX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9zZXRfcnhfZW5kaWFuKCZnX21zc191YXJ0MCwgTVNTX1VBUlRfTElUVExFRU5EKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9yeF9lbmRpYW4NCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2VuZGlhbl90IGVuZGlhbiAgICANCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3R4X2VuZGlhbigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBMU0IgZmlyc3Qgb3IgDQotICBNU0IgZmlyc3Qgc2V0dGluZyBmb3IgTVNTIFVBUlQgdHJhbnNtaXR0ZXIuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGVuZGlhbg0KLSAgICBUaGUgZW5kaWFuIHBhcmFtZXRlciB0ZWxscyB0aGUgTFNCIGZpcnN0IG9yIE1TQiBmaXJzdCBjb25maWd1cmF0aW9uLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF9lbmRpYW5fdC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX3NldF90eF9lbmRpYW4oJmdfbXNzX3VhcnQwLCBNU1NfVUFSVF9MSVRUTEVFTkQpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3R4X2VuZGlhbg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfZW5kaWFuX3QgZW5kaWFuICAgIA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfZmlsdGVyX2xlbmd0aCAoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZ2xpdGNoIA0KLSAgZmlsdGVyIGxlbmd0aCBvZiB0aGUgTVNTIFVBUlQuIFRoaXMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgaW4gYWNjb3JkYW5jZSB3aXRoIA0KLSAgdGhlIGNob3NlbiBiYXVkIHJhdGUuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGxlbmd0aA0KLSAgICBUaGUgbGVuZ3RoIHBhcmFtZXRlciBpcyBvZiBtc3NfdWFydF9maWx0ZXJfbGVuZ3RoX3QgdHlwZSB0aGF0IGRldGVybWluZXMgDQotICAgIHRoZSBsZW5ndGggb2YgdGhlIGdsaXRjaCBmaWx0ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9zZXRfZmlsdGVyX2xlbmd0aCgmZ19tc3NfdWFydDAsIE1TU19VQVJUX0xFTjIpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2ZpbHRlcl9sZW5ndGgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2ZpbHRlcl9sZW5ndGhfdCBsZW5ndGgNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZW5hYmxlX2FmbSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGFkZHJlc3MgZmxhZyBkZXRlY3Rpb24gDQotICBtb2RlIG9mIHRoZSBNU1MgVUFSVA0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2VuYWJsZV9hZm0oJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2VuYWJsZV9hZm0NCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2Rpc2FibGVfYWZtKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIGFkZHJlc3MgZmxhZyBkZXRlY3Rpb24gDQotICBtb2RlIG9mIHRoZSBNU1MgVUFSVC4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9kaXNhYmxlX2FmbSgmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9hZm0NCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2VuYWJsZV9hZmNsZWFyICgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGFkZHJlc3MgZmxhZyBjbGVhciANCi0gIG9mIHRoZSBNU1MgVUFSVC4gVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGFkZHJlc3MgZmxhZyANCi0gIGRldGVjdGlvbiBtb2RlIChBRk0pLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2VuYWJsZV9hZmNsZWFyKCZnX21zc191YXJ0MCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfYWZjbGVhcg0KLSgNCi0gICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZGlzYWJsZV9hZmNsZWFyICgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBhZGRyZXNzIGZsYWcgDQotICBjbGVhciBvZiB0aGUgTVNTIFVBUlQuIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhZGRyZXNzIGZsYWcgDQotICBkZXRlY3Rpb24gbW9kZSAoQUZNKS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICANCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2Rpc2FibGVfYWZjbGVhcigmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZGlzYWJsZV9hZmNsZWFyDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9lbmFibGVfcnhfdGltZW91dCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGFuZCBjb25maWd1cmUgDQotICB0aGUgcmVjZWl2ZXIgdGltZW91dCBmdW5jdGlvbmFsaXR5IG9mIE1TUyBVQVJULiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgdGhlIA0KLSAgdGltZW91dCBwYXJhbWV0ZXIgYW5kIGFwcGxpZXMgdGhlIHRpbWVvdXQgYmFzZWQgdXAgb24gdGhlIGJhdWQgcmF0ZSBhcyBwZXIgDQotICB0aGUgZm9ybXVsYSA0IHggdGltZW91dCB4IGJpdCB0aW1lLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSB0aW1lb3V0DQotICAgIFRoZSB0aW1lb3V0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHJlY2VpdmVyIHRpbWVvdXQgbXVsdGlwbGUuIA0KLSAgICBJdCBzaG91bGQgYmUgY29uZmlndXJlZCBhY2NvcmRpbmcgdG8gdGhlIGJhdWQgcmF0ZSBpbiB1c2UuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9lbmFibGVfcnhfdGltZW91dCgmZ19tc3NfdWFydDAgLCAyNCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfZW5hYmxlX3J4X3RpbWVvdXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQ4X3QgdGltZW91dA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9kaXNhYmxlX3J4X3RpbWVvdXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGRpc2FibGUgdGhlIHJlY2VpdmVyIA0KLSAgdGltZW91dCBmdW5jdGlvbmFsaXR5IG9mIE1TUyBVQVJULiANCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9kaXNhYmxlX3J4X3RpbWVvdXQoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9kaXNhYmxlX3J4X3RpbWVvdXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZW5hYmxlX3R4X3RpbWVfZ3VhcmQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBhbmQgY29uZmlndXJlIA0KLSAgdGhlIHRyYW5zbWl0dGVyIHRpbWUgZ3VhcmQgZnVuY3Rpb25hbGl0eSBvZiBNU1MgVUFSVC4gVGhpcyBmdW5jdGlvbiBhY2NlcHRzIA0KLSAgdGhlIHRpbWVndWFyZCBwYXJhbWV0ZXIgYW5kIGFwcGxpZXMgdGhlIHRpbWVndWFyZCBiYXNlZCB1cCBvbiB0aGUgYmF1ZCByYXRlDQotICBhcyBwZXIgdGhlIGZvcm11bGEgdGltZWd1YXJkIHggYml0IHRpbWUuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZW5hYmxlX3R4X3RpbWVfZ3VhcmQoJmdfbXNzX3VhcnQwICwgMjQpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX2VuYWJsZV90eF90aW1lX2d1YXJkDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50OF90IHRpbWVndWFyZA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9kaXNhYmxlX3R4X3RpbWVfZ3VhcmQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGRpc2FibGUgdGhlIA0KLSAgdHJhbnNtaXR0ZXIgdGltZSBndWFyZCBmdW5jdGlvbmFsaXR5IG9mIE1TUyBVQVJULiANCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLSAgICAgICAgICAgICAgICAgIA0KLSAgICBNU1NfVUFSVF9kaXNhYmxlX3R4X3RpbWVfZ3VhcmQoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9kaXNhYmxlX3R4X3RpbWVfZ3VhcmQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X2FkZHJlc3MoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgOC1iaXQgYWRkcmVzcyBmb3IgDQotICB0aGUgTVNTIFVBUlQgcmVmZXJlbmNlZCBieSB0aGlzX3VhcnQgcGFyYW1ldGVyLiANCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gYWRkcmVzcw0KLSAgICBUaGUgYWRkcmVzcyBwYXJhbWV0ZXIgaXMgdGhlIDgtYml0IGFkZHJlc3Mgd2hpY2ggaXMgdG8gYmUgY29uZmlndXJlZCANCi0gICAgdG8gdGhlIE1TUyBVQVJUIHJlZmVyZW5jZWQgYnkgdGhpc191YXJ0IHBhcmFtZXRlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotICAgICAgICAgICAgICAgICAgDQotICAgIE1TU19VQVJUX3NldF9hZGRyZXNzKCZnX21zc191YXJ0MCwgMHhBQSk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfYWRkcmVzcw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCBhZGRyZXNzDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9yZWFkeV9tb2RlKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIE1PREUwIG9yIE1PREUxIA0KLSAgdG8gdGhlIFRYUkRZIGFuZCBSWFJEWSBzaWduYWxzIG9mIHRoZSBNU1MgVUFSVCByZWZlcmVuY2VkIGJ5IHRoaXNfdWFydCANCi0gIHBhcmFtZXRlci4gVGhlIG1vZGUgcGFyYW1ldGVyIGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgbW9kZSB0byBiZSBjb25maWd1cmVkLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBtb2RlDQotICAgIFRoZSBtb2RlIHBhcmFtZXRlciBpcyB0aGUgbXNzX3VhcnRfcmVhZHlfbW9kZV90IHR5cGUgd2hpY2ggaXMgdXNlZCB0byANCi0gICAgY29uZmlndXJlIHRoZSBUWFJEWSBhbmQgUlhSRFkgc2lnbmFsIG1vZGVzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfc2V0X3JlYWR5X21vZGUoJmdfbXNzX3VhcnQwLCBNU1NfVUFSVF9SRUFEWV9NT0RFMCk7ICAgIA0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX3NldF9yZWFkeV9tb2RlDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9yZWFkeV9tb2RlX3QgbW9kZSAgICANCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3VzYXJ0X21vZGUoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgTVNTIFVBUlQgDQotICByZWZlcmVuY2VkIGJ5IHRoZSBwYXJhbWV0ZXIgdGhpc191YXJ0IGluIFVTQVJUIG1vZGUuIFZhcmlvdXMgVVNBUlQgbW9kZXMgDQotICBhcmUgc3VwcG9ydGVkIHdoaWNoIGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBwYXJhbWV0ZXIgbW9kZSBvZiB0eXBlIA0KLSAgbXNzX3VhcnRfdXNhcnRfbW9kZV90Lg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBtb2RlDQotICAgIFRoZSBtb2RlIHBhcmFtZXRlciBpcyB0aGUgVVNBUlQgbW9kZSB0byBiZSBjb25maWd1cmVkLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF91c2FydF9tb2RlX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7ICANCi0NCi0gICAgTVNTX1VBUlRfc2V0X3VzYXJ0X21vZGUoJmdfbXNzX3VhcnQwLCBNU1NfVUFSVF9TWU5DX01BU1RFUl9QT1NfRURHRV9DTEspOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX3NldF91c2FydF9tb2RlDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF91c2FydF9tb2RlX3QgbW9kZQ0KLSk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBfX01TU19VQVJUX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0X3JlZ3MuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydF9yZWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNjc1MjUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0X3JlZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogUmVnaXN0ZXIgYml0IG9mZnNldHMgYW5kIG1hc2tzIGRlZmludGlvbnMgZm9yIFNtYXJ0RnVzaW9uMiBNU1MgTU1VQVJULg0KLSAqIA0KLSAqIFNWTiAkUmV2aXNpb246IDU2MTAgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNSAxNDoxOTozMCArMDEwMCAoRnJpLCAwNSBBcHIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgTVNTX1VBUlRfUkVHU19IXw0KLSNkZWZpbmUgTVNTX1VBUlRfUkVHU19IXw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIFJlZ2lzdGVyIEJpdCBkZWZpbml0aW9ucw0KLSAqLw0KLQ0KLS8qIExpbmUgQ29udHJvbCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIFNCICAgICAgICAgICAgICAgICAgNnUgICAgICAvKiBTZXQgYnJlYWsgKi8NCi0jZGVmaW5lIERMQUIgICAgICAgICAgICAgICAgN3UgICAgICAvKiBEaXZpc29yIGxhdGNoIGFjY2VzcyBiaXQgKi8NCi0NCi0vKiBGSUZPIENvbnRyb2wgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICovDQotI2RlZmluZSBSWFJEWV9UWFJEWU5fRU4gICAgIDB1ICAgICAgLyogRW5hYmxlIFRYUkRZIGFuZCBSWFJEWSBzaWduYWxzICovDQotI2RlZmluZSBDTEVBUl9SWF9GSUZPICAgICAgIDF1ICAgICAgLyogQ2xlYXIgcmVjZWl2ZXIgRklGTyAqLw0KLSNkZWZpbmUgQ0xFQVJfVFhfRklGTyAgICAgICAydSAgICAgIC8qIENsZWFyIHRyYW5zaW10dGVyIEZJRk8gKi8NCi0jZGVmaW5lIFJEWU1PREUgICAgICAgICAgICAgM3UgICAgICAvKiBNb2RlIDAgb3IgTW9kZSAxIGZvciBUWFJEWSBhbmQgUlhSRFkgKi8NCi0NCi0vKiBNb2RlbSBDb250cm9sIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLw0KLSNkZWZpbmUgTE9PUCAgICAgICAgICAgICAgICA0dSAgICAgIC8qIExvY2FsIGxvb3BiYWNrICovDQotI2RlZmluZSBSTE9PUCAgICAgICAgICAgICAgIDV1ICAgICAgLyogUmVtb3RlIGxvb3BiYWNrICovDQotI2RlZmluZSBFQ0hPICAgICAgICAgICAgICAgIDZ1ICAgICAgLyogQXV0b21hdGljIGVjaG8gKi8NCi0jZGVmaW5lIFJMT09QX01BU0sgICAgICAgICAgMHg2dSAgICAvKiBSZW1vdGUgbG9vcGJhY2sgJiBBdXRvbWF0aWMgZWNobyovDQotDQotLyogTGluZSBTdGF0dXMgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICAgKi8NCi0jZGVmaW5lIERSICAgICAgICAgICAgICAgICAgMHUgICAgICAvKiBEYXRhIHJlYWR5ICovDQotI2RlZmluZSBUSFJFICAgICAgICAgICAgICAgIDV1ICAgICAgLyogVHJhbnNtaXR0ZXIgaG9sZGluZyByZWdpc3RlciBlbXB0eSAqLw0KLSNkZWZpbmUgVEVNVCAgICAgICAgICAgICAgICA2dSAgICAgIC8qIFRyYW5zaXR0ZXIgZW1wdHkgKi8NCi0NCi0vKiBJbnRlcnJ1cHQgRW5hYmxlIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLw0KLSNkZWZpbmUgRVJCRkkgICAgICAgICAgICAgICAwdSAgICAgIC8qIEVuYWJsZSByZWNlaXZlciBidWZmZXIgZnVsbCBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVUQkVJICAgICAgICAgICAgICAgMXUgICAgICAvKiBFbmFibGUgdHJhbnNtaXR0ZXIgYnVmZmVyIGVtcHR5IGludGVycnVwdCAqLw0KLSNkZWZpbmUgRUxTSSAgICAgICAgICAgICAgICAydSAgICAgIC8qIEVuYWJsZSBsaW5lIHN0YXR1cyBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVEU1NJICAgICAgICAgICAgICAgM3UgICAgICAvKiBFbmFibGUgbW9kZW0gc3RhdHVzIGludGVycnVwdCAqLw0KLQ0KLS8qIE11bHRpbW9kZSByZWdpc3RlciAwIGJpdCBkZWZpbml0aW9ucyAqLw0KLSNkZWZpbmUgRUxJTiAgICAgICAgICAgICAgICAzdSAgICAgIC8qIEVuYWJsZSBMSU4gaGVhZGVyIGRldGVjdGlvbiAqLw0KLSNkZWZpbmUgRVRURyAgICAgICAgICAgICAgICA1dSAgICAgIC8qIEVuYWJsZSB0cmFuc21pdHRlciB0aW1lIGd1YXJkICovDQotI2RlZmluZSBFUlRPICAgICAgICAgICAgICAgIDZ1ICAgICAgLyogRW5hYmxlIHJlY2VpdmVyIHRpbWUtb3V0ICovDQotI2RlZmluZSBFRkJSICAgICAgICAgICAgICAgIDd1ICAgICAgLyogRW5hYmxlIGZyYWN0aW9uYWwgYmF1ZCByYXRlIG1vZGUgKi8NCi0NCi0vKiBNdWx0aW1vZGUgcmVnaXN0ZXIgMSBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIEVfTVNCX1JYICAgICAgICAgICAgMHUgICAgICAvKiBNU0IgLyBMU0IgZmlyc3QgZm9yIHJlY2VpdmVyICovDQotI2RlZmluZSBFX01TQl9UWCAgICAgICAgICAgIDF1ICAgICAgLyogTVNCIC8gTFNCIGZpcnN0IGZvciB0cmFuc21pdHRlciAqLw0KLSNkZWZpbmUgRUlSRCAgICAgICAgICAgICAgICAydSAgICAgIC8qIEVuYWJsZSBJckRBIG1vZGVtICovDQotI2RlZmluZSBFSVJYICAgICAgICAgICAgICAgIDN1ICAgICAgLyogSW5wdXQgcG9sYXJpdHkgZm9yIElyREEgbW9kZW0gKi8NCi0jZGVmaW5lIEVJVFggICAgICAgICAgICAgICAgNHUgICAgICAvKiBPdXRwdXQgcG9sYXJpdHkgZm9yIElyREEgbW9kZW0gKi8NCi0jZGVmaW5lIEVJVFAgICAgICAgICAgICAgICAgNXUgICAgICAvKiBPdXRwdXQgcHVsc2Ugd2lkdGggZm9yIElyREEgbW9kZW0gKi8gICAgICANCi0NCi0vKiBNdWx0aW1vZGUgcmVnaXN0ZXIgMiBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIEVFUlIgICAgICAgICAgICAgICAgMHUgICAgICAvKiBFbmFibGUgRVJSIC8gTkFDSyBkdXJpbmcgc3RvcCB0aW1lICovDQotI2RlZmluZSBFQUZNICAgICAgICAgICAgICAgIDF1ICAgICAgLyogRW5hYmxlIDktYml0IGFkZHJlc3MgZmxhZyBtb2RlICovDQotI2RlZmluZSBFQUZDICAgICAgICAgICAgICAgIDJ1ICAgICAgLyogRW5hYmxlIGFkZHJlc3MgZmxhZyBjbGVhciAqLw0KLSNkZWZpbmUgRVNXTSAgICAgICAgICAgICAgICAzdSAgICAgIC8qIEVuYWJsZSBzaW5nbGUgd2lyZSBoYWxmLWR1cGxleCBtb2RlICovDQotDQotLyogTXVsdGltb2RlIEludGVycnVwdCBFbmFibGUgcmVnaXN0ZXIgYW5kDQotICAgTXVsdGltb2RlIEludGVycnVwdCBJZGVudGlmaWNhdGlvbiByZWdpc3RlciBkZWZpbml0aW9ucyAqLw0KLSNkZWZpbmUgRVJUT0kgICAgICAgICAgICAgICAwdSAgICAgIC8qIEVuYWJsZSByZWNlaXZlciB0aW1lb3V0IGludGVycnVwdCAqLw0KLSNkZWZpbmUgRU5BQ0tJICAgICAgICAgICAgICAxdSAgICAgIC8qIEVuYWJsZSBOQUNLIC8gRVJSIGludGVycnVwdCAqLw0KLSNkZWZpbmUgRVBJRF9QRUkgICAgICAgICAgICAydSAgICAgIC8qIEVuYWJsZSBQSUQgcGFyaXR5IGVycm9yIGludGVycnVwdCAqLw0KLSNkZWZpbmUgRUxJTkJJICAgICAgICAgICAgICAzdSAgICAgIC8qIEVuYWJsZSBMSU4gYnJlYWsgaW50ZXJydXB0ICovDQotI2RlZmluZSBFTElOU0kgICAgICAgICAgICAgIDR1ICAgICAgLyogRW5hYmxlIExJTiBzeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQgKi8NCi0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMgICAgICAgICAgICAgICAgICAgICAgIA0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogTVNTX1VBUlRfUkVHU19IXyAqLw0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTg0ZTk5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzODUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTIgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiAgU21hcnRmdXNpb24yIHN5c3RlbSBjb25maWd1cmF0aW9uLiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQNCi0gKiAgYnkgdGhlIExpYmVybyB0b29scy4gSXQgY29udGFpbnMgdGhlIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbiB0aGF0DQotICogIHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZmxvdy4gDQotICoNCi0gKi8NCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL3N5c19pbml0X2NmZ190eXBlcy5oIg0KLSNpbmNsdWRlICJzeXNfY29uZmlnLmgiDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEhIFdBUk5JTkcgISEhDQotICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBUaGUgcHJvamVjdCBpbmNsdWRpbmcgdGhpcyBmaWxlIG11c3QgYmUgbGlua2VkIHNvIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhpcw0KLSAqIGZpbGUgaXMgbG9jYXRlZCBpbiBpbnRlcm5hbCBlTlZNIGF0IHJ1biB0aW1lLiBUaGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMNCi0gKiB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgc3lzdGVtIHByaW9yIHRvIFJBTSBjb250ZW50IGluaXRpYWxpemF0aW9uLiBUaGlzIG1lYW5zDQotICogdGhhdCB0aGUgY29udGVudCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlbG93IHdpbGwgYmUgdXNlZCBiZWZvcmUgdGhlIGNvcHkNCi0gKiBmcm9tIExNQSB0byBWTUEgdGFrZXMgcGxhY2UuIFRoZSBMTUEgYW5kIFZNQSBsb2NhdGlvbnMgb2YgdGhlIGNvbnRlbnQgb2YgdGhpcw0KLSAqIGZpbGUgbXVzdCBiZSBpZGVudGljYWwgZm9yIHRoZSBzeXN0ZW0gdG8gYmUgc2VhbWxlc3NseSBjb25maWd1cmVkIGFzIHBhcnQgb2YNCi0gKiB0aGUgQ01TSVMgYm9vdCBwcm9jZXNzLg0KLSAqLw0KLSANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENsb2NrIGNvbmZpZ3VyYXRpb24NCi0gKi8NCi0vKiBObyBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkLiAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogTWVtb3J5IHJlbWFwcGluZyBjb25maWd1cmF0aW9uDQotICovDQotLyogVEJELiAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogTUREUiBjb25maWd1cmF0aW9uDQotICovDQotI2lmIE1TU19TWVNfTUREUl9DT05GSUdfQllfQ09SVEVYDQotDQotI2luY2x1ZGUgInN5c19jb25maWdfbWRkcl9kZWZpbmUuaCINCi0NCi1NRERSX1R5cGVEZWYgKiBjb25zdCBnX20yc19tZGRyX2FkZHIgPSAoTUREUl9UeXBlRGVmICopMHg0MDAyMDgwMDsNCi0NCi1jb25zdCBkZHJfc3Vic3lzX2NmZ190IGdfbTJzX21kZHJfc3Vic3lzX2NvbmZpZyA9DQotew0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgQ29udHJvbGxlciByZWdpc3RlcnMuDQotICAgICAqIEFsbCByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIHVubGVzcyBtZW50aW9uZWQgYmVzaWRlIHRoZSBkZWZpbml0aW9uLg0KLSAgICAgKi8NCi0gICAgew0KLSAgICAgICAgTUREUl9ERFJDX0RZTl9TT0ZUX1JFU0VUX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1JFU0VSVkVEMCwNCi0gICAgICAgIE1ERFJfRERSQ19EWU5fUkVGUkVTSF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RZTl9SRUZSRVNIXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFlOX1BPV0VSRE9XTl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EWU5fREVCVUdfQ1IsDQotICAgICAgICBNRERSX0REUkNfTU9ERV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19BRERSX01BUF9CQU5LX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0VDQ19EQVRBX01BU0tfQ1IsDQotICAgICAgICBNRERSX0REUkNfQUREUl9NQVBfQ09MXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfQUREUl9NQVBfQ09MXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfQUREUl9NQVBfUk9XXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfQUREUl9NQVBfUk9XXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfSU5JVF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0NLRV9SU1ROX0NZQ0xFU18xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0NLRV9SU1ROX0NZQ0xFU18yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0lOSVRfTVJfQ1IsDQotICAgICAgICBNRERSX0REUkNfSU5JVF9FTVJfQ1IsDQotICAgICAgICBNRERSX0REUkNfSU5JVF9FTVIyX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0lOSVRfRU1SM19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX0JBTktfVElNSU5HX1BBUkFNX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RSQU1fUkRfV1JfTEFURU5DWV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX1JEX1dSX1BSRV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX01SX1RJTUlOR19QQVJBTV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX1JBU19USU1JTkdfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9SRF9XUl9UUk5BUk5EX1RJTUVfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9UX1BEX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RSQU1fQkFOS19BQ1RfVElNSU5HX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX09EVF9QQVJBTV8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX09EVF9QQVJBTV8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FERFJfTUFQX0NPTF8zX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX01PREVfUkVHX1JEX1dSX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX01PREVfUkVHX0RBVEFfQ1IsDQotICAgICAgICBNRERSX0REUkNfUFdSX1NBVkVfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19QV1JfU0FWRV8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1pRX0xPTkdfVElNRV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19aUV9TSE9SVF9USU1FX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1pRX1NIT1JUX0lOVF9SRUZSRVNIX01BUkdJTl8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1pRX1NIT1JUX0lOVF9SRUZSRVNIX01BUkdJTl8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1BFUkZfUEFSQU1fMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19IUFJfUVVFVUVfUEFSQU1fMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19IUFJfUVVFVUVfUEFSQU1fMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19MUFJfUVVFVUVfUEFSQU1fMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19MUFJfUVVFVUVfUEFSQU1fMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19XUl9RVUVVRV9QQVJBTV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19QRVJGX1BBUkFNXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfUEVSRl9QQVJBTV8zX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9SRERBVEFfRU5fQ1IsDQotICAgICAgICBNRERSX0REUkNfREZJX01JTl9DVFJMVVBEX1RJTUlOR19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfTUFYX0NUUkxVUERfVElNSU5HX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9XUl9MVkxfQ09OVFJPTF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9XUl9MVkxfQ09OVFJPTF8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9SRF9MVkxfQ09OVFJPTF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9SRF9MVkxfQ09OVFJPTF8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9DVFJMVVBEX1RJTUVfSU5URVJWQUxfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFlOX1NPRlRfUkVTRVRfQUxJQVNfQ1IsDQotICAgICAgICBNRERSX0REUkNfQVhJX0ZBQlJJQ19QUklfSURfQ1IsDQotICAgIH0sDQotDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBQSFkgY29uZmlndXJhdGlvbiByZWdpc3RlcnMNCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIE1ERFJfUEhZX0xPT1BCQUNLX1RFU1RfQ1IsDQotICAgICAgICBNRERSX1BIWV9CT0FSRF9MT09QQkFDS19DUiwNCi0gICAgICAgIE1ERFJfUEhZX0NUUkxfU0xBVkVfUkFUSU9fQ1IsDQotICAgICAgICBNRERSX1BIWV9DVFJMX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfQ1RSTF9TTEFWRV9ERUxBWV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RBVEFfU0xJQ0VfSU5fVVNFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfTFZMX05VTV9PRl9EUTBfQ1IsDQotICAgICAgICBNRERSX1BIWV9EUV9PRkZTRVRfMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RRX09GRlNFVF8yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRFFfT0ZGU0VUXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9ESVNfQ0FMSUJfUlNUX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRExMX0xPQ0tfRElGRl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX0ZJRk9fV0VfSU5fRk9SQ0VfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzRfQ1IsDQotICAgICAgICBNRERSX1BIWV9HQVRFTFZMX0lOSVRfTU9ERV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfR0FURUxWTF9JTklUX1JBVElPXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfTE9DQUxfT0RUX0NSLA0KLSAgICAgICAgTUREUl9QSFlfSU5WRVJUX0NMS09VVF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRfRFFTX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfREVMQVlfM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRfRFFTX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX0RFTEFZXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EUVNfU0xBVkVfREVMQVlfMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9ERUxBWV8zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EUVNfU0xBVkVfUkFUSU9fMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzRfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EQVRBX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JMVkxfSU5JVF9NT0RFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfUkRfUkxfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRENfRklGT19SU1RfRVJSX0NOVF9DTFJfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRENfV0VfVE9fUkVfREVMQVlfQ1IsDQotICAgICAgICBNRERSX1BIWV9VU0VfRklYRURfUkVfQ1IsDQotICAgICAgICBNRERSX1BIWV9VU0VfUkFOSzBfREVMQVlTX0NSLA0KLSAgICAgICAgTUREUl9QSFlfVVNFX0xWTF9UUk5HX0xFVkVMX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRFlOX0NPTkZJR19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX1dSX0dBVEVfTFZMX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRFlOX1JFU0VUX0NSDQotICAgIH0sDQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBGSUMtNjQgcmVnaXN0ZXJzDQotICAgICAqIFRoZXNlIHJlZ2lzdGVycyBhcmUgMTYtYml0IHdpZGUgYW5kIDMyLWJpdCBhbGlnbmVkLg0KLSAgICAgKi8NCi0gICAgew0KLSAgICAgICAgTUREUl9ERFJfRklDX05CX0FERFJfQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfTkJSV0JfU0laRV9DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19XQl9USU1FT1VUX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX0hQRF9TV19SV19FTl9DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19IUERfU1dfUldfSU5WQUxfQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfU1dfV1JfRVJDTFJfQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfRVJSX0lOVF9FTkFCTEVfQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfTlVNX0FIQl9NQVNURVJTX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX0xPQ0tfVElNRU9VVFZBTF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX0xPQ0tfVElNRU9VVFZBTF8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX0xPQ0tfVElNRU9VVF9FTl9DUg0KLSAgICB9DQotfTsNCi0NCi0jZW5kaWYNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZERFIgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNpZiBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWA0KLQ0KLSNpbmNsdWRlICJzeXNfY29uZmlnX2ZkZHJfZGVmaW5lLmgiDQotDQotRkREUl9UeXBlRGVmICogY29uc3QgZ19tMnNfZmRkcl9hZGRyID0gKEZERFJfVHlwZURlZiAqKTB4NDAwMjEwMDA7DQotDQotY29uc3QgZmRkcl9zeXNyZWdfdCBnX20yc19mZGRyX3N5c3JlZ19zdWJzeXNfY29uZmlnID0NCi17DQotICAgIDB4MDAwMXUsICAgIC8qIFBMTF9DT05GSUdfTE9XXzEgKi8NCi0gICAgMHgwMDAydSwgICAgLyogUExMX0NPTkZJR19MT1dfMiAqLw0KLSAgICAweDAwMDN1LCAgICAvKiBQTExfQ09ORklHX0hJR0ggKi8NCi0gICAgMHgwMDA0dSwgICAgLyogRkFDQ19DTEtfRU4gKi8NCi0gICAgMHgwMDA1dSwgICAgLyogRkFDQ19NVVhfQ09ORklHICovDQotICAgIDB4MDAwNnUsICAgIC8qIEZBQ0NfRElWSVNPUl9SQVRJTyAqLw0KLSAgICAweDAwMDd1LCAgICAvKiBQTExfREVMQVlfTElORV9TRUwgKi8NCi0gICAgMHgwMDA4dSwgICAgLyogU09GVF9SRVNFVCAqLw0KLSAgICAweDAwMDl1LCAgICAvKiBJT19DQUxJQiAqLw0KLSAgICAweDAwMEF1LCAgICAvKiBJTlRFUlJVUFRfRU5BQkxFICovDQotICAgIDB4MDAwQnUsICAgIC8qIEFYSV9BSEJfTU9ERV9TRUwgKi8NCi0gICAgMHgwMDBDdSAgICAgLyogUEhZX1NFTEZfUkVGX0VOICovDQotfTsNCi0NCi1jb25zdCBkZHJfc3Vic3lzX2NmZ190IGdfbTJzX2ZkZHJfc3Vic3lzX2NvbmZpZyA9IA0KLXsNCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRERSIENvbnRyb2xsZXIgcmVnaXN0ZXJzLg0KLSAgICAgKiBBbGwgcmVnaXN0ZXJzIGFyZSAxNi1iaXQgd2lkZSB1bmxlc3MgbWVudGlvbmVkIGJlc2lkZSB0aGUgZGVmaW5pdGlvbi4NCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIEZERFJfRERSQ19EWU5fU09GVF9SRVNFVF9DUiwNCi0gICAgICAgIEZERFJfRERSQ19SRVNFUlZFRDAsDQotICAgICAgICBGRERSX0REUkNfRFlOX1JFRlJFU0hfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EWU5fUkVGUkVTSF8yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RZTl9QT1dFUkRPV05fQ1IsDQotICAgICAgICBGRERSX0REUkNfRFlOX0RFQlVHX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX01PREVfQ1IsDQotICAgICAgICBGRERSX0REUkNfQUREUl9NQVBfQkFOS19DUiwNCi0gICAgICAgIEZERFJfRERSQ19FQ0NfREFUQV9NQVNLX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FERFJfTUFQX0NPTF8xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FERFJfTUFQX0NPTF8yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FERFJfTUFQX1JPV18xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FERFJfTUFQX1JPV18yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0lOSVRfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19DS0VfUlNUTl9DWUNMRVNfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19DS0VfUlNUTl9DWUNMRVNfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19JTklUX01SX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0lOSVRfRU1SX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0lOSVRfRU1SMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19JTklUX0VNUjNfQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9CQU5LX1RJTUlOR19QQVJBTV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EUkFNX1JEX1dSX0xBVEVOQ1lfQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9SRF9XUl9QUkVfQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9NUl9USU1JTkdfUEFSQU1fQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9SQVNfVElNSU5HX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fUkRfV1JfVFJOQVJORF9USU1FX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fVF9QRF9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EUkFNX0JBTktfQUNUX1RJTUlOR19DUiwNCi0gICAgICAgIEZERFJfRERSQ19PRFRfUEFSQU1fMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19PRFRfUEFSQU1fMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19BRERSX01BUF9DT0xfM19DUiwNCi0gICAgICAgIEZERFJfRERSQ19NT0RFX1JFR19SRF9XUl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19NT0RFX1JFR19EQVRBX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1BXUl9TQVZFXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfUFdSX1NBVkVfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19aUV9MT05HX1RJTUVfQ1IsDQotICAgICAgICBGRERSX0REUkNfWlFfU0hPUlRfVElNRV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19aUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19aUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19QRVJGX1BBUkFNXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfSFBSX1FVRVVFX1BBUkFNXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfSFBSX1FVRVVFX1BBUkFNXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfTFBSX1FVRVVFX1BBUkFNXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfTFBSX1FVRVVFX1BBUkFNXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfV1JfUVVFVUVfUEFSQU1fQ1IsDQotICAgICAgICBGRERSX0REUkNfUEVSRl9QQVJBTV8yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1BFUkZfUEFSQU1fM19DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfUkREQVRBX0VOX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RGSV9NSU5fQ1RSTFVQRF9USU1JTkdfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX01BWF9DVFJMVVBEX1RJTUlOR19DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfV1JfTFZMX0NPTlRST0xfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfV1JfTFZMX0NPTlRST0xfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfUkRfTFZMX0NPTlRST0xfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfUkRfTFZMX0NPTlRST0xfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfQ1RSTFVQRF9USU1FX0lOVEVSVkFMX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RZTl9TT0ZUX1JFU0VUX0FMSUFTX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FYSV9GQUJSSUNfUFJJX0lEX0NSDQotICAgIH0sDQotDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBQSFkgY29uZmlndXJhdGlvbiByZWdpc3RlcnMNCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIEZERFJfUEhZX0xPT1BCQUNLX1RFU1RfQ1IsDQotICAgICAgICBGRERSX1BIWV9CT0FSRF9MT09QQkFDS19DUiwNCi0gICAgICAgIEZERFJfUEhZX0NUUkxfU0xBVkVfUkFUSU9fQ1IsDQotICAgICAgICBGRERSX1BIWV9DVFJMX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfQ1RSTF9TTEFWRV9ERUxBWV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RBVEFfU0xJQ0VfSU5fVVNFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfTFZMX05VTV9PRl9EUTBfQ1IsDQotICAgICAgICBGRERSX1BIWV9EUV9PRkZTRVRfMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RRX09GRlNFVF8yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRFFfT0ZGU0VUXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9ESVNfQ0FMSUJfUlNUX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRExMX0xPQ0tfRElGRl9DUiwNCi0gICAgICAgIEZERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX0ZJRk9fV0VfSU5fREVMQVlfM19DUiwNCi0gICAgICAgIEZERFJfUEhZX0ZJRk9fV0VfSU5fRk9SQ0VfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX1NMQVZFX1JBVElPXzRfQ1IsDQotICAgICAgICBGRERSX1BIWV9HQVRFTFZMX0lOSVRfTU9ERV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfR0FURUxWTF9JTklUX1JBVElPXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fM19DUiwNCi0gICAgICAgIEZERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfTE9DQUxfT0RUX0NSLA0KLSAgICAgICAgRkREUl9QSFlfSU5WRVJUX0NMS09VVF9DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRfRFFTX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfREVMQVlfM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRfRFFTX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX0RFTEFZXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EUVNfU0xBVkVfREVMQVlfMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9ERUxBWV8zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EUVNfU0xBVkVfUkFUSU9fMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzRfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EQVRBX1NMQVZFX0RFTEFZXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EQVRBX1NMQVZFX0ZPUkNFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JMVkxfSU5JVF9NT0RFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT18zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JMVkxfSU5JVF9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfUkRfUkxfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRENfRklGT19SU1RfRVJSX0NOVF9DTFJfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRENfV0VfVE9fUkVfREVMQVlfQ1IsDQotICAgICAgICBGRERSX1BIWV9VU0VfRklYRURfUkVfQ1IsDQotICAgICAgICBGRERSX1BIWV9VU0VfUkFOSzBfREVMQVlTX0NSLA0KLSAgICAgICAgRkREUl9QSFlfVVNFX0xWTF9UUk5HX0xFVkVMX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRFlOX0NPTkZJR19DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX1dSX0dBVEVfTFZMX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRFlOX1JFU0VUX0NSLA0KLSAgICB9LA0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRklDLTY0IHJlZ2lzdGVycw0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIGFuZCAzMi1iaXQgYWxpZ25lZC4NCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIEZERFJfRERSX0ZJQ19OQl9BRERSX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX05CUldCX1NJWkVfQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfV0JfVElNRU9VVF9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19IUERfU1dfUldfRU5fQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfSFBEX1NXX1JXX0lOVkFMX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX1NXX1dSX0VSQ0xSX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX0VSUl9JTlRfRU5BQkxFX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX05VTV9BSEJfTUFTVEVSU19DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRWQUxfMV9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRWQUxfMl9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRfRU5fQ1INCi0gICAgfQ0KLX07DQotDQotI2VuZGlmDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZWExOGIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkDQotICogIGJ5IHRoZSBMaWJlcm8gdG9vbHMuDQotICoNCi0gKi8NCi0jaWZuZGVmIE1TU19TWVNURU1fQ09ORklHVVJBVElPTg0KLSNkZWZpbmUgTVNTX1NZU1RFTV9DT05GSUdVUkFUSU9ODQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDbG9jayBjb25maWd1cmF0aW9uDQotICovDQotI2luY2x1ZGUgInN5c19jb25maWdfbXNzX2Nsb2Nrcy5oIg0KLSANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE1lbW9yeSByZW1hcHBpbmcgY29uZmlndXJhdGlvbg0KLSAqLw0KLS8qIFRCRCAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRkFDQ19JTklUIChDb3J0ZXgtTTMgcnVucyB0aGUgRkFDQyBJTklUIHByb2NlZHVyZSkNCi0gKiBPbmx5IHNldCB0byAxIGZvciBkZXNpZ24gdGFyZ2V0aW5nIHRoZSBNMlMwNTBUX0VTIGRldmljZQ0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19GQUNDX0lOSVRfQllfQ09SVEVYICAgICAgICAgMQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogTUREUiBjb25maWd1cmF0aW9uDQotICovDQotI2RlZmluZSBNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWCAgICAgICAwDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGRERSIGNvbmZpZ3VyYXRpb24NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfRkREUl9DT05GSUdfQllfQ09SVEVYICAgICAgIDANCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNFUkRFUyBJbnRlcmZhY2UgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19TRVJERVNfMF9DT05GSUdfQllfQ09SVEVYICAgMA0KLSNpZiBNU1NfU1lTX1NFUkRFU18wX0NPTkZJR19CWV9DT1JURVgNCi0jaW5jbHVkZSAic3lzX2NvbmZpZ19TRVJERVNJRl8wLmgiDQotI2VuZGlmDQotDQotI2RlZmluZSBNU1NfU1lTX1NFUkRFU18xX0NPTkZJR19CWV9DT1JURVggICAwDQotI2lmIE1TU19TWVNfU0VSREVTXzFfQ09ORklHX0JZX0NPUlRFWA0KLSNpbmNsdWRlICJzeXNfY29uZmlnX1NFUkRFU0lGXzEuaCINCi0jZW5kaWYNCi0NCi0jZGVmaW5lIE1TU19TWVNfU0VSREVTXzJfQ09ORklHX0JZX0NPUlRFWCAgIDANCi0jaWYgTVNTX1NZU19TRVJERVNfMl9DT05GSUdfQllfQ09SVEVYDQotI2luY2x1ZGUgInN5c19jb25maWdfU0VSREVTSUZfMi5oIg0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTVNTX1NZU19TRVJERVNfM19DT05GSUdfQllfQ09SVEVYICAgMA0KLSNpZiBNU1NfU1lTX1NFUkRFU18zX0NPTkZJR19CWV9DT1JURVgNCi0jaW5jbHVkZSAic3lzX2NvbmZpZ19TRVJERVNJRl8zLmgiDQotI2VuZGlmDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDYWNoZSBjb25maWd1cmF0aW9uDQotICovDQotI2RlZmluZSBNU1NfU1lTX0NBQ0hFX0NPTkZJR19CWV9DT1JURVggICAgICAwDQotDQotI2VuZGlmICAvKiBNU1NfU1lTVEVNX0NPTkZJR1VSQVRJT04gKi8NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZ19tc3NfY2xvY2tzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZ19tc3NfY2xvY2tzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZDM5NzkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogU21hcnRmdXNpb24yIHN5c3RlbSBjb25maWd1cmF0aW9uLg0KLSAqICAgLSBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgTWljcm9zZW1pIExpYmVybyBTb0MgU3VuIE1heSAwNSAxMzoxMjowMyAyMDEzDQotICoNCi0gKiBXYXJuaW5nOiAgRG8gbm90IG1vZGlmeSB0aGlzIGZpbGUsIGl0IG1heSBsZWFkIHRvIHVuZXhwZWN0ZWQNCi0gKiAgICAgICAgICAgZnVuY3Rpb25hbCBmYWlsdXJlcyBpbiB5b3VyIE1pY3JvY29udHJvbGxlciBTdWJzeXN0ZW0uDQotICovDQotI2lmbmRlZiBTWVNfQ09ORklHX01TU19DTE9DS1MNCi0jZGVmaW5lIFNZU19DT05GSUdfTVNTX0NMT0NLUw0KLQ0KLSNkZWZpbmUgTVNTX1NZU19NM19DTEtfRlJFUSAgICAgICAgICAgICAxMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX01ERFJfQ0xLX0ZSRVEgICAgICAgICAgIDEwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzBfQ0xLX0ZSRVEgICAgICAgICAgMjUwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8xX0NMS19GUkVRICAgICAgICAgIDI1MDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMl9DTEtfRlJFUSAgICAgICAgICAyNTAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDXzBfQ0xLX0ZSRVEgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUNfMV9DTEtfRlJFUSAgICAgICAgICAxMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQzY0X0NMS19GUkVRICAgICAgICAgIDEwMDAwMDAwMHUNCi0NCi0jZW5kaWYgLyogU1lTX0NPTkZJR19NU1NfQ0xPQ0tTICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrc19kZXZlbG9wb21lbnRfa2l0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZ19tc3NfY2xvY2tzX2RldmVsb3BvbWVudF9raXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJiMGJjYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZ19tc3NfY2xvY2tzX2RldmVsb3BvbWVudF9raXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbi4NCi0gKiAgIC0gQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE1pY3Jvc2VtaSBMaWJlcm8gU29DIFN1biBNYXkgMDUgMTM6MTI6MDMgMjAxMw0KLSAqDQotICogV2FybmluZzogIERvIG5vdCBtb2RpZnkgdGhpcyBmaWxlLCBpdCBtYXkgbGVhZCB0byB1bmV4cGVjdGVkDQotICogICAgICAgICAgIGZ1bmN0aW9uYWwgZmFpbHVyZXMgaW4geW91ciBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtLg0KLSAqLw0KLSNpZm5kZWYgU1lTX0NPTkZJR19NU1NfQ0xPQ0tTDQotI2RlZmluZSBTWVNfQ09ORklHX01TU19DTE9DS1MNCi0NCi0jZGVmaW5lIE1TU19TWVNfTTNfQ0xLX0ZSRVEgICAgICAgICAgICAgNTAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX01ERFJfQ0xLX0ZSRVEgICAgICAgICAgIDIwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzBfQ0xLX0ZSRVEgICAgICAgICAgNTAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8xX0NMS19GUkVRICAgICAgICAgIDUwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMl9DTEtfRlJFUSAgICAgICAgICAxMjUwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDXzBfQ0xLX0ZSRVEgICAgICAgICAgNTAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQ18xX0NMS19GUkVRICAgICAgICAgIDUwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUM2NF9DTEtfRlJFUSAgICAgICAgICA1MDAwMDAwMHUNCi0NCi0jZW5kaWYgLyogU1lTX0NPTkZJR19NU1NfQ0xPQ0tTICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrc19zdGFydGVyX2tpdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrc19zdGFydGVyX2tpdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWQzOTc5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnX21zc19jbG9ja3Nfc3RhcnRlcl9raXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbi4NCi0gKiAgIC0gQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE1pY3Jvc2VtaSBMaWJlcm8gU29DIFN1biBNYXkgMDUgMTM6MTI6MDMgMjAxMw0KLSAqDQotICogV2FybmluZzogIERvIG5vdCBtb2RpZnkgdGhpcyBmaWxlLCBpdCBtYXkgbGVhZCB0byB1bmV4cGVjdGVkDQotICogICAgICAgICAgIGZ1bmN0aW9uYWwgZmFpbHVyZXMgaW4geW91ciBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtLg0KLSAqLw0KLSNpZm5kZWYgU1lTX0NPTkZJR19NU1NfQ0xPQ0tTDQotI2RlZmluZSBTWVNfQ09ORklHX01TU19DTE9DS1MNCi0NCi0jZGVmaW5lIE1TU19TWVNfTTNfQ0xLX0ZSRVEgICAgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19NRERSX0NMS19GUkVRICAgICAgICAgICAxMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8wX0NMS19GUkVRICAgICAgICAgIDI1MDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMV9DTEtfRlJFUSAgICAgICAgICAyNTAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVEgICAgICAgICAgMjUwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQ18wX0NMS19GUkVRICAgICAgICAgIDEwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDXzFfQ0xLX0ZSRVEgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUM2NF9DTEtfRlJFUSAgICAgICAgICAxMDAwMDAwMDB1DQotDQotI2VuZGlmIC8qIFNZU19DT05GSUdfTVNTX0NMT0NLUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9jcHVfdHlwZXMuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9jcHVfdHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIyNzY0Yi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvY3B1X3R5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwNy0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU1ZOICRSZXZpc2lvbjogNTI1OCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDEyOjQxOjAyICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBfX0NQVV9UWVBFU19IDQotI2RlZmluZSBfX0NQVV9UWVBFU19IICAgMQ0KLQ0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqLw0KLXR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIGFkZHJfdDogYWRkcmVzcyB0eXBlLg0KLSAqIFVzZWQgdG8gc3BlY2lmeSB0aGUgYWRkcmVzcyBvZiBwZXJpcGhlcmFscyBwcmVzZW50IGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkNCi0gKiBtYXAuDQotICovDQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgYWRkcl90Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogcHNyX3Q6IHByb2Nlc3NvciBzdGF0ZSByZWdpc3Rlci4NCi0gKiBVc2VkIGJ5IEhBTF9kaXNhYmxlX2ludGVycnVwdHMoKSBhbmQgSEFMX3Jlc3RvcmVfaW50ZXJydXB0cygpIHRvIHN0b3JlIHRoZQ0KLSAqIHByb2Nlc3NvcidzIHN0YXRlIGJldHdlZW4gZGlzYWJsaW5nIGFuZCByZXN0b3JpbmcgaW50ZXJydXB0cy4NCi0gKi8NCi10eXBlZGVmIHVuc2lnbmVkIGludCBwc3JfdDsNCi0NCi0jZW5kaWYgIC8qIF9fQ1BVX1RZUEVTX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaGFsLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaGFsLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NzUzYjYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2hhbC5zCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0jIChjKSBDb3B5cmlnaHQgMjAwNy0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotIyANCi0jIEludGVycnVwdCBkaXNhYmxpbmcvcmVzdG9yYXRpb24gZm9yIGNyaXRpY2FsIHNlY3Rpb24gcHJvdGVjdGlvbi4NCi0jDQotIyBTVk4gJFJldmlzaW9uOiA1MjU4ICQNCi0jIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjo0MTowMiArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSMNCi0gICAgLnRleHQNCi0gICAgLmdsb2JhbCBIQUxfZGlzYWJsZV9pbnRlcnJ1cHRzDQotICAgIC5nbG9iYWwgSEFMX3Jlc3RvcmVfaW50ZXJydXB0cw0KLSAgICAuY29kZSAxNg0KLSAgICAuc3ludGF4IHVuaWZpZWQNCi0gICAgLnR5cGUgSEFMX2Rpc2FibGVfaW50ZXJydXB0cywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSEFMX3Jlc3RvcmVfaW50ZXJydXB0cywgZnVuY3Rpb24NCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSMgDQotIw0KLUhBTF9kaXNhYmxlX2ludGVycnVwdHM6ICAgIA0KLSAgICBtcnMgcjAsIFBSSU1BU0sNCi0gICAgY3BzaWQgSQ0KLSAgICBieCBscg0KLQ0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIw0KLSMNCi1IQUxfcmVzdG9yZV9pbnRlcnJ1cHRzOiAgICANCi0gICAgbXNyIFBSSU1BU0ssIHIwDQotICAgIGJ4IGxyDQotDQotLmVuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9od19tYWNyb3MuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9od19tYWNyb3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE0MmNiMi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaHdfbWFjcm9zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwNy0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIEhhcmR3YXJlIHJlZ2lzdGVycyBhY2Nlc3MgbWFjcm9zLg0KLSAqIA0KLSAqICBUSEUgTUFDUk9TIERFRklORUQgSU4gVEhJUyBGSUxFIEFSRSBERVBSRUNBVEVELiBETyBOT1QgVVNFRCBGT1IgTkVXIA0KLSAqICBERVZFTE9QTUVOVC4NCi0gKg0KLSAqIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCB0byBhY2Nlc3MgcGVyaXBoZXJhbCdzIHJlZ2lzdGVycy4gVGhleSBhbGxvdyBhY2Nlc3MgdG8NCi0gKiA4LCAxNiBhbmQgMzIgYml0IHdpZGUgcmVnaXN0ZXJzLiBBbGwgYWNjZXNzZXMgdG8gcGVyaXBoZXJhbCByZWdpc3RlcnMgc2hvdWxkDQotICogYmUgZG9uZSB0aHJvdWdoIHRoZXNlIG1hY3JvcyBpbiBvcmRlciB0byBlYXNlIHBvcnRpbmcgYWNjcm9zcyBkaWZmZXJlbnQgDQotICogcHJvY2Vzc29ycy9idXMgYXJjaGl0ZWN0dXJlcy4NCi0gKiANCi0gKiBTb21lIG9mIHRoZXNlIG1hY3JvcyBhbHNvIGFsbG93IHRvIGFjY2VzcyBhIHNwZWNpZmljIHJlZ2lzdGVyIGZpZWxkLg0KLSAqIA0KLSAqIFNWTiAkUmV2aXNpb246IDUyNTggJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjo0MTowMiArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgX19IV19SRUdJU1RFUl9NQUNST1NfSA0KLSNkZWZpbmUgX19IV19SRUdJU1RFUl9NQUNST1NfSAkxDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiAzMiBiaXRzIHJlZ2lzdGVycyBhY2Nlc3M6DQotICovDQotI2RlZmluZSBIV19nZXRfdWludDMyX3JlZyhCQVNFX0FERFIsIFJFR19PRkZTRVQpICgqKCh1aW50MzJfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBSRUdfT0ZGU0VUIyNfUkVHX09GRlNFVCkpKQ0KLQ0KLSNkZWZpbmUgSFdfc2V0X3VpbnQzMl9yZWcoQkFTRV9BRERSLCBSRUdfT0ZGU0VULCBWQUxVRSkgKCooKHVpbnQzMl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIFJFR19PRkZTRVQjI19SRUdfT0ZGU0VUKSkgPSAoVkFMVUUpKQ0KLQ0KLSNkZWZpbmUgSFdfc2V0X3VpbnQzMl9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRCwgVkFMVUUpIFwNCi0gICAgICAgICAgICAoKigodWludDMyX3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgRklFTEQjI19PRkZTRVQpKSA9ICBcDQotICAgICAgICAgICAgICAgICggXA0KLSAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSBcDQotICAgICAgICAgICAgICAgICAgICAoIFwNCi0gICAgICAgICAgICAgICAgICAgICgqKCh1aW50MzJfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpKSAmIH5GSUVMRCMjX01BU0spIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgoKFZBTFVFKSA8PCBGSUVMRCMjX1NISUZUKSAmIEZJRUxEIyNfTUFTSykgXA0KLSAgICAgICAgICAgICAgICApIFwNCi0gICAgICAgICAgICApDQotDQotI2RlZmluZSBIV19nZXRfdWludDMyX3JlZ19maWVsZCggQkFTRV9BRERSLCBGSUVMRCApIFwNCi0gICAgICAgICAgICAoKCAoKigodWludDMyX3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgRklFTEQjI19PRkZTRVQpKSkgJiBGSUVMRCMjX01BU0spID4+IEZJRUxEIyNfU0hJRlQpDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiAzMiBiaXRzIG1lbW9yeSBhY2Nlc3M6DQotICovDQotI2RlZmluZSBIV19nZXRfdWludDMyKEJBU0VfQUREUikgKCooKHVpbnQzMl90IHZvbGF0aWxlICopKEJBU0VfQUREUikpKQ0KLQ0KLSNkZWZpbmUgSFdfc2V0X3VpbnQzMihCQVNFX0FERFIsIFZBTFVFKSAoKigodWludDMyX3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSKSkgPSAoVkFMVUUpKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogMTYgYml0cyByZWdpc3RlcnMgYWNjZXNzOg0KLSAqLw0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQxNl9yZWcoQkFTRV9BRERSLCBSRUdfT0ZGU0VUKSAoKigodWludDE2X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgUkVHX09GRlNFVCMjX1JFR19PRkZTRVQpKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50MTZfcmVnKEJBU0VfQUREUiwgUkVHX09GRlNFVCwgVkFMVUUpICgqKCh1aW50MTZfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBSRUdfT0ZGU0VUIyNfUkVHX09GRlNFVCkpID0gKFZBTFVFKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50MTZfcmVnX2ZpZWxkKEJBU0VfQUREUiwgRklFTEQsIFZBTFVFKSBcDQotICAgICAgICAgICAgKCooKHVpbnQxNl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkgPSAgXA0KLSAgICAgICAgICAgICAgICAoIFwNCi0gICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkgXA0KLSAgICAgICAgICAgICAgICAgICAgKCBcDQotICAgICAgICAgICAgICAgICAgICAoKigodWludDE2X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgRklFTEQjI19PRkZTRVQpKSkgJiB+RklFTEQjI19NQVNLKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkoKChWQUxVRSkgPDwgRklFTEQjI19TSElGVCkgJiBGSUVMRCMjX01BU0spIFwNCi0gICAgICAgICAgICAgICAgKSBcDQotICAgICAgICAgICAgKQ0KLQ0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQxNl9yZWdfZmllbGQoIEJBU0VfQUREUiwgRklFTEQgKSBcDQotICAgICAgICAgICAgKCggKCooKHVpbnQxNl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkpICYgRklFTEQjI19NQVNLKSA+PiBGSUVMRCMjX1NISUZUKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogOCBiaXRzIHJlZ2lzdGVycyBhY2Nlc3M6DQotICovDQotI2RlZmluZSBIV19nZXRfdWludDhfcmVnKEJBU0VfQUREUiwgUkVHX09GRlNFVCkgKCooKHVpbnQ4X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgUkVHX09GRlNFVCMjX1JFR19PRkZTRVQpKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50OF9yZWcoQkFTRV9BRERSLCBSRUdfT0ZGU0VULCBWQUxVRSkgKCooKHVpbnQ4X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgUkVHX09GRlNFVCMjX1JFR19PRkZTRVQpKSA9IChWQUxVRSkpDQotIA0KLSNkZWZpbmUgSFdfc2V0X3VpbnQ4X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxELCBWQUxVRSkgXA0KLSAgICAgICAgICAgICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkgPSAgXA0KLSAgICAgICAgICAgICAgICAoIFwNCi0gICAgICAgICAgICAgICAgICAgICh1aW50OF90KSBcDQotICAgICAgICAgICAgICAgICAgICAoIFwNCi0gICAgICAgICAgICAgICAgICAgICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkpICYgfkZJRUxEIyNfTUFTSykgfCBcDQotICAgICAgICAgICAgICAgICAgICAodWludDhfdCkoKChWQUxVRSkgPDwgRklFTEQjI19TSElGVCkgJiBGSUVMRCMjX01BU0spIFwNCi0gICAgICAgICAgICAgICAgKSBcDQotICAgICAgICAgICAgKQ0KLQ0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQ4X3JlZ19maWVsZCggQkFTRV9BRERSLCBGSUVMRCApIFwNCi0gICAgICAgICAgICAoKCAoKigodWludDhfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpKSAmIEZJRUxEIyNfTUFTSykgPj4gRklFTEQjI19TSElGVCkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIDggYml0cyBtZW1vcnkgYWNjZXNzOg0KLSAqLw0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQ4KEJBU0VfQUREUikgKCooKHVpbnQ4X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSKSkpDQotDQotI2RlZmluZSBIV19zZXRfdWludDgoQkFTRV9BRERSLCBWQUxVRSkgKCooKHVpbnQ4X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSKSkgPSAoVkFMVUUpKQ0KLSANCi0jZW5kaWYgIC8qIF9fSFdfUkVHSVNURVJfTUFDUk9TX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaHdfcmVnX2FjY2Vzcy5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2h3X3JlZ19hY2Nlc3MucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EwYjI1NC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaHdfcmVnX2FjY2Vzcy5zCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1MjU4ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NDE6MDIgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0gICAgLnRleHQNCi0gICAgLmdsb2JhbCBIV19zZXRfMzJiaXRfcmVnDQotICAgIC5nbG9iYWwgSFdfZ2V0XzMyYml0X3JlZw0KLSAgICAuZ2xvYmFsIEhXX3NldF8zMmJpdF9yZWdfZmllbGQNCi0gICAgLmdsb2JhbCBIV19nZXRfMzJiaXRfcmVnX2ZpZWxkDQotICAgIC5nbG9iYWwgSFdfc2V0XzE2Yml0X3JlZw0KLSAgICAuZ2xvYmFsIEhXX2dldF8xNmJpdF9yZWcNCi0gICAgLmdsb2JhbCBIV19zZXRfMTZiaXRfcmVnX2ZpZWxkDQotICAgIC5nbG9iYWwgSFdfZ2V0XzE2Yml0X3JlZ19maWVsZA0KLSAgICAuZ2xvYmFsIEhXX3NldF84Yml0X3JlZw0KLSAgICAuZ2xvYmFsIEhXX2dldF84Yml0X3JlZw0KLSAgICAuZ2xvYmFsIEhXX3NldF84Yml0X3JlZ19maWVsZA0KLSAgICAuZ2xvYmFsIEhXX2dldF84Yml0X3JlZ19maWVsZA0KLSAgICAuY29kZSAxNg0KLSAgICAuc3ludGF4IHVuaWZpZWQNCi0gICAgLnR5cGUgSFdfc2V0XzMyYml0X3JlZywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzMyYml0X3JlZywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfc2V0XzMyYml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzMyYml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfc2V0XzE2Yml0X3JlZywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzE2Yml0X3JlZywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfc2V0XzE2Yml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzE2Yml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfc2V0XzhiaXRfcmVnLCBmdW5jdGlvbg0KLSAgICAudHlwZSBIV19nZXRfOGJpdF9yZWcsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX3NldF84Yml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzhiaXRfcmVnX2ZpZWxkLCBmdW5jdGlvbg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgdWludDMyX3QgdmFsdWUNCi0gKi8NCi1IV19zZXRfMzJiaXRfcmVnOg0KLSAgICBTVFIgUjEsIFtSMF0NCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqLyAgICAgIA0KLUhXX2dldF8zMmJpdF9yZWc6DQotICAgIExEUiBSMCwgW1IwXQ0KLSAgICBCWCBMUg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgaW50X2Zhc3Q4X3Qgc2hpZnQNCi0gKiBSMjogICB1aW50MzJfdCBtYXNrDQotICogUjM6ICAgdWludDMyX3QgdmFsdWUNCi0gKi8NCi1IV19zZXRfMzJiaXRfcmVnX2ZpZWxkOg0KLSAgICBQVVNIIHtSMSxSMixSMyxMUn0NCi0gICAgTFNMLlcgUjMsIFIzLCBSMQ0KLSAgICBBTkQuVyBSMywgUjMsIFIyDQotICAgIExEUiBSMSwgW1IwXQ0KLSAgICBNVk4uVyBSMiwgUjINCi0gICAgQU5ELlcgUjEsIFIxLCBSMg0KLSAgICBPUlIuVyBSMSwgUjEsIFIzDQotICAgIFNUUiBSMSwgW1IwXQ0KLSAgICBQT1Age1IxLFIyLFIzLFBDfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgaW50X2Zhc3Q4X3Qgc2hpZnQNCi0gKiBSMjogICB1aW50MzJfdCBtYXNrDQotICovDQotSFdfZ2V0XzMyYml0X3JlZ19maWVsZDoNCi0gICAgTERSIFIwLCBbUjBdDQotICAgIEFORC5XIFIwLCBSMCwgUjINCi0gICAgTFNSLlcgUjAsIFIwLCBSMQ0KLSAgICBCWCBMUg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgdWludF9mYXN0MTZfdCB2YWx1ZQ0KLSAqLw0KLUhXX3NldF8xNmJpdF9yZWc6DQotICAgIFNUUkggUjEsIFtSMF0NCi0gICAgQlggTFINCi0gICAgICAgIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICovDQotSFdfZ2V0XzE2Yml0X3JlZzoNCi0gICAgTERSSCBSMCwgW1IwXQ0KLSAgICBCWCBMUg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgaW50X2Zhc3Q4X3Qgc2hpZnQNCi0gKiBSMjogICB1aW50X2Zhc3QxNl90IG1hc2sNCi0gKiBSMzogICB1aW50X2Zhc3QxNl90IHZhbHVlDQotICovDQotSFdfc2V0XzE2Yml0X3JlZ19maWVsZDoNCi0gICAgUFVTSCB7UjEsUjIsUjMsTFJ9DQotICAgIExTTC5XIFIzLCBSMywgUjENCi0gICAgQU5ELlcgUjMsIFIzLCBSMg0KLSAgICBMRFJIIFIxLCBbUjBdDQotICAgIE1WTi5XIFIyLCBSMg0KLSAgICBBTkQuVyBSMSwgUjEsIFIyDQotICAgIE9SUi5XIFIxLCBSMSwgUjMNCi0gICAgU1RSSCBSMSwgW1IwXQ0KLSAgICBQT1Age1IxLFIyLFIzLFBDfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgaW50X2Zhc3Q4X3Qgc2hpZnQNCi0gKiBSMjogICB1aW50X2Zhc3QxNl90IG1hc2sNCi0gKi8NCi1IV19nZXRfMTZiaXRfcmVnX2ZpZWxkOg0KLSAgICBMRFJIIFIwLCBbUjBdDQotICAgIEFORC5XIFIwLCBSMCwgUjINCi0gICAgTFNSLlcgUjAsIFIwLCBSMQ0KLSAgICBCWCBMUg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyDQotICogUjE6ICAgdWludF9mYXN0OF90IHZhbHVlDQotICovDQotSFdfc2V0XzhiaXRfcmVnOg0KLSAgICBTVFJCIFIxLCBbUjBdDQotICAgIEJYIExSDQotICAgICAgICANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqLw0KLUhXX2dldF84Yml0X3JlZzoNCi0gICAgTERSQiBSMCwgW1IwXQ0KLSAgICBCWCBMUg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogUjA6ICAgYWRkcl90IHJlZ19hZGRyLA0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludF9mYXN0OF90IG1hc2sNCi0gKiBSMzogICB1aW50X2Zhc3Q4X3QgdmFsdWUNCi0gKi8NCi1IV19zZXRfOGJpdF9yZWdfZmllbGQ6DQotICAgIFBVU0gge1IxLFIyLFIzLExSfQ0KLSAgICBMU0wuVyBSMywgUjMsIFIxDQotICAgIEFORC5XIFIzLCBSMywgUjINCi0gICAgTERSQiBSMSwgW1IwXQ0KLSAgICBNVk4uVyBSMiwgUjINCi0gICAgQU5ELlcgUjEsIFIxLCBSMg0KLSAgICBPUlIuVyBSMSwgUjEsIFIzDQotICAgIFNUUkIgUjEsIFtSMF0NCi0gICAgUE9QIHtSMSxSMixSMyxQQ30NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludF9mYXN0OF90IG1hc2sNCi0gKi8NCi1IV19nZXRfOGJpdF9yZWdfZmllbGQ6DQotICAgIExEUkIgUjAsIFtSMF0NCi0gICAgQU5ELlcgUjAsIFIwLCBSMg0KLSAgICBMU1IuVyBSMCwgUjAsIFIxDQotICAgIEJYIExSDQotDQotLmVuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL2NvcnRleF9udmljLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzdjMDBmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL2NvcnRleF9udmljLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBMZWdhY3kgQWN0ZWwgSEFMIENvcnRleCBOVklDIGNvbnRyb2wgZnVuY3Rpb25zLg0KLSAqIFRoZSB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSByZXBsYWNlZCBieSBjYWxscyB0byB0aGUgZXF1aXZhbGVudA0KLSAqIENNU0lTIGZ1bmN0aW9uIGluIHlvdXIgYXBwbGljYXRpb24gY29kZS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNTkgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjo1ODowNSArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJjb3J0ZXhfbnZpYy5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfaW5pdCggdm9pZCApDQotew0KLSAgICAvKg0KLSAgICAgKiBQbGVhc2UgdXNlIHRoZSBOVklDIGNvbnRyb2wgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMNCi0gICAgICogSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIuIFRoZSB1c2Ugb2YgdGhlIEFjdGVsIEhBTCBOVklDIGNvbnRyb2wNCi0gICAgICogZnVuY3Rpb25zIGlzIG9ic29sZXRlIG9uIFNtYXJ0RnVzaW9uMiBkZXZpY2VzLg0KLSAgICAgKg0KLSAgICAgKiBTaW1wbHkgcmVtb3ZlIHRoZSBjYWxsIHRvIE5WSUNfaW5pdCgpIGZyb20geW91ciBhcHBsaWNhdGlvbiBjb2RlLg0KLSAgICAgKi8NCi0gICAgQVNTRVJUKDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIA0KLSAqLw0KLXZvaWQgTlZJQ19zZXRfaGFuZGxlcg0KLSgNCi0gICAgdWludDMyX3QgaW50ZXJydXB0X251bWJlciwNCi0gICAgaGFsX252aWNfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgLyoNCi0gICAgICogUGxlYXNlIHVzZSB0aGUgTlZJQyBjb250cm9sIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgU21hcnRGdXNpb24yIENNU0lTDQotICAgICAqIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyLiBUaGUgdXNlIG9mIHRoZSBBY3RlbCBIQUwgTlZJQyBjb250cm9sDQotICAgICAqIGZ1bmN0aW9ucyBpcyBvYnNvbGV0ZSBvbiBTbWFydEZ1c2lvbjIgZGV2aWNlcy4NCi0gICAgICoNCi0gICAgICogUGxlYXNlIHJlbW92ZSB0aGUgY2FsbCB0byBOVklDX3NldF9oYW5kbGVyKCkgZnJvbSB5b3VyIGFwcGxpY2F0aW9uIGNvZGUNCi0gICAgICogYW5kIHByb3ZpZGUgYSBmdW5jdGlvbiB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBwcm90b3R5cGVzIHRvDQotICAgICAqIGhhbmRsZSBpbnRlcnJ1cHRzIGZyb20gcGVyaXBoZXJhbHMgaW1wbGVtZXRlZCBpbiB0aGUgU21hcnRGdXNpb24yIEZQR0ENCi0gICAgICogZmFicmljOg0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnEwX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMV9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTJfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnEzX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxNF9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTVfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnE2X0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxN19JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycThfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnE5X0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMTBfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnExMV9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTEyX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMTNfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnExNF9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTE1X0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogVGhlIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBkZXBlbmRzIG9uIHdoaWNoIE1TU19JTlRfRjJNW25dIHNpZ25hbCBpcyB1c2VkDQotICAgICAqIGluIHlvdXIgTGliZXJvIGRlc2lnbiB0byBjb25uZWN0IHRoZSBpbnRlcnJ1cHQgc2lnbmFsIG9mIHRoZSBwZXJpcGhlcmFsDQotICAgICAqIGdlbmVyYXRpbmcgdGhlIGludGVycnVwdC4NCi0gICAgICovDQotICAgIEFTU0VSVCgwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfc2V0X3ByaW9yaXR5DQotKA0KLSAgICB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyLA0KLSAgICB1aW50OF90IHByaW9yaXR5X2xldmVsDQotKQ0KLXsNCi0gICAgLyoNCi0gICAgICogUGxlYXNlIHVzZSB0aGUgTlZJQyBjb250cm9sIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgU21hcnRGdXNpb24yIENNU0lTDQotICAgICAqIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyLiBUaGUgdXNlIG9mIHRoZSBBY3RlbCBIQUwgTlZJQyBjb250cm9sDQotICAgICAqIGZ1bmN0aW9ucyBpcyBvYnNvbGV0ZSBvbiBTbWFydEZ1c2lvbjIgZGV2aWNlcy4NCi0gICAgICoNCi0gICAgICogUGxlYXNlIHJlcGxhY2UgY2FsbHMgdG8gTlZJQ19zZXRfcHJpb3JpdHkoKSB3aXRoIGEgY2FsbCB0byB0aGUgQ01TSVMNCi0gICAgICogdm9pZCBOVklDX1NldFByaW9yaXR5KElSUW5fVHlwZSBJUlFuLCB1aW50MzJfdCBwcmlvcml0eSkgZnVuY3Rpb24gd2hlcmUNCi0gICAgICogSVJRbiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6DQotICAgICAqICAgICAgLSBGYWJyaWNJcnEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTFfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTRfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE2X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTdfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE5X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEyX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE1X0lSUW4NCi0gICAgICovDQotICAgIEFTU0VSVCgwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfZW5hYmxlX2ludGVycnVwdCggdWludDMyX3QgaW50ZXJydXB0X251bWJlciApDQotew0KLSAgICAvKg0KLSAgICAgKiBQbGVhc2UgdXNlIHRoZSBOVklDIGNvbnRyb2wgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMNCi0gICAgICogSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIuIFRoZSB1c2Ugb2YgdGhlIEFjdGVsIEhBTCBOVklDIGNvbnRyb2wNCi0gICAgICogZnVuY3Rpb25zIGlzIG9ic29sZXRlIG9uIFNtYXJ0RnVzaW9uMiBkZXZpY2VzLg0KLSAgICAgKg0KLSAgICAgKiBQbGVhc2UgcmVwbGFjZSBjYWxscyB0byBOVklDX2VuYWJsZV9pbnRlcnJ1cHQoKSB3aXRoIGEgY2FsbCB0byB0aGUgQ01TSVMNCi0gICAgICogdm9pZCBOVklDX0VuYWJsZUlSUShJUlFuX1R5cGUgSVJRbikgZnVuY3Rpb24gd2hlcmUgSVJRbiBpcyBvbmUgb2YgdGhlDQotICAgICAqIGZvbGxvd2luZyB2YWx1ZXM6DQotICAgICAqICAgICAgLSBGYWJyaWNJcnEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTFfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTRfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE2X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTdfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE5X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEyX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE1X0lSUW4NCi0gICAgICovDQotICAgIEFTU0VSVCgwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfZGlzYWJsZV9pbnRlcnJ1cHQoIHVpbnQzMl90IGludGVycnVwdF9udW1iZXIgKQ0KLXsNCi0gICAgLyoNCi0gICAgICogUGxlYXNlIHVzZSB0aGUgTlZJQyBjb250cm9sIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgU21hcnRGdXNpb24yIENNU0lTDQotICAgICAqIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyLiBUaGUgdXNlIG9mIHRoZSBBY3RlbCBIQUwgTlZJQyBjb250cm9sDQotICAgICAqIGZ1bmN0aW9ucyBpcyBvYnNvbGV0ZSBvbiBTbWFydEZ1c2lvbjIgZGV2aWNlcy4NCi0gICAgICoNCi0gICAgICogUGxlYXNlIHJlcGxhY2UgY2FsbHMgdG8gTlZJQ19kaXNhYmxlX2ludGVycnVwdCgpIHdpdGggYSBjYWxsIHRvIHRoZSBDTVNJUw0KLSAgICAgKiB2b2lkIE5WSUNfRGlzYWJsZUlSUShJUlFuX1R5cGUgSVJRbikgZnVuY3Rpb24gd2hlcmUgSVJRbiBpcyBvbmUgb2YgdGhlDQotICAgICAqIGZvbGxvd2luZyB2YWx1ZXM6DQotICAgICAqICAgICAgLSBGYWJyaWNJcnEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTFfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTRfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE2X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTdfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE5X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEwX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEyX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTEzX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTE1X0lSUW4NCi0gICAgICovDQotICAgIEFTU0VSVCgwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfY2xlYXJfaW50ZXJydXB0KCB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyICkNCi17DQotICAgIC8qDQotICAgICAqIFBsZWFzZSB1c2UgdGhlIE5WSUMgY29udHJvbCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUw0KLSAgICAgKiBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllci4gVGhlIHVzZSBvZiB0aGUgQWN0ZWwgSEFMIE5WSUMgY29udHJvbA0KLSAgICAgKiBmdW5jdGlvbnMgaXMgb2Jzb2xldGUgb24gU21hcnRGdXNpb24yIGRldmljZXMuDQotICAgICAqDQotICAgICAqIFBsZWFzZSByZXBsYWNlIGNhbGxzIHRvIE5WSUNfY2xlYXJfaW50ZXJydXB0KCkgd2l0aCBhIGNhbGwgdG8gdGhlIENNU0lTDQotICAgICAqIHZvaWQgTlZJQ19DbGVhclBlbmRpbmdJUlEoSVJRbl9UeXBlIElSUW4pIGZ1bmN0aW9uIHdoZXJlIElSUW4gaXMgb25lIG9mIHRoZQ0KLSAgICAgKiBmb2xsb3dpbmcgdmFsdWVzOg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTJfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTVfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE3X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycThfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNV9JUlFuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMCk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL2NvcnRleF9udmljLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzViOTQ4Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL2NvcnRleF9udmljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwNy0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIExlZ2FjeSBBY3RlbCBIQUwgQ29ydGV4IE5WSUMgY29udHJvbCBmdW5jdGlvbnMuDQotICogVGhlIHVzZSBvZiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGNhbGxzIHRvIHRoZSBlcXVpdmFsZW50DQotICogQ01TSVMgZnVuY3Rpb24gaW4geW91ciBhcHBsaWNhdGlvbiBjb2RlLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTI1NyAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDEyOjI0OjEwICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBDT1JURVhfTlZJQ19IXw0KLSNkZWZpbmUgQ09SVEVYX05WSUNfSF8NCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotDQotdHlwZWRlZiB2b2lkICgqaGFsX252aWNfaXJxX2hhbmRsZXJfdCkodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfaW5pdCggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX3NldF9oYW5kbGVyDQotKA0KLSAgICB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyLA0KLSAgICBoYWxfbnZpY19pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX3NldF9wcmlvcml0eQ0KLSgNCi0gICAgdWludDMyX3QgaW50ZXJydXB0X251bWJlciwNCi0gICAgdWludDhfdCBwcmlvcml0eV9sZXZlbA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfZW5hYmxlX2ludGVycnVwdCggdWludDMyX3QgaW50ZXJydXB0X251bWJlciApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX2Rpc2FibGVfaW50ZXJydXB0KCB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfY2xlYXJfaW50ZXJydXB0KCB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyICk7DQotDQotI2VuZGlmIC8qQ09SVEVYX05WSUNfSF8qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvaGFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MjJkMTUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvaGFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIEhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIGZ1bmN0aW9ucy4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1MjU4ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NDE6MDIgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIEhBTF9IXw0KLSNkZWZpbmUgSEFMX0hfDQotDQotI2luY2x1ZGUgImNwdV90eXBlcy5oIg0KLSNpbmNsdWRlICJod19yZWdfYWNjZXNzLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBFbmFibGUgYWxsIGludGVycnVwdHMgYXQgdGhlIHByb2Nlc3NvciBsZXZlbC4NCi0gKi8NCi12b2lkIEhBTF9lbmFibGVfaW50ZXJydXB0cyggdm9pZCApOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBhdCB0aGUgcHJvY2Vzc29yIGNvcmUgbGV2ZWwuDQotICogUmV0dXJuIHRoZSBpbnRlcnJ1cHRzIGVuYWJsZSBzdGF0ZSBiZWZvcmUgZGlzYWJsaW5nIG9jY3VyZWQgc28gdGhhdCBpdCBjYW4gDQotICogbGF0ZXIgYmUgcmVzdG9yZWQuIA0KLSAqLw0KLXBzcl90IEhBTF9kaXNhYmxlX2ludGVycnVwdHMoIHZvaWQgKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFJlc3RvcmUgdGhlIGludGVycnVwdHMgZW5hYmxlIHN0YXRlIGF0IHRoZSBwcm9jZXNzb3IgY29yZSBsZXZlbC4NCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IHBhc3NlZCB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8NCi0gKiBIQUxfZGlzYWJsZV9pbnRlcnJ1cHRzKCkuIA0KLSAqLw0KLXZvaWQgSEFMX3Jlc3RvcmVfaW50ZXJydXB0cyggcHNyX3Qgc2F2ZWRfcHNyICk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKi8NCi0jZGVmaW5lIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSAgKEZJRUxEX05BTUUjI19PRkZTRVQpDQotI2RlZmluZSBGSUVMRF9TSElGVChGSUVMRF9OQU1FKSAgIChGSUVMRF9OQU1FIyNfU0hJRlQpDQotI2RlZmluZSBGSUVMRF9NQVNLKEZJRUxEX05BTUUpICAgIChGSUVMRF9OQU1FIyNfTUFTSykNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfc2V0XzMyYml0X3JlZygpIGFsbG93cyB3cml0aW5nIGEgMzIgYml0cyB3aWRlIHJlZ2lzdGVyLg0KLSAqDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIFJFR19OQU1FOiAgICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgdG8gd3JpdGUuIFRoZXNlIHN0cmluZ3MgYXJlDQotICogICAgICAgICAgICAgIHNwZWNpZmllZCBpbiBhIGhlYWRlciBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVyaXBoZXJhbC4NCi0gKiBWQUxVRTogICAgICAgQSB2YXJpYWJsZSBvZiB0eXBlIHVpbnQzMl90IGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIHdyaXRlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX3NldF8zMmJpdF9yZWcoQkFTRV9BRERSLCBSRUdfTkFNRSwgVkFMVUUpIFwNCi0gICAgICAgICAgKEhXX3NldF8zMmJpdF9yZWcoICgoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpKSwgKFZBTFVFKSApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9nZXRfMzJiaXRfcmVnKCkgaXMgdXNlZCB0byByZWFkIHRoZSB2YWx1ZSAgb2YgYSAzMiBiaXRzIHdpZGUNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogUkVHX05BTUU6ICAgIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciB0byByZWFkLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogUkVUVVJOOgkJVGhpcyBmdW5jdGlvbi1saWtlIG1hY3JvIHJldHVybnMgYSB1aW50MzJfdCB2YWx1ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9nZXRfMzJiaXRfcmVnKEJBU0VfQUREUiwgUkVHX05BTUUpIFwNCi0gICAgICAgICAgKEhXX2dldF8zMmJpdF9yZWcoICgoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpKSApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9zZXRfMzJiaXRfcmVnX2ZpZWxkKCkgaXMgdXNlZCB0byB3cml0ZSBhIGZpZWxkIHdpdGhpbiBhDQotICogMzIgYml0cyB3aWRlIHJlZ2lzdGVyLiBUaGUgZmllbGQgd3JpdHRlbiBjYW4gYmUgb25lIG9yIG1vcmUgYml0cy4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogRklFTERfTkFNRTogIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciBmaWVsZCB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncw0KLSAqIAkJCQlhcmUgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFZBTFVFOiAgICAgICBBIHZhcmlhYmxlIG9mIHR5cGUgdWludDMyX3QgY29udGFpbmluZyB0aGUgZmllbGQgdmFsdWUgdG8gd3JpdGUuDQotICovDQotI2RlZmluZSBIQUxfc2V0XzMyYml0X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxEX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgICAgKEhXX3NldF8zMmJpdF9yZWdfZmllbGQoXA0KLSAgICAgICAgICAgICAgICAoQkFTRV9BRERSKSArIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX1NISUZUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfTUFTSyhGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIChWQUxVRSkpKQ0KLSAgDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX2dldF8zMmJpdF9yZWdfZmllbGQoKSBpcyB1c2VkIHRvIHJlYWQgYSByZWdpc3RlciBmaWVsZCBmcm9tDQotICogd2l0aGluIGEgMzIgYml0IHdpZGUgcGVyaXBoZXJhbCByZWdpc3Rlci4gVGhlIGZpZWxkIGNhbiBiZSBvbmUgb3IgbW9yZSBiaXRzLg0KLSAqIA0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBGSUVMRF9OQU1FOiAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIHdyaXRlLiBUaGVzZSBzdHJpbmdzDQotICogCQkJCWFyZSBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogUkVUVVJOOgkJVGhpcyBmdW5jdGlvbi1saWtlIG1hY3JvIHJldHVybnMgYSB1aW50MzJfdCB2YWx1ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9nZXRfMzJiaXRfcmVnX2ZpZWxkKEJBU0VfQUREUiwgRklFTERfTkFNRSkgXA0KLSAgICAgICAgICAgIChIV19nZXRfMzJiaXRfcmVnX2ZpZWxkKFwNCi0gICAgICAgICAgICAgICAgKEJBU0VfQUREUikgKyBGSUVMRF9PRkZTRVQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9TSElGVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX01BU0soRklFTERfTkFNRSkpKQ0KLSAgDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX3NldF8xNmJpdF9yZWcoKSBhbGxvd3Mgd3JpdGluZyBhIDE2IGJpdHMgd2lkZSByZWdpc3Rlci4NCi0gKg0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBSRUdfTkFNRTogICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIHRvIHdyaXRlLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogVkFMVUU6ICAgICAgIEEgdmFyaWFibGUgb2YgdHlwZSB1aW50X2Zhc3QxNl90IGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIHdyaXRlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX3NldF8xNmJpdF9yZWcoQkFTRV9BRERSLCBSRUdfTkFNRSwgVkFMVUUpIFwNCi0gICAgICAgICAgICAoSFdfc2V0XzE2Yml0X3JlZyggKChCQVNFX0FERFIpICsgKFJFR19OQU1FIyNfUkVHX09GRlNFVCkpLCAoVkFMVUUpICkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX2dldF8xNmJpdF9yZWcoKSBpcyB1c2VkIHRvIHJlYWQgdGhlIHZhbHVlICBvZiBhIDE2IGJpdHMgd2lkZQ0KLSAqIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBSRUdfTkFNRTogICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIHRvIHJlYWQuIFRoZXNlIHN0cmluZ3MgYXJlDQotICogICAgICAgICAgICAgIHNwZWNpZmllZCBpbiBhIGhlYWRlciBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVyaXBoZXJhbC4NCi0gKiBSRVRVUk46CQlUaGlzIGZ1bmN0aW9uLWxpa2UgbWFjcm8gcmV0dXJucyBhIHVpbnQxNl90IHZhbHVlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX2dldF8xNmJpdF9yZWcoQkFTRV9BRERSLCBSRUdfTkFNRSkgXA0KLSAgICAgICAgICAgIChIV19nZXRfMTZiaXRfcmVnKCAoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpICkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX3NldF8xNmJpdF9yZWdfZmllbGQoKSBpcyB1c2VkIHRvIHdyaXRlIGEgZmllbGQgd2l0aGluIGENCi0gKiAxNiBiaXRzIHdpZGUgcmVnaXN0ZXIuIFRoZSBmaWVsZCB3cml0dGVuIGNhbiBiZSBvbmUgb3IgbW9yZSBiaXRzLg0KLSAqIA0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBGSUVMRF9OQU1FOiAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIHdyaXRlLiBUaGVzZSBzdHJpbmdzDQotICogCQkJCWFyZSBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogVkFMVUU6ICAgICAgIEEgdmFyaWFibGUgb2YgdHlwZSB1aW50MTZfdCBjb250YWluaW5nIHRoZSBmaWVsZCB2YWx1ZSB0byB3cml0ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9zZXRfMTZiaXRfcmVnX2ZpZWxkKEJBU0VfQUREUiwgRklFTERfTkFNRSwgVkFMVUUpIFwNCi0gICAgICAgICAgICAoSFdfc2V0XzE2Yml0X3JlZ19maWVsZChcDQotICAgICAgICAgICAgICAgIChCQVNFX0FERFIpICsgRklFTERfT0ZGU0VUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfU0hJRlQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9NQVNLKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgKFZBTFVFKSkpICANCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfZ2V0XzE2Yml0X3JlZ19maWVsZCgpIGlzIHVzZWQgdG8gcmVhZCBhIHJlZ2lzdGVyIGZpZWxkIGZyb20NCi0gKiB3aXRoaW4gYSA4IGJpdCB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuIFRoZSBmaWVsZCBjYW4gYmUgb25lIG9yIG1vcmUgYml0cy4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogRklFTERfTkFNRTogIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciBmaWVsZCB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncw0KLSAqIAkJCQlhcmUgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFJFVFVSTjoJCVRoaXMgZnVuY3Rpb24tbGlrZSBtYWNybyByZXR1cm5zIGEgdWludDE2X3QgdmFsdWUuDQotICovDQotI2RlZmluZSBIQUxfZ2V0XzE2Yml0X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxEX05BTUUpIFwNCi0gICAgICAgICAgICAoSFdfZ2V0XzE2Yml0X3JlZ19maWVsZChcDQotICAgICAgICAgICAgICAgIChCQVNFX0FERFIpICsgRklFTERfT0ZGU0VUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfU0hJRlQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9NQVNLKEZJRUxEX05BTUUpKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfc2V0XzhiaXRfcmVnKCkgYWxsb3dzIHdyaXRpbmcgYSA4IGJpdHMgd2lkZSByZWdpc3Rlci4NCi0gKg0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBSRUdfTkFNRTogICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIHRvIHdyaXRlLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogVkFMVUU6ICAgICAgIEEgdmFyaWFibGUgb2YgdHlwZSB1aW50X2Zhc3Q4X3QgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gd3JpdGUuDQotICovDQotI2RlZmluZSBIQUxfc2V0XzhiaXRfcmVnKEJBU0VfQUREUiwgUkVHX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgIChIV19zZXRfOGJpdF9yZWcoICgoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpKSwgKFZBTFVFKSApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9nZXRfOGJpdF9yZWcoKSBpcyB1c2VkIHRvIHJlYWQgdGhlIHZhbHVlIG9mIGEgOCBiaXRzIHdpZGUNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogUkVHX05BTUU6ICAgIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciB0byByZWFkLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogUkVUVVJOOgkJVGhpcyBmdW5jdGlvbi1saWtlIG1hY3JvIHJldHVybnMgYSB1aW50OF90IHZhbHVlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX2dldF84Yml0X3JlZyhCQVNFX0FERFIsIFJFR19OQU1FKSBcDQotICAgICAgICAgIChIV19nZXRfOGJpdF9yZWcoIChCQVNFX0FERFIpICsgKFJFR19OQU1FIyNfUkVHX09GRlNFVCkgKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqLw0KLSNkZWZpbmUgSEFMX3NldF84Yml0X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxEX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgICAgKEhXX3NldF84Yml0X3JlZ19maWVsZChcDQotICAgICAgICAgICAgICAgIChCQVNFX0FERFIpICsgRklFTERfT0ZGU0VUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfU0hJRlQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9NQVNLKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgKFZBTFVFKSkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX2dldF84Yml0X3JlZ19maWVsZCgpIGlzIHVzZWQgdG8gcmVhZCBhIHJlZ2lzdGVyIGZpZWxkIGZyb20NCi0gKiB3aXRoaW4gYSA4IGJpdCB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuIFRoZSBmaWVsZCBjYW4gYmUgb25lIG9yIG1vcmUgYml0cy4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogRklFTERfTkFNRTogIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciBmaWVsZCB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncw0KLSAqIAkJCQlhcmUgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFJFVFVSTjoJCVRoaXMgZnVuY3Rpb24tbGlrZSBtYWNybyByZXR1cm5zIGEgdWludDhfdCB2YWx1ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9nZXRfOGJpdF9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRF9OQU1FKSBcDQotICAgICAgICAgICAgKEhXX2dldF84Yml0X3JlZ19maWVsZChcDQotICAgICAgICAgICAgICAgIChCQVNFX0FERFIpICsgRklFTERfT0ZGU0VUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfU0hJRlQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9NQVNLKEZJRUxEX05BTUUpKSkNCi0gIA0KLSNlbmRpZiAvKkhBTF9IXyovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvaGFsX2Fzc2VydC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvaGFsX2Fzc2VydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY5ZGM5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbF9hc3NlcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA4LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1Mjc0ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjIgMTM6MTg6NDQgKzAwMDAgKEZyaSwgMjIgTWFyIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIEhBTF9BU1NFUlRfSEVBREVSDQotI2RlZmluZSBIQUxfQVNTRVJUX0hFQURFUg0KLQ0KLSNpbmNsdWRlICIuLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotDQotI2lmIGRlZmluZWQoTkRFQlVHKQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSEFMX0FTU0VSVCgpIGlzIGRlZmluZWQgb3V0IHdoZW4gdGhlIE5ERUJVRyBzeW1ib2wgaXMgdXNlZC4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgSEFMX0FTU0VSVChDSEVDSykNCi0NCi0jZWxzZQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogRGVmYXVsdCBiZWhhdmlvdXIgZm9yIEhBTF9BU1NFUlQoKSBtYWNybzoNCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFVzaW5nIHRoZSBIQUxfQVNTRVJUKCkgbWFjcm8gaXMgdGhlIHNhbWUgYXMgZGlyZWN0bHkgdXNpbmcgdGhlIFNtYXJ0RnVzaW9uMg0KLSAqIENNU0lTIEFTU0VSVCgpIG1hY3JvLiBUaGUgYmVoYXZpb3VyIGlzIHRvb2xjaGFpbiBzcGVjaWZpYyBhbmQgcHJvamVjdA0KLSAqIHNldHRpbmcgc3BlY2lmaWMuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEhBTF9BU1NFUlQoQ0hFQ0spICAgICBBU1NFUlQoQ0hFQ0spOw0KLQ0KLSNlbmRpZiAgLyogTkRFQlVHICovDQotDQotI2VuZGlmICAvKiBIQUxfQVNTRVJUX0hFQURFUiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2h3X3JlZ19hY2Nlc3MuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2h3X3JlZ19hY2Nlc3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcxOWZmZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9od19yZWdfYWNjZXNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIEhhcmR3YXJlIHJlZ2lzdGVycyBhY2Nlc3MgZnVuY3Rpb25zLg0KLSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSBmdW5jdGlvbiBpcyBwbGF0Zm9ybSBhbmQgdG9vbGNoYWluIHNwZWNpZmljLg0KLSAqIFRoZSBmdW5jdGlvbnMgZGVjbGFyZWQgaGVyZSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYXNzZW1ibGVyIGFzIHBhcnQgb2YgdGhlIA0KLSAqIHByb2Nlc3Nvci90b29sY2hhaW4gc3BlY2lmaWMgSEFMLg0KLSAqIA0KLSAqIFNWTiAkUmV2aXNpb246IDUyNTggJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjo0MTowMiArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgSFdfUkVHX0FDQ0VTUw0KLSNkZWZpbmUgSFdfUkVHX0FDQ0VTUw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfc2V0XzMyYml0X3JlZyBpcyB1c2VkIHRvIHdyaXRlIHRoZSBjb250ZW50IG9mIGEgMzIgYml0cyB3aWRlIHBlcmlwaGVyYWwNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICB3cml0ZS4NCi0gKiBAcGFyYW0gdmFsdWUgICAgIFZhbHVlIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi12b2lkDQotSFdfc2V0XzMyYml0X3JlZw0KLSgNCi0JYWRkcl90IHJlZ19hZGRyLA0KLQl1aW50MzJfdCB2YWx1ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19nZXRfMzJiaXRfcmVnIGlzIHVzZWQgdG8gcmVhZCB0aGUgY29udGVudCBvZiBhIDMyIGJpdHMgd2lkZSBwZXJpcGhlcmFsDQotICogcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgcmVhZC4NCi0gKiBAcmV0dXJuICAgICAgICAgIDMyIGJpdHMgdmFsdWUgcmVhZCBmcm9tIHRoZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqLw0KLXVpbnQzMl90DQotSFdfZ2V0XzMyYml0X3JlZw0KLSgNCi0JYWRkcl90IHJlZ19hZGRyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX3NldF8zMmJpdF9yZWdfZmllbGQgaXMgdXNlZCB0byBzZXQgdGhlIGNvbnRlbnQgb2YgYSBmaWVsZCBpbiBhIDMyIGJpdHMgDQotICogd2lkZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIGJlIHdyaXR0ZW4uDQotICogQHBhcmFtIHNoaWZ0ICAgICBCaXQgb2Zmc2V0IG9mIHRoZSByZWdpc3RlciBmaWVsZCB0byBiZSByZWFkIHdpdGhpbiB0aGUgDQotICogICAgICAgICAgICAgICAgICByZWdpc3Rlci4NCi0gKiBAcGFyYW0gbWFzayAgICAgIEJpdCBtYXNrIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJhdyByZWdpc3RlciB2YWx1ZSB0byBmaWx0ZXINCi0gKiAgICAgICAgICAgICAgICAgIG91dCB0aGUgb3RoZXIgcmVnaXN0ZXIgZmllbGRzIHZhbHVlcy4NCi0gKiBAcGFyYW0gdmFsdWUgICAgIFZhbHVlIHRvIGJlIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCBmaWVsZC4NCi0gKi8NCi12b2lkDQotSFdfc2V0XzMyYml0X3JlZ19maWVsZA0KLSgNCi0gICAgYWRkcl90IHJlZ19hZGRyLA0KLSAgICBpbnRfZmFzdDhfdCBzaGlmdCwNCi0gICAgdWludDMyX3QgbWFzaywNCi0gICAgdWludDMyX3QgdmFsdWUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfZ2V0XzMyYml0X3JlZ19maWVsZCBpcyB1c2VkIHRvIHJlYWQgdGhlIGNvbnRlbnQgb2YgYSBmaWVsZCBvdXQgb2YgYSANCi0gKiAzMiBiaXRzIHdpZGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICByZWFkLg0KLSAqIEBwYXJhbSBzaGlmdCAgICAgQml0IG9mZnNldCBvZiB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gYmUgd3JpdHRlbiB3aXRoaW4gdGhlIA0KLSAqICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQotICogQHBhcmFtIG1hc2sgICAgICBCaXQgbWFzayB0byBiZSBhcHBsaWVkIHRvIHRoZSByYXcgcmVnaXN0ZXIgdmFsdWUgdG8gZmlsdGVyDQotICogICAgICAgICAgICAgICAgICBvdXQgdGhlIG90aGVyIHJlZ2lzdGVyIGZpZWxkcyB2YWx1ZXMuDQotICoNCi0gKiBAcmV0dXJuICAgICAgICAgIDMyIGJpdHMgdmFsdWUgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIgZmllbGQgdmFsdWUgc3BlY2lmaWVkDQotICogICAgICAgICAgICAgICAgICBhcyBwYXJhbWV0ZXIuDQotICovDQotdWludDMyX3QgDQotSFdfZ2V0XzMyYml0X3JlZ19maWVsZA0KLSgNCi0gICAgYWRkcl90IHJlZ19hZGRyLA0KLSAgICBpbnRfZmFzdDhfdCBzaGlmdCwNCi0gICAgdWludDMyX3QgbWFzaw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19zZXRfMTZiaXRfcmVnIGlzIHVzZWQgdG8gd3JpdGUgdGhlIGNvbnRlbnQgb2YgYSAxNiBiaXRzIHdpZGUgcGVyaXBoZXJhbA0KLSAqIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIHdyaXRlLg0KLSAqIEBwYXJhbSB2YWx1ZSAgICAgVmFsdWUgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqLw0KLXZvaWQNCi1IV19zZXRfMTZiaXRfcmVnDQotKA0KLQlhZGRyX3QgcmVnX2FkZHIsDQotCXVpbnRfZmFzdDE2X3QgdmFsdWUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfZ2V0XzE2Yml0X3JlZyBpcyB1c2VkIHRvIHJlYWQgdGhlIGNvbnRlbnQgb2YgYSAxNiBiaXRzIHdpZGUgcGVyaXBoZXJhbA0KLSAqIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIHJlYWQuDQotICogQHJldHVybiAgICAgICAgICAxNiBiaXRzIHZhbHVlIHJlYWQgZnJvbSB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi11aW50MTZfdA0KLUhXX2dldF8xNmJpdF9yZWcNCi0oDQotCWFkZHJfdCByZWdfYWRkcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19zZXRfMTZiaXRfcmVnX2ZpZWxkIGlzIHVzZWQgdG8gc2V0IHRoZSBjb250ZW50IG9mIGEgZmllbGQgaW4gYSAxNiBiaXRzIA0KLSAqIHdpZGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICBiZSB3cml0dGVuLg0KLSAqIEBwYXJhbSBzaGlmdCAgICAgQml0IG9mZnNldCBvZiB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gYmUgcmVhZCB3aXRoaW4gdGhlIA0KLSAqICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQotICogQHBhcmFtIG1hc2sgICAgICBCaXQgbWFzayB0byBiZSBhcHBsaWVkIHRvIHRoZSByYXcgcmVnaXN0ZXIgdmFsdWUgdG8gZmlsdGVyDQotICogICAgICAgICAgICAgICAgICBvdXQgdGhlIG90aGVyIHJlZ2lzdGVyIGZpZWxkcyB2YWx1ZXMuDQotICogQHBhcmFtIHZhbHVlICAgICBWYWx1ZSB0byBiZSB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgZmllbGQuDQotICovDQotdm9pZCBIV19zZXRfMTZiaXRfcmVnX2ZpZWxkDQotKA0KLSAgICBhZGRyX3QgcmVnX2FkZHIsDQotICAgIGludF9mYXN0OF90IHNoaWZ0LA0KLSAgICB1aW50X2Zhc3QxNl90IG1hc2ssDQotICAgIHVpbnRfZmFzdDE2X3QgdmFsdWUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfZ2V0XzE2Yml0X3JlZ19maWVsZCBpcyB1c2VkIHRvIHJlYWQgdGhlIGNvbnRlbnQgb2YgYSBmaWVsZCBmcm9tIGEgDQotICogMTYgYml0cyB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgcmVhZC4NCi0gKiBAcGFyYW0gc2hpZnQgICAgIEJpdCBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIGJlIHdyaXR0ZW4gd2l0aGluIHRoZSANCi0gKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KLSAqIEBwYXJhbSBtYXNrICAgICAgQml0IG1hc2sgdG8gYmUgYXBwbGllZCB0byB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVlIHRvIGZpbHRlcg0KLSAqICAgICAgICAgICAgICAgICAgb3V0IHRoZSBvdGhlciByZWdpc3RlciBmaWVsZHMgdmFsdWVzLg0KLSAqDQotICogQHJldHVybiAgICAgICAgICAxNiBiaXRzIHZhbHVlIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyIGZpZWxkIHZhbHVlIHNwZWNpZmllZA0KLSAqICAgICAgICAgICAgICAgICAgYXMgcGFyYW1ldGVyLg0KLSAqLw0KLXVpbnQxNl90IEhXX2dldF8xNmJpdF9yZWdfZmllbGQNCi0oDQotICAgIGFkZHJfdCByZWdfYWRkciwNCi0gICAgaW50X2Zhc3Q4X3Qgc2hpZnQsDQotICAgIHVpbnRfZmFzdDE2X3QgbWFzaw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19zZXRfOGJpdF9yZWcgaXMgdXNlZCB0byB3cml0ZSB0aGUgY29udGVudCBvZiBhIDggYml0cyB3aWRlIHBlcmlwaGVyYWwNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICB3cml0ZS4NCi0gKiBAcGFyYW0gdmFsdWUgICAgIFZhbHVlIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi12b2lkDQotSFdfc2V0XzhiaXRfcmVnDQotKA0KLQlhZGRyX3QgcmVnX2FkZHIsDQotCXVpbnRfZmFzdDhfdCB2YWx1ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19nZXRfOGJpdF9yZWcgaXMgdXNlZCB0byByZWFkIHRoZSBjb250ZW50IG9mIGEgOCBiaXRzIHdpZGUgcGVyaXBoZXJhbA0KLSAqIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIHJlYWQuDQotICogQHJldHVybiAgICAgICAgICA4IGJpdHMgdmFsdWUgcmVhZCBmcm9tIHRoZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqLw0KLXVpbnQ4X3QNCi1IV19nZXRfOGJpdF9yZWcNCi0oDQotICAgIGFkZHJfdCByZWdfYWRkcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19zZXRfOGJpdF9yZWdfZmllbGQgaXMgdXNlZCB0byBzZXQgdGhlIGNvbnRlbnQgb2YgYSBmaWVsZCBpbiBhIDggYml0cyANCi0gKiB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgYmUgd3JpdHRlbi4NCi0gKiBAcGFyYW0gc2hpZnQgICAgIEJpdCBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIGJlIHJlYWQgd2l0aGluIHRoZSANCi0gKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KLSAqIEBwYXJhbSBtYXNrICAgICAgQml0IG1hc2sgdG8gYmUgYXBwbGllZCB0byB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVlIHRvIGZpbHRlcg0KLSAqICAgICAgICAgICAgICAgICAgb3V0IHRoZSBvdGhlciByZWdpc3RlciBmaWVsZHMgdmFsdWVzLg0KLSAqIEBwYXJhbSB2YWx1ZSAgICAgVmFsdWUgdG8gYmUgd3JpdHRlbiBpbiB0aGUgc3BlY2lmaWVkIGZpZWxkLg0KLSAqLw0KLXZvaWQgSFdfc2V0XzhiaXRfcmVnX2ZpZWxkDQotKA0KLSAgICBhZGRyX3QgcmVnX2FkZHIsDQotICAgIGludF9mYXN0OF90IHNoaWZ0LA0KLSAgICB1aW50X2Zhc3Q4X3QgbWFzaywNCi0gICAgdWludF9mYXN0OF90IHZhbHVlDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX2dldF84Yml0X3JlZ19maWVsZCBpcyB1c2VkIHRvIHJlYWQgdGhlIGNvbnRlbnQgb2YgYSBmaWVsZCBmcm9tIGEgDQotICogOCBiaXRzIHdpZGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICByZWFkLg0KLSAqIEBwYXJhbSBzaGlmdCAgICAgQml0IG9mZnNldCBvZiB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gYmUgd3JpdHRlbiB3aXRoaW4gdGhlIA0KLSAqICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQotICogQHBhcmFtIG1hc2sgICAgICBCaXQgbWFzayB0byBiZSBhcHBsaWVkIHRvIHRoZSByYXcgcmVnaXN0ZXIgdmFsdWUgdG8gZmlsdGVyDQotICogICAgICAgICAgICAgICAgICBvdXQgdGhlIG90aGVyIHJlZ2lzdGVyIGZpZWxkcyB2YWx1ZXMuDQotICoNCi0gKiBAcmV0dXJuICAgICAgICAgIDE2IGJpdHMgdmFsdWUgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIgZmllbGQgdmFsdWUgc3BlY2lmaWVkDQotICogICAgICAgICAgICAgICAgICBhcyBwYXJhbWV0ZXIuDQotICovDQotdWludDhfdCBIV19nZXRfOGJpdF9yZWdfZmllbGQNCi0oDQotICAgIGFkZHJfdCByZWdfYWRkciwNCi0gICAgaW50X2Zhc3Q4X3Qgc2hpZnQsDQotICAgIHVpbnRfZmFzdDhfdCBtYXNrDQotKTsNCi0NCi0jZW5kaWYgLyogSFdfUkVHX0FDQ0VTUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUmVhZE1lLnR4dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUmVhZE1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTYxMDAxCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SZWFkTWUudHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyBkZW1vIHdhcyByZW1vdmVkIGluIEZyZWVSVE9TIFYxMC4wLjAgYXMgRnJlZVJUT1MrRkFUIFNMIHdhcyBub3QgZGlzdHJpYnV0ZWQNCitpbiB0aGF0IHJlbGVhc2UuICBUaGUgZnVsbCBGcmVlUlRPUytGQVQgcHJvZHVjdCAoYXMgb3Bwb3NlZCB0byB0aGUgJ1NMJyBTdXBlcg0KK0xlYW4gcHJvZHVjdCkgaXMgc3RpbGwgYXZhaWxhYmxlLiAgUHJldmlvdXMgdmVyc2lvbnMgb2YgRnJlZVJUT1MgY2FuIGJlDQorZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZnJlZXJ0b3MvZmlsZXMvRnJlZVJUT1MvDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vLzdzZWcuYwppbmRleCA4NDYyM2Q4Li5jMzg0MWU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vLzdzZWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vLzdzZWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vN3NlZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmgKaW5kZXggZjEzZGM2ZC4uMjM0NTViOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU0VWRU5TRUdfSA0KICNkZWZpbmUgU0VWRU5TRUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAxMDBkNzg1Li5lYjZjYzEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9QYXJUZXN0LmMKaW5kZXggYjNmNWNlNi4uZDY2OTc1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5jCmluZGV4IDA4ODc0N2YuLjM4ZDMzMGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9SZWdUZXN0LmgKaW5kZXggMDlmMjAyMy4uZjU4OGYzNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9SZWdUZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9SZWdUZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUkVHX1RFU1RfSA0KICNkZWZpbmUgUkVHX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vZGVtb0dwaW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vZGVtb0dwaW8uaAppbmRleCAzNmNhNmRjLi5iM2U1NWY5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL2RlbW9HcGlvLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9kZW1vR3Bpby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBMYXlvdXQgb2YgcGlucyBjb25uZWN0ZWQgdG8gR1BJTyBvbiBYaWxpbnggRlBHQSBldmFsdWF0aW9uIGJvYXJkIA0KICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL21haW4uYwppbmRleCBkMmY1M2U5Li5mMWMyN2E2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9zZXJpYWwuYwppbmRleCBjNTliNTVjLi4wYTQ4MTU1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICBCYXNpYyBpbnRlcnJ1cHQgZHJpdmVuIHNlcmlhbCBwb3J0IGRyaXZlciBmb3IgdWFydDEuDQogKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GRUMuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZFQy5jCmluZGV4IDM1YzZhOTMuLjFjMTg4MjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZFQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZFQy5jCkBAIC0xLDY2ICsxLDMgQEAKLS8qDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUy5vcmcgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUy5vcmcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCANCi0gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQNCi0gICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgbW9kaWZpZWQgYnkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgRnJlZVJUT1Mub3JnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgIGJ1dCBXSVRIT1VUDQotICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciANCi0gICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciANCi0gICAgbW9yZSBkZXRhaWxzLg0KLQ0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyANCi0gICAgd2l0aCBGcmVlUlRPUy5vcmc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgDQotICAgIFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EuDQotDQotICAgIEEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZSBhIA0KLSAgICBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mub3JnIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotICAgIHRoZSBzb3VyY2UgY29kZSBmb3IgYW55IHByb3ByaWV0YXJ5IGNvbXBvbmVudHMuICBTZWUgdGhlIGxpY2Vuc2luZyBzZWN0aW9uDQotICAgIG9mIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIGZvciBmdWxsIGRldGFpbHMuDQotDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKiBHZXQgdGhlIEZyZWVSVE9TIGVCb29rISAgU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAqDQotICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqIFRoaXMgaXMgYSBjb25jaXNlLCBzdGVwIGJ5IHN0ZXAsICdoYW5kcyBvbicgZ3VpZGUgdGhhdCBkZXNjcmliZXMgYm90aCAgICoNCi0gICAgKiBnZW5lcmFsIG11bHRpdGFza2luZyBjb25jZXB0cyBhbmQgRnJlZVJUT1Mgc3BlY2lmaWNzLiBJdCBwcmVzZW50cyBhbmQgICAqDQotICAgICogZXhwbGFpbnMgbnVtZXJvdXMgZXhhbXBsZXMgdGhhdCBhcmUgd3JpdHRlbiB1c2luZyB0aGUgRnJlZVJUT1MgQVBJLiAgICAgKg0KLSAgICAqIEZ1bGwgc291cmNlIGNvZGUgZm9yIGFsbCB0aGUgZXhhbXBsZXMgaXMgcHJvdmlkZWQgaW4gYW4gYWNjb21wYW55aW5nICAgICoNCi0gICAgKiAuemlwIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgIFBsZWFzZSBlbnN1cmUgdG8gcmVhZCB0aGUgY29uZmlndXJhdGlvbiBhbmQgcmVsZXZhbnQgcG9ydCBzZWN0aW9ucyBvZiB0aGUNCi0gICAgb25saW5lIGRvY3VtZW50YXRpb24uDQotICAgIA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIHRyYWluaW5nLCBsYXRlc3QgaW5mb3JtYXRpb24sIA0KLSAgICBsaWNlbnNlIGFuZCBjb250YWN0IGRldGFpbHMuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLg0KLQ0KLSAgICBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIA0KLSAgICB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uLCBhbmQgbWlkZGxld2FyZSwgdW5kZXIgDQotICAgIHRoZSBPcGVuUlRPUyBicmFuZDogaHR0cDovL3d3dy5PcGVuUlRPUy5jb20uICBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28NCi0gICAgcHJvdmlkZSBhIHNhZmV0eSBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gdW5kZXIgDQotICAgIHRoZSBTYWZlUlRPUyBicmFuZDogaHR0cDovL3d3dy5TYWZlUlRPUy5jb20uDQotKi8NCi0NCi0NCiAvKiBLZXJuZWwgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInNlbXBoci5oIg0KQEAgLTEwNywxNSArNDQsMTUgQEAKIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KLS8qIA0KLSAqIFJldHVybiBhbiB1bnVzZWQgYnVmZmVyIHRvIHRoZSBwb29sIG9mIGZyZWUgYnVmZmVycy4gDQorLyoNCisgKiBSZXR1cm4gYW4gdW51c2VkIGJ1ZmZlciB0byB0aGUgcG9vbCBvZiBmcmVlIGJ1ZmZlcnMuDQogICovDQogc3RhdGljIHZvaWQgcHJ2UmV0dXJuQnVmZmVyKCB1bnNpZ25lZCBjaGFyICpwdWNCdWZmZXIgKTsNCiANCiAvKg0KICAqIEZpbmQgYW5kIHJldHVybiB0aGUgbmV4dCBidWZmZXIgdGhhdCBpcyBub3QgaW4gdXNlIGJ5IGFueXRoaW5nIGVsc2UuDQogICovDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgKnBydkdldEZyZWVCdWZmZXIoIHZvaWQgKTsgDQorc3RhdGljIHVuc2lnbmVkIGNoYXIgKnBydkdldEZyZWVCdWZmZXIoIHZvaWQgKTsNCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiAvKiBUaGUgc2VtYXBob3JlIHVzZWQgdG8gd2FrZSB0aGUgdUlQIHRhc2sgd2hlbiBkYXRhIGFycml2ZXMuICovDQpAQCAtMTI2LDcgKzYzLDcgQEAKIHRoZSB1SVAgYnVmZmVyLiAqLw0KIHVuc2lnbmVkIGNoYXIgKnVpcF9idWY7DQogDQotLyogVGhlIERNQSBkZXNjcmlwdG9ycy4gIFRoZXNlIGFyZSBjaGFyIGFycmF5cyB0byBhbGxvdyB1cyB0byBhbGlnbiB0aGVtIA0KKy8qIFRoZSBETUEgZGVzY3JpcHRvcnMuICBUaGVzZSBhcmUgY2hhciBhcnJheXMgdG8gYWxsb3cgdXMgdG8gYWxpZ24gdGhlbQ0KIGNvcnJlY3RseS4gKi8NCiBzdGF0aWMgdW5zaWduZWQgY2hhciB4RkVDVHhEZXNjcmlwdG9yc191bmFsaWduZWRbICggZmVjTlVNX1RYX0RFU0NSSVBUT1JTICogc2l6ZW9mKCBGRUNCRCApICkgKyAxNiBdOw0KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHhGRUNSeERlc2NyaXB0b3JzX3VuYWxpZ25lZFsgKCBjb25maWdOVU1fRkVDX1JYX0RFU0NSSVBUT1JTICogc2l6ZW9mKCBGRUNCRCApICkgKyAxNiBdOw0KQEAgLTEzOSwxMiArNzYsMTIgQEAKIC8qIEluZGV4IHRvIHRoZSBuZXh0IGRlc2NyaXB0b3IgdG8gYmUgaW5zcGVjdGVkIGZvciByZWNlaXZlZCBkYXRhLiAqLw0KIHN0YXRpYyB1bnNpZ25lZCBsb25nIHVsTmV4dFJ4RGVzY3JpcHRvciA9IDA7DQogDQotLyogQ29udGFpbnMgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgZWFjaCBSeCBidWZmZXIsIGFmdGVyIGl0IGhhcyBiZWVuIGNvcnJlY3RseSANCisvKiBDb250YWlucyB0aGUgc3RhcnQgYWRkcmVzcyBvZiBlYWNoIFJ4IGJ1ZmZlciwgYWZ0ZXIgaXQgaGFzIGJlZW4gY29ycmVjdGx5DQogYWxpZ25lZC4gKi8NCiBzdGF0aWMgdW5zaWduZWQgY2hhciAqcHVjQWxpZ25lZEJ1ZmZlclN0YXJ0QWRkcmVzc2VzWyBmZWNOVU1fQlVGRkVSUyBdID0geyAwIH07DQogDQogLyogRWFjaCB1Y0J1ZmZlckluVXNlIGluZGV4IGNvcnJlc3BvbmRzIHRvIGEgcG9zaXRpb24gaW4gdGhlIHNhbWUgaW5kZXggaW4gdGhlDQotcHVjQWxpZ25lZEJ1ZmZlclN0YXJ0QWRkcmVzc2VzIGFycmF5LiAgSWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgMSB0aGVuIHRoZSANCitwdWNBbGlnbmVkQnVmZmVyU3RhcnRBZGRyZXNzZXMgYXJyYXkuICBJZiB0aGUgaW5kZXggY29udGFpbnMgYSAxIHRoZW4gdGhlDQogYnVmZmVyIHdpdGhpbiBwdWNBbGlnbmVkQnVmZmVyU3RhcnRBZGRyZXNzZXMgaXMgaW4gdXNlLCBpZiBpdCBjb250YWlucyBhIDAgdGhlbg0KIHRoZSBidWZmZXIgaXMgZnJlZS4gKi8NCiBzdGF0aWMgdW5zaWduZWQgY2hhciB1Y0J1ZmZlckluVXNlWyBmZWNOVU1fQlVGRkVSUyBdID0geyAwIH07DQpAQCAtMTY2LDggKzEwMyw4IEBACiAgKiAgMSBvbiBzdWNjZXNzLg0KICAqDQogICogUGxlYXNlIHJlZmVyIHRvIHlvdXIgUEhZIG1hbnVhbCBmb3IgcmVnaXN0ZXJzIGFuZCB0aGVpciBtZWFuaW5ncy4NCi0gKiBtaWlfd3JpdGUoKSBwb2xscyBmb3IgdGhlIEZFQydzIE1JSSBpbnRlcnJ1cHQgZXZlbnQgYW5kIGNsZWFycyBpdC4gDQotICogSWYgYWZ0ZXIgYSBzdWl0YWJsZSBhbW91bnQgb2YgdGltZSB0aGUgZXZlbnQgaXNuJ3QgdHJpZ2dlcmVkLCBhIA0KKyAqIG1paV93cml0ZSgpIHBvbGxzIGZvciB0aGUgRkVDJ3MgTUlJIGludGVycnVwdCBldmVudCBhbmQgY2xlYXJzIGl0Lg0KKyAqIElmIGFmdGVyIGEgc3VpdGFibGUgYW1vdW50IG9mIHRpbWUgdGhlIGV2ZW50IGlzbid0IHRyaWdnZXJlZCwgYQ0KICAqIHZhbHVlIG9mIDAgaXMgcmV0dXJuZWQuDQogICovDQogc3RhdGljIGludCBmZWNfbWlpX3dyaXRlKCBpbnQgcGh5X2FkZHIsIGludCByZWdfYWRkciwgaW50IGRhdGEgKQ0KQEAgLTIyNCw4ICsxNjEsOCBAQAogICogIDEgb24gc3VjY2Vzcy4NCiAgKg0KICAqIFBsZWFzZSByZWZlciB0byB5b3VyIFBIWSBtYW51YWwgZm9yIHJlZ2lzdGVycyBhbmQgdGhlaXIgbWVhbmluZ3MuDQotICogbWlpX3JlYWQoKSBwb2xscyBmb3IgdGhlIEZFQydzIE1JSSBpbnRlcnJ1cHQgZXZlbnQgYW5kIGNsZWFycyBpdC4gDQotICogSWYgYWZ0ZXIgYSBzdWl0YWJsZSBhbW91bnQgb2YgdGltZSB0aGUgZXZlbnQgaXNuJ3QgdHJpZ2dlcmVkLCBhIA0KKyAqIG1paV9yZWFkKCkgcG9sbHMgZm9yIHRoZSBGRUMncyBNSUkgaW50ZXJydXB0IGV2ZW50IGFuZCBjbGVhcnMgaXQuDQorICogSWYgYWZ0ZXIgYSBzdWl0YWJsZSBhbW91bnQgb2YgdGltZSB0aGUgZXZlbnQgaXNuJ3QgdHJpZ2dlcmVkLCBhDQogICogdmFsdWUgb2YgMCBpcyByZXR1cm5lZC4NCiAgKi8NCiBzdGF0aWMgaW50IGZlY19taWlfcmVhZCggaW50IHBoeV9hZGRyLCBpbnQgcmVnX2FkZHIsIHVuc2lnbmVkIHNob3J0KiBkYXRhICkNCkBAIC0zNTQsMTYgKzI5MSwxNiBAQAogCXsNCiAJCXBjQnVmUG9pbnRlcisrOw0KIAl9DQotCQ0KLQlweEZFQ1R4RGVzY3JpcHRvciA9ICggRkVDQkQgKiApIHBjQnVmUG9pbnRlcjsJDQogDQotCS8qIExpa2V3aXNlIHRoZSBwb2ludGVyIHRvIHRoZSBSeCBkZXNjcmlwdG9yLiAqLwkNCisJcHhGRUNUeERlc2NyaXB0b3IgPSAoIEZFQ0JEICogKSBwY0J1ZlBvaW50ZXI7DQorDQorCS8qIExpa2V3aXNlIHRoZSBwb2ludGVyIHRvIHRoZSBSeCBkZXNjcmlwdG9yLiAqLw0KIAlwY0J1ZlBvaW50ZXIgPSAmKCB4RkVDUnhEZXNjcmlwdG9yc191bmFsaWduZWRbIDAgXSApOw0KIAl3aGlsZSggKCAoIHVuc2lnbmVkIGxvbmcgKSBwY0J1ZlBvaW50ZXIgJiAweDBmVUwgKSAhPSAwICkNCiAJew0KIAkJcGNCdWZQb2ludGVyKys7DQogCX0NCi0JDQorDQogCXhGRUNSeERlc2NyaXB0b3JzID0gKCBGRUNCRCAqICkgcGNCdWZQb2ludGVyOw0KIA0KIAkvKiBUaGVyZSBpcyBubyBUeCBidWZmZXIgYXMgdGhlIFJ4IGJ1ZmZlciBpcyByZXVzZWQuICovDQpAQCAtMzc2LDI4ICszMTMsMjggQEAKIAl7DQogCQlwY0J1ZlBvaW50ZXIrKzsNCiAJfQ0KLQkNCisNCiAJLyogVGhlbiBmaWxsIGluIHRoZSBSeCBkZXNjcmlwdG9ycy4gKi8NCiAJZm9yKCB1eCA9IDA7IHV4IDwgY29uZmlnTlVNX0ZFQ19SWF9ERVNDUklQVE9SUzsgdXgrKyApDQogCXsNCiAJICAgIHhGRUNSeERlc2NyaXB0b3JzWyB1eCBdLnN0YXR1cyA9IFJYX0JEX0U7DQogCSAgICB4RkVDUnhEZXNjcmlwdG9yc1sgdXggXS5sZW5ndGggPSBjb25maWdGRUNfQlVGRkVSX1NJWkU7DQogCSAgICB4RkVDUnhEZXNjcmlwdG9yc1sgdXggXS5kYXRhID0gcGNCdWZQb2ludGVyOw0KLQkJDQorDQogCQkvKiBOb3RlIHRoZSBzdGFydCBhZGRyZXNzIG9mIHRoZSBidWZmZXIgbm93IHRoYXQgaXQgaXMgY29ycmVjdGx5DQogCQlhbGlnbmVkLiAqLw0KIAkJcHVjQWxpZ25lZEJ1ZmZlclN0YXJ0QWRkcmVzc2VzWyB1eCBdID0gcGNCdWZQb2ludGVyOw0KLQkJDQorDQogCQkvKiBUaGUgYnVmZmVyIGlzIGluIHVzZSBieSB0aGUgZGVzY3JpcHRvci4gKi8NCiAJCXVjQnVmZmVySW5Vc2VbIHV4IF0gPSBwZFRSVUU7DQotCQkNCisNCiAJICAgIHBjQnVmUG9pbnRlciArPSBjb25maWdGRUNfQlVGRkVSX1NJWkU7DQogCX0NCi0JDQorDQogCS8qIE5vdGUgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIGxhc3QgYnVmZmVyIGFzIG9uZSBtb3JlIGJ1ZmZlciBpcw0KIAlhbGxvY2F0ZWQgdGhhbiB0aGVyZSBhcmUgUnggZGVzY3JpcHRvcnMuICovDQogCXB1Y0FsaWduZWRCdWZmZXJTdGFydEFkZHJlc3Nlc1sgdXggXSA9IHBjQnVmUG9pbnRlcjsNCi0JDQorDQogCS8qIFNldCB1aXBfYnVmIHRvIHBvaW50IHRvIHRoZSBsYXN0IGJ1ZmZlci4gKi8NCiAJdWlwX2J1ZiA9IHBjQnVmUG9pbnRlcjsNCiAJdWNCdWZmZXJJblVzZVsgdXggXSA9IHBkVFJVRTsNCkBAIC00MTQsNyArMzUxLDcgQEAKIHsNCiB1bnNpZ25lZCBzaG9ydCB1c0RhdGE7DQogc3RydWN0IHVpcF9ldGhfYWRkciB4QWRkcjsNCi1jb25zdCB1bnNpZ25lZCBjaGFyIHVjTUFDQWRkcmVzc1s2XSA9IA0KK2NvbnN0IHVuc2lnbmVkIGNoYXIgdWNNQUNBZGRyZXNzWzZdID0NCiB7DQogCWNvbmZpZ01BQ18wLCBjb25maWdNQUNfMSxjb25maWdNQUNfMixjb25maWdNQUNfMyxjb25maWdNQUNfNCxjb25maWdNQUNfNQ0KIH07DQpAQCAtNDIzLDE3ICszNjAsMTcgQEAKIA0KIAkvKiBDcmVhdGUgdGhlIHNlbWFwaG9yZSB1c2VkIHRvIHdha2UgdGhlIHVJUCB0YXNrIHdoZW4gZGF0YSBhcnJpdmVzLiAqLw0KIAl2U2VtYXBob3JlQ3JlYXRlQmluYXJ5KCB4RkVDU2VtYXBob3JlICk7DQotCQ0KKw0KIAkvKiBTZXQgdGhlIE1BQyBhZGRyZXNzIHdpdGhpbiB0aGUgc3RhY2suICovDQogCWZvciggdXNEYXRhID0gMDsgdXNEYXRhIDwgNjsgdXNEYXRhKysgKQ0KIAl7DQogCQl4QWRkci5hZGRyWyB1c0RhdGEgXSA9IHVjTUFDQWRkcmVzc1sgdXNEYXRhIF07DQogCX0NCi0JdWlwX3NldGV0aGFkZHIoIHhBZGRyICk7CQ0KKwl1aXBfc2V0ZXRoYWRkciggeEFkZHIgKTsNCiANCiAJLyogU2V0IHRoZSBSZXNldCBiaXQgYW5kIGNsZWFyIHRoZSBFbmFibGUgYml0ICovDQogCUVDUl9SRVNFVCA9IDE7DQotCQ0KKw0KIAkvKiBFbmFibGUgdGhlIGNsb2NrLiAqLw0KIAlTQ0dDNCB8PSBTQ0dDNF9GRUNfTUFTSzsNCiANCkBAIC00NTYsMTYgKzM5MywxNiBAQAogICAgIFBUQVBGMiA9IDB4NTU7DQogICAgIFBUQlBGMSA9IDB4NTU7DQogICAgIFBUQlBGMiA9IDB4NTU7DQotICAgIA0KKw0KICAgICAvKiBTZXQgYWxsIHBpbnMgdG8gZnVsbCBkcml2ZSB3aXRoIG5vIGZpbHRlci4gKi8NCiAgICAgUFRBRFMgPSAweDA2Ow0KICAgICBQVEFJRkUgPSAweDA2Ow0KICAgICBQVEJEUyA9IDB4ZjQ7DQogICAgIFBUQklGRSA9IDB4ZjQ7DQogICAgIFBUQ0RTID0gMDsNCi0gICAgUFRDSUZFID0gMDsJCQkJDQorICAgIFBUQ0lGRSA9IDA7DQogDQotICAgIA0KKw0KIAkvKiBDYW4gd2UgdGFsayB0byB0aGUgUEhZPyAqLw0KIAlkbw0KIAl7DQpAQCAtNDg4LDcgKzQyNSw3IEBACiANCiAJLyogV2hlbiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEgbGluayAtIGZpbmQgb3V0IHdoYXQgaGFzIGJlZW4gbmVnb3RpYXRlZC4gKi8NCiAJdXNEYXRhID0gMDsNCi0JZmVjX21paV9yZWFkKCBjb25maWdQSFlfQUREUkVTUywgUEhZX1NUQVRVUywgJnVzRGF0YSApOwkNCisJZmVjX21paV9yZWFkKCBjb25maWdQSFlfQUREUkVTUywgUEhZX1NUQVRVUywgJnVzRGF0YSApOw0KIA0KIAkvKiBTZXR1cCBoYWxmIG9yIGZ1bGwgZHVwbGV4LiAqLw0KIAlpZiggdXNEYXRhICYgUEhZX0RVUExFWF9TVEFUVVMgKQ0KQEAgLTUwMSw3ICs0MzgsNyBAQAogCQlSQ1IgfD0gUkNSX0RSVDsNCiAJCVRDUiAmPSAodW5zaWduZWQgbG9uZyl+VENSX0ZERU47DQogCX0NCi0JDQorDQogCS8qIENsZWFyIHRoZSBJbmRpdmlkdWFsIGFuZCBHcm91cCBBZGRyZXNzIEhhc2ggcmVnaXN0ZXJzICovDQogCUlBTFIgPSAwOw0KIAlJQVVSID0gMDsNCkBAIC01NTUsNyArNDkyLDcgQEAKIAkJLyogdWlwX2J1ZiBpcyBhYm91dCB0byBiZSBzZXQgdG8gYSBuZXcgYnVmZmVyLCBzbyByZXR1cm4gdGhlIGJ1ZmZlciBpdA0KIAkJaXMgYWxyZWFkeSBwb2ludGluZyB0by4gKi8NCiAJCXBydlJldHVybkJ1ZmZlciggdWlwX2J1ZiApOw0KLQkNCisNCiAJCS8qIE9idGFpbiB0aGUgc2l6ZSBvZiB0aGUgcGFja2V0IGFuZCBwdXQgaXQgaW50byB0aGUgImxlbiIgdmFyaWFibGUuICovDQogCQl1bExlbiA9IHhGRUNSeERlc2NyaXB0b3JzWyB1bE5leHRSeERlc2NyaXB0b3IgXS5sZW5ndGg7DQogCQl1aXBfYnVmID0geEZFQ1J4RGVzY3JpcHRvcnNbIHVsTmV4dFJ4RGVzY3JpcHRvciBdLmRhdGE7DQpAQCAtNTY0LDkgKzUwMSw5IEBACiAJCVRDUC9JUCBzdGFjaywgc28gYWxsb2NhdGUgaXQgYSBuZXcgYnVmZmVyLiAqLw0KIAkJeEZFQ1J4RGVzY3JpcHRvcnNbIHVsTmV4dFJ4RGVzY3JpcHRvciBdLmRhdGEgPSBwcnZHZXRGcmVlQnVmZmVyKCk7DQogDQotCQkvKiBEb2luZyB0aGlzIGhlcmUgY291bGQgY2F1c2UgY29ycnVwdGlvbiEgKi8JCQ0KLQkJeEZFQ1J4RGVzY3JpcHRvcnNbIHVsTmV4dFJ4RGVzY3JpcHRvciBdLnN0YXR1cyB8PSBSWF9CRF9FOwkJDQotCQkNCisJCS8qIERvaW5nIHRoaXMgaGVyZSBjb3VsZCBjYXVzZSBjb3JydXB0aW9uISAqLw0KKwkJeEZFQ1J4RGVzY3JpcHRvcnNbIHVsTmV4dFJ4RGVzY3JpcHRvciBdLnN0YXR1cyB8PSBSWF9CRF9FOw0KKw0KIAkJcG9ydEVOVEVSX0NSSVRJQ0FMKCk7DQogCQl7DQogCQkJdWxOZXh0UnhEZXNjcmlwdG9yKys7DQpAQCAtNTc1LDEwICs1MTIsMTAgQEAKIAkJCQl1bE5leHRSeERlc2NyaXB0b3IgPSAwOw0KIAkJCX0NCiAJCX0NCi0JCXBvcnRFWElUX0NSSVRJQ0FMKCk7CQ0KKwkJcG9ydEVYSVRfQ1JJVElDQUwoKTsNCiANCiAJCS8qIFRlbGwgdGhlIERNQSBhIG5ldyBidWZmZXIgaXMgYXZhaWxhYmxlLiAqLw0KLQkJUkRBUiA9IE1DRl9GRUNfUkRBUl9SX0RFU19BQ1RJVkU7CQkNCisJCVJEQVIgPSBNQ0ZfRkVDX1JEQVJfUl9ERVNfQUNUSVZFOw0KIAl9DQogDQogICAgIHJldHVybiB1bExlbjsNCkBAIC01OTgsMTggKzUzNSwxOCBAQAogCQkvKiBUbyBtYWludGFpbiB0aGUgemVybyBjb3B5IGltcGxlbWVudGF0aW9uLCBwb2ludCB0aGUgVHggZGVzY3JpcHRvcg0KIAkJdG8gdGhlIGRhdGEgZnJvbSB0aGUgUnggYnVmZmVyLiAqLw0KIAkJcHhGRUNUeERlc2NyaXB0b3ItPmRhdGEgPSB1aXBfYnVmOw0KLQkJDQorDQogCQkvKiBTZXR1cCB0aGUgYnVmZmVyIGRlc2NyaXB0b3IgZm9yIHRyYW5zbWlzc2lvbiAqLw0KIAkJcHhGRUNUeERlc2NyaXB0b3ItPmxlbmd0aCA9IHVpcF9sZW47DQotCQkNCisNCiAJCS8qIE5CIHRoaXMgYXNzdW1lcyBvbmx5IG9uZSBUeCBkZXNjcmlwdG9yISAqLw0KIAkJcHhGRUNUeERlc2NyaXB0b3ItPnN0YXR1cyA9ICggVFhfQkRfUiB8IFRYX0JEX0wgfCBUWF9CRF9UQyB8IFRYX0JEX1cgKTsNCiAJfQ0KIAlwb3J0RVhJVF9DUklUSUNBTCgpOw0KLQkNCisNCiAJLyogQ29udGludWUgdGhlIFR4IERNQSB0YXNrIChpbiBjYXNlIGl0IHdhcyB3YWl0aW5nIGZvciBhIG5ldyBUeEJEKSAqLw0KIAlUREFSID0gTUNGX0ZFQ19UREFSX1hfREVTX0FDVElWRTsNCi0JDQorDQogCS8qIHVpcF9idWYgaXMgYmVpbmcgdXNlZCBieSB0aGUgVHggZGVzY3JpcHRvci4gIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciB0bw0KIAl1aXBfYnVmLiAqLw0KIAl1aXBfYnVmID0gcHJ2R2V0RnJlZUJ1ZmZlcigpOw0KQEAgLTY3NSwxOCArNjEyLDE4IEBACiB7DQogdW5zaWduZWQgbG9uZyB1bEV2ZW50Ow0KIHBvcnRCQVNFX1RZUEUgeEhpZ2hQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQotICAgDQorDQogCS8qIERldGVybWluZSB0aGUgY2F1c2Ugb2YgdGhlIGludGVycnVwdC4gKi8NCiAJdWxFdmVudCA9IEVJUiAmIEVJTVI7DQogCUVJUiA9IHVsRXZlbnQ7DQogDQogCWlmKCB1bEV2ZW50ICYgRUlSX1JYRl9NQVNLICkNCiAJew0KLQkJLyogQSBwYWNrZXQgaGFzIGJlZW4gcmVjZWl2ZWQuICBXYWtlIHRoZSBoYW5kbGVyIHRhc2sgaW4gY2FzZSBpdCBpcyANCisJCS8qIEEgcGFja2V0IGhhcyBiZWVuIHJlY2VpdmVkLiAgV2FrZSB0aGUgaGFuZGxlciB0YXNrIGluIGNhc2UgaXQgaXMNCiAJCWJsb2NrZWQuICovDQogCQl4U2VtYXBob3JlR2l2ZUZyb21JU1IoIHhGRUNTZW1hcGhvcmUsICZ4SGlnaFByaW9yaXR5VGFza1dva2VuICk7DQogCX0NCi0JDQorDQogCWlmKCB1bEV2ZW50ICYgRUlSX1RYRl9NQVNLICkNCiAJew0KIAkJLyogVGhlIFR4IGhhcyBjb21wbGV0ZWQuICBNYXJrIHRoZSBidWZmZXIgaXQgd2FzIHVzaW5nIGFzIGZyZWUgYWdhaW4uICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYjIwODkzYy4uN2RhNjcwZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBDb2RlV2FycmlvciBvZnRlbiB0aGlua3MgaXQga25vd3MgYmV0dGVyIHRoYW4geW91IHdoaWNoIGZpbGVzIHlvdSB3YW50IHRvIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggODk4YTE5My4uNDY0YmExZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL2h0dHBkL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9odHRwZC91SVBfVGFzay5jCmluZGV4IGU0NjU3M2MuLmI0NTFjOTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL2h0dHBkL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvaHR0cGQvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL21haW4uYwppbmRleCAzNjY3ZmYyLi5hZTA1ZTBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNThlNmFjNy4uNzgyMGMxOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIENvZGVXYXJyaW9yIG9mdGVuIHRoaW5rcyBpdCBrbm93cyBiZXR0ZXIgdGhhbiB5b3Ugd2hpY2ggZmlsZXMgeW91IHdhbnQgdG8gDQogYnVpbGQgLSBhbmQgY2hhbmdlcyB0aGUgcG9ydC5jIGFuZCBwb3J0YXNtLlMgZmlsZXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QgZnJvbQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU19UaWNrX1NldHVwLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvRnJlZVJUT1NfVGlja19TZXR1cC5jCmluZGV4IDEyMjUwMzYuLmJiM2E2NjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU19UaWNrX1NldHVwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL0ZyZWVSVE9TX1RpY2tfU2V0dXAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMzk0NzVkZC4uZTc1YmMxNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYyLjUuMg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvbWFpbi5jCmluZGV4IDQ4NjBjOWYuLmUxYTc0ZDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL3NlcmlhbC9zZXJpYWwuYwppbmRleCBlZDM2YWVkLi5mYTlhNjY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMDM5OGQyYS4uZjlmMDQ4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU19UaWNrX1NldHVwLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NfVGlja19TZXR1cC5jCmluZGV4IGUxZWJhODkuLmE5N2UyYTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU19UaWNrX1NldHVwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TX1RpY2tfU2V0dXAuYwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjguMS4xIC0gQ29weXJpZ2h0IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiANCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLSAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLSAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGI1ZDA2NWMuLmRkNzE2YTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jCmluZGV4IGU5ZDQ1NWMuLmVhMzYxYWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL21haW4uYwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjguMS4xIC0gQ29weXJpZ2h0IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL0ZFQy5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci9GRUMuYwppbmRleCAzNGI3YzZiLi44YWEzNDE0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL0ZFQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvRkVDLmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBLZXJuZWwgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDcwNmI3ZWEuLjVlMTkzMDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBUYXNrIHRoYXQgY29udHJvbHMgdGhlIHVJUCBUQ1AvSVAgc3RhY2suICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDBjNGI3YzQuLmU1ZWYyYWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIENvZGVXYXJyaW9yIG9mdGVuIHRoaW5rcyBpdCBrbm93cyBiZXR0ZXIgdGhhbiB5b3Ugd2hpY2ggZmlsZXMgeW91IHdhbnQgdG8gDQogYnVpbGQgLSBhbmQgY2hhbmdlcyB0aGUgcG9ydC5jIGFuZCBwb3J0YXNtLlMgZmlsZXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QgZnJvbQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NfVGlja19TZXR1cC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU19UaWNrX1NldHVwLmMKaW5kZXggMGVlY2JhZi4uMDQxNTdhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU19UaWNrX1NldHVwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU19UaWNrX1NldHVwLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9IVFRQRGVtby5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9IVFRQRGVtby5jCmluZGV4IDE1MWU3ZjEuLmYxYjhhNzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0hUVFBEZW1vLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICAgIEltcGxlbWVudHMgYSBzaW1wbGlzdGljIFdFQiBzZXJ2ZXIuICBFdmVyeSB0aW1lIGEgY29ubmVjdGlvbiBpcyBtYWRlIGFuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uaAppbmRleCA2ZTBhMDAzLi4wN2E5NDIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0hUVFBEZW1vLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9IVFRQRGVtby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEJBU0lDX1dFQl9TRVJWRVJfSA0KICNkZWZpbmUgQkFTSUNfV0VCX1NFUlZFUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMzk0NzVkZC4uZTc1YmMxNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjIuNS4yDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL21haW4uYwppbmRleCA3MjZlZDc2Li44NGJhYTJiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL0Jsb2NrUS5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9CbG9ja1EuYwppbmRleCAyOTc5YmY4Li41MGI4MjIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL0Jsb2NrUS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvQmxvY2tRLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIENyZWF0ZXMgc2l4IHRhc2tzIHRoYXQgb3BlcmF0ZSBvbiB0aHJlZSBxdWV1ZXMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL1BvbGxRLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL1BvbGxRLmMKaW5kZXggMDNmNDkyOS4uNDRkYWFiMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9Qb2xsUS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvUG9sbFEuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9jb210ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2NvbXRlc3QuYwppbmRleCA2ZDc0NjJhLi4yOWQzNmFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2NvbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2NvbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogQ3JlYXRlcyB0d28gdGFza3MgdGhhdCBvcGVyYXRlIG9uIGFuIGludGVycnVwdCBkcml2ZW4gc2VyaWFsIHBvcnQuICBBIGxvb3BiYWNrIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZGVhdGguYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZGVhdGguYwppbmRleCA4NDczOWJkLi5hODQ2MTEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2RlYXRoLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9kZWF0aC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBDcmVhdGUgYSBzaW5nbGUgcGVyc2lzdGVudCB0YXNrIHdoaWNoIHBlcmlvZGljYWxseSBkeW5hbWljYWxseSBjcmVhdGVzIGFub3RoZXIgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9keW5hbWljLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2R5bmFtaWMuYwppbmRleCA5MzZkNzM0Li5lZTMzZDAzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2R5bmFtaWMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2R5bmFtaWMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogVGhlIGZpcnN0IHRlc3QgY3JlYXRlcyB0aHJlZSB0YXNrcyAtIHR3byBjb3VudGVyIHRhc2tzIChvbmUgY29udGludW91cyBjb3VudCANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2V2ZW50cy5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9ldmVudHMuYwppbmRleCAwNjkyOTY0Li5hOWRlMjNlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2V2ZW50cy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZXZlbnRzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIFRoaXMgZmlsZSBleGVyY2lzZXMgdGhlIGV2ZW50IG1lY2hhbmlzbSB3aGVyZWJ5IG1vcmUgdGhhbiBvbmUgdGFzayBpcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxhc2guYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxhc2guYwppbmRleCBmNzdkOGJiLi5lOGZmYWNlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ZsYXNoLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9mbGFzaC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2Zsb3AuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxvcC5jCmluZGV4IGYxYzdhYjMuLjMyYWE1NTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxvcC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxvcC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4yLjMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ludGVnZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvaW50ZWdlci5jCmluZGV4IDk0OWIwNjkuLjNiMTY5NzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvaW50ZWdlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvaW50ZWdlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4yLjMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3ByaW50LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3ByaW50LmMKaW5kZXggZGNmZmExOC4uYWZiZWJiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9wcmludC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvcHJpbnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogTWFuYWdlcyBhIHF1ZXVlIG9mIHN0cmluZ3MgdGhhdCBhcmUgd2FpdGluZyB0byBiZSBkaXNwbGF5ZWQuICBUaGlzIGlzIHVzZWQgdG8gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9zZW10ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3NlbXRlc3QuYwppbmRleCA5NjVkZjIyLi41NWRlZmEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3NlbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3NlbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogQ3JlYXRlcyB0d28gc2V0cyBvZiB0d28gdGFza3MuICBUaGUgdGFza3Mgd2l0aGluIGEgc2V0IHNoYXJlIGEgdmFyaWFibGUsIGFjY2VzcyANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Fib3J0RGVsYXkuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQWJvcnREZWxheS5jCmluZGV4IDQ5ZjllMWYuLjEwMGE1NGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQWJvcnREZWxheS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQWJvcnREZWxheS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyBzb21lIHRlc3Qgc2NlbmFyaW9zIHRoYXQgZW5zdXJlIHRhc2tzIHJlc3BvbmQgY29ycmVjdGx5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9CbG9ja1EuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQmxvY2tRLmMKaW5kZXggMTE3MGY1MS4uODBlYWFlZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9CbG9ja1EuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Jsb2NrUS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgc2l4IHRhc2tzIHRoYXQgb3BlcmF0ZSBvbiB0aHJlZSBxdWV1ZXMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0V2ZW50R3JvdXBzRGVtby5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9FdmVudEdyb3Vwc0RlbW8uYwppbmRleCAyYTIzYzM3Li43NzU3Zjg0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0V2ZW50R3JvdXBzRGVtby5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvRXZlbnRHcm91cHNEZW1vLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYwppbmRleCAwZjM4M2FmLi4wN2I3Mjk2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9HZW5RVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50UXVldWUuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50UXVldWUuYwppbmRleCA2OTMzMDhhLi5kNTE0ZDFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9JbnRRdWV1ZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBkZWZpbmVzIG9uZSBvZiB0aGUgbW9yZSBjb21wbGV4IHNldCBvZiBkZW1vL3Rlc3QgdGFza3MuICBUaGV5IGFyZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50U2VtVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9JbnRTZW1UZXN0LmMKaW5kZXggMTc0ZmFjZi4uYzY1YTk2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9JbnRTZW1UZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9JbnRTZW1UZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL01lc3NhZ2VCdWZmZXJBTVAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzNlNDgyCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMKQEAgLTAsMCArMSwzMzAgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyoNCisgKiBBbiBleGFtcGxlIHRoYXQgbWltaWNzIGEgbWVzc2FnZSBidWZmZXIgYmVpbmcgdXNlZCB0byBwYXNzIGRhdGEgZnJvbSBvbmUgY29yZQ0KKyAqIHRvIGFub3RoZXIuICBUaGUgY29yZSB0aGF0IHNlbmRzIHRoZSBkYXRhIGlzIHJlZmVycmVkIHRvIGFzIGNvcmUgQS4gIFRoZSBjb3JlDQorICogdGhhdCByZWNlaXZlcyB0aGUgZGF0YSBpcyByZWZlcnJlZCB0byBhcyBjb3JlIEIuICBUaGUgdGFzayBpbXBsZW1lbnRlZCBieQ0KKyAqIHBydkNvcmVBVGFzaygpIHJ1bnMgb24gY29yZSBBLiAgVHdvIGluc3RhbmNlcyBvZiB0aGUgdGFzayBpbXBsZW1lbnRlZCBieQ0KKyAqIHBydkNvcmVCVGFza3MoKSBydW4gb24gY29yZSBCLiAgcHJ2Q29yZUFUYXNrKCkgc2VuZHMgbWVzc2FnZXMgdmlhIG1lc3NhZ2UNCisgKiBidWZmZXJzIHRvIGJvdGggaW5zdGFuY2VzIG9mIHBydkNvcmVCVGFza3MoKSwgb25lIG1lc3NhZ2UgYnVmZmVyIHBlciBjaGFubmVsLg0KKyAqIEEgdGhpcmQgbWVzc2FnZSBidWZmZXIgaXMgdXNlZCB0byBwYXNzIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyDQorICogd3JpdHRlbiB0byBieSBjb3JlIEEgdG8gYW4gaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSB0aGF0IGlzIHRyaWdnZXJlZCBieQ0KKyAqIGNvcmUgQSBidXQgZXhlY3V0ZXMgb24gY29yZSBCLg0KKyAqDQorICogVGhlIGV4YW1wbGUgcmVsaWVzIG9uIHRoZSBGcmVlUlRPUyBwcm92aWRlZCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mDQorICogc2JTRU5EX0NPTVBMRVRFRCgpIGJlaW5nIG92ZXJyaWRkZW4gYnkgYW4gaW1wbGVtZW50YXRpb24gaW4gRnJlZVJUT1NDb25maWcuaA0KKyAqIHRoYXQgd3JpdGVzIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRoYXQgY29udGFpbnMgZGF0YSBpbnRvIHRoZQ0KKyAqIGNvbnRyb2wgbWVzc2FnZSBidWZmZXIsIHRoZW4gZ2VuZXJhdGVzIGFuIGludGVycnVwdCBpbiBjb3JlIEIuICBUaGUgbmVjZXNzYXJ5DQorICogaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQgaW4gdGhpcyBmaWxlIGFuZCBjYW4gYmUgZW5hYmxlZCBieSBhZGRpbmcgdGhlDQorICogZm9sbG93aW5nIHRvIEZyZWVSVE9TQ29uZmlnLmg6DQorICoNCisgKiAjZGVmaW5lIHNiU0VORF9DT01QTEVURUQoIHB4U3RyZWFtQnVmZmVyICkgdkdlbmVyYXRlQ29yZUJJbnRlcnJ1cHQoIHB4U3RyZWFtQnVmZmVyICkNCisgKg0KKyAqIENvcmUgdG8gY29yZSBjb21tdW5pY2F0aW9uIHZpYSBtZXNzYWdlIGJ1ZmZlciByZXF1aXJlcyB0aGUgbWVzc2FnZSBidWZmZXJzDQorICogdG8gYmUgYXQgYW4gYWRkcmVzcyBrbm93biB0byBib3RoIGNvcmVzIHdpdGhpbiBzaGFyZWQgbWVtb3J5Lg0KKyAqDQorICogTm90ZSB0aGF0LCB3aGlsZSB0aGlzIGV4YW1wbGUgdXNlcyB0aHJlZSBtZXNzYWdlIGJ1ZmZlcnMsIHRoZSBzYW1lDQorICogZnVuY3Rpb25hbGl0eSBjYW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBzaW5nbGUgbWVzc2FnZSBidWZmZXIgYnkgdXNpbmcgdGhlDQorICogc2FtZSBkZXNpZ24gcGF0dGVybiBkZXNjcmliZWQgb24gdGhlIGxpbmsgYmVsb3cgZm9yIHF1ZXVlcywgYnV0IHVzaW5nIG1lc3NhZ2UNCisgKiBidWZmZXJzIGluc3RlYWQuICBJdCBpcyBhY3R1YWxseSBzaW1wbGVyIHdpdGggYSBtZXNzYWdlIGJ1ZmZlciBhcyB2YXJpYWJsZQ0KKyAqIGxlbmd0aCBkYXRhIGNhbiBiZSB3cml0dGVuIGludG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGRpcmVjdGx5Og0KKyAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL1BlbmQtb24tbXVsdGlwbGUtcnRvcy1vYmplY3RzLmh0bWwjYWx0ZXJuYXRpdmVfZGVzaWduX3BhdHRlcm4NCisgKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAic3RkaW8uaCINCisjaW5jbHVkZSAic3RyaW5nLmgiDQorDQorLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisjaW5jbHVkZSAibWVzc2FnZV9idWZmZXIuaCINCisNCisvKiBEZW1vIGFwcCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiTWVzc2FnZUJ1ZmZlckFNUC5oIg0KKw0KKy8qIEVub3VnaCBmb3IgMyA0IGJ5dGUgcG9pbnRlcnMsIGluY2x1ZGluZyB0aGUgYWRkaXRpb25hbCA0IGJ5dGVzIHBlciBtZXNzYWdlDQorb3ZlcmhlYWQgb2YgbWVzc2FnZSBidWZmZXJzLiAqLw0KKyNkZWZpbmUgbWJhQ09OVFJPTF9NRVNTQUdFX0JVRkZFUl9TSVpFICggMjQgKQ0KKw0KKy8qIEVub3VnaCBmb3VyIDQgOCBieXRlIHN0cmluZ3MsIHBsdXMgdGhlIGFkZGl0aW9uYWwgNCBieXRlcyBwZXIgbWVzc2FnZQ0KK292ZXJoZWFkIG9mIG1lc3NhZ2UgYnVmZmVycy4gKi8NCisjZGVmaW5lIG1iYVRBU0tfTUVTU0FHRV9CVUZGRVJfU0laRSAoIDYwICkNCisNCisvKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiBwcnZDb3JlQlRhc2tzIHRoYXQgYXJlIGNyZWF0ZWQuICovDQorI2RlZmluZSBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTCTINCisNCisvKiBBIGJsb2NrIHRpbWUgb2YgMCBzaW1wbHkgbWVhbnMsIGRvbid0IGJsb2NrLiAqLw0KKyNkZWZpbmUgbWJhRE9OVF9CTE9DSwkJCQkwDQorDQorLyogTWFjcm8gdGhhdCBtaW1pY3MgYW4gaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBleGVjdXRpbmcgYnkgc2ltcGx5IGNhbGxpbmcNCit0aGUgcm91dGluZSBpbmxpbmUuICovDQorI2RlZmluZSBtYmFHRU5FUkFURV9DT1JFX0JfSU5URVJSVVBUKCkgcHJ2Q29yZUJJbnRlcnJ1cHRIYW5kbGVyKCkNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0YXNrIHRoYXQsIG9uIGEgcmVhbCBkdWFsIGNvcmUgZGV2aWNlLCB3b3VsZCBydW4gb24NCisgKiBjb3JlIEEgYW5kIHNlbmQgbWVzc2FnZSB0byB0YXNrcyBydW5uaW5nIG9uIGNvcmUgQi4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZDb3JlQVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogSW1wbGVtZW50YXRpb24gb2YgdGhlIHRhc2sgdGhhdCwgb24gYSByZWFsIGR1YWwgY29yZSBkZXZpY2UsIHdvdWxkIHJ1biBvbg0KKyAqIGNvcmUgQiBhbmQgcmVjZWl2ZSBtZXNzYWdlIGZyb20gY29yZSBBLiAgVGhlIGRlbW8gY3JlYXRlcyB0d28gaW5zdGFuY2VzIG9mDQorICogdGhpcyB0YXNrLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkNvcmVCVGFza3MoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogVGhlIGZ1bmN0aW9uIHRoYXQsIG9uIGEgcmVhbCBkdWFsIGNvcmUgZGV2aWNlLCB3b3VsZCBoYW5kbGUgaW50ZXItY29yZQ0KKyAqIGludGVycnVwdHMsIGJ1dCBpbiB0aGlzIGNhc2UgaXMganVzdCBjYWxsZWQgaW5saW5lLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkNvcmVCSW50ZXJydXB0SGFuZGxlciggdm9pZCApOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRoZSBtZXNzYWdlIGJ1ZmZlcnMgdXNlZCB0byBwYXNzIGRhdGEgZnJvbSBjb3JlIEEgdG8gY29yZSBCLiAqLw0KK3N0YXRpYyBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeENvcmVCTWVzc2FnZUJ1ZmZlcnNbIG1iYU5VTUJFUl9PRl9DT1JFX0JfVEFTS1MgXTsNCisNCisvKiBUaGUgY29udHJvbCBtZXNzYWdlIGJ1ZmZlci4gIFRoaXMgaXMgdXNlZCB0byBwYXNzIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UNCittZXNzYWdlIGJ1ZmZlciB0aGF0IGhvbGRzIGFwcGxpY2F0aW9uIGRhdGEgaW50byB0aGUgY29yZSB0byBjb3JlIGludGVycnVwdA0KK3NlcnZpY2Ugcm91dGluZS4gKi8NCitzdGF0aWMgTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhDb250cm9sTWVzc2FnZUJ1ZmZlcjsNCisNCisvKiBDb3VudGVycyB1c2VkIHRvIGluZGljYXRlIHRvIHRoZSBjaGVjayB0aGF0IHRoZSB0YXNrcyBhcmUgc3RpbGwgZXhlY3V0aW5nLiAqLw0KK3N0YXRpYyB1aW50MzJfdCB1bEN5Y2xlQ291bnRlcnNbIG1iYU5VTUJFUl9PRl9DT1JFX0JfVEFTS1MgXTsNCisNCisvKiBTZXQgdG8gcGRGQUxTRSBpZiBhbnkgZXJyb3JzIGFyZSBkZXRlY3RlZC4gIFVzZWQgdG8gaW5mb3JtIHRoZSBjaGVjayB0YXNrDQordGhhdCBzb21ldGhpbmcgbWlnaHQgYmUgd3JvbmcuICovDQorQmFzZVR5cGVfdCB4RGVtb1N0YXR1cyA9IHBkUEFTUzsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZTdGFydE1lc3NhZ2VCdWZmZXJBTVBUYXNrcyggdm9pZCApDQorew0KK0Jhc2VUeXBlX3QgeDsNCisNCisJeENvbnRyb2xNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIG1iYUNPTlRST0xfTUVTU0FHRV9CVUZGRVJfU0laRSApOw0KKw0KKwl4VGFza0NyZWF0ZSggcHJ2Q29yZUFUYXNrLAkJCQkvKiBUaGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSB0YXNrLiAqLw0KKwkJCQkgIkFNUENvcmVBIiwJCQkJLyogSHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgdGhlIHRhc2suICovDQorCQkJCSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsCS8qIFN0YWNrIHNpemUgKGluIHdvcmRzISkuICovDQorCQkJCSBOVUxMLAkJCQkJCS8qIFRhc2sgcGFyYW1ldGVyIGlzIG5vdCB1c2VkLiAqLw0KKwkJCQkgdHNrSURMRV9QUklPUklUWSwJCQkvKiBUaGUgcHJpb3JpdHkgYXQgd2hpY2ggdGhlIHRhc2sgaXMgY3JlYXRlZC4gKi8NCisJCQkJIE5VTEwgKTsJCQkJCS8qIE5vIHVzZSBmb3IgdGhlIHRhc2sgaGFuZGxlLiAqLw0KKw0KKwlmb3IoIHggPSAwOyB4IDwgbWJhTlVNQkVSX09GX0NPUkVfQl9UQVNLUzsgeCsrICkNCisJew0KKwkJeENvcmVCTWVzc2FnZUJ1ZmZlcnNbIHggXSA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCBtYmFUQVNLX01FU1NBR0VfQlVGRkVSX1NJWkUgKTsNCisJCWNvbmZpZ0FTU0VSVCggeENvcmVCTWVzc2FnZUJ1ZmZlcnNbIHggXSApOw0KKw0KKwkJLyogUGFzcyB0aGUgbG9vcCBjb3VudGVyIGludG8gdGhlIGNyZWF0ZWQgdGFzayB1c2luZyB0aGUgdGFzaydzDQorCQlwYXJhbWV0ZXIuICBUaGUgdGFzayB0aGVuIHVzZXMgdGhlIHZhbHVlIGFzIGFuIGluZGV4IGludG8gdGhlDQorCQl1bEN5Y2xlQ291bnRlcnMgYW5kIHhDb3JlQk1lc3NhZ2VCdWZmZXJzIGFycmF5cy4gKi8NCisJCXhUYXNrQ3JlYXRlKCBwcnZDb3JlQlRhc2tzLA0KKwkJCQkJICJBTVBDb3JlQjEiLA0KKwkJCQkJIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwNCisJCQkJCSAoIHZvaWQgKiApIHgsDQorCQkJCQkgdHNrSURMRV9QUklPUklUWSArIDEsDQorCQkJCQkgTlVMTCApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydkNvcmVBVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorQmFzZVR5cGVfdCB4Ow0KK3VpbnQzMl90IHVsTmV4dFZhbHVlID0gMDsNCitjb25zdCBUaWNrVHlwZV90IHhEZWxheSA9IHBkTVNfVE9fVElDS1MoIDI1MCApOw0KK2NoYXIgY1N0cmluZ1sgMTUgXTsgLyogQXQgbGVhc3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgIjQyOTQ5NjcyOTVcMCIgKDB4ZmZmZmZmZmYpLiAqLw0KKw0KKwkvKiBSZW1vdmUgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogQ3JlYXRlIHRoZSBuZXh0IHN0cmluZyB0byBzZW5kLiAgVGhlIHZhbHVlIGlzIGluY3JlbWVudGVkIG9uIGVhY2gNCisJCWxvb3AgaXRlcmF0aW9uLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGNoYW5nZXMgYXMgdGhlIG51bWJlciBvZg0KKwkJZGlnaXRzIGluIHRoZSB2YWx1ZSBpbmNyZWFzZXMuICovDQorCQlzcHJpbnRmKCBjU3RyaW5nLCAiJWx1IiwgKCB1bnNpZ25lZCBsb25nICkgdWxOZXh0VmFsdWUgKTsNCisNCisJCS8qIFNlbmQgdGhlIHZhbHVlIGZyb20gdGhpcyAocHNldWRvKSBDb3JlIEEgdG8gdGhlIHRhc2tzIG9uIHRoZSAocHNldWRvKQ0KKwkJQ29yZSBCIHZpYSB0aGUgbWVzc2FnZSBidWZmZXJzLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiBzYlNFTkRfQ09NUExFVEVEKCkNCisJCWJlaW5nIGV4ZWN1dGVkLCB3aGljaCBpbiB0dXJuIHdpbGwgd3JpdGUgdGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZQ0KKwkJYnVmZmVyIHdyaXR0ZW4gdG8gaW50byB4Q29udHJvbE1lc3NhZ2VCdWZmZXIgdGhlbiBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQNCisJCWluIGNvcmUgQi4gKi8NCisJCWZvciggeCA9IDA7IHggPCBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTOyB4KysgKQ0KKwkJew0KKwkJCXhNZXNzYWdlQnVmZmVyU2VuZCggLyogVGhlIG1lc3NhZ2UgYnVmZmVyIHRvIHdyaXRlIHRvLiAqLw0KKwkJCQkJCQkJeENvcmVCTWVzc2FnZUJ1ZmZlcnNbIHggXSwNCisJCQkJCQkJCS8qIFRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEgdG8gc2VuZC4gKi8NCisJCQkJCQkJCSggdm9pZCAqICkgY1N0cmluZywNCisJCQkJCQkJCS8qIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdG8gc2VuZC4gKi8NCisJCQkJCQkJCXN0cmxlbiggY1N0cmluZyApLA0KKwkJCQkJCQkJLyogVGhlIGJsb2NrIHRpbWUsIHNob3VsZCB0aGUgYnVmZmVyIGJlIGZ1bGwuICovDQorCQkJCQkJCQltYmFET05UX0JMT0NLICk7DQorCQl9DQorDQorCQkvKiBEZWxheSBiZWZvcmUgcmVwZWF0aW5nIHdpdGggYSBkaWZmZXJlbnQgYW5kIHBvdGVudGlhbGx5IGRpZmZlcmVudA0KKwkJbGVuZ3RoIHN0cmluZy4gKi8NCisJCXZUYXNrRGVsYXkoIHhEZWxheSApOw0KKwkJdWxOZXh0VmFsdWUrKzsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZDb3JlQlRhc2tzKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitCYXNlVHlwZV90IHg7DQorc2l6ZV90IHhSZWNlaXZlZEJ5dGVzOw0KK3VpbnQzMl90IHVsTmV4dFZhbHVlID0gMDsNCitjaGFyIGNFeHBlY3RlZFN0cmluZ1sgMTUgXTsgLyogQXQgbGVhc3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgIjQyOTQ5NjcyOTVcMCIgKDB4ZmZmZmZmZmYpLiAqLw0KK2NoYXIgY1JlY2VpdmVkU3RyaW5nWyAxNSBdOw0KKw0KKwkvKiBUaGUgaW5kZXggaW50byB0aGUgeENvcmVCTWVzc2FnZUJ1ZmZlcnMgYW5kIHVsTG9vcENvdW50ZXIgYXJyYXlzIGlzDQorCXBhc3NlZCBpbnRvIHRoaXMgdGFzayB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeCA9ICggQmFzZVR5cGVfdCApIHB2UGFyYW1ldGVyczsNCisJY29uZmlnQVNTRVJUKCB4IDwgbWJhTlVNQkVSX09GX0NPUkVfQl9UQVNLUyApOw0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogQ3JlYXRlIHRoZSBzdHJpbmcgdGhhdCBpcyBleHBlY3RlZCB0byBiZSByZWNlaXZlZCB0aGlzIHRpbWUgcm91bmQuICovDQorCQlzcHJpbnRmKCBjRXhwZWN0ZWRTdHJpbmcsICIlbHUiLCAoIHVuc2lnbmVkIGxvbmcgKSB1bE5leHRWYWx1ZSApOw0KKw0KKwkJLyogV2FpdCB0byByZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UgZnJvbSBjb3JlIEEuICovDQorCQltZW1zZXQoIGNSZWNlaXZlZFN0cmluZywgMHgwMCwgc2l6ZW9mKCBjUmVjZWl2ZWRTdHJpbmcgKSApOw0KKwkJeFJlY2VpdmVkQnl0ZXMgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIC8qIFRoZSBtZXNzYWdlIGJ1ZmZlciB0byByZWNlaXZlIGZyb20uICovDQorCQkJCQkJCQkJCQkJeENvcmVCTWVzc2FnZUJ1ZmZlcnNbIHggXSwNCisJCQkJCQkJCQkJCQkvKiBMb2NhdGlvbiB0byBzdG9yZSByZWNlaXZlZCBkYXRhLiAqLw0KKwkJCQkJCQkJCQkJCWNSZWNlaXZlZFN0cmluZywNCisJCQkJCQkJCQkJCQkvKiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byByZWNlaXZlLiAqLw0KKwkJCQkJCQkJCQkJCXNpemVvZiggY1JlY2VpdmVkU3RyaW5nICksDQorCQkJCQkJCQkJCQkJLyogVGlja3MgdG8gd2FpdCBpZiBidWZmZXIgaXMgZW1wdHkuICovDQorCQkJCQkJCQkJCQkJcG9ydE1BWF9ERUxBWSApOw0KKw0KKwkJLyogQ2hlY2sgdGhlIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCB3YXMgYXMgZXhwZWN0ZWQuICovDQorCQljb25maWdBU1NFUlQoIHhSZWNlaXZlZEJ5dGVzID09IHN0cmxlbiggY0V4cGVjdGVkU3RyaW5nICkgKTsNCisNCisJCS8qIElmIHRoZSByZWNlaXZlZCBzdHJpbmcgbWF0Y2hlcyB0aGF0IGV4cGVjdGVkIHRoZW4gaW5jcmVtZW50IHRoZSBsb29wDQorCQljb3VudGVyIHNvIHRoZSBjaGVjayB0YXNrIGtub3dzIHRoaXMgdGFzayBpcyBzdGlsbCBydW5uaW5nLiAqLw0KKwkJaWYoIHN0cmNtcCggY1JlY2VpdmVkU3RyaW5nLCBjRXhwZWN0ZWRTdHJpbmcgKSA9PSAwICkNCisJCXsNCisJCQkoIHVsQ3ljbGVDb3VudGVyc1sgeCBdICkrKzsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl4RGVtb1N0YXR1cyA9IHBkRkFJTDsNCisJCX0NCisNCisJCS8qIEV4cGVjdCB0aGUgbmV4dCBzdHJpbmcgaW4gc2VxdWVuY2UgdGhlIG5leHQgdGltZSBhcm91bmQuICovDQorCQl1bE5leHRWYWx1ZSsrOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIENhbGxlZCBieSB0aGUgcmVpbXBsZW1lbnRhdGlvbiBvZiBzYlNFTkRfQ09NUExFVEVEKCksIHdoaWNoIGNhbiBiZSBkZWZpbmVkDQorYXMgZm9sbG93cyBpbiBGcmVlUlRPU0NvbmZpZy5oOg0KKyNkZWZpbmUgc2JTRU5EX0NPTVBMRVRFRCggcHhTdHJlYW1CdWZmZXIgKSB2R2VuZXJhdGVDb3JlQkludGVycnVwdCggcHhTdHJlYW1CdWZmZXIgKQ0KKyovDQordm9pZCB2R2VuZXJhdGVDb3JlQkludGVycnVwdCggdm9pZCAqIHhVcGRhdGVkTWVzc2FnZUJ1ZmZlciApDQorew0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4VXBkYXRlZEJ1ZmZlciA9ICggTWVzc2FnZUJ1ZmZlckhhbmRsZV90ICkgeFVwZGF0ZWRNZXNzYWdlQnVmZmVyOw0KKw0KKwkvKiBJZiBzYlNFTkRfQ09NUExFVEVEKCkgaGFzIGJlZW4gaW1wbGVtZW50ZWQgYXMgYWJvdmUsIHRoZW4gdGhpcyBmdW5jdGlvbg0KKwlpcyBjYWxsZWQgZnJvbSB3aXRoaW4geE1lc3NhZ2VCdWZmZXJTZW5kKCkuICBBcyB0aGlzIGZ1bmN0aW9uIGFsc28gY2FsbHMNCisJeE1lc3NhZ2VCdWZmZXJTZW5kKCkgaXRzZWxmIGl0IGlzIG5lY2Vzc2FyeSB0byBndWFyZCBhZ2FpbnN0IGEgcmVjdXJzaXZlDQorCWNhbGwuICBJZiB0aGUgbWVzc2FnZSBidWZmZXIganVzdCB1cGRhdGVkIGlzIHRoZSBtZXNzYWdlIGJ1ZmZlciB3cml0dGVuIHRvDQorCWJ5IHRoaXMgZnVuY3Rpb24sIHRoZW4gdGhpcyBpcyBhIHJlY3Vyc2l2ZSBjYWxsLCBhbmQgdGhlIGZ1bmN0aW9uIGNhbiBqdXN0DQorCWV4aXQgd2l0aG91dCB0YWtpbmcgZnVydGhlciBhY3Rpb24uICovDQorCWlmKCB4VXBkYXRlZEJ1ZmZlciAhPSB4Q29udHJvbE1lc3NhZ2VCdWZmZXIgKQ0KKwl7DQorCQkvKiBVc2UgeENvbnRyb2xNZXNzYWdlQnVmZmVyIHRvIHBhc3MgdGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXINCisJCXdyaXR0ZW4gdG8gYnkgY29yZSBBIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhYm91dCB0byBiZSBnZW5lcmF0ZWQgaW4NCisJCWNvcmUgQi4gKi8NCisJCXhNZXNzYWdlQnVmZmVyU2VuZCggeENvbnRyb2xNZXNzYWdlQnVmZmVyLCAmeFVwZGF0ZWRCdWZmZXIsIHNpemVvZiggeFVwZGF0ZWRCdWZmZXIgKSwgbWJhRE9OVF9CTE9DSyApOw0KKw0KKwkJLyogVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJydXB0IHdvdWxkIGJlIGdlbmVyYXRlZC4gIEluIHRoaXMgY2FzZSBpdCBpcw0KKwkJbm90IGEgZ2VudWluZSBpbnRlcnJ1cHQgaGFuZGxlciB0aGF0IGV4ZWN1dGVzLCBqdXN0IGEgc3RhbmRhcmQgZnVuY3Rpb24NCisJCWNhbGwuICovDQorCQltYmFHRU5FUkFURV9DT1JFX0JfSU5URVJSVVBUKCk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogSGFuZGxlciBmb3IgdGhlIGludGVycnVwdHMgdGhhdCBhcmUgdHJpZ2dlcmVkIG9uIGNvcmUgQSBidXQgZXhlY3V0ZSBvbiBjb3JlDQorQi4gKi8NCitzdGF0aWMgdm9pZCBwcnZDb3JlQkludGVycnVwdEhhbmRsZXIoIHZvaWQgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeFVwZGF0ZWRNZXNzYWdlQnVmZmVyOw0KK0Jhc2VUeXBlX3QgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsNCisNCisJLyogeENvbnRyb2xNZXNzYWdlQnVmZmVyIGNvbnRhaW5zIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRoYXQNCisJY29udGFpbnMgZGF0YS4gKi8NCisJaWYoIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZSggeENvbnRyb2xNZXNzYWdlQnVmZmVyLA0KKwkJCQkJCQkgICAmeFVwZGF0ZWRNZXNzYWdlQnVmZmVyLA0KKwkJCQkJCQkgICBzaXplb2YoIHhVcGRhdGVkTWVzc2FnZUJ1ZmZlciApLA0KKwkJCQkJCQkgICBtYmFET05UX0JMT0NLICkgPT0gc2l6ZW9mKCB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgKSApDQorCXsNCisJCS8qIENhbGwgdGhlIEFQSSBmdW5jdGlvbiB0aGF0IHNlbmRzIGEgbm90aWZpY2F0aW9uIHRvIGFueSB0YXNrIHRoYXQgaXMNCisJCWJsb2NrZWQgb24gdGhlIHhVcGRhdGVkTWVzc2FnZUJ1ZmZlciBtZXNzYWdlIGJ1ZmZlciB3YWl0aW5nIGZvciBkYXRhIHRvDQorCQlhcnJpdmUuICovDQorCQl4TWVzc2FnZUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIsICZ4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisJfQ0KKw0KKwkvKiBOb3JtYWwgRnJlZVJUT1MgeWllbGQgZnJvbSBpbnRlcnJ1cHQgc2VtYW50aWNzLCB3aGVyZQ0KKwl4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gaXMgaW5pdGlhbHplZCB0byBwZEZBTFNFIGFuZCB3aWxsIHRoZW4gZ2V0IHNldCB0bw0KKwlwZFRSVUUgaWYgdGhlIGludGVycnVwdCBzYWZlIEFQSSB1bmJsb2NrcyBhIHRhc2sgdGhhdCBoYXMgYSBwcmlvcml0eSBhYm92ZQ0KKwl0aGF0IG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2suICovDQorCXBvcnRZSUVMRF9GUk9NX0lTUiggeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeEFyZU1lc3NhZ2VCdWZmZXJBTVBUYXNrc1N0aWxsUnVubmluZyggdm9pZCApDQorew0KK3N0YXRpYyB1aW50MzJfdCB1bExhc3RDeWNsZUNvdW50ZXJzWyBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTIF0gPSB7IDAgfTsNCitCYXNlVHlwZV90IHg7DQorDQorCS8qIENhbGxlZCBieSB0aGUgY2hlY2sgdGFzayB0byBkZXRlcm1pbmUgdGhlIGhlYWx0aCBzdGF0dXMgb2YgdGhlIHRhc2tzDQorCWltcGxlbWVudGVkIGluIHRoaXMgZGVtby4gKi8NCisJZm9yKCB4ID0gMDsgeCA8IG1iYU5VTUJFUl9PRl9DT1JFX0JfVEFTS1M7IHgrKyApDQorCXsNCisJCWlmKCB1bExhc3RDeWNsZUNvdW50ZXJzWyB4IF0gPT0gdWxDeWNsZUNvdW50ZXJzWyB4IF0gKQ0KKwkJew0KKwkJCXhEZW1vU3RhdHVzID0gcGRGQUlMOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXVsTGFzdEN5Y2xlQ291bnRlcnNbIHggXSA9IHVsQ3ljbGVDb3VudGVyc1sgeCBdOw0KKwkJfQ0KKwl9DQorDQorCXJldHVybiB4RGVtb1N0YXR1czsNCit9DQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyRGVtby5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyRGVtby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ODdkODUKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL01lc3NhZ2VCdWZmZXJEZW1vLmMKQEAgLTAsMCArMSw4MDQgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgInN0ZGlvLmgiDQorI2luY2x1ZGUgInN0cmluZy5oIg0KKw0KKy8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorI2luY2x1ZGUgIm1lc3NhZ2VfYnVmZmVyLmgiDQorDQorLyogRGVtbyBhcHAgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJEZW1vLmgiDQorDQorLyogVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdG9yYWdlIGluIHRoZSBtZXNzYWdlIGJ1ZmZlcnMgdXNlZCBpbiB0aGlzIHRlc3QuICovDQorI2RlZmluZSBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUwkoICggc2l6ZV90ICkgNTAgKQ0KKw0KKy8qIFRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBieXRlcyB1c2VkIHRvIHN0b3JlIHRoZSBsZW5ndGggb2YgZWFjaCBtZXNzYWdlLiAqLw0KKyNkZWZpbmUgbWJCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCAoIHNpemVvZiggc2l6ZV90ICkgKQ0KKw0KKy8qIFN0YXJ0IGFuZCBlbmQgQVNDSUkgY2hhcmFjdGVycyB1c2VkIGluIG1lc3NhZ2VzIHNlbnQgdG8gdGhlIGJ1ZmZlcnMuICovDQorI2RlZmluZSBtYkFTQ0lJX1NQQUNFCQkJCQkzMg0KKyNkZWZpbmUgbWJBU0NJSV9USUxEQQkJCQkJMTI2DQorDQorLyogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRhc2tzIHRvIGNyZWF0ZSBpbiB0aGlzIHRlc3QgYW5kIGRlbW8uICovDQorI2RlZmluZSBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMJKCAyICkNCisjZGVmaW5lIG1iTlVNQkVSX09GX1NFTkRFUl9UQVNLUwkoIDIgKQ0KKw0KKy8qIFByaW9yaXR5IG9mIHRoZSB0ZXN0IHRhc2tzLiAgVGhlIHNlbmQgYW5kIHJlY2VpdmUgZ28gZnJvbSBsb3cgdG8gaGlnaA0KK3ByaW9yaXR5IHRhc2tzLCBhbmQgZnJvbSBoaWdoIHRvIGxvdyBwcmlvcml0eSB0YXNrcy4gKi8NCisjZGVmaW5lIG1iTE9XRVJfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KKyNkZWZpbmUgbWJISUdIRVJfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAxICkNCisNCisvKiBCbG9jayB0aW1lcyB1c2VkIHdoZW4gc2VuZGluZyBhbmQgcmVjZWl2aW5nIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVycy4gKi8NCisjZGVmaW5lIG1iUlhfVFhfQkxPQ0tfVElNRQkJCXBkTVNfVE9fVElDS1MoIDEyNVVMICkNCisNCisvKiBBIGJsb2NrIHRpbWUgb2YgMCBtZWFucyAiZG9uJ3QgYmxvY2siLiAqLw0KKyNkZWZpbmUgbWJET05UX0JMT0NLCQkJCSggMCApDQorDQorLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFsbG9jYXRlZCB0byB0aGUgdGFza3MgdGhhdCBydW4gYXMgcGFydCBvZiB0aGlzIGRlbW8vDQordGVzdC4gIFRoZSBzdGFjayBzaXplIGlzIG92ZXIgZ2VuZXJvdXMgaW4gbW9zdCBjYXNlcy4gKi8NCisjZGVmaW5lIG1iU1RBQ0tfU0laRQkJCQkoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSArICggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFID4+IDEgKSApDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoNCisgKiBQZXJmb3JtcyB2YXJpb3VzIHRlc3RzIHRoYXQgZG8gbm90IHJlcXVpcmUgbXVsdGlwbGUgdGFza3MgdG8gaW50ZXJhY3QuDQorICovDQorc3RhdGljIHZvaWQgcHJ2U2luZ2xlVGFza1Rlc3RzKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKTsNCisNCisvKg0KKyAqIFRlc3RzIHNlbmRpbmcgYW5kIHJlY2VpdmluZyB2YXJpb3VzIGxlbmd0aHMgb2YgbWVzc2FnZXMgdmlhIGEgbWVzc2FnZSBidWZmZXIuDQorICogVGhlIGVjaG8gY2xpZW50IHNlbmRzIHRoZSBtZXNzYWdlcyB0byB0aGUgZWNobyBzZXJ2ZXIsIHdoaWNoIHRoZW4gc2VuZHMgdGhlDQorICogbWVzc2FnZSBiYWNrIHRvIHRoZSBlY2hvIGNsaWVudCB3aGljaCwgY2hlY2tzIGl0IHJlY2VpdmVzIGV4YWN0bHkgd2hhdCBpdA0KKyAqIHNlbnQuDQorICovDQorc3RhdGljIHZvaWQgcHJ2RWNob0NsaWVudCggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorc3RhdGljIHZvaWQgcHJ2RWNob1NlcnZlciggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorLyoNCisgKiBUYXNrcyB0aGF0IHNlbmQgYW5kIHJlY2VpdmUgdG8gYSBtZXNzYWdlIGJ1ZmZlciBhdCBhIGxvdyBwcmlvcml0eSBhbmQgd2l0aG91dA0KKyAqIGJsb2NraW5nLCBzbyB0aGUgc2VuZCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgaW50ZXJsZWF2ZSBpbiB0aW1lIGFzIHRoZSB0YXNrcw0KKyAqIGFyZSBzd2l0Y2hlZCBpbiBhbmQgb3V0Lg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nUmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCitzdGF0aWMgdm9pZCBwcnZOb25CbG9ja2luZ1NlbmRlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorCS8qIFRoaXMgZmlsZSB0ZXN0cyBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZXNzYWdlIGJ1ZmZlcnMuDQorCUFsbG9jYXRlIHRoZSBzdHJ1Y3R1cmVzIGFuZCBidWZmZXJzIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXRpY2FsbHkgYWxsb2NhdGVkDQorCW9iamVjdHMsIHdoaWNoIGdldCB1c2VkIGluIHRoZSBlY2hvIHRlc3RzLiAqLw0KKwlzdGF0aWMgdm9pZCBwcnZSZWNlaXZlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKwlzdGF0aWMgdm9pZCBwcnZTZW5kZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCisJc3RhdGljIFN0YXRpY01lc3NhZ2VCdWZmZXJfdCB4U3RhdGljTWVzc2FnZUJ1ZmZlcnNbIG1iTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdOw0KKwlzdGF0aWMgdWludDhfdCB1Y0J1ZmZlclN0b3JhZ2VbIG1iTlVNQkVSX09GX1NFTkRFUl9UQVNLUyBdWyBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyArIDEgXTsNCisJc3RhdGljIHVpbnQzMl90IHVsU2VuZGVyTG9vcENvdW50ZXJzWyBtYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1MgXSA9IHsgMCB9Ow0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogVGhlIGJ1ZmZlcnMgdXNlZCBieSB0aGUgZWNobyBjbGllbnQgYW5kIHNlcnZlciB0YXNrcy4gKi8NCit0eXBlZGVmIHN0cnVjdCBFQ0hPX01FU1NBR0VfQlVGRkVSUw0KK3sNCisJLyogSGFuZGxlcyB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgZGVzY3JpYmUgdGhlIG1lc3NhZ2UgYnVmZmVycy4gKi8NCisJTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhFY2hvQ2xpZW50QnVmZmVyOw0KKwlNZXNzYWdlQnVmZmVySGFuZGxlX3QgeEVjaG9TZXJ2ZXJCdWZmZXI7DQorfSBFY2hvTWVzc2FnZUJ1ZmZlcnNfdDsNCitzdGF0aWMgdWludDMyX3QgdWxFY2hvTG9vcENvdW50ZXJzWyBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgXSA9IHsgMCB9Ow0KKw0KKy8qIFRoZSBub24tYmxvY2tpbmcgdGFza3MgbW9uaXRvciB0aGVpciBvcGVyYXRpb24sIGFuZCBpZiBubyBlcnJvcnMgaGF2ZSBiZWVuDQorZm91bmQsIGluY3JlbWVudCB1bE5vbkJsb2NraW5nUnhDb3VudGVyLiAgeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZygpDQordGhlbiBjaGVja3MgdWxOb25CbG9ja2luZ1J4Q291bnRlciBhbmQgb25seSByZXR1cm5zIHBkUEFTUyBpZg0KK3VsTm9uQmxvY2tpbmdSeENvdW50ZXIgaXMgc3RpbGwgaW5jcmVtZW50aW5nLiAqLw0KK3N0YXRpYyB1aW50MzJfdCB1bE5vbkJsb2NraW5nUnhDb3VudGVyID0gMDsNCisNCisvKiBBIG1lc3NhZ2UgdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUgYnVmZmVyLCBwYXJ0cyBvZiB3aGljaCBhcmUgd3JpdHRlbiB0byB0aGUNCittZXNzYWdlIGJ1ZmZlciB0byB0ZXN0IHdyaXRpbmcgZGlmZmVyZW50IGxlbmd0aHMgYXQgZGlmZmVyZW50IG9mZnNldHMuICovDQorc3RhdGljIGNvbnN0IGNoYXIgKnBjNTVCeXRlU3RyaW5nID0gIk9uZSB0d28gdGhyZWUgZm91ciBmaXZlIHNpeCBzZXZlbiBlaWdodCBuaW5lIHRlbiBlbGV2ZSI7DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2U3RhcnRNZXNzYWdlQnVmZmVyVGFza3MoIHZvaWQgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXI7DQorDQorCS8qIFRoZSBlY2hvIHNlcnZlcnMgc2V0cyB1cCB0aGUgbWVzc2FnZSBidWZmZXJzIGJlZm9yZSBjcmVhdGluZyB0aGUgZWNobw0KKwljbGllbnQgdGFza3MuICBPbmUgc2V0IG9mIHRhc2tzIGhhcyB0aGUgc2VydmVyIGFzIHRoZSBoaWdoZXIgcHJpb3JpdHksIGFuZA0KKwl0aGUgb3RoZXIgaGFzIHRoZSBjbGllbnQgYXMgdGhlIGhpZ2hlciBwcmlvcml0eS4gKi8NCisJeFRhc2tDcmVhdGUoIHBydkVjaG9TZXJ2ZXIsICIxRWNob1NlcnZlciIsIG1iU1RBQ0tfU0laRSwgTlVMTCwgbWJISUdIRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJeFRhc2tDcmVhdGUoIHBydkVjaG9TZXJ2ZXIsICIyRWNob1NlcnZlciIsIG1iU1RBQ0tfU0laRSwgTlVMTCwgbWJMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKw0KKwkvKiBUaGUgbm9uIGJsb2NraW5nIHRhc2tzIHJ1biBjb250aW51b3VzbHkgYW5kIHdpbGwgaW50ZXJsZWF2ZSB3aXRoIGVhY2gNCisJb3RoZXIsIHNvIG11c3QgYmUgY3JlYXRlZCBhdCB0aGUgbG93ZXN0IHByaW9yaXR5LiAgVGhlIG1lc3NhZ2UgYnVmZmVyIHRoZXkNCisJdXNlIGlzIGNyZWF0ZWQgYW5kIHBhc3NlZCBpbiB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeE1lc3NhZ2VCdWZmZXIgPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSggbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJeFRhc2tDcmVhdGUoIHBydk5vbkJsb2NraW5nUmVjZWl2ZXJUYXNrLCAiTm9uQmxrUngiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsICggdm9pZCAqICkgeE1lc3NhZ2VCdWZmZXIsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCisJeFRhc2tDcmVhdGUoIHBydk5vbkJsb2NraW5nU2VuZGVyVGFzaywgIk5vbkJsa1R4IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApIHhNZXNzYWdlQnVmZmVyLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorDQorCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorCXsNCisJCS8qIFRoZSBzZW5kZXIgdGFza3Mgc2V0IHVwIHRoZSBtZXNzYWdlIGJ1ZmZlcnMgYmVmb3JlIGNyZWF0aW5nIHRoZQ0KKwkJcmVjZWl2ZXIgdGFza3MuICBQcmlvcml0aWVzIG11c3QgYmUgMCBhbmQgMSBhcyB0aGUgcHJpb3JpdHkgaXMgdXNlZCB0bw0KKwkJaW5kZXggaW50byB0aGUgeFN0YXRpY01lc3NhZ2VCdWZmZXJzIGFuZCB1Y0J1ZmZlclN0b3JhZ2UgYXJyYXlzLiAqLw0KKwkJeFRhc2tDcmVhdGUoIHBydlNlbmRlclRhc2ssICIxU2VuZGVyIiwgbWJTVEFDS19TSVpFLCBOVUxMLCBtYkhJR0hFUl9QUklPUklUWSwgTlVMTCApOw0KKwkJeFRhc2tDcmVhdGUoIHBydlNlbmRlclRhc2ssICIyU2VuZGVyIiwgbWJTVEFDS19TSVpFLCBOVUxMLCBtYkxPV0VSX1BSSU9SSVRZLCBOVUxMICk7DQorCX0NCisJI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2U2luZ2xlVGFza1Rlc3RzKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKQ0KK3sNCitzaXplX3QgeFJldHVybmVkLCB4SXRlbSwgeEV4cGVjdGVkU3BhY2U7DQorY29uc3Qgc2l6ZV90IHhNYXg2Qnl0ZU1lc3NhZ2VzID0gbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLyAoIDYgKyBtYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIICk7DQorY29uc3Qgc2l6ZV90IHg2Qnl0ZUxlbmd0aCA9IDYsIHgxN0J5dGVMZW5ndGggPSAxNzsNCit1aW50OF90ICpwdWNGdWxsQnVmZmVyLCAqcHVjRGF0YSwgKnB1Y1JlYWREYXRhOw0KK1RpY2tUeXBlX3QgeFRpbWVCZWZvcmVDYWxsLCB4VGltZUFmdGVyQ2FsbDsNCitjb25zdCBUaWNrVHlwZV90IHhCbG9ja1RpbWUgPSBwZE1TX1RPX1RJQ0tTKCAyNSApLCB4QWxsb3dhYmxlTWFyZ2luID0gcGRNU19UT19USUNLUyggMyApOw0KK1VCYXNlVHlwZV90IHV4T3JpZ2luYWxQcmlvcml0eTsNCisNCisJLyogUmVtb3ZlIHdhcm5pbmcgaW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgeEFsbG93YWJsZU1hcmdpbjsNCisNCisJLyogVG8gbWluaW1pc2Ugc3RhY2sgYW5kIGhlYXAgdXNhZ2UgYSBmdWxsIHNpemUgYnVmZmVyIGlzIGFsbG9jYXRlZCBmcm9tDQorCXRoZSBoZWFwLCB0aGVuIGJ1ZmZlcnMgd2hpY2ggaG9sZCBzbWFsbGVyIGFtb3VudHMgb2YgZGF0YSBhcmUgb3ZlcmxheWVkDQorCXdpdGggdGhlIGxhcmdlciBidWZmZXIgLSBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gdXNlIGJvdGggYXQgb25jZSEuICovDQorCXB1Y0Z1bGxCdWZmZXIgPSBwdlBvcnRNYWxsb2MoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggcHVjRnVsbEJ1ZmZlciApOw0KKw0KKwlwdWNEYXRhID0gcHVjRnVsbEJ1ZmZlcjsNCisJcHVjUmVhZERhdGEgPSBwdWNEYXRhICsgeDE3Qnl0ZUxlbmd0aDsNCisNCisJLyogTm90aGluZyBoYXMgYmVlbiBhZGRlZCBvciByZW1vdmVkIHlldCwgc28gZXhwZWN0IHRoZSBmcmVlIHNwYWNlIHRvIGJlDQorCWV4YWN0bHkgYXMgY3JlYXRlZC4gKi8NCisJeEV4cGVjdGVkU3BhY2UgPSB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlKCB4TWVzc2FnZUJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhFeHBlY3RlZFNwYWNlID09IG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJJc0VtcHR5KCB4TWVzc2FnZUJ1ZmZlciApID09IHBkVFJVRSApOw0KKw0KKw0KKwkvKiBUaGUgYnVmZmVyIGlzIDUwIGJ5dGVzIGxvbmcuICBXaGVuIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIGJ1ZmZlciBhbg0KKwlhZGRpdGlvbmFsIDQgYnl0ZXMgYXJlIGFkZGVkIHRvIGhvbGQgdGhlIGl0ZW0ncyBzaXplLiAgVGhhdCBtZWFucyBhZGRpbmcNCisJNiBieXRlcyB0byB0aGUgYnVmZmVyIHdpbGwgYWN0dWFsbHkgYWRkIDEwIGJ5dGVzIHRvIHRoZSBidWZmZXIuICBUaGVyZWZvcmUsDQorCXdpdGggYSA1MCBieXRlIGJ1ZmZlciwgYSBtYXhpbXVtIG9mIDUgNiBieXRlcyBpdGVtcyBjYW4gYmUgYWRkZWQgYmVmb3JlIHRoZQ0KKwlidWZmZXIgaXMgY29tcGxldGVseSBmdWxsLiAqLw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCB4TWF4NkJ5dGVNZXNzYWdlczsgeEl0ZW0rKyApDQorCXsNCisJCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJJc0Z1bGwoIHhNZXNzYWdlQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKw0KKwkJLyogR2VuZXJhdGUgcmVjb2duaXNhYmxlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIGJ1ZmZlci4gIFRoaXMgaXMganVzdA0KKwkJYXNjaWkgY2hhcmFjdGVycyB0aGF0IHNob3dzIHdoaWNoIGxvb3AgaXRlcmF0aW9uIHRoZSBkYXRhIHdhcyB3cml0dGVuDQorCQlpbi4gVGhlICdGcm9tSVNSJyB2ZXJzaW9uIGlzIHVzZWQgdG8gZ2l2ZSBpdCBzb21lIGV4ZXJjaXNlIGFzIGEgYmxvY2sNCisJCXRpbWUgaXMgbm90IHVzZWQuICBUaGF0IHJlcXVpcmVzIHRoZSBjYWxsIHRvIGJlIGluIGEgY3JpdGljYWwgc2VjdGlvbg0KKwkJc28gdGhpcyBjb2RlIGNhbiBhbHNvIHJ1biBvbiBGcmVlUlRPUyBwb3J0cyB0aGF0IGRvIG5vdCBzdXBwb3J0DQorCQlpbnRlcnJ1cHQgbmVzdGluZyAoYW5kIHNvIGRvbid0IGhhdmUgaW50ZXJydXB0IHNhZmUgY3JpdGljYWwNCisJCXNlY3Rpb25zKS4qLw0KKwkJbWVtc2V0KCAoIHZvaWQgKiApIHB1Y0RhdGEsICggKCBpbnQgKSAnMCcgKSArICggaW50ICkgeEl0ZW0sIHg2Qnl0ZUxlbmd0aCApOw0KKwkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQl7DQorCQkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgcHVjRGF0YSwgeDZCeXRlTGVuZ3RoLCBOVUxMICk7DQorCQl9DQorCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0geDZCeXRlTGVuZ3RoICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBUaGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciB3aWxsIGhhdmUgcmVkdWNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXIgZGF0YQ0KKwkJd3JpdHRlbiBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCB0byBzdG9yZSB0aGUgbGVuZ3RoDQorCQlvZiB0aGUgZGF0YSB3cml0dGVuIGludG8gdGhlIGJ1ZmZlci4gKi8NCisJCXhFeHBlY3RlZFNwYWNlIC09ICggeDZCeXRlTGVuZ3RoICsgbWJCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHhFeHBlY3RlZFNwYWNlICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCX0NCisNCisJLyogTm93IHRoZSBidWZmZXIgc2hvdWxkIGJlIGZ1bGwsIGFuZCBhdHRlbXB0aW5nIHRvIGFkZCBhbnl0aGluZyB3aWxsIHNob3VsZA0KKwlmYWlsLiAqLw0KKwljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVySXNGdWxsKCB4TWVzc2FnZUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0RhdGEsIHNpemVvZiggcHVjRGF0YVsgMCBdICksIG1iRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJLyogQWRkaW5nIHdpdGggYSB0aW1lb3V0IHNob3VsZCBhbHNvIGZhaWwgYWZ0ZXIgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICBUaGUNCisJcHJpb3JpdHkgaXMgdGVtcG9yYXJpbHkgYm9vc3RlZCBpbiB0aGlzIHBhcnQgb2YgdGhlIHRlc3QgdG8ga2VlcCB0aGUNCisJYWxsb3dhYmxlIG1hcmdpbiB0byBhIG1pbmltdW0uICovDQorCXV4T3JpZ2luYWxQcmlvcml0eSA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApOw0KKwl4VGltZUJlZm9yZUNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0RhdGEsIHNpemVvZiggcHVjRGF0YVsgMCBdICksIHhCbG9ja1RpbWUgKTsNCisJeFRpbWVBZnRlckNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCB1eE9yaWdpbmFsUHJpb3JpdHkgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPj0geEJsb2NrVGltZSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA8ICggeEJsb2NrVGltZSArIHhBbGxvd2FibGVNYXJnaW4gKSApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgeFRpbWVCZWZvcmVDYWxsOw0KKwkoIHZvaWQgKSB4VGltZUFmdGVyQ2FsbDsNCisNCisNCisJLyogVGhlIGJ1ZmZlciBpcyBub3cgZnVsbCBvZiBkYXRhIGluIHRoZSBmb3JtICIwMDAwMDAiLCAiMTExMTExIiwgZXRjLiAgTWFrZQ0KKwlzdXJlIHRoZSBkYXRhIGlzIHJlYWQgb3V0IGFzIGV4cGVjdGVkLiAqLw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCB4TWF4NkJ5dGVNZXNzYWdlczsgeEl0ZW0rKyApDQorCXsNCisJCS8qIEdlbmVyYXRlIHRoZSBkYXRhIHRoYXQgaXMgZXhwZWN0ZWQgdG8gYmUgcmVhZCBvdXQgZm9yIHRoaXMgbG9vcA0KKwkJaXRlcmF0aW9uLiAqLw0KKwkJbWVtc2V0KCAoIHZvaWQgKiApIHB1Y0RhdGEsICggKCBpbnQgKSAnMCcgKSArICggaW50ICkgeEl0ZW0sIHg2Qnl0ZUxlbmd0aCApOw0KKw0KKwkJLyogVHJ5IHJlYWRpbmcgdGhlIG1lc3NhZ2UgaW50byBhIGJ1ZmZlciB0aGF0IGlzIHRvbyBzbWFsbC4gIFRoZSBtZXNzYWdlDQorCQlzaG91bGQgcmVtYWluIGluIHRoZSBidWZmZXIuICovDQorCQl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4NkJ5dGVMZW5ndGggLSAxLCBtYkRPTlRfQkxPQ0sgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJCS8qIFJlYWQgdGhlIG5leHQgNiBieXRlcyBvdXQuICBUaGUgJ0Zyb21JU1InIHZlcnNpb24gaXMgdXNlZCB0byBnaXZlIGl0DQorCQlzb21lIGV4ZXJjaXNlIGFzIGEgYmxvY2sgdGltZSBpcyBub3QgdXNlZC4gIFRIYSByZXF1aXJlcyB0aGUgY29kZSB0byBiZQ0KKwkJaW4gYSBjcml0aWNhbCBzZWN0aW9uIHNvIHRoaXMgdGVzdCBjYW4gYmUgcnVuIHdpdGggRnJlZVJUT1MgcG9ydHMgdGhhdA0KKwkJZG8gbm90IHN1cHBvcnQgaW50ZXJydXB0IG5lc3RpbmcgKGFuZCB0aGVyZWZvcmUgZG9uJ3QgaGF2ZSBpbnRlcnJ1cHQNCisJCXNhZmUgY3JpdGljYWwgc2VjdGlvbnMpLiAqLw0KKwkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQl7DQorCQkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHg2Qnl0ZUxlbmd0aCwgTlVMTCApOw0KKwkJfQ0KKwkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHg2Qnl0ZUxlbmd0aCApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKw0KKwkJLyogRG9lcyB0aGUgZGF0YSByZWFkIG91dCBtYXRjaCB0aGF0IGV4cGVjdGVkPyAqLw0KKwkJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggdm9pZCAqICkgcHVjRGF0YSwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDZCeXRlTGVuZ3RoICkgPT0gMCApOw0KKw0KKwkJLyogVGhlIHNwYWNlIGluIHRoZSBidWZmZXIgd2lsbCBoYXZlIGluY3JlYXNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXINCisJCWRhdGEgcmVhZCBmcm9tIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlIGFtb3VudCBvZiBzcGFjZSB1c2VkIHRvIHN0b3JlIHRoZQ0KKwkJbGVuZ3RoIG9mIHRoZSBkYXRhIHJlYWQgaW50byB0aGUgYnVmZmVyLiAqLw0KKwkJeEV4cGVjdGVkU3BhY2UgKz0gKCB4NkJ5dGVMZW5ndGggKyBtYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIICk7DQorCQl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlKCB4TWVzc2FnZUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0geEV4cGVjdGVkU3BhY2UgKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJfQ0KKw0KKwkvKiBUaGUgYnVmZmVyIHNob3VsZCBiZSBlbXB0eSBhZ2Fpbi4gKi8NCisJY29uZmlnQVNTRVJUKCB4TWVzc2FnZUJ1ZmZlcklzRW1wdHkoIHhNZXNzYWdlQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCXhFeHBlY3RlZFNwYWNlID0geE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKTsNCisJY29uZmlnQVNTRVJUKCB4RXhwZWN0ZWRTcGFjZSA9PSBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwkvKiBSZWFkaW5nIHdpdGggYSB0aW1lb3V0IHNob3VsZCBhbHNvIGZhaWwgYWZ0ZXIgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICBUaGUNCisJcHJpb3JpdHkgaXMgdGVtcG9yYXJpbHkgYm9vc3RlZCBpbiB0aGlzIHBhcnQgb2YgdGhlIHRlc3QgdG8ga2VlcCB0aGUNCisJYWxsb3dhYmxlIG1hcmdpbiB0byBhIG1pbmltdW0uICovDQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApOw0KKwl4VGltZUJlZm9yZUNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4NkJ5dGVMZW5ndGgsIHhCbG9ja1RpbWUgKTsNCisJeFRpbWVBZnRlckNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCB1eE9yaWdpbmFsUHJpb3JpdHkgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPj0geEJsb2NrVGltZSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA8ICggeEJsb2NrVGltZSArIHhBbGxvd2FibGVNYXJnaW4gKSApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgeFRpbWVCZWZvcmVDYWxsOw0KKwkoIHZvaWQgKSB4VGltZUFmdGVyQ2FsbDsNCisNCisNCisJLyogSW4gdGhlIG5leHQgbG9vcCAxNyBieXRlcyBhcmUgd3JpdHRlbiB0byB0aGVuIHJlYWQgb3V0IG9uIGVhY2ggaXRlcmF0aW9uLg0KKwlUaGUgZXhwZWN0ZWQgbGVuZ3RoIHZhcmlhYmxlIGlzIGFsd2F5cyB1c2VkIGFmdGVyIDE3IGJ5dGVzIGhhdmUgYmVlbiB3cml0dGVuDQorCWludG8gdGhlIGJ1ZmZlciAtIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgaXMgYWxzbyB3cml0dGVuLCBtYWtpbmcgYSB0b3RhbA0KKwlvZiAyMSBieXRlcyBjb25zdW1lZCBmb3IgZWFjaCAxNyBieXRlIG1lc3NhZ2UuICovDQorCXhFeHBlY3RlZFNwYWNlID0gbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSAoIHgxN0J5dGVMZW5ndGggKyBtYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIICk7DQorDQorCS8qIFJlYWRpbmcgYW5kIHdyaXRpbmcgMTcgYnl0ZXMgYXQgYSB0aW1lIHdpbGwgcmVzdWx0IGluIDIxIGJ5dGVzIGJlaW5nDQorCXdyaXR0ZW4gaW50byB0aGUgYnVmZmVyLCBhbmQgYXMgNTAgaXMgbm90IGRpdmlzaWJsZSBieSAyMSwgd3JpdGluZyBtdWx0aXBsZQ0KKwl0aW1lcyB3aWxsIGNhdXNlIHRoZSBkYXRhIHRvIHdyYXAgaW4gdGhlIGJ1ZmZlci4qLw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCAxMDA7IHhJdGVtKysgKQ0KKwl7DQorCQkvKiBHZW5lcmF0ZSByZWNvZ25pc2FibGUgZGF0YSB0byB3cml0ZSB0byB0aGUgcXVldWUuICBUaGlzIGlzIGp1c3QNCisJCWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBzaG93cyB3aGljaCBsb29wIGl0ZXJhdGlvbiB0aGUgZGF0YSB3YXMgd3JpdHRlbg0KKwkJaW4uICovDQorCQltZW1zZXQoICggdm9pZCAqICkgcHVjRGF0YSwgKCAoIGludCApICcwJyApICsgKCBpbnQgKSB4SXRlbSwgeDE3Qnl0ZUxlbmd0aCApOw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCB4MTdCeXRlTGVuZ3RoLCBtYkRPTlRfQkxPQ0sgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHgxN0J5dGVMZW5ndGggKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJCS8qIFRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIHdpbGwgaGF2ZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgb2YgdXNlciBkYXRhDQorCQl3cml0dGVuIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlIGFtb3VudCBvZiBzcGFjZSB1c2VkIHRvIHN0b3JlIHRoZSBsZW5ndGgNCisJCW9mIHRoZSBkYXRhIHdyaXR0ZW4gaW50byB0aGUgYnVmZmVyLiAqLw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHhFeHBlY3RlZFNwYWNlICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBSZWFkIHRoZSAxNyBieXRlcyBvdXQgYWdhaW4uICovDQorCQl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4MTdCeXRlTGVuZ3RoLCBtYkRPTlRfQkxPQ0sgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHgxN0J5dGVMZW5ndGggKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJCS8qIERvZXMgdGhlIGRhdGEgcmVhZCBvdXQgbWF0Y2ggdGhhdCBleHBlY3RlZD8gKi8NCisJCWNvbmZpZ0FTU0VSVCggbWVtY21wKCAoIHZvaWQgKiApIHB1Y0RhdGEsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHgxN0J5dGVMZW5ndGggKSA9PSAwICk7DQorCX0NCisNCisJLyogVGhlIGJ1ZmZlciBzaG91bGQgYmUgZW1wdHkgYWdhaW4uICovDQorCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJJc0VtcHR5KCB4TWVzc2FnZUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwl4RXhwZWN0ZWRTcGFjZSA9IHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUoIHhNZXNzYWdlQnVmZmVyICk7DQorCWNvbmZpZ0FTU0VSVCggeEV4cGVjdGVkU3BhY2UgPT0gbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJLyogQ2Fubm90IHdyaXRlIHdpdGhpbiBzaXplb2YoIHNpemVfdCApIChhc3N1bWVkIHRvIGJlIDQgYnl0ZXMgaW4gdGhpcyB0ZXN0KQ0KKwlieXRlcyBvZiB0aGUgZnVsbCA1MCBieXRlcywgYXMgdGhhdCB3b3VsZCBub3QgbGVhdmUgc3BhY2UgZm9yIHRoZSBmb3VyIGJ5dGVzDQorCXRha2VuIGJ5IHRoZSBkYXRhIGxlbmd0aC4gKi8NCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU1Qnl0ZVN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMsIG1iRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU1Qnl0ZVN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSAxLCBtYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gMiwgbWJET05UX0JMT0NLICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTVCeXRlU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIDMsIG1iRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJLyogQ2FuIHdyaXRlIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSBieXRlcyB0aG91Z2guICovDQorCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSwgbWJET05UX0JMT0NLICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyUmVjZWl2ZSggeE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgcHVjRnVsbEJ1ZmZlciwgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSBzaXplb2YoIHNpemVfdCApLCBtYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgKSApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCWNvbmZpZ0FTU0VSVCggbWVtY21wKCAoIGNvbnN0IHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsIHBjNTVCeXRlU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgKSA9PSAwICk7DQorDQorCS8qIENsZWFuIHVwLiAqLw0KKwl2UG9ydEZyZWUoIHB1Y0Z1bGxCdWZmZXIgKTsNCisJeE1lc3NhZ2VCdWZmZXJSZXNldCggeE1lc3NhZ2VCdWZmZXIgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2Tm9uQmxvY2tpbmdTZW5kZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXI7DQoraW50MzJfdCBpRGF0YVRvU2VuZCA9IDA7DQorc2l6ZV90IHhTdHJpbmdMZW5ndGg7DQorY29uc3QgaW50MzJfdCBpTWF4VmFsdWUgPSAxNTAwOw0KK2NoYXIgY1R4U3RyaW5nWyAxMiBdOyAvKiBMYXJnZSBlbm91Z2ggdG8gaG9sZCBhIDMyIG51bWJlciBpbiBBU0NJSS4gKi8NCisNCisJLyogSW4gdGhpcyBjYXNlIHRoZSBtZXNzYWdlIGJ1ZmZlciBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQgYW5kIGlzIHBhc3NlZA0KKwlpbnRvIHRoZSB0YXNrIHVzaW5nIHRoZSB0YXNrJ3MgcGFyYW1ldGVyLiAqLw0KKwl4TWVzc2FnZUJ1ZmZlciA9ICggTWVzc2FnZUJ1ZmZlckhhbmRsZV90ICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBDcmVhdGUgYSBzdHJpbmcgZnJvbSBhbiBpbmNyZW1lbnRpbmcgbnVtYmVyLiAgVGhlIGxlbmd0aCBvZiB0aGUNCisJc3RyaW5nIHdpbGwgaW5jcmVhc2UgYW5kIGRlY3JlYXNlIGFzIHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGluY3JlYXNlcw0KKwl0aGVuIG92ZXJmbG93cy4gKi8NCisJbWVtc2V0KCBjVHhTdHJpbmcsIDB4MDAsIHNpemVvZiggY1R4U3RyaW5nICkgKTsNCisJc3ByaW50ZiggY1R4U3RyaW5nLCAiJWQiLCAoIGludCApIGlEYXRhVG9TZW5kICk7DQorCXhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIGNUeFN0cmluZyApOw0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogRG9lc24ndCBibG9jayBzbyBjYWxscyBjYW4gaW50ZXJsZWF2ZSB3aXRoIHRoZSBub24tYmxvY2tpbmcNCisJCXJlY2VpdmVzIHBlcmZvcm1lZCBieSBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzaygpLiAqLw0KKwkJaWYoIHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgY1R4U3RyaW5nLCBzdHJsZW4oIGNUeFN0cmluZyApLCBtYkRPTlRfQkxPQ0sgKSA9PSB4U3RyaW5nTGVuZ3RoICkNCisJCXsNCisJCQlpRGF0YVRvU2VuZCsrOw0KKw0KKwkJCWlmKCBpRGF0YVRvU2VuZCA+IGlNYXhWYWx1ZSApDQorCQkJew0KKwkJCQkvKiBUaGUgdmFsdWUgc2VudCBpcyByZXNldCBiYWNrIHRvIDAgdG8gZW5zdXJlIHRoZSBzdHJpbmcgYmVpbmcgc2VudA0KKwkJCQlkb2VzIG5vdCByZW1haW4gYXQgdGhlIHNhbWUgbGVuZ3RoIGZvciB0b28gbG9uZy4gKi8NCisJCQkJaURhdGFUb1NlbmQgPSAwOw0KKwkJCX0NCisNCisJCQkvKiBDcmVhdGUgdGhlIG5leHQgc3RyaW5nLiAqLw0KKwkJCW1lbXNldCggY1R4U3RyaW5nLCAweDAwLCBzaXplb2YoIGNUeFN0cmluZyApICk7DQorCQkJc3ByaW50ZiggY1R4U3RyaW5nLCAiJWQiLCAoIGludCApIGlEYXRhVG9TZW5kICk7DQorCQkJeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggY1R4U3RyaW5nICk7DQorCQl9DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlcjsNCitCYXNlVHlwZV90IHhOb25CbG9ja2luZ1JlY2VpdmVFcnJvciA9IHBkRkFMU0U7DQoraW50MzJfdCBpRGF0YVRvU2VuZCA9IDA7DQorc2l6ZV90IHhTdHJpbmdMZW5ndGgsIHhSZWNlaXZlTGVuZ3RoOw0KK2NvbnN0IGludDMyX3QgaU1heFZhbHVlID0gMTUwMDsNCitjaGFyIGNFeHBlY3RlZFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMiBudW1iZXIgaW4gQVNDSUkuICovDQorY2hhciBjUnhTdHJpbmdbIDEyIF07DQorDQorCS8qIEluIHRoaXMgY2FzZSB0aGUgbWVzc2FnZSBidWZmZXIgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIGFuZCBpcyBwYXNzZWQNCisJaW50byB0aGUgdGFzayB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeE1lc3NhZ2VCdWZmZXIgPSAoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogQ3JlYXRlIGEgc3RyaW5nIGZyb20gYW4gaW5jcmVtZW50aW5nIG51bWJlci4gIFRoZSBsZW5ndGggb2YgdGhlDQorCXN0cmluZyB3aWxsIGluY3JlYXNlIGFuZCBkZWNyZWFzZSBhcyB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbmNyZWFzZXMNCisJdGhlbiBvdmVyZmxvd3MuICBUaGlzIHNob3VsZCBhbHdheXMgbWF0Y2ggdGhlIHN0cmluZyBzZW50IHRvIHRoZSBidWZmZXIgYnkNCisJdGhlIG5vbiBibG9ja2luZyBzZW5kZXIgdGFzay4gKi8NCisJbWVtc2V0KCBjRXhwZWN0ZWRTdHJpbmcsIDB4MDAsIHNpemVvZiggY0V4cGVjdGVkU3RyaW5nICkgKTsNCisJbWVtc2V0KCBjUnhTdHJpbmcsIDB4MDAsIHNpemVvZiggY1J4U3RyaW5nICkgKTsNCisJc3ByaW50ZiggY0V4cGVjdGVkU3RyaW5nLCAiJWQiLCAoIGludCApIGlEYXRhVG9TZW5kICk7DQorCXhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIGNFeHBlY3RlZFN0cmluZyApOw0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogRG9lc24ndCBibG9jayBzbyBjYWxscyBjYW4gaW50ZXJsZWF2ZSB3aXRoIHRoZSBub24tYmxvY2tpbmcNCisJCXJlY2VpdmVzIHBlcmZvcm1lZCBieSBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzaygpLiAqLw0KKwkJeFJlY2VpdmVMZW5ndGggPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIGNSeFN0cmluZywgc2l6ZW9mKCBjUnhTdHJpbmcgKSwgbWJET05UX0JMT0NLICk7DQorDQorCQkvKiBTaG91bGQgb25seSBldmVyIHJlY2VpdmUgbm8gZGF0YSBpcyBhdmFpbGFibGUsIG9yIHRoZSBleHBlY3RlZA0KKwkJbGVuZ3RoIG9mIGRhdGEgaXMgYXZhaWxhYmxlLiAqLw0KKwkJaWYoICggeFJlY2VpdmVMZW5ndGggIT0gMCApICYmICggeFJlY2VpdmVMZW5ndGggIT0geFN0cmluZ0xlbmd0aCApICkNCisJCXsNCisJCQl4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPSBwZFRSVUU7DQorCQl9DQorDQorCQlpZiggeFJlY2VpdmVMZW5ndGggPT0geFN0cmluZ0xlbmd0aCApDQorCQl7DQorCQkJLyogRW5zdXJlIHRoZSByZWNlaXZlZCBkYXRhIHdhcyB0aGF0IGV4cGVjdGVkLCB0aGVuIGdlbmVyYXRlIHRoZQ0KKwkJCW5leHQgZXhwZWN0ZWQgc3RyaW5nLiAqLw0KKwkJCWlmKCBzdHJjbXAoIGNSeFN0cmluZywgY0V4cGVjdGVkU3RyaW5nICkgIT0gMCApDQorCQkJew0KKwkJCQl4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPSBwZFRSVUU7DQorCQkJfQ0KKw0KKwkJCWlEYXRhVG9TZW5kKys7DQorDQorCQkJaWYoIGlEYXRhVG9TZW5kID4gaU1heFZhbHVlICkNCisJCQl7DQorCQkJCS8qIFRoZSB2YWx1ZSBzZW50IGlzIHJlc2V0IGJhY2sgdG8gMCB0byBlbnN1cmUgdGhlIHN0cmluZyBiZWluZyBzZW50DQorCQkJCWRvZXMgbm90IHJlbWFpbiBhdCB0aGUgc2FtZSBsZW5ndGggZm9yIHRvbyBsb25nLiAqLw0KKwkJCQlpRGF0YVRvU2VuZCA9IDA7DQorCQkJfQ0KKw0KKwkJCW1lbXNldCggY0V4cGVjdGVkU3RyaW5nLCAweDAwLCBzaXplb2YoIGNFeHBlY3RlZFN0cmluZyApICk7DQorCQkJbWVtc2V0KCBjUnhTdHJpbmcsIDB4MDAsIHNpemVvZiggY1J4U3RyaW5nICkgKTsNCisJCQlzcHJpbnRmKCBjRXhwZWN0ZWRTdHJpbmcsICIlZCIsICggaW50ICkgaURhdGFUb1NlbmQgKTsNCisJCQl4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBjRXhwZWN0ZWRTdHJpbmcgKTsNCisNCisJCQlpZiggeE5vbkJsb2NraW5nUmVjZWl2ZUVycm9yID09IHBkRkFMU0UgKQ0KKwkJCXsNCisJCQkJLyogTm8gZXJyb3JzIGRldGVjdGVkIHNvIGluY3JlbWVudCB0aGUgY291bnRlciB0aGF0IGxldHMgdGhlDQorCQkJCWNoZWNrIHRhc2sga25vdyB0aGlzIHRlc3QgaXMgc3RpbGwgZnVuY3Rpb25pbmcgY29ycmVjdGx5LiAqLw0KKwkJCQl1bE5vbkJsb2NraW5nUnhDb3VudGVyKys7DQorCQkJfQ0KKwkJfQ0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorDQorCXN0YXRpYyB2b2lkIHBydlNlbmRlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorCXsNCisJTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyLCB4VGVtcE1lc3NhZ2VCdWZmZXI7DQorCWludDMyX3QgaURhdGFUb1NlbmQgPSAwOw0KKwljb25zdCBpbnQzMl90IGlTZW5kc0JldHdlZW5JbmNyZW1lbnRzID0gMTAwOw0KKwljaGFyIGNUeFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMiBudW1iZXIgaW4gQVNDSUkuICovDQorCWNvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gbWJSWF9UWF9CTE9DS19USU1FLCB4U2hvcnREZWxheSA9IHBkTVNfVE9fVElDS1MoIDUwICk7DQorCVN0YXRpY01lc3NhZ2VCdWZmZXJfdCB4U3RhdGljTWVzc2FnZUJ1ZmZlcjsNCisNCisNCisJLyogVGhlIHRhc2sncyBwcmlvcml0eSBpcyB1c2VkIGFzIGFuIGluZGV4IGludG8gdGhlIGxvb3AgY291bnRlcnMgdXNlZCB0bw0KKwlpbmRpY2F0ZSB0aGlzIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCisJVUJhc2VUeXBlX3QgdXhJbmRleCA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorDQorCQkvKiBNYWtlIHN1cmUgYSBjaGFuZ2UgaW4gcHJpb3JpdHkgZG9lcyBub3QgaW5hZHZlcnRlbnRseSByZXN1bHQgaW4gYW4NCisJCWludmFsaWQgYXJyYXkgaW5kZXguICovDQorCQljb25maWdBU1NFUlQoIHV4SW5kZXggPCBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgKTsNCisNCisJCS8qIEF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLiAqLw0KKwkJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkJeE1lc3NhZ2VCdWZmZXIgPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZVN0YXRpYyggc2l6ZW9mKCB1Y0J1ZmZlclN0b3JhZ2UgKSAvIG1iTlVNQkVSX09GX1NFTkRFUl9UQVNLUywgLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiBlYWNoIGJ1ZmZlciBpbiB0aGUgYXJyYXkuICovDQorCQkJCQkJCQkJCQkJCSAmKCB1Y0J1ZmZlclN0b3JhZ2VbIHV4SW5kZXggXVsgMCBdICksIC8qIFRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIgdG8gdXNlIHdpdGhpbiB0aGUgYXJyYXkuICovDQorCQkJCQkJCQkJCQkJCSAmKCB4U3RhdGljTWVzc2FnZUJ1ZmZlcnNbIHV4SW5kZXggXSApICk7IC8qIFRoZSBzdGF0aWMgbWVzc2FnZSBidWZmZXIgc3RydWN0dXJlIHRvIHVzZSB3aXRoaW4gdGhlIGFycmF5LiAqLw0KKw0KKwkJLyogTm93IHRoZSBtZXNzYWdlIGJ1ZmZlciBoYXMgYmVlbiBjcmVhdGVkIHRoZSByZWNlaXZlciB0YXNrIGNhbiBiZSBjcmVhdGVkLg0KKwkJSWYgdGhpcyBzZW5kZXIgdGFzayBoYXMgdGhlIGhpZ2hlciBwcmlvcml0eSB0aGVuIHRoZSByZWNlaXZlciB0YXNrIGlzDQorCQljcmVhdGVkIGF0IHRoZSBsb3dlciBwcmlvcml0eSAtIGlmIHRoaXMgc2VuZGVyIHRhc2sgaGFzIHRoZSBsb3dlciBwcmlvcml0eQ0KKwkJdGhlbiB0aGUgcmVjZWl2ZXIgdGFzayBpcyBjcmVhdGVkIGF0IHRoZSBoaWdoZXIgcHJpb3JpdHkuICovDQorCQlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBtYkxPV0VSX1BSSU9SSVRZICkNCisJCXsNCisJCQkvKiBIZXJlIHBydlNpbmdsZVRhc2tUZXN0cygpIHBlcmZvcm1zIHZhcmlvdXMgdGVzdHMgb24gYSBtZXNzYWdlIGJ1ZmZlcg0KKwkJCXRoYXQgd2FzIGNyZWF0ZWQgc3RhdGljYWxseS4gKi8NCisJCQlwcnZTaW5nbGVUYXNrVGVzdHMoIHhNZXNzYWdlQnVmZmVyICk7DQorCQkJeFRhc2tDcmVhdGUoIHBydlJlY2VpdmVyVGFzaywgIk1zZ1JlY2VpdmVyIiwgbWJTVEFDS19TSVpFLCAgKCB2b2lkICogKSB4TWVzc2FnZUJ1ZmZlciwgbWJISUdIRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl4VGFza0NyZWF0ZSggcHJ2UmVjZWl2ZXJUYXNrLCAiTXNnUmVjZWl2ZXIiLCBtYlNUQUNLX1NJWkUsICAoIHZvaWQgKiApIHhNZXNzYWdlQnVmZmVyLCBtYkxPV0VSX1BSSU9SSVRZLCBOVUxMICk7DQorCQl9DQorDQorCQlmb3IoIDs7ICkNCisJCXsNCisJCQkvKiBDcmVhdGUgYSBzdHJpbmcgZnJvbSBhbiBpbmNyZW1lbnRpbmcgbnVtYmVyLiAgVGhlIGxlbmd0aCBvZiB0aGUNCisJCQlzdHJpbmcgd2lsbCBpbmNyZWFzZSBhbmQgZGVjcmVhc2UgYXMgdGhlIHZhbHVlIG9mIHRoZSBudW1iZXIgaW5jcmVhc2VzDQorCQkJdGhlbiBvdmVyZmxvd3MuICovDQorCQkJbWVtc2V0KCBjVHhTdHJpbmcsIDB4MDAsIHNpemVvZiggY1R4U3RyaW5nICkgKTsNCisJCQlzcHJpbnRmKCBjVHhTdHJpbmcsICIlZCIsICggaW50ICkgaURhdGFUb1NlbmQgKTsNCisJCQl4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIGNUeFN0cmluZywgc3RybGVuKCBjVHhTdHJpbmcgKSwgeFRpY2tzVG9XYWl0ICk7DQorDQorCQkJaURhdGFUb1NlbmQrKzsNCisNCisJCQlpZiggKCBpRGF0YVRvU2VuZCAlIGlTZW5kc0JldHdlZW5JbmNyZW1lbnRzICkgPT0gMCApDQorCQkJew0KKwkJCQkvKiBJbmNyZW1lbnQgYSBsb29wIGNvdW50ZXIgc28gYSBjaGVjayB0YXNrIGNhbiB0ZWxsIHRoaXMgdGFzayBpcw0KKwkJCQlzdGlsbCBydW5uaW5nIGFzIGV4cGVjdGVkLiAqLw0KKwkJCQl1bFNlbmRlckxvb3BDb3VudGVyc1sgdXhJbmRleCBdKys7DQorDQorCQkJCWlmKCB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApID09IG1iSElHSEVSX1BSSU9SSVRZICkNCisJCQkJew0KKwkJCQkJLyogQWxsb3cgb3RoZXIgdGFza3MgdG8gcnVuLiAqLw0KKwkJCQkJdlRhc2tEZWxheSggeFNob3J0RGVsYXkgKTsNCisJCQkJfQ0KKw0KKwkJCQkvKiBUaGlzIG1lc3NhZ2UgYnVmZmVyIGlzIGp1c3QgY3JlYXRlZCBhbmQgZGVsZXRlZCB0byBlbnN1cmUgbm8NCisJCQkJaXNzdWVzIHdoZW4gYXR0ZW1wdGluZyB0byBkZWxldGUgYSBtZXNzYWdlIGJ1ZmZlciB0aGF0IHdhcw0KKwkJCQljcmVhdGVkIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gIFRvIHNhdmUgc3RhY2sgc3BhY2UNCisJCQkJdGhlIGJ1ZmZlciBpcyBzZXQgdG8gcG9pbnQgdG8gdGhlIGNUeFN0cmluZyBhcnJheSAtIHRoaXMgaXMNCisJCQkJb2sgYmVjYXVzZSBub3RoaW5nIGlzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIG1lbW9yeS4gKi8NCisJCQkJeFRlbXBNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVvZiggY1R4U3RyaW5nICksICggdWludDhfdCAqICkgY1R4U3RyaW5nLCAmeFN0YXRpY01lc3NhZ2VCdWZmZXIgKTsNCisJCQkJdk1lc3NhZ2VCdWZmZXJEZWxldGUoIHhUZW1wTWVzc2FnZUJ1ZmZlciApOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgICkNCisNCisJc3RhdGljIHZvaWQgcHJ2UmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKwl7DQorCU1lc3NhZ2VCdWZmZXJIYW5kbGVfdCAqIGNvbnN0IHB4TWVzc2FnZUJ1ZmZlciA9ICggTWVzc2FnZUJ1ZmZlckhhbmRsZV90ICogKSBwdlBhcmFtZXRlcnM7DQorCWNoYXIgY0V4cGVjdGVkU3RyaW5nWyAxMiBdOyAvKiBMYXJnZSBlbm91Z2ggdG8gaG9sZCBhIDMyLWJpdCBudW1iZXIgaW4gQVNDSUkuICovDQorCWNoYXIgY1JlY2VpdmVkU3RyaW5nWyAxMiBdOyAvKiBMYXJnZSBlbm91Z2ggdG8gaG9sZCBhIDMyLWJpdCBudW1iZXIgaW4gQVNDSUkuICovDQorCWludDMyX3QgaUV4cGVjdGVkRGF0YSA9IDA7DQorCWNvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gcGRNU19UT19USUNLUyggNVVMICk7DQorCXNpemVfdCB4UmVjZWl2ZWRCeXRlczsNCisNCisJCWZvciggOzsgKQ0KKwkJew0KKwkJCS8qIEdlbmVyYXRlIHRoZSBuZXh0IGV4cGVjdGVkIHN0cmluZyBpbiB0aGUgY0V4cGVjdGVkU3RyaW5nIGJ1ZmZlci4gKi8NCisJCQltZW1zZXQoIGNFeHBlY3RlZFN0cmluZywgMHgwMCwgc2l6ZW9mKCBjRXhwZWN0ZWRTdHJpbmcgKSApOw0KKwkJCXNwcmludGYoIGNFeHBlY3RlZFN0cmluZywgIiVkIiwgKCBpbnQgKSBpRXhwZWN0ZWREYXRhICk7DQorDQorCQkJLyogUmVjZWl2ZSB0aGUgbmV4dCBzdHJpbmcgZnJvbSB0aGUgbWVzc2FnZSBidWZmZXIuICovDQorCQkJbWVtc2V0KCBjUmVjZWl2ZWRTdHJpbmcsIDB4MDAsIHNpemVvZiggY1JlY2VpdmVkU3RyaW5nICkgKTsNCisNCisJCQlkbw0KKwkJCXsNCisJCQkJeFJlY2VpdmVkQnl0ZXMgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBjUmVjZWl2ZWRTdHJpbmcsIHNpemVvZiggY0V4cGVjdGVkU3RyaW5nICksIHhUaWNrc1RvV2FpdCApOw0KKw0KKwkJCX0gd2hpbGUoIHhSZWNlaXZlZEJ5dGVzID09IDAgKTsNCisNCisJCQkvKiBFbnN1cmUgdGhlIHJlY2VpdmVkIHN0cmluZyBtYXRjaGVzIHRoZSBleHBlY3RlZCBzdHJpbmcuICovDQorCQkJY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNFeHBlY3RlZFN0cmluZywgY1JlY2VpdmVkU3RyaW5nICkgPT0gMCApOw0KKw0KKwkJCWlFeHBlY3RlZERhdGErKzsNCisJCX0NCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2RWNob0NsaWVudCggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorc2l6ZV90IHhTZW5kTGVuZ3RoID0gMCwgdXg7DQorY2hhciAqcGNTdHJpbmdUb1NlbmQsICpwY1N0cmluZ1JlY2VpdmVkLCBjTmV4dENoYXIgPSBtYkFTQ0lJX1NQQUNFOw0KK2NvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gcGRNU19UT19USUNLUyggNTAgKTsNCisNCisvKiBUaGUgdGFzaydzIHByaW9yaXR5IGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byB0aGUgbG9vcCBjb3VudGVycyB1c2VkIHRvDQoraW5kaWNhdGUgdGhpcyB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQorVUJhc2VUeXBlX3QgdXhJbmRleCA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorDQorLyogUG9pbnRlcnMgdG8gdGhlIGNsaWVudCBhbmQgc2VydmVyIG1lc3NhZ2UgYnVmZmVycyBhcmUgcGFzc2VkIGludG8gdGhpcyB0YXNrDQordXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorRWNob01lc3NhZ2VCdWZmZXJzX3QgKnB4TWVzc2FnZUJ1ZmZlcnMgPSAoIEVjaG9NZXNzYWdlQnVmZmVyc190ICogKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIFByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogQ3JlYXRlIHRoZSBidWZmZXIgaW50byB3aGljaCBzdHJpbmdzIHRvIHNlbmQgdG8gdGhlIHNlcnZlciB3aWxsIGJlDQorCWNyZWF0ZWQsIGFuZCB0aGUgYnVmZmVyIGludG8gd2hpY2ggc3RyaW5ncyBlY2hvZWQgYmFjayBmcm9tIHRoZSBzZXJ2ZXIgd2lsbA0KKwliZSBjb3BpZWQuICovDQorCXBjU3RyaW5nVG9TZW5kID0gKCBjaGFyICogKSBwdlBvcnRNYWxsb2MoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCXBjU3RyaW5nUmVjZWl2ZWQgPSAoIGNoYXIgKiApIHB2UG9ydE1hbGxvYyggbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJY29uZmlnQVNTRVJUKCBwY1N0cmluZ1RvU2VuZCApOw0KKwljb25maWdBU1NFUlQoIHBjU3RyaW5nUmVjZWl2ZWQgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIEdlbmVyYXRlIHRoZSBsZW5ndGggb2YgdGhlIG5leHQgc3RyaW5nIHRvIHNlbmQuICovDQorCQl4U2VuZExlbmd0aCsrOw0KKw0KKwkJLyogVGhlIG1lc3NhZ2UgYnVmZmVyIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCB2YXJpYWJsZSBsZW5ndGggZGF0YSwgc28NCisJCWVhY2ggZGF0YSBpdGVtIHJlcXVpcmVzIHNpemVvZiggc2l6ZV90ICkgYnl0ZXMgdG8gaG9sZCB0aGUgZGF0YSdzDQorCQlsZW5ndGgsIGhlbmNlIHRoZSBzaXplb2YoKSBpbiB0aGUgaWYoKSBjb25kaXRpb24gYmVsb3cuICovDQorCQlpZiggeFNlbmRMZW5ndGggPiAoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSApICkNCisJCXsNCisJCQkvKiBCYWNrIHRvIGEgc3RyaW5nIGxlbmd0aCBvZiAxLiAqLw0KKwkJCXhTZW5kTGVuZ3RoID0gc2l6ZW9mKCBjaGFyICk7DQorDQorCQkJLyogTWFpbnRhaW4gYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgY29kZSBleGVjdXRlcyBzbyBhDQorCQkJY2hlY2sgdGFzayBjYW4gZGV0ZXJtaW5lIGlmIHRoaXMgdGFzayBpcyBzdGlsbCBmdW5jdGlvbmluZyBhcw0KKwkJCWV4cGVjdGVkIG9yIG5vdC4gIEFzIHRoZXJlIGFyZSB0d28gY2xpZW50IHRhc2tzLCBhbmQgdGhlIHByaW9yaXRpZXMNCisJCQl1c2VkIGFyZSAwIGFuZCAxLCB0aGUgdGFzaydzIHByaW9yaXR5IGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byB0aGUNCisJCQlsb29wIGNvdW50IGFycmF5LiAqLw0KKwkJCXVsRWNob0xvb3BDb3VudGVyc1sgdXhJbmRleCBdKys7DQorCQl9DQorDQorCQltZW1zZXQoIHBjU3RyaW5nVG9TZW5kLCAweDAwLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwkJZm9yKCB1eCA9IDA7IHV4IDwgeFNlbmRMZW5ndGg7IHV4KysgKQ0KKwkJew0KKwkJCXBjU3RyaW5nVG9TZW5kWyB1eCBdID0gY05leHRDaGFyOw0KKw0KKwkJCWNOZXh0Q2hhcisrOw0KKw0KKwkJCWlmKCBjTmV4dENoYXIgPiBtYkFTQ0lJX1RJTERBICkNCisJCQl7DQorCQkJCWNOZXh0Q2hhciA9IG1iQVNDSUlfU1BBQ0U7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLyogU2VuZCB0aGUgZ2VuZXJhdGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLiAqLw0KKwkJZG8NCisJCXsNCisJCQl1eCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggcHhNZXNzYWdlQnVmZmVycy0+eEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNTdHJpbmdUb1NlbmQsIHhTZW5kTGVuZ3RoLCB4VGlja3NUb1dhaXQgKTsNCisNCisJCQlpZiggdXggPT0gMCApDQorCQkJew0KKwkJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQkJfQ0KKw0KKwkJfSB3aGlsZSggdXggPT0gMCApOw0KKw0KKwkJLyogV2FpdCBmb3IgdGhlIHN0cmluZyB0byBiZSBlY2hvZWQgYmFjay4gKi8NCisJCW1lbXNldCggcGNTdHJpbmdSZWNlaXZlZCwgMHgwMCwgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJCXhNZXNzYWdlQnVmZmVyUmVjZWl2ZSggcHhNZXNzYWdlQnVmZmVycy0+eEVjaG9TZXJ2ZXJCdWZmZXIsICggdm9pZCAqICkgcGNTdHJpbmdSZWNlaXZlZCwgeFNlbmRMZW5ndGgsIHBvcnRNQVhfREVMQVkgKTsNCisNCisJCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBwY1N0cmluZ1RvU2VuZCwgcGNTdHJpbmdSZWNlaXZlZCApID09IDAgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZFY2hvU2VydmVyKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeFRlbXBNZXNzYWdlQnVmZmVyOw0KK3NpemVfdCB4UmVjZWl2ZWRMZW5ndGg7DQorY2hhciAqcGNSZWNlaXZlZFN0cmluZzsNCitFY2hvTWVzc2FnZUJ1ZmZlcnNfdCB4TWVzc2FnZUJ1ZmZlcnM7DQorVGlja1R5cGVfdCB4VGltZU9uRW50ZXJpbmc7DQorY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb0Jsb2NrID0gcGRNU19UT19USUNLUyggMjUwVUwgKTsNCisNCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBDcmVhdGUgdGhlIG1lc3NhZ2UgYnVmZmVyIHVzZWQgdG8gc2VuZCBkYXRhIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLA0KKwlhbmQgdGhlIG1lc3NhZ2UgYnVmZmVyIHVzZWQgdG8gZWNobyB0aGUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUNCisJY2xpZW50LiAqLw0KKwl4TWVzc2FnZUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIgPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSggbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJeE1lc3NhZ2VCdWZmZXJzLnhFY2hvU2VydmVyQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJzLnhFY2hvQ2xpZW50QnVmZmVyICk7DQorCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJzLnhFY2hvU2VydmVyQnVmZmVyICk7DQorDQorCS8qIENyZWF0ZSB0aGUgYnVmZmVyIGludG8gd2hpY2ggcmVjZWl2ZWQgc3RyaW5ncyB3aWxsIGJlIGNvcGllZC4gKi8NCisJcGNSZWNlaXZlZFN0cmluZyA9ICggY2hhciAqICkgcHZQb3J0TWFsbG9jKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHBjUmVjZWl2ZWRTdHJpbmcgKTsNCisNCisJLyogRG9uJ3QgZXhwZWN0IHRvIHJlY2VpdmUgYW55dGhpbmcgeWV0ISAqLw0KKwl4VGltZU9uRW50ZXJpbmcgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmVjZWl2ZWRMZW5ndGggPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUywgeFRpY2tzVG9CbG9jayApOw0KKwljb25maWdBU1NFUlQoICggeFRhc2tHZXRUaWNrQ291bnQoKSAtIHhUaW1lT25FbnRlcmluZyApID49IHhUaWNrc1RvQmxvY2sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmVjZWl2ZWRMZW5ndGggPT0gMCApOw0KKwkoIHZvaWQgKSB4VGltZU9uRW50ZXJpbmc7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCS8qIE5vdyB0aGUgbWVzc2FnZSBidWZmZXJzIGhhdmUgYmVlbiBjcmVhdGVkIHRoZSBlY2hvIGNsaWVudCB0YXNrIGNhbiBiZQ0KKwljcmVhdGVkLiAgSWYgdGhpcyBzZXJ2ZXIgdGFzayBoYXMgdGhlIGhpZ2hlciBwcmlvcml0eSB0aGVuIHRoZSBjbGllbnQgdGFzaw0KKwlpcyBjcmVhdGVkIGF0IHRoZSBsb3dlciBwcmlvcml0eSAtIGlmIHRoaXMgc2VydmVyIHRhc2sgaGFzIHRoZSBsb3dlcg0KKwlwcmlvcml0eSB0aGVuIHRoZSBjbGllbnQgdGFzayBpcyBjcmVhdGVkIGF0IHRoZSBoaWdoZXIgcHJpb3JpdHkuICovDQorCWlmKCB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApID09IG1iTE9XRVJfUFJJT1JJVFkgKQ0KKwl7DQorCQl4VGFza0NyZWF0ZSggcHJ2RWNob0NsaWVudCwgIkVjaG9DbGllbnQiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsICAoIHZvaWQgKiApICZ4TWVzc2FnZUJ1ZmZlcnMsIG1iSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCX0NCisJZWxzZQ0KKwl7DQorCQkvKiBIZXJlIHBydlNpbmdsZVRhc2tUZXN0cygpIHBlcmZvcm1zIHZhcmlvdXMgdGVzdHMgb24gYSBtZXNzYWdlIGJ1ZmZlcg0KKwkJdGhhdCB3YXMgY3JlYXRlZCBkeW5hbWljYWxseS4gKi8NCisJCXBydlNpbmdsZVRhc2tUZXN0cyggeE1lc3NhZ2VCdWZmZXJzLnhFY2hvQ2xpZW50QnVmZmVyICk7DQorCQl4VGFza0NyZWF0ZSggcHJ2RWNob0NsaWVudCwgIkVjaG9DbGllbnQiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsICggdm9pZCAqICkgJnhNZXNzYWdlQnVmZmVycywgbWJMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorDQorCWZvciggOzsgKQ0KKwl7DQorCQltZW1zZXQoIHBjUmVjZWl2ZWRTdHJpbmcsIDB4MDAsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorDQorCQkvKiBIYXMgYW55IGRhdGEgYmVlbiBzZW50IGJ5IHRoZSBjbGllbnQ/ICovDQorCQl4UmVjZWl2ZWRMZW5ndGggPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUywgeFRpY2tzVG9CbG9jayApOw0KKw0KKwkJLyogU2hvdWxkIGFsd2F5cyByZWNlaXZlIGRhdGEgYXMgYSBkZWxheSB3YXMgdXNlZC4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeFJlY2VpdmVkTGVuZ3RoID4gMCApOw0KKw0KKwkJLyogRWNobyB0aGUgcmVjZWl2ZWQgZGF0YSBiYWNrIHRvIHRoZSBjbGllbnQuICovDQorCQl4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCB4UmVjZWl2ZWRMZW5ndGgsIHBvcnRNQVhfREVMQVkgKTsNCisNCisJCS8qIFRoaXMgbWVzc2FnZSBidWZmZXIgaXMganVzdCBjcmVhdGVkIGFuZCBkZWxldGVkIHRvIGVuc3VyZSBubyBtZW1vcnkNCisJCWxlYWtzLiAqLw0KKwkJeFRlbXBNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCQl2TWVzc2FnZUJ1ZmZlckRlbGV0ZSggeFRlbXBNZXNzYWdlQnVmZmVyICk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCB4QXJlTWVzc2FnZUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCB2b2lkICkNCit7DQorc3RhdGljIHVpbnQzMl90IHVsTGFzdEVjaG9Mb29wQ291bnRlcnNbIG1iTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdID0geyAwIH07DQorc3RhdGljIHVpbnQzMl90IHVsTGFzdE5vbkJsb2NraW5nUnhDb3VudGVyID0gMDsNCitCYXNlVHlwZV90IHhSZXR1cm4gPSBwZFBBU1MsIHg7DQorDQorCWZvciggeCA9IDA7IHggPCBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFM7IHgrKyApDQorCXsNCisJCWlmKCB1bExhc3RFY2hvTG9vcENvdW50ZXJzWyB4IF0gPT0gdWxFY2hvTG9vcENvdW50ZXJzWyB4IF0gKQ0KKwkJew0KKwkJCXhSZXR1cm4gPSBwZEZBSUw7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJdWxMYXN0RWNob0xvb3BDb3VudGVyc1sgeCBdID0gdWxFY2hvTG9vcENvdW50ZXJzWyB4IF07DQorCQl9DQorCX0NCisNCisJaWYoIHVsTm9uQmxvY2tpbmdSeENvdW50ZXIgPT0gdWxMYXN0Tm9uQmxvY2tpbmdSeENvdW50ZXIgKQ0KKwl7DQorCQl4UmV0dXJuID0gcGRGQUlMOw0KKwl9DQorCWVsc2UNCisJew0KKwkJdWxMYXN0Tm9uQmxvY2tpbmdSeENvdW50ZXIgPSB1bE5vbkJsb2NraW5nUnhDb3VudGVyOw0KKwl9DQorDQorCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCisJew0KKwkJc3RhdGljIHVpbnQzMl90IHVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgbWJOVU1CRVJfT0ZfRUNIT19DTElFTlRTIF0gPSB7IDAgfTsNCisNCisJCWZvciggeCA9IDA7IHggPCBtYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1M7IHgrKyApDQorCQl7DQorCQkJaWYoIHVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgeCBdID09IHVsU2VuZGVyTG9vcENvdW50ZXJzWyB4IF0gKQ0KKwkJCXsNCisJCQkJeFJldHVybiA9IHBkRkFJTDsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJdWxMYXN0U2VuZGVyTG9vcENvdW50ZXJzWyB4IF0gPSB1bFNlbmRlckxvb3BDb3VudGVyc1sgeCBdOw0KKwkJCX0NCisJCX0NCisJfQ0KKwkjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9Qb2xsUS5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9Qb2xsUS5jCmluZGV4IGI2OTZiMWUuLmRkOTEzMjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUG9sbFEuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1BvbGxRLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyB2ZXJzaW9uIG9mIFBvbGxRLiBjIGlzIGZvciB1c2Ugb24gc3lzdGVtcyB0aGF0IGhhdmUgbGltaXRlZCBzdGFjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUVBlZWsuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUVBlZWsuYwppbmRleCBiMDYyYTc5Li5iOTdkYmI3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1FQZWVrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RUGVlay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYwppbmRleCA2YTVhNDdjLi4zNTExODc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZU92ZXJ3cml0ZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEJhc2ljIHRhc2sgdG8gZGVtb25zdHJhdGUgdGhlIHhRdWV1ZU92ZXJ3cml0ZSgpIGZ1bmN0aW9uLiAgU2VlIHRoZSBjb21tZW50cw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYwppbmRleCAwZjAzZDY1Li5iODI5MjNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZVNldC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRlc3RzIHRoZSB1c2Ugb2YgcXVldWUgc2V0cy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0UG9sbGluZy5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZVNldFBvbGxpbmcuYwppbmRleCA0MjQyNmEyLi43YmIyODhhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0UG9sbGluZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVTZXRQb2xsaW5nLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGVzdHMgdGhlIHVzZSBvZiBxdWV1ZSBzZXRzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RhdGljQWxsb2NhdGlvbi5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdGF0aWNBbGxvY2F0aW9uLmMKaW5kZXggN2VlOTQ2ZS4uNGMwYTBiOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdGF0aWNBbGxvY2F0aW9uLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdGF0aWNBbGxvY2F0aW9uLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdHJlYW1CdWZmZXJEZW1vLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1N0cmVhbUJ1ZmZlckRlbW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWU5YWJjCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdHJlYW1CdWZmZXJEZW1vLmMKQEAgLTAsMCArMSwxMDAzIEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJzdGRpby5oIg0KKyNpbmNsdWRlICJzdHJpbmcuaCINCisNCisvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiRnJlZVJUT1MuaCINCisjaW5jbHVkZSAidGFzay5oIg0KKyNpbmNsdWRlICJzdHJlYW1fYnVmZmVyLmgiDQorDQorLyogRGVtbyBhcHAgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIlN0cmVhbUJ1ZmZlckRlbW8uaCINCisNCisvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHN0b3JhZ2UgaW4gdGhlIHN0cmVhbSBidWZmZXJzIHVzZWQgaW4gdGhpcyB0ZXN0LiAqLw0KKyNkZWZpbmUgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUwkoICggc2l6ZV90ICkgMzAgKQ0KKw0KKy8qIFN0YXJ0IGFuZCBlbmQgQVNDSUkgY2hhcmFjdGVycyB1c2VkIGluIGRhdGEgc2VudCB0byB0aGUgYnVmZmVycy4gKi8NCisjZGVmaW5lIHNiQVNDSUlfU1BBQ0UJCQkJCTMyDQorI2RlZmluZSBzYkFTQ0lJX1RJTERBCQkJCQkxMjYNCisNCisvKiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGFza3MgdG8gY3JlYXRlIGluIHRoaXMgdGVzdCBhbmQgZGVtby4gKi8NCisjZGVmaW5lIHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUwkoIDIgKQ0KKyNkZWZpbmUgc2JOVU1CRVJfT0ZfU0VOREVSX1RBU0tTCSggMiApDQorDQorLyogUHJpb3JpdHkgb2YgdGhlIHRlc3QgdGFza3MuICBUaGUgc2VuZCBhbmQgcmVjZWl2ZSBnbyBmcm9tIGxvdyB0byBoaWdoDQorcHJpb3JpdHkgdGFza3MsIGFuZCBmcm9tIGhpZ2ggdG8gbG93IHByaW9yaXR5IHRhc2tzLiAqLw0KKyNkZWZpbmUgc2JMT1dFUl9QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSApDQorI2RlZmluZSBzYkhJR0hFUl9QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSArIDEgKQ0KKw0KKy8qIEJsb2NrIHRpbWVzIHVzZWQgd2hlbiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlcnMuICovDQorI2RlZmluZSBzYlJYX1RYX0JMT0NLX1RJTUUJCQlwZE1TX1RPX1RJQ0tTKCAxMjVVTCApDQorDQorLyogQSBibG9jayB0aW1lIG9mIDAgbWVhbnMgImRvbid0IGJsb2NrIi4gKi8NCisjZGVmaW5lIHNiRE9OVF9CTE9DSwkJCQkoIDAgKQ0KKw0KKy8qIFRoZSB0cmlnZ2VyIGxldmVsIHNldHMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgcHJlc2VudCBpbiB0aGUNCitzdHJlYW0gYnVmZmVyIGJlZm9yZSBhIHRhc2sgdGhhdCBpcyBibG9ja2VkIG9uIHRoZSBzdHJlYW0gYnVmZmVyIGlzIG1vdmVkIG91dCBvZg0KK3RoZSBCbG9ja2VkIHN0YXRlIHNvIGl0IGNhbiByZWFkIHRoZSBieXRlcy4gKi8NCisjZGVmaW5lIHNiVFJJR0dFUl9MRVZFTF8xCQkJKCAxICkNCisNCisvKiBUaGUgc2l6ZSBvZiB0aGUgc3RhY2sgYWxsb2NhdGVkIHRvIHRoZSB0YXNrcyB0aGF0IHJ1biBhcyBwYXJ0IG9mIHRoaXMgZGVtby8NCit0ZXN0LiAgVGhlIHN0YWNrIHNpemUgaXMgb3ZlciBnZW5lcm91cyBpbiBtb3N0IGNhc2VzLiAqLw0KKyNkZWZpbmUgc2JTVEFDS19TSVpFCQkJCSggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFICsgKCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgPj4gMSApICkNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFBlcmZvcm1zIHZhcmlvdXMgdGVzdHMgdGhhdCBkbyBub3QgcmVxdWlyZSBtdWx0aXBsZSB0YXNrcyB0byBpbnRlcmFjdC4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZTaW5nbGVUYXNrVGVzdHMoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCisNCisvKg0KKyAqIFRlc3RzIHNlbmRpbmcgYW5kIHJlY2VpdmluZyB2YXJpb3VzIGxlbmd0aHMgb2YgZGF0YSB2aWEgYSBzdHJlYW0gYnVmZmVyLg0KKyAqIFRoZSBlY2hvIGNsaWVudCBzZW5kcyB0aGUgZGF0YSB0byB0aGUgZWNobyBzZXJ2ZXIsIHdoaWNoIHRoZW4gc2VuZHMgdGhlDQorICogZGF0YSBiYWNrIHRvIHRoZSBlY2hvIGNsaWVudCwgd2hpY2ggY2hlY2tzIGl0IHJlY2VpdmVzIGV4YWN0bHkgd2hhdCBpdA0KKyAqIHNlbnQuDQorICovDQorc3RhdGljIHZvaWQgcHJ2RWNob0NsaWVudCggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorc3RhdGljIHZvaWQgcHJ2RWNob1NlcnZlciggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorLyoNCisgKiBUYXNrcyB0aGF0IHNlbmQgYW5kIHJlY2VpdmUgdG8gYSBzdHJlYW0gYnVmZmVyIGF0IGEgbG93IHByaW9yaXR5IGFuZCB3aXRob3V0DQorICogYmxvY2tpbmcsIHNvIHRoZSBzZW5kIGFuZCByZWNlaXZlIGZ1bmN0aW9ucyBpbnRlcmxlYXZlIGluIHRpbWUgYXMgdGhlIHRhc2tzDQorICogYXJlIHN3aXRjaGVkIGluIGFuZCBvdXQuDQorICovDQorc3RhdGljIHZvaWQgcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nU2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorLyoNCisgKiBBIHRhc2sgdGhhdCBjcmVhdGVzIGEgc3RyZWFtIGJ1ZmZlciB3aXRoIGEgc3BlY2lmaWMgdHJpZ2dlciBsZXZlbCwgdGhlbg0KKyAqIHJlY2VpdmVzIGEgc3RyaW5nIGZyb20gYW4gaW50ZXJydXB0ICh0aGUgUlRPUyB0aWNrIGhvb2spIGJ5dGUgYnkgYnl0ZSB0bw0KKyAqIGNoZWNrIGl0IGlzIG9ubHkgdW5ibG9ja2VkIHdoZW4gdGhlIHNwZWNpZmllZCB0cmlnZ2VyIGxldmVsIGlzIHJlYWNoZWQuDQorICovDQorc3RhdGljIHZvaWQgcHJ2SW50ZXJydXB0VHJpZ2dlckxldmVsVGVzdCggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgICkNCisJLyogVGhpcyBmaWxlIHRlc3RzIGJvdGggc3RhdGljYWxseSBhbmQgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHN0cmVhbSBidWZmZXJzLg0KKwlBbGxvY2F0ZSB0aGUgc3RydWN0dXJlcyBhbmQgYnVmZmVycyB0byBiZSB1c2VkIGJ5IHRoZSBzdGF0aWNhbGx5IGFsbG9jYXRlZA0KKwlvYmplY3RzLCB3aGljaCBnZXQgdXNlZCBpbiB0aGUgZWNobyB0ZXN0cy4gKi8NCisJc3RhdGljIHZvaWQgcHJ2UmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisJc3RhdGljIHZvaWQgcHJ2U2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorCXN0YXRpYyBTdGF0aWNTdHJlYW1CdWZmZXJfdCB4U3RhdGljU3RyZWFtQnVmZmVyc1sgc2JOVU1CRVJfT0ZfRUNIT19DTElFTlRTIF07DQorCXN0YXRpYyB1aW50OF90IHVjQnVmZmVyU3RvcmFnZVsgc2JOVU1CRVJfT0ZfU0VOREVSX1RBU0tTIF1bIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKyAxIF07DQorCXN0YXRpYyB1aW50MzJfdCB1bFNlbmRlckxvb3BDb3VudGVyc1sgc2JOVU1CRVJfT0ZfU0VOREVSX1RBU0tTIF0gPSB7IDAgfTsNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRoZSBidWZmZXJzIHVzZWQgYnkgdGhlIGVjaG8gY2xpZW50IGFuZCBzZXJ2ZXIgdGFza3MuICovDQordHlwZWRlZiBzdHJ1Y3QgRUNIT19TVFJFQU1fQlVGRkVSUw0KK3sNCisJLyogSGFuZGxlcyB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgZGVzY3JpYmUgdGhlIHN0cmVhbSBidWZmZXJzLiAqLw0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCB4RWNob0NsaWVudEJ1ZmZlcjsNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeEVjaG9TZXJ2ZXJCdWZmZXI7DQorfSBFY2hvU3RyZWFtQnVmZmVyc190Ow0KK3N0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCB1bEVjaG9Mb29wQ291bnRlcnNbIHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdID0geyAwIH07DQorDQorLyogVGhlIG5vbi1ibG9ja2luZyB0YXNrcyBtb25pdG9yIHRoZWlyIG9wZXJhdGlvbiwgYW5kIGlmIG5vIGVycm9ycyBoYXZlIGJlZW4NCitmb3VuZCwgaW5jcmVtZW50IHVsTm9uQmxvY2tpbmdSeENvdW50ZXIuICB4QXJlU3RyZWFtQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKQ0KK3RoZW4gY2hlY2tzIHVsTm9uQmxvY2tpbmdSeENvdW50ZXIgYW5kIG9ubHkgcmV0dXJucyBwZFBBU1MgaWYNCit1bE5vbkJsb2NraW5nUnhDb3VudGVyIGlzIHN0aWxsIGluY3JlbWVudGluZy4gKi8NCitzdGF0aWMgdm9sYXRpbGUgdWludDMyX3QgdWxOb25CbG9ja2luZ1J4Q291bnRlciA9IDA7DQorDQorLyogVGhlIHRhc2sgdGhhdCByZWNlaXZlcyBjaGFyYWN0ZXJzIGZyb20gdGhlIHRpY2sgaW50ZXJydXB0IGluIG9yZGVyIHRvIHRlc3QNCitkaWZmZXJlbnQgdHJpZ2dlciBsZXZlbHMgbW9uaXRvcnMgaXRzIG93biBiZWhhdmlvdXIuICBJZiBpdCBoYXMgbm90IGRldGVjdGVkIGFueQ0KK2Vycm9yIHRoZW4gaXQgaW5jcmVtZW50cyB1bEludGVycnVwdFRyaWdnZXJDb3VudGVyIHRvIGluZGljYXRlIHRvIHRoZSBjaGVjayB0YXNrDQordGhhdCBpdCBpcyBzdGlsbCBvcGVyYXRpbmcgY29ycmVjdGx5LiAqLw0KK3N0YXRpYyB2b2xhdGlsZSB1aW50MzJfdCB1bEludGVycnVwdFRyaWdnZXJDb3VudGVyID0gMFVMOw0KKw0KKy8qIFRoZSBzdHJlYW0gYnVmZmVyIHVzZWQgZnJvbSB0aGUgdGljayBpbnRlcnJ1cHQuICBUaGlzIHNlbmRzIG9uZSBieXRlIGF0IGEgdGltZQ0KK3RvIGEgdGVzdCB0YXNrIHRvIHRlc3QgdGhlIHRyaWdnZXIgbGV2ZWwgb3BlcmF0aW9uLiAgVGhlIHZhcmlhYmxlIGlzIHNldCB0byBOVUxMDQoraW4gYmV0d2VlbiB0ZXN0IHJ1bnMuICovDQorc3RhdGljIHZvbGF0aWxlIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhJbnRlcnJ1cHRTdHJlYW1CdWZmZXIgPSBOVUxMOw0KKw0KKy8qIFRoZSBkYXRhIHNlbnQgZnJvbSB0aGUgdGljayBpbnRlcnJ1cHQgdG8gdGhlIHRhc2sgdGhhdCB0ZXN0cyB0aGUgdHJpZ2dlcg0KK2xldmVsIGZ1bmN0aW9uYWxpdHkuICovDQorc3RhdGljIGNvbnN0IGNoYXIgKnBjRGF0YVNlbnRGcm9tSW50ZXJydXB0ID0gIjEyMzQ1Njc4IjsNCisNCisvKiBEYXRhIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciB0aGF0IGlzIHNlbnQgdG8gdGhlIGJ1ZmZlcnMgYXMgYSBzdHJlYW0NCitvZiBieXRlcy4gIFBhcnRzIG9mIHdoaWNoIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0gYnVmZmVyIHRvIHRlc3Qgd3JpdGluZw0KK2RpZmZlcmVudCBsZW5ndGhzIGF0IGRpZmZlcmVudCBvZmZzZXRzLCB0byBtYW55IGJ5dGVzLCBwYXJ0IHN0cmVhbXMsIHN0cmVhbXMNCit0aGF0IHdyYXAsIGV0Yy4uICBUd28gbWVzc2FnZXMgYXJlIGRlZmluZWQgdG8gZW5zdXJlIGxlZnQgb3ZlciBkYXRhIGlzIG5vdA0KK2FjY2lkZW50YWxseSByZWFkIG91dCBvZiB0aGUgYnVmZmVyLiAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICpwYzU1Qnl0ZVN0cmluZyA9ICJPbmUgdHdvIHRocmVlIGZvdXIgZml2ZSBzaXggc2V2ZW4gZWlnaHQgbmluZSB0ZW4gZWxldmVuIjsNCitzdGF0aWMgY29uc3QgY2hhciAqcGM1NEJ5dGVTdHJpbmcgPSAiMDEyMzQ1Njc4OTFhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRIjsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZTdGFydFN0cmVhbUJ1ZmZlclRhc2tzKCB2b2lkICkNCit7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlcjsNCisNCisJLyogVGhlIGVjaG8gc2VydmVycyBzZXRzIHVwIHRoZSBzdHJlYW0gYnVmZmVycyBiZWZvcmUgY3JlYXRpbmcgdGhlIGVjaG8NCisJY2xpZW50IHRhc2tzLiAgT25lIHNldCBvZiB0YXNrcyBoYXMgdGhlIHNlcnZlciBhcyB0aGUgaGlnaGVyIHByaW9yaXR5LCBhbmQNCisJdGhlIG90aGVyIGhhcyB0aGUgY2xpZW50IGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkuICovDQorCXhUYXNrQ3JlYXRlKCBwcnZFY2hvU2VydmVyLCAiMVN0ckVjaG9TZXJ2ZXIiLCBzYlNUQUNLX1NJWkUsIE5VTEwsIHNiSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZFY2hvU2VydmVyLCAiMlN0ckVjaG9TZXJ2ZXIiLCBzYlNUQUNLX1NJWkUsIE5VTEwsIHNiTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisNCisJLyogVGhlIG5vbiBibG9ja2luZyB0YXNrcyBydW4gY29udGludW91c2x5IGFuZCB3aWxsIGludGVybGVhdmUgd2l0aCBlYWNoDQorCW90aGVyLCBzbyBtdXN0IGJlIGNyZWF0ZWQgYXQgdGhlIGxvd2VzdCBwcmlvcml0eS4gIFRoZSBzdHJlYW0gYnVmZmVyIHRoZXkNCisJdXNlIGlzIGNyZWF0ZWQgYW5kIHBhc3NlZCBpbiB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGUoIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiVFJJR0dFUl9MRVZFTF8xICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzaywgIlN0ck5vbkJsa1J4IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApIHhTdHJlYW1CdWZmZXIsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCisJeFRhc2tDcmVhdGUoIHBydk5vbkJsb2NraW5nU2VuZGVyVGFzaywgIlN0ck5vbkJsa1R4IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApIHhTdHJlYW1CdWZmZXIsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCisNCisJLyogVGhlIHRhc2sgdGhhdCByZWNlaXZlcyBieXRlcyBmcm9tIGFuIGludGVycnVwdCB0byB0ZXN0IHRoYXQgaXQgdW5ibG9ja3MNCisJYXQgYSBzcGVjaWZpYyB0cmlnZ2VyIGxldmVsIG11c3QgcnVuIGF0IGEgaGlnaCBwcmlvcml0eSB0byBtaW5pbWlzZSB0aGUgcmlzaw0KKwlvZiBpdCByZWNlaXZpbmcgbW9yZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCBjYW4gZXhlY3V0ZSBhZ2FpbiBhZnRlciBiZWluZw0KKwl1bmJsb2NrZWQuICovDQorCXhUYXNrQ3JlYXRlKCBwcnZJbnRlcnJ1cHRUcmlnZ2VyTGV2ZWxUZXN0LCAiU3RyVHJpZyIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAxLCBOVUxMICk7DQorDQorCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorCXsNCisJCS8qIFRoZSBzZW5kZXIgdGFza3Mgc2V0IHVwIHRoZSBzdHJlYW0gYnVmZmVycyBiZWZvcmUgY3JlYXRpbmcgdGhlDQorCQlyZWNlaXZlciB0YXNrcy4gIFByaW9yaXRpZXMgbXVzdCBiZSAwIGFuZCAxIGFzIHRoZSBwcmlvcml0eSBpcyB1c2VkIHRvDQorCQlpbmRleCBpbnRvIHRoZSB4U3RhdGljU3RyZWFtQnVmZmVycyBhbmQgdWNCdWZmZXJTdG9yYWdlIGFycmF5cy4gKi8NCisJCXhUYXNrQ3JlYXRlKCBwcnZTZW5kZXJUYXNrLCAiU3RyMVNlbmRlciIsIHNiU1RBQ0tfU0laRSwgTlVMTCwgc2JISUdIRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJCXhUYXNrQ3JlYXRlKCBwcnZTZW5kZXJUYXNrLCAiU3RyMlNlbmRlciIsIHNiU1RBQ0tfU0laRSwgTlVMTCwgc2JMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorCSNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlNpbmdsZVRhc2tUZXN0cyggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK3NpemVfdCB4UmV0dXJuZWQsIHhJdGVtLCB4RXhwZWN0ZWRTcGFjZTsNCitjb25zdCBzaXplX3QgeE1heDZCeXRlTWVzc2FnZXMgPSBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTIC8gNjsNCitjb25zdCBzaXplX3QgeDZCeXRlTGVuZ3RoID0gNiwgeDE3Qnl0ZUxlbmd0aCA9IDE3LCB4RnVsbEJ1ZmZlclNpemUgPSBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICogKCBzaXplX3QgKSAyOw0KK3VpbnQ4X3QgKnB1Y0Z1bGxCdWZmZXIsICpwdWNEYXRhLCAqcHVjUmVhZERhdGE7DQorVGlja1R5cGVfdCB4VGltZUJlZm9yZUNhbGwsIHhUaW1lQWZ0ZXJDYWxsOw0KK2NvbnN0IFRpY2tUeXBlX3QgeEJsb2NrVGltZSA9IHBkTVNfVE9fVElDS1MoIDE1ICksIHhBbGxvd2FibGVNYXJnaW4gPSBwZE1TX1RPX1RJQ0tTKCAzICksIHhNaW5pbWFsQmxvY2tUaW1lID0gMjsNCitVQmFzZVR5cGVfdCB1eE9yaWdpbmFsUHJpb3JpdHk7DQorDQorCS8qIFJlbW92ZSB3YXJuaW5nIGluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHhBbGxvd2FibGVNYXJnaW47DQorDQorCS8qIFRvIG1pbmltaXNlIHN0YWNrIGFuZCBoZWFwIHVzYWdlIGEgZnVsbCBzaXplIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZnJvbSB0aGUNCisJaGVhcCwgdGhlbiBidWZmZXJzIHdoaWNoIGhvbGQgc21hbGxlciBhbW91bnRzIG9mIGRhdGEgYXJlIG92ZXJsYXllZCB3aXRoIHRoZQ0KKwlsYXJnZXIgYnVmZmVyIC0ganVzdCBtYWtlIHN1cmUgbm90IHRvIHVzZSBib3RoIGF0IG9uY2UhICovDQorCXB1Y0Z1bGxCdWZmZXIgPSBwdlBvcnRNYWxsb2MoIHhGdWxsQnVmZmVyU2l6ZSApOw0KKwljb25maWdBU1NFUlQoIHB1Y0Z1bGxCdWZmZXIgKTsNCisNCisJcHVjRGF0YSA9IHB1Y0Z1bGxCdWZmZXI7DQorCXB1Y1JlYWREYXRhID0gcHVjRGF0YSArIHgxN0J5dGVMZW5ndGg7DQorDQorCS8qIE5vdGhpbmcgaGFzIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCB5ZXQsIHNvIGV4cGVjdCB0aGUgZnJlZSBzcGFjZSB0byBiZQ0KKwlleGFjdGx5IGFzIGNyZWF0ZWQuICovDQorCXhFeHBlY3RlZFNwYWNlID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhFeHBlY3RlZFNwYWNlID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKw0KKw0KKwkvKiBUaGUgYnVmZmVyIGlzIDMwIGJ5dGVzIGxvbmcuICA2IDUgYnl0ZSBtZXNzYWdlcyBzaG91bGQgZml0IGJlZm9yZSB0aGUNCisJYnVmZmVyIGlzIGNvbXBsZXRlbHkgZnVsbC4gKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgeE1heDZCeXRlTWVzc2FnZXM7IHhJdGVtKysgKQ0KKwl7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorDQorCQkvKiBHZW5lcmF0ZSByZWNvZ25pc2FibGUgZGF0YSB0byB3cml0ZSB0byB0aGUgYnVmZmVyLiAgVGhpcyBpcyBqdXN0DQorCQlhc2NpaSBjaGFyYWN0ZXJzIHRoYXQgc2hvd3Mgd2hpY2ggbG9vcCBpdGVyYXRpb24gdGhlIGRhdGEgd2FzIHdyaXR0ZW4NCisJCWluLiBUaGUgJ0Zyb21JU1InIHZlcnNpb24gaXMgdXNlZCB0byBnaXZlIGl0IHNvbWUgZXhlcmNpc2UgYXMgYSBibG9jaw0KKwkJdGltZSBpcyBub3QgdXNlZCwgc28gdGhlIGNhbGwgbXVzdCBiZSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIHNvIGl0DQorCQlydW5zIHdpdGggcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0IGludGVycnVwdCBuZXN0aW5nIChhbmQgdGhlcmVmb3JlDQorCQlkb24ndCBoYXZlIGludGVycnVwdCBzYWZlIGNyaXRpY2FsIHNlY3Rpb25zKS4gKi8NCisJCW1lbXNldCggKCB2b2lkICogKSBwdWNEYXRhLCAoICggaW50ICkgJzAnICkgKyAoIGludCApIHhJdGVtLCB4NkJ5dGVMZW5ndGggKTsNCisJCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KKwkJew0KKwkJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCB4NkJ5dGVMZW5ndGgsIE5VTEwgKTsNCisJCX0NCisJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4NkJ5dGVMZW5ndGggKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJCS8qIFRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIHdpbGwgaGF2ZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgb2YgdXNlciBkYXRhDQorCQl3cml0dGVuIGludG8gdGhlIGJ1ZmZlci4gKi8NCisJCXhFeHBlY3RlZFNwYWNlIC09IHg2Qnl0ZUxlbmd0aDsNCisJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHhFeHBlY3RlZFNwYWNlICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCS8qICsxIGFzIGl0IGlzIHplcm8gaW5kZXhlZC4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09ICggKCB4SXRlbSArIDEgKSAqIHg2Qnl0ZUxlbmd0aCApICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCX0NCisNCisJLyogTm93IHRoZSBidWZmZXIgc2hvdWxkIGJlIGZ1bGwsIGFuZCBhdHRlbXB0aW5nIHRvIGFkZCBhbnl0aGluZyB3aWxsIHNob3VsZA0KKwlmYWlsLiAqLw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjRGF0YSwgc2l6ZW9mKCBwdWNEYXRhWyAwIF0gKSwgc2JET05UX0JMT0NLICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKw0KKwkvKiBBZGRpbmcgd2l0aCBhIHRpbWVvdXQgc2hvdWxkIGFsc28gZmFpbCBhZnRlciB0aGUgYXBwcm9wcmlhdGUgdGltZS4gIFRoZQ0KKwlwcmlvcml0eSBpcyB0ZW1wb3JhcmlseSBib29zdGVkIGluIHRoaXMgcGFydCBvZiB0aGUgdGVzdCB0byBrZWVwIHRoZQ0KKwlhbGxvd2FibGUgbWFyZ2luIHRvIGEgbWluaW11bS4gKi8NCisJdXhPcmlnaW5hbFByaW9yaXR5ID0gdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKTsNCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAxICk7DQorCXhUaW1lQmVmb3JlQ2FsbCA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0RhdGEsIHNpemVvZiggcHVjRGF0YVsgMCBdICksIHhCbG9ja1RpbWUgKTsNCisJeFRpbWVBZnRlckNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCB1eE9yaWdpbmFsUHJpb3JpdHkgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPj0geEJsb2NrVGltZSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA8ICggeEJsb2NrVGltZSArIHhBbGxvd2FibGVNYXJnaW4gKSApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHhUaW1lQWZ0ZXJDYWxsOw0KKwkoIHZvaWQgKSB4VGltZUJlZm9yZUNhbGw7DQorDQorDQorCS8qIFRoZSBidWZmZXIgaXMgbm93IGZ1bGwgb2YgZGF0YSBpbiB0aGUgZm9ybSAiMDAwMDAwIiwgIjExMTExMSIsIGV0Yy4gIE1ha2UNCisJc3VyZSB0aGUgZGF0YSBpcyByZWFkIG91dCBhcyBleHBlY3RlZC4gKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgeE1heDZCeXRlTWVzc2FnZXM7IHhJdGVtKysgKQ0KKwl7DQorCQkvKiBHZW5lcmF0ZSB0aGUgZGF0YSB0aGF0IGlzIGV4cGVjdGVkIHRvIGJlIHJlYWQgb3V0IGZvciB0aGlzIGxvb3ANCisJCWl0ZXJhdGlvbi4gKi8NCisJCW1lbXNldCggKCB2b2lkICogKSBwdWNEYXRhLCAoICggaW50ICkgJzAnICkgKyAoIGludCApIHhJdGVtLCB4NkJ5dGVMZW5ndGggKTsNCisNCisJCS8qIFJlYWQgdGhlIG5leHQgNiBieXRlcyBvdXQuICBUaGUgJ0Zyb21JU1InIHZlcnNpb24gaXMgdXNlZCB0byBnaXZlIGl0DQorCQlzb21lIGV4ZXJjaXNlIGFzIGEgYmxvY2sgdGltZSBpcyBub3QgdXNlZCwgc28gYSBpdCBtdXN0IGJlIGNhbGxlZCBmcm9tDQorCQlhIGNyaXRpY2FsIHNlY3Rpb24gc28gdGhpcyB3aWxsIHdvcmsgb24gcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0DQorCQlpbnRlcnJ1cHQgbmVzdGluZyAoc28gZG9uJ3QgaGF2ZSBpbnRlcnJ1cHQgc2FmZSBjcml0aWNhbCBzZWN0aW9ucykuICovDQorCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisJCXsNCisJCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHg2Qnl0ZUxlbmd0aCwgTlVMTCApOw0KKwkJfQ0KKwkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHg2Qnl0ZUxlbmd0aCApOw0KKw0KKwkJLyogRG9lcyB0aGUgZGF0YSByZWFkIG91dCBtYXRjaCB0aGF0IGV4cGVjdGVkPyAqLw0KKwkJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggdm9pZCAqICkgcHVjRGF0YSwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDZCeXRlTGVuZ3RoICkgPT0gMCApOw0KKw0KKwkJLyogVGhlIHNwYWNlIGluIHRoZSBidWZmZXIgd2lsbCBoYXZlIGluY3JlYXNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXINCisJCWRhdGEgcmVtb3ZlZCBmcm9tIHRoZSBidWZmZXIuICovDQorCQl4RXhwZWN0ZWRTcGFjZSArPSB4NkJ5dGVMZW5ndGg7DQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4RXhwZWN0ZWRTcGFjZSApOw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAoIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgLSB4RXhwZWN0ZWRTcGFjZSApICk7DQorCX0NCisNCisJLyogVGhlIGJ1ZmZlciBzaG91bGQgYmUgZW1wdHkgYWdhaW4uICovDQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJeEV4cGVjdGVkU3BhY2UgPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCWNvbmZpZ0FTU0VSVCggeEV4cGVjdGVkU3BhY2UgPT0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwkvKiBSZWFkaW5nIHdpdGggYSB0aW1lb3V0IHNob3VsZCBhbHNvIGZhaWwgYWZ0ZXIgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICBUaGUNCisJcHJpb3JpdHkgaXMgdGVtcG9yYXJpbHkgYm9vc3RlZCBpbiB0aGlzIHBhcnQgb2YgdGhlIHRlc3QgdG8ga2VlcCB0aGUNCisJYWxsb3dhYmxlIG1hcmdpbiB0byBhIG1pbmltdW0uICovDQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApOw0KKwl4VGltZUJlZm9yZUNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDZCeXRlTGVuZ3RoLCB4QmxvY2tUaW1lICk7DQorCXhUaW1lQWZ0ZXJDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgdXhPcmlnaW5hbFByaW9yaXR5ICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGltZUFmdGVyQ2FsbCAtIHhUaW1lQmVmb3JlQ2FsbCApID49IHhCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPCAoIHhCbG9ja1RpbWUgKyB4QWxsb3dhYmxlTWFyZ2luICkgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKw0KKw0KKwkvKiBJbiB0aGUgbmV4dCBsb29wIDE3IGJ5dGVzIGFyZSB3cml0dGVuIHRvIHRoZW4gcmVhZCBvdXQgb24gZWFjaA0KKwlpdGVyYXRpb24uICBBcyAzMCBpcyBub3QgZGl2aXNpYmxlIGJ5IDE3IHRoZSBkYXRhIHdpbGwgd3JhcCBhcm91bmQuICovDQorCXhFeHBlY3RlZFNwYWNlID0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHgxN0J5dGVMZW5ndGg7DQorDQorCWZvciggeEl0ZW0gPSAwOyB4SXRlbSA8IDEwMDsgeEl0ZW0rKyApDQorCXsNCisJCS8qIEdlbmVyYXRlIHJlY29nbmlzYWJsZSBkYXRhIHRvIHdyaXRlIHRvIHRoZSBxdWV1ZS4gIFRoaXMgaXMganVzdA0KKwkJYXNjaWkgY2hhcmFjdGVycyB0aGF0IHNob3dzIHdoaWNoIGxvb3AgaXRlcmF0aW9uIHRoZSBkYXRhIHdhcyB3cml0dGVuDQorCQlpbi4gKi8NCisJCW1lbXNldCggKCB2b2lkICogKSBwdWNEYXRhLCAoICggaW50ICkgJzAnICkgKyAoIGludCApIHhJdGVtLCB4MTdCeXRlTGVuZ3RoICk7DQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCB4MTdCeXRlTGVuZ3RoLCBzYkRPTlRfQkxPQ0sgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHgxN0J5dGVMZW5ndGggKTsNCisNCisJCS8qIFRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIHdpbGwgaGF2ZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgb2YgdXNlciBkYXRhDQorCQl3cml0dGVuIGludG8gdGhlIGJ1ZmZlci4gKi8NCisJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHhFeHBlY3RlZFNwYWNlICk7DQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHgxN0J5dGVMZW5ndGggKTsNCisJCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRnVsbCggeFN0cmVhbUJ1ZmZlciApID09IHBkRkFMU0UgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorDQorCQkvKiBSZWFkIHRoZSAxNyBieXRlcyBvdXQgYWdhaW4uICovDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDE3Qnl0ZUxlbmd0aCwgc2JET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4MTdCeXRlTGVuZ3RoICk7DQorDQorCQkvKiBEb2VzIHRoZSBkYXRhIHJlYWQgb3V0IG1hdGNoIHRoYXQgZXhwZWN0ZWQ/ICovDQorCQljb25maWdBU1NFUlQoIG1lbWNtcCggKCB2b2lkICogKSBwdWNEYXRhLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4MTdCeXRlTGVuZ3RoICkgPT0gMCApOw0KKw0KKwkJLyogRnVsbCBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIGFnYWluLiAqLw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCX0NCisNCisJLyogRmlsbCB0aGUgYnVmZmVyIHdpdGggb25lIG1lc3NhZ2UsIGNoZWNrIGl0IGlzIGZ1bGwsIHRoZW4gcmVhZCBpdCBiYWNrDQorCWFnYWluIGFuZCBjaGVjayB0aGUgY29ycmVjdCBkYXRhIGlzIHJlY2VpdmVkLiAqLw0KKwl4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU1Qnl0ZVN0cmluZywgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUywgc2JET05UX0JMT0NLICk7DQorCXhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIG1lbWNtcCggcGM1NUJ5dGVTdHJpbmcsIHB1Y0Z1bGxCdWZmZXIsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKSA9PSAwICk7DQorDQorCS8qIEZpbGwgdGhlIGJ1ZmZlciBvbmUgYnl0ZXMgYXQgYSB0aW1lLiAqLw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTOyB4SXRlbSsrICkNCisJew0KKwkJLyogQmxvY2sgdGltZSBpcyBvbmx5IGZvciB0ZXN0IGNvdmVyYWdlLCB0aGUgdGFzayBzaG91bGQgbmV2ZXIgYWN0dWFsbHkNCisJCWJsb2NrIGhlcmUuICovDQorCQl4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSAmKCBwYzU0Qnl0ZVN0cmluZ1sgeEl0ZW0gXSApLCBzaXplb2YoIGNoYXIgKSwgc2JSWF9UWF9CTE9DS19USU1FICk7DQorCX0NCisNCisJLyogVGhlIGJ1ZmZlciBzaG91bGQgbm93IGJlIGZ1bGwuICovDQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRnVsbCggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKw0KKwkvKiBSZWFkIHRoZSBtZXNzYWdlIG91dCBpbiBvbmUgZ28sIGV2ZW4gdGhvdWdoIGl0IHdhcyB3cml0dGVuIGluIGluZGl2aWR1YWwNCisJYnl0ZXMuICBUcnkgcmVhZGluZyBtdWNoIG1vcmUgZGF0YSB0aGFuIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSB0byBlbnN1cmUgb25seQ0KKwl0aGUgYXZhaWxhYmxlIGJ5dGVzIGFyZSByZXR1cm5lZCAob3RoZXJ3aXNlIHRoaXMgcmVhZCB3aWxsIHdyaXRlIG91dHNpZGUgb2YNCisJdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYW55d2F5ISkuICovDQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLCBwdWNGdWxsQnVmZmVyLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICogKCBzaXplX3QgKSAyLCBzYlJYX1RYX0JMT0NLX1RJTUUgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIG1lbWNtcCggKCBjb25zdCB2b2lkICogKSBwYzU0Qnl0ZVN0cmluZywgKCBjb25zdCB2b2lkICogKSBwdWNGdWxsQnVmZmVyLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICkgPT0gMCApOw0KKw0KKwkvKiBOb3cgZG8gdGhlIG9wcG9zaXRlLCB3cml0ZSBpbiBvbmUgZ28gYW5kIHJlYWQgb3V0IGluIHNpbmdsZSBieXRlcy4gKi8NCisJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiUlhfVFhfQkxPQ0tfVElNRSApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRnVsbCggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICkgPT0gMCApOw0KKw0KKwkvKiBSZWFkIGZyb20gdGhlIGJ1ZmZlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICovDQorCWZvciggeEl0ZW0gPSAwOyB4SXRlbSA8IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVM7IHhJdGVtKysgKQ0KKwl7DQorCQkvKiBCbG9jayB0aW1lIGlzIG9ubHkgZm9yIHRlc3QgY292ZXJhZ2UsIHRoZSB0YXNrIHNob3VsZCBuZXZlciBhY3R1YWxseQ0KKwkJYmxvY2sgaGVyZS4gKi8NCisJCXhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsIHNpemVvZiggY2hhciApLCBzYlJYX1RYX0JMT0NLX1RJTUUgKTsNCisJCWNvbmZpZ0FTU0VSVCggcGM1NUJ5dGVTdHJpbmdbIHhJdGVtIF0gPT0gcHVjRnVsbEJ1ZmZlclsgMCBdICk7DQorCX0NCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorDQorCS8qIFRyeSB3cml0aW5nIG1vcmUgYnl0ZXMgdGhhbiB0aGVyZSBpcyBzcGFjZS4gKi8NCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAxICk7DQorCXhUaW1lQmVmb3JlQ2FsbCA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTRCeXRlU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICogKCBzaXplX3QgKSAyLCB4TWluaW1hbEJsb2NrVGltZSApOw0KKwl4VGltZUFmdGVyQ2FsbCA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIHV4T3JpZ2luYWxQcmlvcml0eSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA+PSB4TWluaW1hbEJsb2NrVGltZSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA8ICggeE1pbmltYWxCbG9ja1RpbWUgKyB4QWxsb3dhYmxlTWFyZ2luICkgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkRkFMU0UgKTsNCisNCisJLyogTm8gc3BhY2Ugbm93IHRob3VnaC4gKi8NCisJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NEJ5dGVTdHJpbmcsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKiAoIHNpemVfdCApIDIsIHhNaW5pbWFsQmxvY2tUaW1lICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisNCisJLyogRW5zdXJlIGRhdGEgd2FzIHdyaXR0ZW4gYXMgZXhwZWN0ZWQgZXZlbiB3aGVuIHRoZXJlIHdhcyBhbiBhdHRlbXB0IHRvDQorCXdyaXRlIG1vcmUgdGhhbiB3YXMgYXZhaWxhYmxlLiAgVGhpcyBhbHNvIHRyaWVzIHRvIHJlYWQgbW9yZSBieXRlcyB0aGFuIGFyZQ0KKwlhdmFpbGFibGUuICovDQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsIHhGdWxsQnVmZmVyU2l6ZSwgeE1pbmltYWxCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggY29uc3Qgdm9pZCAqICkgcHVjRnVsbEJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU0Qnl0ZVN0cmluZywgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApID09IDAgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorDQorCS8qIENsZWFuIHVwIHdpdGggZGF0YSBpbiB0aGUgYnVmZmVyIHRvIGVuc3VyZSB0aGUgdGVzdHMgdGhhdCBmb2xsb3cgZG9uJ3QNCisJc2VlIHRoZSBkYXRhICh0aGUgZGF0YSBzaG91bGQgYmUgZGlzY2FyZGVkKS4gKi8NCisJKCB2b2lkICkgeFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgLyAoIHNpemVfdCApIDIsIHNiRE9OVF9CTE9DSyApOw0KKwl2UG9ydEZyZWUoIHB1Y0Z1bGxCdWZmZXIgKTsNCisJeFN0cmVhbUJ1ZmZlclJlc2V0KCB4U3RyZWFtQnVmZmVyICk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nU2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlcjsNCitzaXplX3QgeE5leHRDaGFyID0gMCwgeEJ5dGVzVG9TZW5kLCB4Qnl0ZXNBY3R1YWxseVNlbnQ7DQorY29uc3Qgc2l6ZV90IHhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIHBjNTRCeXRlU3RyaW5nICk7DQorDQorCS8qIEluIHRoaXMgY2FzZSB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQgYW5kIGlzIHBhc3NlZA0KKwlpbnRvIHRoZSB0YXNrIHVzaW5nIHRoZSB0YXNrJ3MgcGFyYW1ldGVyLiAqLw0KKwl4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogS2VlcCBzZW5kaW5nIHRoZSBzdHJpbmcgdG8gdGhlIHN0cmVhbSBidWZmZXIgYXMgbWFueSBieXRlcyBhcyBwb3NzaWJsZSBpbg0KKwllYWNoIGdvLiAgRG9lc24ndCBibG9jayBzbyBjYWxscyBjYW4gaW50ZXJsZWF2ZSB3aXRoIHRoZSBub24tYmxvY2tpbmcNCisJcmVjZWl2ZXMgcGVyZm9ybWVkIGJ5IHBydk5vbkJsb2NraW5nUmVjZWl2ZXJUYXNrKCkuICovDQorCWZvciggOzsgKQ0KKwl7DQorCQkvKiBUaGUgd2hvbGUgc3RyaW5nIGNhbm5vdCBiZSBzZW50IGF0IG9uY2UsIHNvIHhOZXh0Q2hhciBpcyBhbiBpbmRleCB0bw0KKwkJdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgc3RyaW5nIHRoYXQgaGFzIGJlZW4gc2VudCBzbyBmYXIuICBIb3cgbWFueQ0KKwkJYnl0ZXMgYXJlIHRoZXJlIGxlZnQgdG8gc2VuZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nPyAqLw0KKwkJeEJ5dGVzVG9TZW5kID0geFN0cmluZ0xlbmd0aCAtIHhOZXh0Q2hhcjsNCisNCisJCS8qIEF0dGVtcHQgdG8gc2VuZCByaWdodCB1cCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovDQorCQl4Qnl0ZXNBY3R1YWxseVNlbnQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSAmKCBwYzU0Qnl0ZVN0cmluZ1sgeE5leHRDaGFyIF0gKSwgeEJ5dGVzVG9TZW5kLCBzYkRPTlRfQkxPQ0sgKTsNCisJCWNvbmZpZ0FTU0VSVCggeEJ5dGVzQWN0dWFsbHlTZW50IDw9IHhCeXRlc1RvU2VuZCApOw0KKw0KKwkJLyogTW92ZSB0aGUgaW5kZXggdXAgdGhlIHN0cmluZyB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgc2VudCwNCisJCXdyYXBwaW5nIGlmIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBoYXMgYmVlbiByZWFjaGVkLiAqLw0KKwkJeE5leHRDaGFyICs9IHhCeXRlc0FjdHVhbGx5U2VudDsNCisJCWNvbmZpZ0FTU0VSVCggeE5leHRDaGFyIDw9IHhTdHJpbmdMZW5ndGggKTsNCisNCisJCWlmKCB4TmV4dENoYXIgPT0geFN0cmluZ0xlbmd0aCApDQorCQl7DQorCQkJeE5leHRDaGFyID0gMDsNCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlcjsNCitzaXplX3QgeE5leHRDaGFyID0gMCwgeFJlY2VpdmVMZW5ndGgsIHhCeXRlc1RvVGVzdCwgeFN0YXJ0SW5kZXg7DQorY29uc3Qgc2l6ZV90IHhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIHBjNTRCeXRlU3RyaW5nICk7DQorY2hhciBjUnhTdHJpbmdbIDEyIF07IC8qIEhvbGRzIHJlY2VpdmVkIGNoYXJhY3RlcnMuICovDQorQmFzZVR5cGVfdCB4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPSBwZEZBTFNFOw0KKw0KKwkvKiBJbiB0aGlzIGNhc2UgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIGFuZCBpcyBwYXNzZWQNCisJaW50byB0aGUgdGFzayB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIEV4cGVjdHMgdG8gcmVjZWl2ZSB0aGUgcGM1NEJ5dGVTdHJpbmcgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4gIFNlbmRzIGFuZA0KKwlyZWNlaXZlcyBhcmUgbm90IGJsb2NraW5nIHNvIHdpbGwgaW50ZXJsZWF2ZS4gKi8NCisJZm9yKCA7OyApDQorCXsNCisJCS8qIEF0dGVtcHQgdG8gcmVjZWl2ZSBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlLCB1cCB0byB0aGUgbGltaXQgb2YgdGhlDQorCQlSeCBidWZmZXIgc2l6ZS4gKi8NCisJCXhSZWNlaXZlTGVuZ3RoID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgY1J4U3RyaW5nLCBzaXplb2YoIGNSeFN0cmluZyApLCBzYkRPTlRfQkxPQ0sgKTsNCisNCisJCWlmKCB4UmVjZWl2ZUxlbmd0aCA+IDAgKQ0KKwkJew0KKwkJCS8qIHhOZXh0Q2hhciBpcyB0aGUgaW5kZXggaW50byBwYzU0Qnl0ZVN0cmluZyB0aGF0IGhhcyBiZWVuIHJlY2VpdmVkDQorCQkJYWxyZWFkeS4gIElmIHhSZWNlaXZlTGVuZ3RoIGJ5dGVzIGFyZSBhZGRlZCB0byB0aGF0LCB3aWxsIGl0IGdvIG9mZg0KKwkJCXRoZSBlbmQgb2YgdGhlIHN0cmluZz8gIElmIHNvLCB0aGVuIGZpcnN0IHRlc3QgdXAgdG8gdGhlIGVuZCBvZiB0aGUNCisJCQlzdHJpbmcsIHRoZW4gZ28gYmFjayB0byB0aGUgc3RhcnQgb2YgcGM1NEJ5dGVTdHJpbmcgdG8gdGVzdCB0aGUNCisJCQlyZW1haW5zIG9mIHRoZSByZWNlaXZlZCBkYXRhLiAqLw0KKwkJCXhCeXRlc1RvVGVzdCA9IHhSZWNlaXZlTGVuZ3RoOw0KKwkJCWlmKCAoIHhOZXh0Q2hhciArIHhCeXRlc1RvVGVzdCApID4geFN0cmluZ0xlbmd0aCApDQorCQkJew0KKwkJCQkvKiBDYXAgdG8gdGVzdCB0aGUgcmVjZWl2ZWQgZGF0YSB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovDQorCQkJCXhCeXRlc1RvVGVzdCA9IHhTdHJpbmdMZW5ndGggLSB4TmV4dENoYXI7DQorDQorCQkJCWlmKCBtZW1jbXAoICggY29uc3Qgdm9pZCAqICkgJiggcGM1NEJ5dGVTdHJpbmdbIHhOZXh0Q2hhciBdICksICggY29uc3Qgdm9pZCAqICkgY1J4U3RyaW5nLCB4Qnl0ZXNUb1Rlc3QgKSAhPSAwICkNCisJCQkJew0KKwkJCQkJeE5vbkJsb2NraW5nUmVjZWl2ZUVycm9yID0gcGRUUlVFOw0KKwkJCQl9DQorDQorCQkJCS8qIFRoZW4gbW92ZSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIHRvIHRlc3QgdGhlDQorCQkJCXJlbWFpbmluZyByZWNlaXZlZCBieXRlcy4gKi8NCisJCQkJeE5leHRDaGFyID0gMDsNCisJCQkJeFN0YXJ0SW5kZXggPSB4Qnl0ZXNUb1Rlc3Q7DQorCQkJCXhCeXRlc1RvVGVzdCA9IHhSZWNlaXZlTGVuZ3RoIC0geEJ5dGVzVG9UZXN0Ow0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQkvKiBUaGUgc3RyaW5nIGRpZG4ndCB3cmFwIGluIHRoZSBidWZmZXIsIHNvIHN0YXJ0IGNvbXBhcmluZyBmcm9tDQorCQkJCXRoZSBzdGFydCBvZiB0aGUgcmVjZWl2ZWQgZGF0YS4gKi8NCisJCQkJeFN0YXJ0SW5kZXggPSAwOw0KKwkJCX0NCisNCisJCQkvKiBUZXN0IHRoZSByZWNlaXZlZCBieXRlcyBhcmUgYXMgZXhwZWN0ZWQsIHRoZW4gbW92ZSB0aGUgaW5kZXgNCisJCQlhbG9uZyB0aGUgc3RyaW5nIHRvIHRoZSBuZXh0IGV4cGVjdGVkIGNoYXIgdG8gcmVjZWl2ZS4gKi8NCisJCQlpZiggbWVtY21wKCAoIGNvbnN0IHZvaWQgKiApICYoIHBjNTRCeXRlU3RyaW5nWyB4TmV4dENoYXIgXSApLCAoIGNvbnN0IHZvaWQgKiApICYoIGNSeFN0cmluZ1sgeFN0YXJ0SW5kZXggXSApLCB4Qnl0ZXNUb1Rlc3QgKSAhPSAwICkNCisJCQl7DQorCQkJCXhOb25CbG9ja2luZ1JlY2VpdmVFcnJvciA9IHBkVFJVRTsNCisJCQl9DQorDQorCQkJaWYoIHhOb25CbG9ja2luZ1JlY2VpdmVFcnJvciA9PSBwZEZBTFNFICkNCisJCQl7DQorCQkJCS8qIE5vIGVycm9ycyBkZXRlY3RlZCBzbyBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgdGhhdCBsZXRzIHRoZQ0KKwkJCQljaGVjayB0YXNrIGtub3cgdGhpcyB0ZXN0IGlzIHN0aWxsIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gKi8NCisJCQkJdWxOb25CbG9ja2luZ1J4Q291bnRlcisrOw0KKwkJCX0NCisNCisJCQl4TmV4dENoYXIgKz0geEJ5dGVzVG9UZXN0Ow0KKwkJCWlmKCB4TmV4dENoYXIgPj0geFN0cmluZ0xlbmd0aCApDQorCQkJew0KKwkJCQl4TmV4dENoYXIgPSAwOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSAgKQ0KKw0KKwlzdGF0aWMgdm9pZCBwcnZTZW5kZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKwl7DQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHhUZW1wU3RyZWFtQnVmZmVyOw0KKwlzdGF0aWMgdWludDhfdCB1Y1RlbXBCdWZmZXJbIDEwIF07IC8qIEp1c3QgdXNlZCB0byBleGVyY2lzZSBzdHJlYW0gYnVmZmVyIGNyZWF0aW5nIGFuZCBkZWxldGlvbi4gKi8NCisJY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgPSBzYlJYX1RYX0JMT0NLX1RJTUUsIHhTaG9ydERlbGF5ID0gcGRNU19UT19USUNLUyggNTAgKTsNCisJU3RhdGljU3RyZWFtQnVmZmVyX3QgeFN0YXRpY1N0cmVhbUJ1ZmZlcjsNCisJc2l6ZV90IHhOZXh0Q2hhciA9IDAsIHhCeXRlc1RvU2VuZCwgeEJ5dGVzQWN0dWFsbHlTZW50Ow0KKwljb25zdCBzaXplX3QgeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggcGM1NUJ5dGVTdHJpbmcgKTsNCisNCisJLyogVGhlIHRhc2sncyBwcmlvcml0eSBpcyB1c2VkIGFzIGFuIGluZGV4IGludG8gdGhlIGxvb3AgY291bnRlcnMgdXNlZCB0bw0KKwlpbmRpY2F0ZSB0aGlzIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCisJVUJhc2VUeXBlX3QgdXhJbmRleCA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorDQorCQkvKiBNYWtlIHN1cmUgYSBjaGFuZ2UgaW4gcHJpb3JpdHkgZG9lcyBub3QgaW5hZHZlcnRlbnRseSByZXN1bHQgaW4gYW4NCisJCWludmFsaWQgYXJyYXkgaW5kZXguICovDQorCQljb25maWdBU1NFUlQoIHV4SW5kZXggPCBzYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgKTsNCisNCisJCS8qIEF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLiAqLw0KKwkJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkJeFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVvZiggdWNCdWZmZXJTdG9yYWdlICkgLyBzYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1MsIC8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBidWZmZXIgaW4gdGhlIGFycmF5LiAqLw0KKwkJCQkJCQkJCQkJCSAgIHNiVFJJR0dFUl9MRVZFTF8xLCAvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIGluIHRoZSBidWZmZXIgYmVmb3JlIGEgdGFzayBibG9ja2VkIHRvIHdhaXQgZm9yIGRhdGEgaXMgdW5ibG9ja2VkLiAqLw0KKwkJCQkJCQkJCQkJCSAgICYoIHVjQnVmZmVyU3RvcmFnZVsgdXhJbmRleCBdWyAwIF0gKSwgLyogVGhlIGFkZHJlc3Mgb2YgdGhlIGJ1ZmZlciB0byB1c2Ugd2l0aGluIHRoZSBhcnJheS4gKi8NCisJCQkJCQkJCQkJCQkgICAmKCB4U3RhdGljU3RyZWFtQnVmZmVyc1sgdXhJbmRleCBdICkgKTsgLyogVGhlIHN0YXRpYyBzdHJlYW0gYnVmZmVyIHN0cnVjdHVyZSB0byB1c2Ugd2l0aGluIHRoZSBhcnJheS4gKi8NCisNCisJCS8qIE5vdyB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYmVlbiBjcmVhdGVkIHRoZSByZWNlaXZlciB0YXNrIGNhbiBiZQ0KKwkJY3JlYXRlZC4gIElmIHRoaXMgc2VuZGVyIHRhc2sgaGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkgdGhlbiB0aGUgcmVjZWl2ZXINCisJCXRhc2sgaXMgY3JlYXRlZCBhdCB0aGUgbG93ZXIgcHJpb3JpdHkgLSBpZiB0aGlzIHNlbmRlciB0YXNrIGhhcyB0aGUNCisJCWxvd2VyIHByaW9yaXR5IHRoZW4gdGhlIHJlY2VpdmVyIHRhc2sgaXMgY3JlYXRlZCBhdCB0aGUgaGlnaGVyDQorCQlwcmlvcml0eS4gKi8NCisJCWlmKCB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApID09IHNiTE9XRVJfUFJJT1JJVFkgKQ0KKwkJew0KKwkJCS8qIEhlcmUgcHJ2U2luZ2xlVGFza1Rlc3RzKCkgcGVyZm9ybXMgdmFyaW91cyB0ZXN0cyBvbiBhIHN0cmVhbSBidWZmZXINCisJCQl0aGF0IHdhcyBjcmVhdGVkIHN0YXRpY2FsbHkuICovDQorCQkJcHJ2U2luZ2xlVGFza1Rlc3RzKCB4U3RyZWFtQnVmZmVyICk7DQorCQkJeFRhc2tDcmVhdGUoIHBydlJlY2VpdmVyVGFzaywgIlN0clJlY2VpdmVyIiwgc2JTVEFDS19TSVpFLCAgKCB2b2lkICogKSB4U3RyZWFtQnVmZmVyLCBzYkhJR0hFUl9QUklPUklUWSwgTlVMTCApOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXhUYXNrQ3JlYXRlKCBwcnZSZWNlaXZlclRhc2ssICJTdHJSZWNlaXZlciIsIHNiU1RBQ0tfU0laRSwgICggdm9pZCAqICkgeFN0cmVhbUJ1ZmZlciwgc2JMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwkJfQ0KKw0KKwkJZm9yKCA7OyApDQorCQl7DQorCQkJLyogVGhlIHdob2xlIHN0cmluZyBjYW5ub3QgYmUgc2VudCBhdCBvbmNlLCBzbyB4TmV4dENoYXIgaXMgYW4gaW5kZXgNCisJCQl0byB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSBzdHJpbmcgdGhhdCBoYXMgYmVlbiBzZW50IHNvIGZhci4gIEhvdw0KKwkJCW1hbnkgYnl0ZXMgYXJlIHRoZXJlIGxlZnQgdG8gc2VuZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nPyAqLw0KKwkJCXhCeXRlc1RvU2VuZCA9IHhTdHJpbmdMZW5ndGggLSB4TmV4dENoYXI7DQorDQorCQkJLyogQXR0ZW1wdCB0byBzZW5kIHJpZ2h0IHVwIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8NCisJCQl4Qnl0ZXNBY3R1YWxseVNlbnQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSAmKCBwYzU1Qnl0ZVN0cmluZ1sgeE5leHRDaGFyIF0gKSwgeEJ5dGVzVG9TZW5kLCB4VGlja3NUb1dhaXQgKTsNCisJCQljb25maWdBU1NFUlQoIHhCeXRlc0FjdHVhbGx5U2VudCA8PSB4Qnl0ZXNUb1NlbmQgKTsNCisNCisJCQkvKiBNb3ZlIHRoZSBpbmRleCB1cCB0aGUgc3RyaW5nIHRvIHRoZSBuZXh0IGNoYXJhY3RlciB0byBiZSBzZW50LA0KKwkJCXdyYXBwaW5nIGlmIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBoYXMgYmVlbiByZWFjaGVkLiAqLw0KKwkJCXhOZXh0Q2hhciArPSB4Qnl0ZXNBY3R1YWxseVNlbnQ7DQorCQkJY29uZmlnQVNTRVJUKCB4TmV4dENoYXIgPD0geFN0cmluZ0xlbmd0aCApOw0KKw0KKwkJCWlmKCB4TmV4dENoYXIgPT0geFN0cmluZ0xlbmd0aCApDQorCQkJew0KKwkJCQl4TmV4dENoYXIgPSAwOw0KKwkJCX0NCisNCisJCQkvKiBJbmNyZW1lbnQgYSBsb29wIGNvdW50ZXIgc28gYSBjaGVjayB0YXNrIGNhbiB0ZWxsIHRoaXMgdGFzayBpcw0KKwkJCXN0aWxsIHJ1bm5pbmcgYXMgZXhwZWN0ZWQuICovDQorCQkJdWxTZW5kZXJMb29wQ291bnRlcnNbIHV4SW5kZXggXSsrOw0KKw0KKwkJCWlmKCB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApID09IHNiSElHSEVSX1BSSU9SSVRZICkNCisJCQl7DQorCQkJCS8qIEFsbG93IG90aGVyIHRhc2tzIHRvIHJ1bi4gKi8NCisJCQkJdlRhc2tEZWxheSggeFNob3J0RGVsYXkgKTsNCisJCQl9DQorDQorCQkJLyogVGhpcyBzdHJlYW0gYnVmZmVyIGlzIGp1c3QgY3JlYXRlZCBhbmQgZGVsZXRlZCB0byBlbnN1cmUgbm8NCisJCQlpc3N1ZXMgd2hlbiBhdHRlbXB0aW5nIHRvIGRlbGV0ZSBhIHN0cmVhbSBidWZmZXIgdGhhdCB3YXMNCisJCQljcmVhdGVkIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gIFRvIHNhdmUgc3RhY2sgc3BhY2UNCisJCQl0aGUgYnVmZmVyIGlzIHNldCB0byBwb2ludCB0byB0aGUgcGM1NUJ5dGVTdHJpbmcsIHdoaWNoIGlzIGEgY29uc3QNCisJCQlzdHJpbmcsIGJ1dCBubyBkYXRhIGlzIHdyaXR0ZW4gaW50byB0aGUgYnVmZmVyIHNvIGFueSB2YWxpZCBhZGRyZXNzDQorCQkJd2lsbCBkby4gKi8NCisJCQl4VGVtcFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVvZiggdWNUZW1wQnVmZmVyICksIHNiVFJJR0dFUl9MRVZFTF8xLCB1Y1RlbXBCdWZmZXIsICZ4U3RhdGljU3RyZWFtQnVmZmVyICk7DQorCQkJdlN0cmVhbUJ1ZmZlckRlbGV0ZSggeFRlbXBTdHJlYW1CdWZmZXIgKTsNCisJCX0NCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgICkNCisNCisJc3RhdGljIHZvaWQgcHJ2UmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKwl7DQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICogKSBwdlBhcmFtZXRlcnM7DQorCWNoYXIgY1J4U3RyaW5nWyAxMiBdOyAvKiBMYXJnZSBlbm91Z2ggdG8gaG9sZCBhIDMyLWJpdCBudW1iZXIgaW4gQVNDSUkuICovDQorCWNvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gcGRNU19UT19USUNLUyggNVVMICk7DQorCWNvbnN0IHNpemVfdCB4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBwYzU1Qnl0ZVN0cmluZyApOw0KKwlzaXplX3QgeE5leHRDaGFyID0gMCwgeFJlY2VpdmVkTGVuZ3RoLCB4Qnl0ZXNUb1JlY2VpdmU7DQorDQorCQlmb3IoIDs7ICkNCisJCXsNCisJCQkvKiBBdHRlbXB0IHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiBieXRlcyB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsDQorCQkJb3IgdGhlIG51bWJlciBvZiBieXRlIHRoYXQgY2FuIGJlIHBsYWNlZCBpbnRvIHRoZSByeCBidWZmZXIsDQorCQkJd2hpY2hldmVyIGlzIHNtYWxsZXN0LiAqLw0KKwkJCXhCeXRlc1RvUmVjZWl2ZSA9IGNvbmZpZ01JTiggKCB4U3RyaW5nTGVuZ3RoIC0geE5leHRDaGFyICksIHNpemVvZiggY1J4U3RyaW5nICkgKTsNCisNCisJCQlkbw0KKwkJCXsNCisJCQkJeFJlY2VpdmVkTGVuZ3RoID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIGNSeFN0cmluZywgeEJ5dGVzVG9SZWNlaXZlLCB4VGlja3NUb1dhaXQgKTsNCisNCisJCQl9IHdoaWxlKCB4UmVjZWl2ZWRMZW5ndGggPT0gMCApOw0KKw0KKwkJCS8qIEVuc3VyZSB0aGUgcmVjZWl2ZWQgc3RyaW5nIG1hdGNoZXMgdGhlIGV4cGVjdGVkIHN0cmluZy4gKi8NCisJCQljb25maWdBU1NFUlQoIG1lbWNtcCggKCB2b2lkICogKSBjUnhTdHJpbmcsICggdm9pZCAqICkgJiggcGM1NUJ5dGVTdHJpbmdbIHhOZXh0Q2hhciBdICksIHhSZWNlaXZlZExlbmd0aCApID09IDAgKTsNCisNCisJCQkvKiBNb3ZlIHRoZSBpbmRleCBpbnRvIHRoZSBzdHJpbmcgdXAgdG8gdGhlIGVuZCBvZiB0aGUgYnl0ZXMNCisJCQlyZWNlaXZlZCBzbyBmYXIgLSB3cmFwcGluZyBpZiB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaGFzIGJlZW4NCisJCQlyZWFjaGVkLiAqLw0KKwkJCXhOZXh0Q2hhciArPSB4UmVjZWl2ZWRMZW5ndGg7DQorCQkJaWYoIHhOZXh0Q2hhciA+PSB4U3RyaW5nTGVuZ3RoICkNCisJCQl7DQorCQkJCXhOZXh0Q2hhciA9IDA7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZFY2hvQ2xpZW50KCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitzaXplX3QgeFNlbmRMZW5ndGggPSAwLCB1eDsNCitjaGFyICpwY1N0cmluZ1RvU2VuZCwgKnBjU3RyaW5nUmVjZWl2ZWQsIGNOZXh0Q2hhciA9IHNiQVNDSUlfU1BBQ0U7DQorY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgPSBwZE1TX1RPX1RJQ0tTKCA1MCApOw0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhUZW1wU3RyZWFtQnVmZmVyOw0KKw0KKy8qIFRoZSB0YXNrJ3MgcHJpb3JpdHkgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIHRoZSBsb29wIGNvdW50ZXJzIHVzZWQgdG8NCitpbmRpY2F0ZSB0aGlzIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCitVQmFzZVR5cGVfdCB1eEluZGV4ID0gdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKTsNCisNCisvKiBQb2ludGVycyB0byB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc3RyZWFtIGJ1ZmZlcnMgYXJlIHBhc3NlZCBpbnRvIHRoaXMgdGFzaw0KK3VzaW5nIHRoZSB0YXNrJ3MgcGFyYW1ldGVyLiAqLw0KK0VjaG9TdHJlYW1CdWZmZXJzX3QgKnB4U3RyZWFtQnVmZmVycyA9ICggRWNob1N0cmVhbUJ1ZmZlcnNfdCAqICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIENyZWF0ZSB0aGUgYnVmZmVyIGludG8gd2hpY2ggc3RyaW5ncyB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIgd2lsbCBiZQ0KKwljcmVhdGVkLCBhbmQgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHN0cmluZ3MgZWNob2VkIGJhY2sgZnJvbSB0aGUgc2VydmVyIHdpbGwNCisJYmUgY29waWVkLiAqLw0KKwlwY1N0cmluZ1RvU2VuZCA9ICggY2hhciAqICkgcHZQb3J0TWFsbG9jKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCXBjU3RyaW5nUmVjZWl2ZWQgPSAoIGNoYXIgKiApIHB2UG9ydE1hbGxvYyggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwljb25maWdBU1NFUlQoIHBjU3RyaW5nVG9TZW5kICk7DQorCWNvbmZpZ0FTU0VSVCggcGNTdHJpbmdSZWNlaXZlZCApOw0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogR2VuZXJhdGUgdGhlIGxlbmd0aCBvZiB0aGUgbmV4dCBzdHJpbmcgdG8gc2VuZC4gKi8NCisJCXhTZW5kTGVuZ3RoKys7DQorDQorCQkvKiBUaGUgc3RyZWFtIGJ1ZmZlciBpcyBiZWluZyB1c2VkIHRvIGhvbGQgdmFyaWFibGUgbGVuZ3RoIGRhdGEsIHNvDQorCQllYWNoIGRhdGEgaXRlbSByZXF1aXJlcyBzaXplb2YoIHNpemVfdCApIGJ5dGVzIHRvIGhvbGQgdGhlIGRhdGEncw0KKwkJbGVuZ3RoLCBoZW5jZSB0aGUgc2l6ZW9mKCkgaW4gdGhlIGlmKCkgY29uZGl0aW9uIGJlbG93LiAqLw0KKwkJaWYoIHhTZW5kTGVuZ3RoID4gKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSApICkNCisJCXsNCisJCQkvKiBCYWNrIHRvIGEgc3RyaW5nIGxlbmd0aCBvZiAxLiAqLw0KKwkJCXhTZW5kTGVuZ3RoID0gc2l6ZW9mKCBjaGFyICk7DQorCQl9DQorDQorCQltZW1zZXQoIHBjU3RyaW5nVG9TZW5kLCAweDAwLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorDQorCQlmb3IoIHV4ID0gMDsgdXggPCB4U2VuZExlbmd0aDsgdXgrKyApDQorCQl7DQorCQkJcGNTdHJpbmdUb1NlbmRbIHV4IF0gPSBjTmV4dENoYXI7DQorDQorCQkJY05leHRDaGFyKys7DQorDQorCQkJaWYoIGNOZXh0Q2hhciA+IHNiQVNDSUlfVElMREEgKQ0KKwkJCXsNCisJCQkJY05leHRDaGFyID0gc2JBU0NJSV9TUEFDRTsNCisJCQl9DQorCQl9DQorDQorCQkvKiBTZW5kIHRoZSBnZW5lcmF0ZWQgc3RyaW5nIHRvIHRoZSBidWZmZXIuICovDQorCQlkbw0KKwkJew0KKwkJCXV4ID0geFN0cmVhbUJ1ZmZlclNlbmQoIHB4U3RyZWFtQnVmZmVycy0+eEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNTdHJpbmdUb1NlbmQsIHhTZW5kTGVuZ3RoLCB4VGlja3NUb1dhaXQgKTsNCisNCisJCX0gd2hpbGUoIHV4ID09IDAgKTsNCisNCisJCS8qIFdhaXQgZm9yIHRoZSBzdHJpbmcgdG8gYmUgZWNob2VkIGJhY2suICovDQorCQltZW1zZXQoIHBjU3RyaW5nUmVjZWl2ZWQsIDB4MDAsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJCXhTdHJlYW1CdWZmZXJSZWNlaXZlKCBweFN0cmVhbUJ1ZmZlcnMtPnhFY2hvU2VydmVyQnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nUmVjZWl2ZWQsIHhTZW5kTGVuZ3RoLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCQljb25maWdBU1NFUlQoIHN0cmNtcCggcGNTdHJpbmdUb1NlbmQsIHBjU3RyaW5nUmVjZWl2ZWQgKSA9PSAwICk7DQorDQorCQkvKiBNYWludGFpbiBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyBjb2RlIGV4ZWN1dGVzIHNvIGENCisJCWNoZWNrIHRhc2sgY2FuIGRldGVybWluZSBpZiB0aGlzIHRhc2sgaXMgc3RpbGwgZnVuY3Rpb25pbmcgYXMNCisJCWV4cGVjdGVkIG9yIG5vdC4gIEFzIHRoZXJlIGFyZSB0d28gY2xpZW50IHRhc2tzLCBhbmQgdGhlIHByaW9yaXRpZXMNCisJCXVzZWQgYXJlIDAgYW5kIDEsIHRoZSB0YXNrJ3MgcHJpb3JpdHkgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIHRoZQ0KKwkJbG9vcCBjb3VudCBhcnJheS4gKi8NCisJCXVsRWNob0xvb3BDb3VudGVyc1sgdXhJbmRleCBdKys7DQorDQorCQkvKiBUaGlzIHN0cmVhbSBidWZmZXIgaXMganVzdCBjcmVhdGVkIGFuZCBkZWxldGVkIHRvIGVuc3VyZSBubyBtZW1vcnkNCisJCWxlYWtzLiAqLw0KKwkJeFRlbXBTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBzYlRSSUdHRVJfTEVWRUxfMSApOw0KKwkJcHJ2U2luZ2xlVGFza1Rlc3RzKCB4VGVtcFN0cmVhbUJ1ZmZlciApOw0KKwkJdlN0cmVhbUJ1ZmZlckRlbGV0ZSggeFRlbXBTdHJlYW1CdWZmZXIgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZFY2hvU2VydmVyKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitzaXplX3QgeFJlY2VpdmVkTGVuZ3RoOw0KK2NoYXIgKnBjUmVjZWl2ZWRTdHJpbmc7DQorRWNob1N0cmVhbUJ1ZmZlcnNfdCB4U3RyZWFtQnVmZmVyczsNCitUaWNrVHlwZV90IHhUaW1lT25FbnRlcmluZzsNCitjb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvQmxvY2sgPSBwZE1TX1RPX1RJQ0tTKCAzNTBVTCApOw0KKw0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIENyZWF0ZSB0aGUgc3RyZWFtIGJ1ZmZlciB1c2VkIHRvIHNlbmQgZGF0YSBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciwNCisJYW5kIHRoZSBzdHJlYW0gYnVmZmVyIHVzZWQgdG8gZWNobyB0aGUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUNCisJY2xpZW50LiAqLw0KKwl4U3RyZWFtQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGUoIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiVFJJR0dFUl9MRVZFTF8xICk7DQorCXhTdHJlYW1CdWZmZXJzLnhFY2hvU2VydmVyQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZSggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUywgc2JUUklHR0VSX0xFVkVMXzEgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJzLnhFY2hvU2VydmVyQnVmZmVyICk7DQorDQorCS8qIENyZWF0ZSB0aGUgYnVmZmVyIGludG8gd2hpY2ggcmVjZWl2ZWQgc3RyaW5ncyB3aWxsIGJlIGNvcGllZC4gKi8NCisJcGNSZWNlaXZlZFN0cmluZyA9ICggY2hhciAqICkgcHZQb3J0TWFsbG9jKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggcGNSZWNlaXZlZFN0cmluZyApOw0KKw0KKwkvKiBEb24ndCBleHBlY3QgdG8gcmVjZWl2ZSBhbnl0aGluZyB5ZXQhICovDQorCXhUaW1lT25FbnRlcmluZyA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQorCXhSZWNlaXZlZExlbmd0aCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCB4VGlja3NUb0Jsb2NrICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGFza0dldFRpY2tDb3VudCgpIC0geFRpbWVPbkVudGVyaW5nICkgPj0geFRpY2tzVG9CbG9jayApOw0KKwljb25maWdBU1NFUlQoIHhSZWNlaXZlZExlbmd0aCA9PSAwICk7DQorCSggdm9pZCApIHhUaW1lT25FbnRlcmluZzsNCisNCisJLyogTm93IHRoZSBzdHJlYW0gYnVmZmVycyBoYXZlIGJlZW4gY3JlYXRlZCB0aGUgZWNobyBjbGllbnQgdGFzayBjYW4gYmUNCisJY3JlYXRlZC4gIElmIHRoaXMgc2VydmVyIHRhc2sgaGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkgdGhlbiB0aGUgY2xpZW50IHRhc2sNCisJaXMgY3JlYXRlZCBhdCB0aGUgbG93ZXIgcHJpb3JpdHkgLSBpZiB0aGlzIHNlcnZlciB0YXNrIGhhcyB0aGUgbG93ZXINCisJcHJpb3JpdHkgdGhlbiB0aGUgY2xpZW50IHRhc2sgaXMgY3JlYXRlZCBhdCB0aGUgaGlnaGVyIHByaW9yaXR5LiAqLw0KKwlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBzYkxPV0VSX1BSSU9SSVRZICkNCisJew0KKwkJeFRhc2tDcmVhdGUoIHBydkVjaG9DbGllbnQsICJFY2hvQ2xpZW50Iiwgc2JTVEFDS19TSVpFLCAgKCB2b2lkICogKSAmeFN0cmVhbUJ1ZmZlcnMsIHNiSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCX0NCisJZWxzZQ0KKwl7DQorCQkvKiBIZXJlIHBydlNpbmdsZVRhc2tUZXN0cygpIHBlcmZvcm1zIHZhcmlvdXMgdGVzdHMgb24gYSBzdHJlYW0gYnVmZmVyDQorCQl0aGF0IHdhcyBjcmVhdGVkIGR5bmFtaWNhbGx5LiAqLw0KKwkJcHJ2U2luZ2xlVGFza1Rlc3RzKCB4U3RyZWFtQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciApOw0KKwkJeFRhc2tDcmVhdGUoIHBydkVjaG9DbGllbnQsICJFY2hvQ2xpZW50Iiwgc2JTVEFDS19TSVpFLCAoIHZvaWQgKiApICZ4U3RyZWFtQnVmZmVycywgc2JMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorDQorCWZvciggOzsgKQ0KKwl7DQorCQltZW1zZXQoIHBjUmVjZWl2ZWRTdHJpbmcsIDB4MDAsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJCS8qIEhhcyBhbnkgZGF0YSBiZWVuIHNlbnQgYnkgdGhlIGNsaWVudD8gKi8NCisJCXhSZWNlaXZlZExlbmd0aCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCB4VGlja3NUb0Jsb2NrICk7DQorDQorCQkvKiBTaG91bGQgYWx3YXlzIHJlY2VpdmUgZGF0YSBhcyBhIGRlbGF5IHdhcyB1c2VkLiAqLw0KKwkJY29uZmlnQVNTRVJUKCB4UmVjZWl2ZWRMZW5ndGggPiAwICk7DQorDQorCQkvKiBFY2hvIHRoZSByZWNlaXZlZCBkYXRhIGJhY2sgdG8gdGhlIGNsaWVudC4gKi8NCisJCXhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciwgKCB2b2lkICogKSBwY1JlY2VpdmVkU3RyaW5nLCB4UmVjZWl2ZWRMZW5ndGgsIHBvcnRNQVhfREVMQVkgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQZXJpb2RpY1N0cmVhbUJ1ZmZlclByb2Nlc3NpbmcoIHZvaWQgKQ0KK3sNCitzdGF0aWMgc2l6ZV90IHhOZXh0Q2hhciA9IDA7DQorQmFzZVR5cGVfdCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOw0KKw0KKwkvKiBDYWxsZWQgZnJvbSB0aGUgdGljayBpbnRlcnJ1cHQgaG9vay4gIElmIHRoZSBnbG9iYWwgc3RyZWFtIGJ1ZmZlcg0KKwl2YXJpYWJsZSBpcyBub3QgTlVMTCB0aGVuIHRoZSBwcnZJbnRlcnJ1cHRUcmlnZ2VyVGVzdCgpIHRhc2sgZXhwZWN0cyBhIGJ5dGUNCisJdG8gYmUgc2VudCB0byB0aGUgc3RyZWFtIGJ1ZmZlciBvbiBlYWNoIHRpY2sgaW50ZXJydXB0LiAqLw0KKwlpZiggeEludGVycnVwdFN0cmVhbUJ1ZmZlciAhPSBOVUxMICkNCisJew0KKwkJLyogT25lIGNoYXJhY3RlciBmcm9tIHRoZSBwY0RhdGFTZW50RnJvbUludGVycnVwdCBzdHJpbmcgaXMgc2VudCBvbiBlYWNoDQorCQlpbnRlcnJ1cHQuICBUaGUgdGFzayBibG9ja2VkIG9uIHRoZSBzdHJlYW0gYnVmZmVyIHNob3VsZCBub3QgYmUNCisJCXVuYmxvY2tlZCB1bnRpbCB0aGUgZGVmaW5lZCB0cmlnZ2VyIGxldmVsIGlzIGhpdC4gKi8NCisJCXhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggeEludGVycnVwdFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSAmKCBwY0RhdGFTZW50RnJvbUludGVycnVwdFsgeE5leHRDaGFyIF0gKSwgc2l6ZW9mKCBjaGFyICksICZ4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisNCisJCWlmKCB4TmV4dENoYXIgPCBzdHJsZW4oIHBjRGF0YVNlbnRGcm9tSW50ZXJydXB0ICkgKQ0KKwkJew0KKwkJCXhOZXh0Q2hhcisrOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogU3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGJlaW5nIHNlbnQgYWdhaW4uICovDQorCQl4TmV4dENoYXIgPSAwOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydkludGVycnVwdFRyaWdnZXJMZXZlbFRlc3QoIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorc2l6ZV90IHhUcmlnZ2VyTGV2ZWwgPSAxLCB4Qnl0ZXNSZWNlaXZlZDsNCitjb25zdCBzaXplX3QgeFN0cmVhbUJ1ZmZlclNpemVCeXRlcyA9ICggc2l6ZV90ICkgOCwgeE1heFRyaWdnZXJMZXZlbCA9ICggc2l6ZV90ICkgNiwgeE1pblRyaWdnZXJMZXZlbCA9ICggc2l6ZV90ICkgMTsNCitjb25zdCBUaWNrVHlwZV90IHhSZWFkQmxvY2tUaW1lID0gNCwgeEN5Y2xlQmxvY2tUaW1lID0gcGRNU19UT19USUNLUyggMTAwICk7DQordWludDhfdCB1Y1J4RGF0YVsgOCBdOw0KK0Jhc2VUeXBlX3QgeEVycm9yRGV0ZWN0ZWQgPSBwZEZBTFNFOw0KKyNpZm5kZWYgY29uZmlnU1RSRUFNX0JVRkZFUl9UUklHR0VSX0xFVkVMX1RFU1RfTUFSR0lODQorICAgIGNvbnN0IHNpemVfdCB4QWxsb3dhYmxlTWFyZ2luID0gKCBzaXplX3QgKSAwOw0KKyNlbHNlDQorICAgIGNvbnN0IHNpemVfdCB4QWxsb3dhYmxlTWFyZ2luID0gKCBzaXplX3QgKSBjb25maWdTVFJFQU1fQlVGRkVSX1RSSUdHRVJfTEVWRUxfVEVTVF9NQVJHSU47DQorI2VuZGlmDQorDQorCS8qIFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCWZvciggeFRyaWdnZXJMZXZlbCA9IHhNaW5UcmlnZ2VyTGV2ZWw7IHhUcmlnZ2VyTGV2ZWwgPCB4TWF4VHJpZ2dlckxldmVsOyB4VHJpZ2dlckxldmVsKysgKQ0KKwkJew0KKwkJCS8qIENyZWF0ZSB0aGUgc3RyZWFtIGJ1ZmZlciB0aGF0IHdpbGwgYmUgdXNlZCBmcm9tIGluc2lkZSB0aGUgdGljaw0KKwkJCWludGVycnVwdC4gKi8NCisJCQl4U3RyZWFtQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZSggeFN0cmVhbUJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbCApOw0KKwkJCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkJCS8qIE5vdyB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYmVlbiBjcmVhdGVkIGl0IGNhbiBiZSBhc3NpZ25lZCB0byB0aGUNCisJCQlmaWxlIHNjb3BlIHZhcmlhYmxlLCB3aGljaCB3aWxsIGFsbG93IHRoZSB0aWNrIGludGVycnVwdCB0byBzdGFydA0KKwkJCXVzaW5nIGl0LiAqLw0KKwkJCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KKwkJCXsNCisJCQkJeEludGVycnVwdFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXI7DQorCQkJfQ0KKwkJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorDQorCQkJeEJ5dGVzUmVjZWl2ZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSB1Y1J4RGF0YSwgc2l6ZW9mKCB1Y1J4RGF0YSApLCB4UmVhZEJsb2NrVGltZSApOw0KKw0KKwkJCS8qIFNldCB0aGUgZmlsZSBzY29wZSB2YXJpYWJsZSBiYWNrIHRvIE5VTEwgc28gdGhlIGludGVycnVwdCBkb2Vzbid0DQorCQkJdHJ5IHRvIHVzZSBpdCBhZ2Fpbi4gKi8NCisJCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisJCQl7DQorCQkJCXhJbnRlcnJ1cHRTdHJlYW1CdWZmZXIgPSBOVUxMOw0KKwkJCX0NCisJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKw0KKwkJCS8qIE5vdyBjaGVjayB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGVxdWFscyB0aGUgdHJpZ2dlciBsZXZlbCwNCisJCQlleGNlcHQgaW4gdGhlIGNhc2UgdGhhdCB0aGUgcmVhZCB0aW1lZCBvdXQgYmVmb3JlIHRoZSB0cmlnZ2VyIGxldmVsDQorCQkJd2FzIHJlYWNoZWQuICovDQorCQkJaWYoIHhCeXRlc1JlY2VpdmVkIDwgeFRyaWdnZXJMZXZlbCApDQorCQkJew0KKwkJCQkvKiBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgdHJpZ2dlciBsZXZlbCB3YXMgZ3JlYXRlciB0aGFuDQorCQkJCXRoZSBibG9jayB0aW1lLiAqLw0KKwkJCQlpZiggeFRyaWdnZXJMZXZlbCA8IHhSZWFkQmxvY2tUaW1lICkNCisJCQkJew0KKwkJCQkJeEVycm9yRGV0ZWN0ZWQgPSBwZFRSVUU7DQorCQkJCX0NCisJCQl9DQorCQkJZWxzZSBpZiggKCB4Qnl0ZXNSZWNlaXZlZCAtIHhUcmlnZ2VyTGV2ZWwgKSA+IHhBbGxvd2FibGVNYXJnaW4gKQ0KKwkJCXsNCisJCQkJLyogQSBtYXJnaW4gbWF5IGJlIHJlcXVpcmVkIGhlcmUgaWYgdGhlcmUgYXJlIG90aGVyIGhpZ2ggcHJpb3JpdHkNCisJCQkJdGFza3MgcHJldmVudCB0aGUgdGFzayB0aGF0IHJlYWRzIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVyIHJ1bm5pbmcNCisJCQkJaW1tZWRpYXRlbHkuICovDQorCQkJCXhFcnJvckRldGVjdGVkID0gcGRUUlVFOw0KKwkJCX0NCisNCisJCQlpZiggeEJ5dGVzUmVjZWl2ZWQgPiBzaXplb2YoIHVjUnhEYXRhICkgKQ0KKwkJCXsNCisJCQkJeEVycm9yRGV0ZWN0ZWQgPSBwZFRSVUU7DQorCQkJfQ0KKwkJCWVsc2UgaWYoIG1lbWNtcCggKCB2b2lkICogKSB1Y1J4RGF0YSwgKCBjb25zdCB2b2lkICogKSBwY0RhdGFTZW50RnJvbUludGVycnVwdCwgeEJ5dGVzUmVjZWl2ZWQgKSAhPSAwICkNCisJCQl7DQorCQkJCS8qIFJlY2VpdmVkIGRhdGEgZGlkbid0IG1hdGNoIHRoYXQgZXhwZWN0ZWQuICovDQorCQkJCXhFcnJvckRldGVjdGVkID0gcGRUUlVFOw0KKwkJCX0NCisNCisJCQlpZiggeEVycm9yRGV0ZWN0ZWQgPT0gcGRGQUxTRSApDQorCQkJew0KKwkJCQkvKiBJbmNyZW1lbnQgdGhlIGN5Y2xlIGNvdW50ZXIgc28gdGhlICdjaGVjaycgdGFzayBrbm93cyB0aGlzIHRlc3QNCisJCQkJaXMgc3RpbGwgcnVubmluZyB3aXRob3V0IGVycm9yLiAqLw0KKwkJCQl1bEludGVycnVwdFRyaWdnZXJDb3VudGVyKys7DQorCQkJfQ0KKw0KKwkJCS8qIFRpZHkgdXAgcmVhZHkgZm9yIHRoZSBuZXh0IGxvb3AuICovDQorCQkJdlN0cmVhbUJ1ZmZlckRlbGV0ZSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJCXZUYXNrRGVsYXkoIHhDeWNsZUJsb2NrVGltZSApOw0KKwkJfQ0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeEFyZVN0cmVhbUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCB2b2lkICkNCit7DQorc3RhdGljIHVpbnQzMl90IHVsTGFzdEVjaG9Mb29wQ291bnRlcnNbIHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdID0geyAwIH07DQorc3RhdGljIHVpbnQzMl90IHVsTGFzdE5vbkJsb2NraW5nUnhDb3VudGVyID0gMDsNCitzdGF0aWMgdWludDMyX3QgdWxMYXN0SW50ZXJydXB0VHJpZ2dlckNvdW50ZXIgPSAwOw0KK0Jhc2VUeXBlX3QgeFJldHVybiA9IHBkUEFTUywgeDsNCisNCisJZm9yKCB4ID0gMDsgeCA8IHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUzsgeCsrICkNCisJew0KKwkJaWYoIHVsTGFzdEVjaG9Mb29wQ291bnRlcnNbIHggXSA9PSB1bEVjaG9Mb29wQ291bnRlcnNbIHggXSApDQorCQl7DQorCQkJeFJldHVybiA9IHBkRkFJTDsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl1bExhc3RFY2hvTG9vcENvdW50ZXJzWyB4IF0gPSB1bEVjaG9Mb29wQ291bnRlcnNbIHggXTsNCisJCX0NCisJfQ0KKw0KKwlpZiggdWxOb25CbG9ja2luZ1J4Q291bnRlciA9PSB1bExhc3ROb25CbG9ja2luZ1J4Q291bnRlciApDQorCXsNCisJCXhSZXR1cm4gPSBwZEZBSUw7DQorCX0NCisJZWxzZQ0KKwl7DQorCQl1bExhc3ROb25CbG9ja2luZ1J4Q291bnRlciA9IHVsTm9uQmxvY2tpbmdSeENvdW50ZXI7DQorCX0NCisNCisJaWYoIHVsTGFzdEludGVycnVwdFRyaWdnZXJDb3VudGVyID09IHVsSW50ZXJydXB0VHJpZ2dlckNvdW50ZXIgKQ0KKwl7DQorCQl4UmV0dXJuID0gcGRGQUlMOw0KKwl9DQorCWVsc2UNCisJew0KKwkJdWxMYXN0SW50ZXJydXB0VHJpZ2dlckNvdW50ZXIgPSB1bEludGVycnVwdFRyaWdnZXJDb3VudGVyOw0KKwl9DQorDQorCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCisJew0KKwkJc3RhdGljIHVpbnQzMl90IHVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgc2JOVU1CRVJfT0ZfRUNIT19DTElFTlRTIF0gPSB7IDAgfTsNCisNCisJCWZvciggeCA9IDA7IHggPCBzYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1M7IHgrKyApDQorCQl7DQorCQkJaWYoIHVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgeCBdID09IHVsU2VuZGVyTG9vcENvdW50ZXJzWyB4IF0gKQ0KKwkJCXsNCisJCQkJeFJldHVybiA9IHBkRkFJTDsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJdWxMYXN0U2VuZGVyTG9vcENvdW50ZXJzWyB4IF0gPSB1bFNlbmRlckxvb3BDb3VudGVyc1sgeCBdOw0KKwkJCX0NCisJCX0NCisJfQ0KKwkjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdHJlYW1CdWZmZXJJbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RyZWFtQnVmZmVySW50ZXJydXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc2ZjEyZQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RyZWFtQnVmZmVySW50ZXJydXB0LmMKQEAgLTAsMCArMSwyMjkgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyoNCisgKiBBIHNpbXBsZSBleGFtcGxlIHRoYXQgc2hvd3MgYSBzdHJlYW0gYnVmZmVyIGJlaW5nIHVzZWQgdG8gcGFzcyBkYXRhIGZyb20gYW4NCisgKiBpbnRlcnJ1cHQgdG8gYSB0YXNrLg0KKyAqDQorICogVGhlcmUgYXJlIHR3byBzdHJpbmdzLCBwY1N0cmluZ1RvU2VuZCBhbmQgcGNTdHJpbmdUb1JlY2VpdmUsIHdoZXJlDQorICogcGNTdHJpbmdUb1JlY2VpdmUgaXMgYSBzdWJzdHJpbmcgb2YgcGNTdHJpbmdUb1NlbmQuICBUaGUgaW50ZXJydXB0IHNlbmRzDQorICogYSBmZXcgYnl0ZXMgb2YgcGNTdHJpbmdUb1NlbmQgdG8gYSBzdHJlYW0gYnVmZmVyIGV2ZXIgZmV3IHRpbWVzIHRoYXQgaXQNCisgKiBleGVjdXRlcy4gIEEgdGFzayByZWFkcyB0aGUgYnl0ZXMgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlciwgbG9va2luZyBmb3IgdGhlDQorICogc3Vic3RyaW5nLCBhbmQgZmxhZ2dpbmcgYW4gZXJyb3IgaWYgdGhlIHJlY2VpdmVkIGRhdGEgaXMgaW52YWxpZC4NCisgKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAic3RkaW8uaCINCisjaW5jbHVkZSAic3RyaW5nLmgiDQorDQorLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisjaW5jbHVkZSAic3RyZWFtX2J1ZmZlci5oIg0KKw0KKy8qIERlbW8gYXBwIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJJbnRlcnJ1cHQuaCINCisNCisjZGVmaW5lIHNiaVNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTCQkoICggc2l6ZV90ICkgMTAwICkNCisjZGVmaW5lIHNiaVNUUkVBTV9CVUZGRVJfVFJJR0dFUl9MRVZFTF8xMAkoICggQmFzZVR5cGVfdCApIDEwICkNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBJbXBsZW1lbnRzIHRoZSB0YXNrIHRoYXQgcmVjZWl2ZXMgYSBzdHJlYW0gb2YgYnl0ZXMgZnJvbSB0aGUgaW50ZXJydXB0LiAqLw0KK3N0YXRpYyB2b2lkIHBydlJlY2VpdmluZ1Rhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRoZSBzdHJlYW0gYnVmZmVyIHRoYXQgaXMgdXNlZCB0byBzZW5kIGRhdGEgZnJvbSBhbiBpbnRlcnJ1cHQgdG8gdGhlIHRhc2suICovDQorc3RhdGljIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgPSBOVUxMOw0KKw0KKy8qIFRoZSBzdHJpbmcgdGhhdCBpcyBzZW50IGZyb20gdGhlIGludGVycnVwdCB0byB0aGUgdGFzayBmb3VyIGJ5dGVzIGF0IGENCit0aW1lLiAgTXVzdCBiZSBtdWx0aXBsZSBvZiA0IGJ5dGVzIGxvbmcgYXMgdGhlIElTUiBzZW5kcyA0IGJ5dGVzIGF0IGEgdGltZSovDQorc3RhdGljIGNvbnN0IGNoYXIgKiBwY1N0cmluZ1RvU2VuZCA9ICJfX19fX0hlbGxvIEZyZWVSVE9TX19fX18iOw0KKw0KKy8qIFRoZSBzdHJpbmcgdG8gdGFzayBpcyBsb29raW5nIGZvciwgd2hpY2ggbXVzdCBiZSBhIHN1YnN0cmluZyBvZg0KK3BjU3RyaW5nVG9TZW5kLiAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICogcGNTdHJpbmdUb1JlY2VpdmUgPSAiSGVsbG8gRnJlZVJUT1MiOw0KKw0KKy8qIFNldCB0byBwZEZBSUwgaWYgYW55dGhpbmcgdW5leHBlY3RlZCBoYXBwZW5zLiAqLw0KK3N0YXRpYyBCYXNlVHlwZV90IHhEZW1vU3RhdHVzID0gcGRQQVNTOw0KKw0KKy8qIEluY3JlbWVudGVkIGVhY2ggdGltZSBwY1N0cmluZ1RvUmVjZWl2ZSBpcyBjb3JyZWN0bHkgcmVjZWl2ZWQsIHByb3ZpZGVkIG5vDQorZXJyb3JzIGhhdmUgb2NjdXJyZWQuICBVc2VkIHNvIHRoZSBjaGVjayB0YXNrIGNhbiBjaGVjayB0aGlzIHRhc2sgaXMgc3RpbGwNCitydW5uaW5nIGFzIGV4cGVjdGVkLiAqLw0KK3N0YXRpYyB1aW50MzJfdCB1bEN5Y2xlQ291bnQgPSAwOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlN0YXJ0U3RyZWFtQnVmZmVySW50ZXJydXB0RGVtbyggdm9pZCApDQorew0KKwkvKiBDcmVhdGUgdGhlIHN0cmVhbSBidWZmZXIgdGhhdCBzZW5kcyBkYXRhIGZyb20gdGhlIGludGVycnVwdCB0byB0aGUNCisJdGFzaywgYW5kIGNyZWF0ZSB0aGUgdGFzay4gKi8NCisJeFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGUoIC8qIFRoZSBidWZmZXIgbGVuZ3RoIGluIGJ5dGVzLiAqLw0KKwkJCQkJCQkJCQkgc2JpU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsDQorCQkJCQkJCQkJCSAvKiBUaGUgc3RyZWFtIGJ1ZmZlcidzIHRyaWdnZXIgbGV2ZWwuICovDQorCQkJCQkJCQkJCSBzYmlTVFJFQU1fQlVGRkVSX1RSSUdHRVJfTEVWRUxfMTAgKTsNCisNCisJeFRhc2tDcmVhdGUoIHBydlJlY2VpdmluZ1Rhc2ssIC8qIFRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIHRhc2suICovDQorCQkJCSAiU3RySW50UngiLAkgICAvKiBIdW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGUgdGFzay4gKi8NCisJCQkJIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwJLyogU3RhY2sgc2l6ZSAoaW4gd29yZHMhKS4gKi8NCisJCQkJIE5VTEwsCQkJICAgLyogVGFzayBwYXJhbWV0ZXIgaXMgbm90IHVzZWQuICovDQorCQkJCSB0c2tJRExFX1BSSU9SSVRZICsgMiwgLyogVGhlIHByaW9yaXR5IGF0IHdoaWNoIHRoZSB0YXNrIGlzIGNyZWF0ZWQuICovDQorCQkJCSBOVUxMICk7CQkgICAvKiBObyB1c2UgZm9yIHRoZSB0YXNrIGhhbmRsZS4gKi8NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2UmVjZWl2aW5nVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorY2hhciBjUnhCdWZmZXJbIDIwIF07DQorQmFzZVR5cGVfdCB4TmV4dEJ5dGUgPSAwOw0KKw0KKwkvKiBSZW1vdmUgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBNYWtlIHN1cmUgdGhlIHN0cmluZyB3aWxsIGZpdCBpbiB0aGUgUnggYnVmZmVyLCBpbmNsdWRpbmcgdGhlIE5VTEwNCisJdGVybWluYXRvci4gKi8NCisJY29uZmlnQVNTRVJUKCBzaXplb2YoIGNSeEJ1ZmZlciApID4gc3RybGVuKCBwY1N0cmluZ1RvUmVjZWl2ZSApICk7DQorDQorCS8qIE1ha2Ugc3VyZSB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYmVlbiBjcmVhdGVkLiAqLw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXIgIT0gTlVMTCApOw0KKw0KKwkvKiBTdGFydCB3aXRoIHRoZSBSeCBidWZmZXIgaW4gYSBrbm93biBzdGF0ZS4gKi8NCisJbWVtc2V0KCBjUnhCdWZmZXIsIDB4MDAsIHNpemVvZiggY1J4QnVmZmVyICkgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIEtlZXAgcmVjZWl2aW5nIGNoYXJhY3RlcnMgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGlzIHJlY2VpdmVkLg0KKwkJTm90ZTogIEFuIGluZmluaXRlIGJsb2NrIHRpbWUgaXMgdXNlZCB0byBzaW1wbGlmeSB0aGUgZXhhbXBsZS4gIEluZmluaXRlDQorCQlibG9jayB0aW1lcyBhcmUgbm90IHJlY29tbWVuZGVkIGluIHByb2R1Y3Rpb24gY29kZSBhcyB0aGV5IGRvIG5vdCBhbGxvdw0KKwkJZm9yIGVycm9yIHJlY292ZXJ5LiAqLw0KKwkJeFN0cmVhbUJ1ZmZlclJlY2VpdmUoIC8qIFRoZSBzdHJlYW0gYnVmZmVyIGRhdGEgaXMgYmVpbmcgcmVjZWl2ZWQgZnJvbS4gKi8NCisJCQkJCQkJICB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkgIC8qIFdoZXJlIHRvIHBsYWNlIHJlY2VpdmVkIGRhdGEuICovDQorCQkJCQkJCSAgKCB2b2lkICogKSAmKCBjUnhCdWZmZXJbIHhOZXh0Qnl0ZSBdICksDQorCQkJCQkJCSAgLyogVGhlIG51bWJlciBvZiBieXRlcyB0byByZWNlaXZlLiAqLw0KKwkJCQkJCQkgIHNpemVvZiggY2hhciApLA0KKwkJCQkJCQkgIC8qIFRoZSB0aW1lIHRvIHdhaXQgZm9yIHRoZSBuZXh0IGRhdGEgaWYgdGhlIGJ1ZmZlcg0KKwkJCQkJCQkgIGlzIGVtcHR5LiAqLw0KKwkJCQkJCQkgIHBvcnRNQVhfREVMQVkgKTsNCisNCisJCS8qIElmIHhOZXh0Qnl0ZSBpcyAwIHRoZW4gdGhpcyB0YXNrIGlzIGxvb2tpbmcgZm9yIHRoZSBzdGFydCBvZiB0aGUNCisJCXN0cmluZywgd2hpY2ggaXMgJ0gnLiAqLw0KKwkJaWYoIHhOZXh0Qnl0ZSA9PSAwICkNCisJCXsNCisJCQlpZiggY1J4QnVmZmVyWyB4TmV4dEJ5dGUgXSA9PSAnSCcgKQ0KKwkJCXsNCisJCQkJLyogVGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgaGFzIGJlZW4gZm91bmQuICBOb3cgcmVjZWl2ZQ0KKwkJCQljaGFyYWN0ZXJzIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBpcyBmb3VuZC4gKi8NCisJCQkJeE5leHRCeXRlKys7DQorCQkJfQ0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCS8qIFJlY2VpdmluZyBjaGFyYWN0ZXJzIHdoaWxlIGxvb2tpbmcgZm9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZywNCisJCQl3aGljaCBpcyBhbiAnUycuICovDQorCQkJaWYoIGNSeEJ1ZmZlclsgeE5leHRCeXRlIF0gPT0gJ1MnICkNCisJCQl7DQorCQkJCS8qIFRoZSBzdHJpbmcgaGFzIG5vdyBiZWVuIHJlY2VpdmVkLiAgQ2hlY2sgaXRzIHZhbGlkaXR5LiAqLw0KKwkJCQlpZiggc3RyY21wKCBjUnhCdWZmZXIsIHBjU3RyaW5nVG9SZWNlaXZlICkgIT0gMCApDQorCQkJCXsNCisJCQkJCXhEZW1vU3RhdHVzID0gcGRGQUlMOw0KKwkJCQl9DQorDQorCQkJCS8qIFJldHVybiB0byBzdGFydCBsb29raW5nIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcNCisJCQkJYWdhaW4uICovDQorCQkJCW1lbXNldCggY1J4QnVmZmVyLCAweDAwLCBzaXplb2YoIGNSeEJ1ZmZlciApICk7DQorCQkJCXhOZXh0Qnl0ZSA9IDA7DQorDQorCQkJCS8qIEluY3JlbWVudCB0aGUgY3ljbGUgY291bnQgYXMgYW4gaW5kaWNhdGlvbiB0byB0aGUgY2hlY2sgdGFzaw0KKwkJCQl0aGF0IHRoaXMgZGVtbyBpcyBzdGlsbCBydW5uaW5nLiAqLw0KKwkJCQlpZiggeERlbW9TdGF0dXMgPT0gcGRQQVNTICkNCisJCQkJew0KKwkJCQkJdWxDeWNsZUNvdW50Kys7DQorCQkJCX0NCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJLyogUmVjZWl2ZSB0aGUgbmV4dCBjaGFyYWN0ZXIgdGhlIG5leHQgdGltZSBhcm91bmQsIHdoaWxlDQorCQkJCWNvbnRpbnVpbmcgdG8gbG9vayBmb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLw0KKwkJCQl4TmV4dEJ5dGUrKzsNCisNCisJCQkJY29uZmlnQVNTRVJUKCB4TmV4dEJ5dGUgPCBzaXplb2YoIGNSeEJ1ZmZlciApICk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdkJhc2ljU3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHZvaWQgKQ0KK3sNCitzdGF0aWMgc2l6ZV90IHhOZXh0Qnl0ZVRvU2VuZCA9IDA7DQorY29uc3QgQmFzZVR5cGVfdCB4Q2FsbHNCZXR3ZWVuU2VuZHMgPSAxMDAsIHhCeXRlc1RvU2VuZCA9IDQ7DQorc3RhdGljIEJhc2VUeXBlX3QgeENhbGxDb3VudCA9IDA7DQorDQorCS8qIElzIGl0IHRpbWUgdG8gd3JpdGUgdG8gdGhlIHN0cmVhbSBidWZmZXIgYWdhaW4/ICovDQorCXhDYWxsQ291bnQrKzsNCisJaWYoIHhDYWxsQ291bnQgPiB4Q2FsbHNCZXR3ZWVuU2VuZHMgKQ0KKwl7DQorCQl4Q2FsbENvdW50ID0gMDsNCisNCisJCS8qIFNlbmQgdGhlIG5leHQgZm91ciBieXRlcyB0byB0aGUgc3RyZWFtIGJ1ZmZlci4gKi8NCisJCXhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCSAgKCB2b2lkICogKSAoIHBjU3RyaW5nVG9TZW5kICsgeE5leHRCeXRlVG9TZW5kICksDQorCQkJCQkJCQkgIHhCeXRlc1RvU2VuZCwNCisJCQkJCQkJCSAgTlVMTCApOw0KKw0KKwkJLyogU2VuZCB0aGUgbmV4dCBmb3VyIGJ5dGVzIHRoZSBuZXh0IHRpbWUgYXJvdW5kLCB3cmFwcGluZyB0byB0aGUgc3RhcnQNCisJCW9mIHRoZSBzdHJpbmcgaWYgbmVjZXNzYXJ5LiAqLw0KKwkJeE5leHRCeXRlVG9TZW5kICs9IHhCeXRlc1RvU2VuZDsNCisNCisJCWlmKCB4TmV4dEJ5dGVUb1NlbmQgPj0gc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApICkNCisJCXsNCisJCQl4TmV4dEJ5dGVUb1NlbmQgPSAwOw0KKwkJfQ0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeElzSW50ZXJydXB0U3RyZWFtQnVmZmVyRGVtb1N0aWxsUnVubmluZyggdm9pZCApDQorew0KK3VpbnQzMl90IHVsTGFzdEN5Y2xlQ291bnQgPSAwOw0KKw0KKwkvKiBDaGVjayB0aGUgZGVtbyBpcyBzdGlsbCBydW5uaW5nLiAqLw0KKwlpZiggdWxMYXN0Q3ljbGVDb3VudCA9PSB1bEN5Y2xlQ291bnQgKQ0KKwl7DQorCQl4RGVtb1N0YXR1cyA9IHBkRkFJTDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXVsTGFzdEN5Y2xlQ291bnQgPSB1bEN5Y2xlQ291bnQ7DQorCX0NCisNCisJcmV0dXJuIHhEZW1vU3RhdHVzOw0KK30NCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1Rhc2tOb3RpZnkuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGFza05vdGlmeS5jCmluZGV4IGU0Y2IzYTguLmRlZGZkZmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGFza05vdGlmeS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGFza05vdGlmeS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KQEAgLTE2OCw2ICsxMjcsNyBAQAogCUNoZWNrIGJsb2NraW5nIHdoZW4gdGhlcmUgYXJlIG5vIG5vdGlmaWNhdGlvbnMuICovDQogCXhUaW1lT25FbnRlcmluZyA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggbm90aWZ5VUlOVDMyX01BWCwgMCwgJnVsTm90aWZpZWRWYWx1ZSwgeFRpY2tzVG9XYWl0ICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJLyogU2hvdWxkIGhhdmUgYmxvY2tlZCBmb3IgdGhlIGVudGlyZSBibG9jayB0aW1lLiAqLw0KIAlpZiggKCB4VGFza0dldFRpY2tDb3VudCgpIC0geFRpbWVPbkVudGVyaW5nICkgPCB4VGlja3NUb1dhaXQgKQ0KQEAgLTE3Niw2ICsxMzYsOCBAQAogCX0NCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUlMICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09IDBVTCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHVsTm90aWZpZWRWYWx1ZTsNCiANCiANCiANCkBAIC0xODksOSArMTUxLDExIEBACiAJLyogRXZlbiB0aHJvdWdoIHRoZSAnd2l0aG91dCBvdmVyd3JpdGUnIGFjdGlvbiB3YXMgdXNlZCB0aGUgdXBkYXRlIHNob3VsZA0KIAloYXZlIGJlZW4gc3VjY2Vzc2Z1bC4gKi8NCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJLyogTm8gYml0cyBzaG91bGQgaGF2ZSBiZWVuIHBlbmRpbmcgcHJldmlvdXNseS4gKi8NCiAJY29uZmlnQVNTRVJUKCB1bFByZXZpb3VzVmFsdWUgPT0gMCApOw0KKwkoIHZvaWQgKSB1bFByZXZpb3VzVmFsdWU7DQogDQogCS8qIFRoZSB0YXNrIHNob3VsZCBub3cgaGF2ZSBhIG5vdGlmaWNhdGlvbiBwZW5kaW5nLCBhbmQgc28gbm90IHRpbWUgb3V0LiAqLw0KIAl4VGltZU9uRW50ZXJpbmcgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KQEAgLTIwNiw2ICsxNzAsOCBAQAogCWJlIGVxdWFsIHRvIHVsRmlyc3ROb3RpZmllZENvbnN0LiAqLw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCiAJY29uZmlnQVNTRVJUKCB1bE5vdGlmaWVkVmFsdWUgPT0gdWxGaXJzdE5vdGlmaWVkQ29uc3QgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogCS8qIEluY3JlbWVudGVkIHRvIHNob3cgdGhlIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCiAJdWxOb3RpZnlDeWNsZUNvdW50Kys7DQpAQCAtMjIxLDkgKzE4NywxMSBAQAogCWJlIHRoYXQgdXNlZCB3aXRoIHRoZSBmaXJzdCBub3RpZmljYXRpb24uICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5KCB4VGFza1RvTm90aWZ5LCB1bEZpcnN0Tm90aWZpZWRDb25zdCwgZVNldFZhbHVlV2l0aG91dE92ZXJ3cml0ZSApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIA0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeSggeFRhc2tUb05vdGlmeSwgdWxTZWNvbmROb3RpZmllZFZhbHVlQ29uc3QsIGVTZXRWYWx1ZVdpdGhvdXRPdmVyd3JpdGUgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUlMICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJLyogV2FpdGluZyBmb3IgdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgbm93IHJldHVybiBpbW1lZGlhdGVseSBzbyBhIGJsb2NrDQogCXRpbWUgb2YgemVybyBpcyB1c2VkLiAqLw0KQEAgLTIzMSw2ICsxOTksOCBAQAogDQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSB1bEZpcnN0Tm90aWZpZWRDb25zdCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHVsTm90aWZpZWRWYWx1ZTsNCiANCiANCiANCkBAIC0yNDMsMTEgKzIxMywxNSBAQAogCWJhY2suICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5KCB4VGFza1RvTm90aWZ5LCB1bEZpcnN0Tm90aWZpZWRDb25zdCwgZVNldFZhbHVlV2l0aE92ZXJ3cml0ZSApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeSggeFRhc2tUb05vdGlmeSwgdWxTZWNvbmROb3RpZmllZFZhbHVlQ29uc3QsIGVTZXRWYWx1ZVdpdGhPdmVyd3JpdGUgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCBub3RpZnlVSU5UMzJfTUFYLCAwLCAmdWxOb3RpZmllZFZhbHVlLCAwICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09IHVsU2Vjb25kTm90aWZpZWRWYWx1ZUNvbnN0ICk7DQorCSggdm9pZCApIHVsTm90aWZpZWRWYWx1ZTsNCiANCiANCiANCkBAIC0yNTgsOCArMjMyLDEwIEBACiAJcmVtYWluIGF0IHVsU2Vjb25kTm90aWZpZWRDb25zdC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnkoIHhUYXNrVG9Ob3RpZnksIHVsRmlyc3ROb3RpZmllZENvbnN0LCBlTm9BY3Rpb24gKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCBub3RpZnlVSU5UMzJfTUFYLCAwLCAmdWxOb3RpZmllZFZhbHVlLCAwICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09IHVsU2Vjb25kTm90aWZpZWRWYWx1ZUNvbnN0ICk7DQorCSggdm9pZCApIHVsTm90aWZpZWRWYWx1ZTsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiANCiANCkBAIC0yNzIsMTUgKzI0OCwyMCBAQAogCXsNCiAJCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5KCB4VGFza1RvTm90aWZ5LCAwLCBlSW5jcmVtZW50ICk7DQogCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiAJfQ0KIA0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIG5vdGlmeVVJTlQzMl9NQVgsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIDAgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09ICggdWxTZWNvbmROb3RpZmllZFZhbHVlQ29uc3QgKyB1bE1heExvb3BzICkgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogCS8qIFNob3VsZCBub3QgYmUgYW55IG5vdGlmaWNhdGlvbnMgcGVuZGluZyBub3cuICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggMCwgMCwgJnVsTm90aWZpZWRWYWx1ZSwgMCApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZEZBSUwgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogDQogDQpAQCAtMzA2LDYgKzI4Nyw3IEBACiAJCXdoZW4gYWxsIHRoZSBiaXRzIGFyZSBzZXQuICovDQogCQl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIDAsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIDAgKTsNCiAJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIA0KIAkJdWxMb29wKys7DQogDQpAQCAtMzMwLDYgKzMxMiw3IEBACiAJZW50cnkgc2hvdWxkIGFjdHVhbGx5IGdldCBjbGVhcmVkLiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIHVsQml0MCwgdWxCaXQxLCAmdWxOb3RpZmllZFZhbHVlLCB4VGlja3NUb1dhaXQgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUlMICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJLyogTm90aWZ5IHRoZSB0YXNrIHdpdGggbm8gYWN0aW9uIHNvIGFzIG5vdCB0byB1cGRhdGUgdGhlIGJpdHMgZXZlbiB0aG91Z2gNCiAJbm90aWZ5VUlOVDMyX01BWCBpcyB1c2VkIGFzIHRoZSBub3RpZmljYXRpb24gdmFsdWUuICovDQpAQCAtMzQxLDYgKzMyNCw3IEBACiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCAweDAwVUwsIDB4MDBVTCwgJnVsTm90aWZpZWRWYWx1ZSwgMCApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCiAJY29uZmlnQVNTRVJUKCB1bE5vdGlmaWVkVmFsdWUgPT0gKCBub3RpZnlVSU5UMzJfTUFYICYgfnVsQml0MCApICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiANCiANCkBAIC0zNjMsNiArMzQ3LDcgQEAKIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIDB4MDAsIDB4MDAsICZ1bE5vdGlmaWVkVmFsdWUsIDAgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUlMICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09ICggbm90aWZ5VUlOVDMyX01BWCAmIH4oIHVsQml0MCB8IHVsQml0MSApICkgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIA0KIA0KIA0KQEAgLTQzNSw2ICs0MjAsNyBAQAogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggMCwgMCwgJnVsTm90aWZpZWRWYWx1ZSwgcG9ydE1BWF9ERUxBWSApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZEZBTFNFICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09IDAgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIA0KIAkvKiBJbmNyZW1lbnRlZCB0byBzaG93IHRoZSB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQogCXVsTm90aWZ5Q3ljbGVDb3VudCsrOw0KQEAgLTQ0OCw2ICs0MzQsNyBAQAogCS8qIENoZWNrIGEgbm90aWZpY2F0aW9uIGlzIHJlY2VpdmVkLiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIDAsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIHBvcnRNQVhfREVMQVkgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiAJY29uZmlnQVNTRVJUKCB1bE5vdGlmaWVkVmFsdWUgIT0gMCApOw0KIA0KIAkvKiBSZXR1cm4gdGhlIHRhc2sgdG8gaXRzIHByb3BlciBwcmlvcml0eSBhbmQgZGVsZXRlIHRoZSB0aW1lciBhcyBpdCBpcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGltZXJEZW1vLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1RpbWVyRGVtby5jCmluZGV4IDRjZmFiYmMuLjY2NDgxNDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGltZXJEZW1vLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9UaW1lckRlbW8uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMKaW5kZXggNThhNjY5OC4uNTc2ZjA5NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvYmxvY2t0aW0uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgc29tZSB0ZXN0IHNjZW5hcmlvcyB0aGF0IGVuc3VyZSB0YXNrcyBkbyBub3QgZXhpdCBxdWV1ZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0LmMKaW5kZXggNzMzMjM2YS4uNzNmMTQ1ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0X3N0cmluZ3MuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdF9zdHJpbmdzLmMKaW5kZXggYjdhZGMwYy4uMGU5ZjQ5YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0X3N0cmluZ3MuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvbXRlc3Rfc3RyaW5ncy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY291bnRzZW0uYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY291bnRzZW0uYwppbmRleCAzMmVmNDBiLi40ZWQ0ZTgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3JmbGFzaC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jcmZsYXNoLmMKaW5kZXggZjhjMzcyMS4uN2JlMWJjNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jcmZsYXNoLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jcmZsYXNoLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGZpbGUgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgcXVldWVzIHRvIHBhc3MgZGF0YQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3Job29rLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NyaG9vay5jCmluZGV4IDljOTJjNjEuLjMwMGE0ZTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3Job29rLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jcmhvb2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGRlbW8gZmlsZSBkZW1vbnN0cmF0ZXMgaG93IHRvIHNlbmQgZGF0YSBiZXR3ZWVuIGFuIElTUiBhbmQgYQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZGVhdGguYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZGVhdGguYwppbmRleCA0YzI4ZTM3Li45ODZkNThhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2RlYXRoLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9kZWF0aC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBDcmVhdGUgYSBzaW5nbGUgcGVyc2lzdGVudCB0YXNrIHdoaWNoIHBlcmlvZGljYWxseSBkeW5hbWljYWxseSBjcmVhdGVzIGFub3RoZXINCkBAIC0xMzAsMjYgKzg5LDYgQEAKIHZvaWQgdkNyZWF0ZVN1aWNpZGFsVGFza3MoIFVCYXNlVHlwZV90IHV4UHJpb3JpdHkgKQ0KIHsNCiAJeFRhc2tDcmVhdGUoIHZDcmVhdGVUYXNrcywgIkNSRUFUT1IiLCBkZWF0aFNUQUNLX1NJWkUsICggdm9pZCAqICkgTlVMTCwgdXhQcmlvcml0eSwgTlVMTCApOw0KLQ0KLQkvKiBSZWNvcmQgdGhlIG51bWJlciBvZiB0YXNrcyB0aGF0IGFyZSBydW5uaW5nIG5vdyBzbyB3ZSBrbm93IGlmIGFueSBvZiB0aGUNCi0Jc3VpY2lkYWwgdGFza3MgaGF2ZSBmYWlsZWQgdG8gYmUga2lsbGVkLiAqLw0KLQl1eFRhc2tzUnVubmluZ0F0U3RhcnQgPSAoIFVCYXNlVHlwZV90ICkgdXhUYXNrR2V0TnVtYmVyT2ZUYXNrcygpOw0KLQ0KLQkvKiBGcmVlUlRPUy5vcmcgdmVyc2lvbnMgYmVmb3JlIFYzLjAgc3RhcnRlZCB0aGUgaWRsZS10YXNrIGFzIHRoZSB2ZXJ5DQotCWZpcnN0IHRhc2suIFRoZSBpZGxlIHRhc2sgd2FzIHRoZW4gYWxyZWFkeSBpbmNsdWRlZCBpbiB1eFRhc2tzUnVubmluZ0F0U3RhcnQuDQotCUZyb20gRnJlZVJUT1MgVjMuMCBvbiwgdGhlIGlkbGUgdGFzayBpcyBzdGFydGVkIHdoZW4gdGhlIHNjaGVkdWxlciBpcw0KLQlzdGFydGVkLiBUaGVyZWZvcmUgdGhlIGlkbGUgdGFzayBpcyBub3QgeWV0IGFjY291bnRlZCBmb3IuIFdlIGNvcnJlY3QNCi0JdGhpcyBieSBpbmNyZWFzaW5nIHV4VGFza3NSdW5uaW5nQXRTdGFydCBieSAxLiAqLw0KLQl1eFRhc2tzUnVubmluZ0F0U3RhcnQrKzsNCi0NCi0JLyogRnJvbSBGcmVlUlRPUyB2ZXJzaW9uIDcuMC4wIGNhbiBvcHRpb25hbGx5IGNyZWF0ZSBhIHRpbWVyIHNlcnZpY2UgdGFzay4NCi0JSWYgdGhpcyBpcyBkb25lLCB0aGVuIHV4VGFza3NSdW5uaW5nQXRTdGFydCBuZWVkcyBpbmNyZW1lbnRpbmcgYWdhaW4gYXMgdGhhdA0KLQl0b28gaXMgY3JlYXRlZCB3aGVuIHRoZSBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gKi8NCi0JI2lmIGNvbmZpZ1VTRV9USU1FUlMgPT0gMQ0KLQl7DQotCQl1eFRhc2tzUnVubmluZ0F0U3RhcnQrKzsNCi0JfQ0KLQkjZW5kaWYNCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtMjA1LDYgKzE0NCwxMSBAQAogCS8qIFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIuICovDQogCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCiANCisJLyogRGVsYXkgYXQgdGhlIHN0YXJ0IHRvIGVuc3VyZSB0YXNrcyBjcmVhdGVkIGJ5IG90aGVyIGRlbW9zIGhhdmUgYmVlbg0KKwljcmVhdGVkIGJlZm9yZSBzdG9yaW5nIHRoZSBjdXJyZW50IG51bWJlciBvZiB0YXNrcy4gKi8NCisJdlRhc2tEZWxheSggeERlbGF5ICk7DQorCXV4VGFza3NSdW5uaW5nQXRTdGFydCA9ICggVUJhc2VUeXBlX3QgKSB1eFRhc2tHZXROdW1iZXJPZlRhc2tzKCk7DQorDQogCXV4UHJpb3JpdHkgPSB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApOw0KIA0KIAlmb3IoIDs7ICkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZHluYW1pYy5jCmluZGV4IGIyYjgyNzEuLjgwOTUyMWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZHluYW1pYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZHluYW1pYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoZSBmaXJzdCB0ZXN0IGNyZWF0ZXMgdGhyZWUgdGFza3MgLSB0d28gY291bnRlciB0YXNrcyAob25lIGNvbnRpbnVvdXMgY291bnQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoLmMKaW5kZXggNzllOTMwNC4uODA3YWVhYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbGFzaC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxhc2guYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogVGhpcyB2ZXJzaW9uIG9mIGZsYXNoIC5jIGlzIGZvciB1c2Ugb24gc3lzdGVtcyB0aGF0IGhhdmUgbGltaXRlZCBzdGFjayBzcGFjZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYwppbmRleCA0YWNlYjM1Li43ZjRmNTUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbGFzaF90aW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBSZXBlYXRlZGx5IHRvZ2dsZXMgb25lIG9yIG1vcmUgTEVEcyB1c2luZyBzb2Z0d2FyZSB0aW1lcnMgLSBvbmUgdGltZXIgcGVyDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Zsb3AuYwppbmRleCA5NzFmODU1Li44MTg1NGZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGVpZ2h0IHRhc2tzLCBlYWNoIG9mIHdoaWNoIGxvb3BzIGNvbnRpbnVvdXNseSBwZXJmb3JtaW5nIGEgZmxvYXRpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ludGVnZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvaW50ZWdlci5jCmluZGV4IDcwNWRlY2IuLjg5OGI4NDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvaW50ZWdlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvaW50ZWdlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgb25lIG9yIG1vcmUgdGFza3MgdGhhdCByZXBlYXRlZGx5IHBlcmZvcm0gYSBzZXQgb2YgaW50ZWdlcg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYwppbmRleCBmMjY3YmI3Li5kNjRiNjY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3JlY211dGV4LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlUaGUgdGFza3MgZGVmaW5lZCBvbiB0aGlzIHBhZ2UgZGVtb25zdHJhdGUgdGhlIHVzZSBvZiByZWN1cnNpdmUgbXV0ZXhlcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc2VtdGVzdC5jCmluZGV4IDVkYTAwOWEuLjkzNDA1OWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc2VtdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc2VtdGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgdHdvIHNldHMgb2YgdHdvIHRhc2tzLiAgVGhlIHRhc2tzIHdpdGhpbiBhIHNldCBzaGFyZSBhIHZhcmlhYmxlLCBhY2Nlc3MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NwX2Zsb3AuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc3BfZmxvcC5jCmluZGV4IDUyMDllZDQuLjdhZWUxMDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc3BfZmxvcC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvc3BfZmxvcC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYSBmbG9hdGluZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvTWljcm9CbGF6ZS1FdGhlcm5ldC1MaXRlL2V0aGVybmV0aWYuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvTWljcm9CbGF6ZS1FdGhlcm5ldC1MaXRlL2V0aGVybmV0aWYuYwppbmRleCBhMzkyMTFiLi42NDk5MDY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL01pY3JvQmxhemUtRXRoZXJuZXQtTGl0ZS9ldGhlcm5ldGlmLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy9NaWNyb0JsYXplLUV0aGVybmV0LUxpdGUvZXRoZXJuZXRpZi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvYXJjaC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9XaW5QQ2FwL2FyY2guYwppbmRleCAwMmU2Zjc5Li5hYzc0OTI2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvYXJjaC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvV2luUENhcC9hcmNoLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFdpblBDYXAgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgInBjYXAuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvbmV0aWYuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvV2luUENhcC9uZXRpZi5oCmluZGV4IDkyNTE5NDQuLmM2OTdiYTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvV2luUENhcC9uZXRpZi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvV2luUENhcC9uZXRpZi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIE5FVF9JRl9IDQogI2RlZmluZSBORVRfSUZfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvZXRoZXJuZXRpZi5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9ldGhlcm5ldGlmLmMKaW5kZXggMjY3MzlmYi4uMjdjMGMxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9ldGhlcm5ldGlmLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9ldGhlcm5ldGlmLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFdpblBDYXAgaW5jbHVkZXMuICovDQogI2RlZmluZSBIQVZFX1JFTU9URQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQWJvcnREZWxheS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9BYm9ydERlbGF5LmgKaW5kZXggMTdhODg3OC4uNjA1YzIwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9BYm9ydERlbGF5LmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9BYm9ydERlbGF5LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQUJPUlRfREVMQVlfSA0KICNkZWZpbmUgQUJPUlRfREVMQVlfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQmxvY2tRLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0Jsb2NrUS5oCmluZGV4IGMwYWE1ZGIuLjU3MTNkNmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQmxvY2tRLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9CbG9ja1EuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBCTE9DS19RX0gNCiAjZGVmaW5lIEJMT0NLX1FfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvRXZlbnRHcm91cHNEZW1vLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0V2ZW50R3JvdXBzRGVtby5oCmluZGV4IDJmZThjYTAuLmVkODFkYTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvRXZlbnRHcm91cHNEZW1vLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9FdmVudEdyb3Vwc0RlbW8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9HZW5RVGVzdC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9HZW5RVGVzdC5oCmluZGV4IDI3YmIxMTYuLmZkYjBjYjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvR2VuUVRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0dlblFUZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgR0VOX1FfVEVTVF9IDQogI2RlZmluZSBHRU5fUV9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFF1ZXVlLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFF1ZXVlLmgKaW5kZXggMGZiMTJiNi4uZTEwNDNiZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9JbnRRdWV1ZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvSW50UXVldWUuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBRVUVVRV9BQ0NFU1NfVEVTVA0KICNkZWZpbmUgUVVFVUVfQUNDRVNTX1RFU1QNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFNlbVRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvSW50U2VtVGVzdC5oCmluZGV4IDliMmEzYzUuLmE1NWZlNjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvSW50U2VtVGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvSW50U2VtVGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9TRU1fVEVTVF9IDQogI2RlZmluZSBJTlRfU0VNX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvTWVzc2FnZUJ1ZmZlckFNUC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9NZXNzYWdlQnVmZmVyQU1QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmMzU1OQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvTWVzc2FnZUJ1ZmZlckFNUC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorI2lmbmRlZiBNRVNTQUdFX0JVRkZFUl9BTVBfSA0KKyNkZWZpbmUgTUVTU0FHRV9CVUZGRVJfQU1QX0gNCisNCit2b2lkIHZTdGFydE1lc3NhZ2VCdWZmZXJBTVBUYXNrcyggdm9pZCApOw0KK0Jhc2VUeXBlX3QgeEFyZU1lc3NhZ2VCdWZmZXJBTVBUYXNrc1N0aWxsUnVubmluZyggdm9pZCApOw0KK3ZvaWQgdkdlbmVyYXRlQ29yZUJJbnRlcnJ1cHQoIHZvaWQgKiB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgKTsNCisNCisjZW5kaWYgLyogTUVTU0FHRV9CVUZGRVJfQU1QX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL01lc3NhZ2VCdWZmZXJEZW1vLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL01lc3NhZ2VCdWZmZXJEZW1vLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJjNzIxNQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvTWVzc2FnZUJ1ZmZlckRlbW8uaApAQCAtMCwwICsxLDM4IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKyNpZm5kZWYgTUVTU0FHRV9CVUZGRVJfVEVTVF9IDQorI2RlZmluZSBNRVNTQUdFX0JVRkZFUl9URVNUX0gNCisNCit2b2lkIHZTdGFydE1lc3NhZ2VCdWZmZXJUYXNrcyggdm9pZCApOw0KK0Jhc2VUeXBlX3QgeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZyggdm9pZCApOw0KKw0KKyNlbmRpZiAvKiBNRVNTQUdFX0JVRkZFUl9URVNUX0ggKi8NCisNCisNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1BvbGxRLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1BvbGxRLmgKaW5kZXggMGRkMTY5OS4uYjM5MGRlZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9Qb2xsUS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUG9sbFEuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT0xMRURfUV9IDQogI2RlZmluZSBQT0xMRURfUV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RUGVlay5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RUGVlay5oCmluZGV4IGVjMjMwOTIuLmFmZGQzMjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUVBlZWsuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1FQZWVrLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUV9QRUVLX1RFU1RfSA0KICNkZWZpbmUgUV9QRUVLX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVPdmVyd3JpdGUuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVPdmVyd3JpdGUuaAppbmRleCA1ZWNkMTEwLi45NTk3YzFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlT3ZlcndyaXRlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZU92ZXJ3cml0ZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFFVRVVFX09WRVJXUklURV9IDQogI2RlZmluZSBRVUVVRV9PVkVSV1JJVEVfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXQuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXQuaAppbmRleCAyMGQyOGIxLi5lYjMxNDBkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlU2V0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZVNldC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFFVRVVFX1dBSVRfTVVMVElQTEVfSA0KICNkZWZpbmUgUVVFVUVfV0FJVF9NVUxUSVBMRV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZVNldFBvbGxpbmcuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXRQb2xsaW5nLmgKaW5kZXggYzU3YWQ1Ny4uMTM0Y2UyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZVNldFBvbGxpbmcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlU2V0UG9sbGluZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFFVRVVFX1NFVF9QT0xMSU5HX0gNCiAjZGVmaW5lIFFVRVVFX1NFVF9QT0xMSU5HX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0YXRpY0FsbG9jYXRpb24uaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RhdGljQWxsb2NhdGlvbi5oCmluZGV4IDkyYTY1MjkuLmIyZTNjYjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RhdGljQWxsb2NhdGlvbi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RhdGljQWxsb2NhdGlvbi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNUQVRJQ19BTExPQ0FUSU9OX0gNCiAjZGVmaW5lIFNUQVRJQ19BTExPQ0FUSU9OX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0cmVhbUJ1ZmZlckRlbW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RyZWFtQnVmZmVyRGVtby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MWYyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0cmVhbUJ1ZmZlckRlbW8uaApAQCAtMCwwICsxLDM5IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKyNpZm5kZWYgU1RSRUFNX0JVRkZFUl9URVNUX0gNCisjZGVmaW5lIFNUUkVBTV9CVUZGRVJfVEVTVF9IDQorDQordm9pZCB2U3RhcnRTdHJlYW1CdWZmZXJUYXNrcyggdm9pZCApOw0KK0Jhc2VUeXBlX3QgeEFyZVN0cmVhbUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCB2b2lkICk7DQordm9pZCB2UGVyaW9kaWNTdHJlYW1CdWZmZXJQcm9jZXNzaW5nKCB2b2lkICk7DQorDQorI2VuZGlmIC8qIFNUUkVBTV9CVUZGRVJfVEVTVF9IICovDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9TdHJlYW1CdWZmZXJJbnRlcnJ1cHQuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RyZWFtQnVmZmVySW50ZXJydXB0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY3ODg3YQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RyZWFtQnVmZmVySW50ZXJydXB0LmgKQEAgLTAsMCArMSwzNiBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaWZuZGVmIFNUUkVBTV9CVUZGRVJfSU5URVJSVVBUX0gNCisjZGVmaW5lIFNUUkVBTV9CVUZGRVJfSU5URVJSVVBUX0gNCisNCit2b2lkIHZTdGFydFN0cmVhbUJ1ZmZlckludGVycnVwdERlbW8oIHZvaWQgKTsNCit2b2lkIHZCYXNpY1N0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCB2b2lkICk7DQorQmFzZVR5cGVfdCB4SXNJbnRlcnJ1cHRTdHJlYW1CdWZmZXJEZW1vU3RpbGxSdW5uaW5nKCB2b2lkICk7DQorDQorI2VuZGlmIC8qIFNUUkVBTV9CVUZGRVJfSU5URVJSVVBUX0ggKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1Rhc2tOb3RpZnkuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvVGFza05vdGlmeS5oCmluZGV4IDhmZmY0ZGUuLmNhNjdmZDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvVGFza05vdGlmeS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvVGFza05vdGlmeS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRBU0tfTk9USUZZX0gNCiAjZGVmaW5lIFRBU0tfTk9USUZZX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1RpbWVyRGVtby5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9UaW1lckRlbW8uaAppbmRleCBlMTlkODFhLi45YjRhMTI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1RpbWVyRGVtby5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvVGltZXJEZW1vLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVElNRVJfREVNT19IDQogI2RlZmluZSBUSU1FUl9ERU1PX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Jsb2NrdGltLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Jsb2NrdGltLmgKaW5kZXggMTcxMjAzMy4uMDlhYTIxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9ibG9ja3RpbS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvYmxvY2t0aW0uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBCTE9DS19USU1FX1RFU1RfSA0KICNkZWZpbmUgQkxPQ0tfVElNRV9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdC5oCmluZGV4IDZhMDA3ZDUuLmIxZGU3MWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPTVRFU1RfSA0KICNkZWZpbmUgQ09NVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0Mi5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0Mi5oCmluZGV4IGMyYzZmNDEuLjdhZmY3YzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdDIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ09NVEVTVF9IDQogI2RlZmluZSBDT01URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3Rfc3RyaW5ncy5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0X3N0cmluZ3MuaAppbmRleCA5Y2E3ZDJkLi5lMjkyMTc0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3Rfc3RyaW5ncy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdF9zdHJpbmdzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ09NVEVTVF9TVFJJTkdTX0gNCiAjZGVmaW5lIENPTVRFU1RfU1RSSU5HU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb3VudHNlbS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb3VudHNlbS5oCmluZGV4IGQyYzZmY2IuLjQ4N2NkNDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY291bnRzZW0uaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvdW50c2VtLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ09VTlRfU0VNQVBIT1JFX1RFU1RfSA0KICNkZWZpbmUgQ09VTlRfU0VNQVBIT1JFX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3JmbGFzaC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jcmZsYXNoLmgKaW5kZXggMzRhNmRiOC4uODA4OWZhYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jcmZsYXNoLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jcmZsYXNoLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ1JGTEFTSF9MRURfSA0KICNkZWZpbmUgQ1JGTEFTSF9MRURfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3Job29rLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NyaG9vay5oCmluZGV4IDI3YmFkMWQuLjZjMjg4ZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3Job29rLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jcmhvb2suaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDUkhPT0tfSA0KICNkZWZpbmUgQ1JIT09LX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2RlYXRoLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2RlYXRoLmgKaW5kZXggZGZmOWZiZS4uMmU4MTdiMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9kZWF0aC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZGVhdGguaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTVUlDSURFX1RBU0tfSA0KICNkZWZpbmUgU1VJQ0lERV9UQVNLX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2R5bmFtaWMuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZHluYW1pYy5oCmluZGV4IGMzMDNlNDIuLjU0YTM5MGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZHluYW1pYy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZHluYW1pYy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIERZTkFNSUNfTUFOSVBVTEFUSU9OX0gNCiAjZGVmaW5lIERZTkFNSUNfTUFOSVBVTEFUSU9OX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZpbGVJTy5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9maWxlSU8uaAppbmRleCBhZTFlNTQ4Li5jN2UxN2ViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZpbGVJTy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmlsZUlPLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRklMRV9JT19IDQogI2RlZmluZSBGSUxFX0lPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoLmgKaW5kZXggZjBmYTU5Yi4uNGEzMTM2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmxhc2guaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTEFTSF9MRURfSA0KICNkZWZpbmUgRkxBU0hfTEVEX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoX3RpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoX3RpbWVyLmgKaW5kZXggMDRkMjIyYy4uYTNmOThmMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaF90aW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmxhc2hfdGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTEFTSF9USU1FUl9IDQogI2RlZmluZSBGTEFTSF9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbG9wLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Zsb3AuaAppbmRleCAyNWI2MDdmLi5lMDZiOTIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Zsb3AuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Zsb3AuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTE9QX1RBU0tTX0gNCiAjZGVmaW5lIEZMT1BfVEFTS1NfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvaW50ZWdlci5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9pbnRlZ2VyLmgKaW5kZXggNGYwNWVhZC4uNjZkNDQ5MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9pbnRlZ2VyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9pbnRlZ2VyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5URUdFUl9UQVNLU19IDQogI2RlZmluZSBJTlRFR0VSX1RBU0tTX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL21ldmVudHMuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvbWV2ZW50cy5oCmluZGV4IDgzYjcwYjUuLjlkNWQ4ZGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvbWV2ZW50cy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvbWV2ZW50cy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEVWRU5UU19URVNUX0gNCiAjZGVmaW5lIEVWRU5UU19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3BhcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcGFydGVzdC5oCmluZGV4IDJmNDY4ZmIuLmFmZjMwZDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcGFydGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcGFydGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBBUlRFU1RfSA0KICNkZWZpbmUgUEFSVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9wcmludC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9wcmludC5oCmluZGV4IGZjZWMyZTkuLjY1OWUxYjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcHJpbnQuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3ByaW50LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUFJJTlRfSA0KICNkZWZpbmUgUFJJTlRfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcmVjbXV0ZXguaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcmVjbXV0ZXguaAppbmRleCBlMzc5ODcxLi41YzZhYWQ5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3JlY211dGV4LmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9yZWNtdXRleC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFJFQ1VSU0lWRV9NVVRFWF9URVNUX0gNCiAjZGVmaW5lIFJFQ1VSU0lWRV9NVVRFWF9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlbXRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvc2VtdGVzdC5oCmluZGV4IDFmMWU3MzMuLjA1YmNhYmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvc2VtdGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvc2VtdGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFTUFQSE9SRV9URVNUX0gNCiAjZGVmaW5lIFNFTUFQSE9SRV9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlcmlhbC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9zZXJpYWwuaAppbmRleCAyNzRiYzdhLi5mYWMxOTdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlcmlhbC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvc2VyaWFsLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU0VSSUFMX0NPTU1TX0gNCiAjZGVmaW5lIFNFUklBTF9DT01NU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DeWduYWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYzY1MGNkZS4uMWJjYzczMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DeWduYWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0N5Z25hbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL01ha2VmaWxlIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvTWFrZWZpbGUKaW5kZXggNGQwMTY5OS4uODdlMTVlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DeWduYWwvTWFrZWZpbGUKKysrIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvTWFrZWZpbGUKQEAgLTEsNTUgKzEsMzAgQEAKICMvKg0KLSMgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSMJDQotIw0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0jICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotIyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotIyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSMgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0jICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotIyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSMgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIw0KLSMNCi0jICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotIw0KLSMgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSMgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotIyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotIyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0jICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotIyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSMgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotIyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSMgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSMgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0jICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0jICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0jICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotIyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0jDQotIyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0jDQotIyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0jICAgIGNvbnRhY3QgZGV0YWlscy4NCi0jDQotIyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSMgICAgY3JpdGljYWwgc3lzdGVtcy4NCi0jDQotIyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotIyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSMqLw0KKyMgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyMgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIyAqDQorIyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisjICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisjICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyMgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyMgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorIyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyMgKg0KKyMgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisjICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisjICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyMgKg0KKyMgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyMgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyMgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisjICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorIyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorIyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorIyAqDQorIyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorIyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyMgKg0KKyMgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisjICovDQogDQogDQogQ0M9c2RjYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggM2U4MmYxNC4uMjY5YmRmNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DeWduYWwvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KICNpbmNsdWRlIDxjODA1MWYxMjAuaD4NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0N5Z25hbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0N5Z25hbC9tYWluLmMKaW5kZXggMzQ4NDBhZS4uYzY2NDExNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DeWduYWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL3NlcmlhbC9zZXJpYWwuYwppbmRleCBkOTVlNzMzLi44MGQ0NDVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0N5Z25hbC9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgREVNTyBQVVJQT1NFUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRlJDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRlJDb25maWcuaAppbmRleCBkNzYwNTZjLi40ODAwZGFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZSQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GUkNvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRmlsZUlPL2ZpbGVJTy5jIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GaWxlSU8vZmlsZUlPLmMKaW5kZXggNmJiOWQwNC4uYmU5N2M2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GaWxlSU8vZmlsZUlPLmMKKysrIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GaWxlSU8vZmlsZUlPLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxzdGRpby5oPg0KICNpbmNsdWRlIDxjb25pby5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRnJlZVJUT1NDb25maWcuaAppbmRleCBmY2U0MTk4Li4xMmZiMGE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDFmMjQzZDkuLmY0NDY5MmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMDE6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL21haW4uYwppbmRleCAxZDM1ZWNjLi4yNDgxYzRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGMxMmZjYjUuLmJmOGFlMmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4wMDoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA2NTIxNWIwLi41OGE5MzdlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiMDk3N2ZjLi5mZGI4MzQwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGUgZmlsZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vbWFpbi5jCmluZGV4IGE0MzJkODguLjM1ZjhhODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCmluZGV4IDc4NjI5YTAuLmEzNWY2ZjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIGZvciBwb3J0IDEuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMmQwY2QyOS4uN2E1ZWRlMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggODkxMjc5ZC4uMTU1YzhmMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlIGZpbGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL21haW4uYwppbmRleCA5MGQzZDA2Li5kM2NiZDBlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvbWFpbi5jCkBAIC0xLDcyICsxLDMxIEBACiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL3NlcmlhbC9zZXJpYWwuYwppbmRleCBkZmU1NGFmLi5kYzhkNTg4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBmb3IgcG9ydCAxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvRnJlZVJUT1NDb25maWcuaAppbmRleCBlZjA0MmM2Li42MjY2ZGYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDg5MTI3OWQuLjE1NWM4ZjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGUgZmlsZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL21haW4uYwppbmRleCA3M2E5ZTc5Li5hYjQ5MWM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDQ5N2ZiZTAuLjBlZmRhNDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBmb3IgcG9ydCAxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMmVjNTE0Yi4uZjUwNDg2OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKiANCiAgKiBGcmVlUlRPU0NvbmZpZy5oIGNvbmZpZ3VyZXMgRnJlZVJUT1MgZm9yIEdDQy9IQ1MxMiB2ZXJzaW9uIG9mIEZyZWVSVE9TIERlbW8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL1BhclRlc3QuYwppbmRleCBlMjIzODJlLi5mZjdmYzdmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKiANCiAgKiBQYXJUZXN0LmMgY29udHJvbHMgYml0cyAoTEVEcykgZm9yIEdDQy9IQ1MxMiB2ZXJzaW9uIG9mIEZyZWVSVE9TIERlbW8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL21haW4uYwppbmRleCAyYzljNWM5Li5lNmRhY2Y2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9tYWluLmMKQEAgLTEsNzIgKzEsMzEgQEAKIA0KIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL3N0YXJ0dXAuYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9zdGFydHVwLmMKaW5kZXggN2JjYTRjNi4uNTIyMmI5MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL3N0YXJ0dXAuYworKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvc3RhcnR1cC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGMzMTllMjIuLjhhOWYxYzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnJlZVJUT1NDb25maWcuaAppbmRleCBhZGNiZDVhLi41ZjgxY2Y0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggNzNjNTBiZS4uZDRiNDUzYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFByb3ZpZGVzIHRoZSBwb3J0IHNwZWNpZmljIHBhcnQgb2YgdGhlIHN0YW5kYXJkIEludFEgdGVzdCwgd2hpY2ggaXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL1JlZ1Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9SZWdUZXN0LlMKaW5kZXggZGRkOWQ5OS4uYTJkNGU1ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL1JlZ1Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vUmVnVGVzdC5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAuZmlsZSAiUmVnVGVzdC5TIg0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBjNjU3ZTNiLi4xNmEzNTczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvZnJlZXN0YW5kaW5nX2Z1bmN0aW9ucy5jIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9mcmVlc3RhbmRpbmdfZnVuY3Rpb25zLmMKaW5kZXggNmZjN2RjMC4uZGRhM2NkNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9mcmVlc3RhbmRpbmdfZnVuY3Rpb25zLmMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9mcmVlc3RhbmRpbmdfZnVuY3Rpb25zLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9tYXRoLmggYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL21hdGguaAppbmRleCA3M2E2YTJhLi5jZGY0ODA1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL21hdGguaAorKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL21hdGguaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBNQVRIX0gNCiAjZGVmaW5lIE1BVEhfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RhcnR1cC5TIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGFydHVwLlMKaW5kZXggMTkwZDFjOC4uNzk3M2FmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGFydHVwLlMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGFydHVwLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNldCB0byAxIHRvIGVuYWJsZSBmdW5jdGlvbmFsaXR5ICovDQogI2RlZmluZSBfX1NIT1dfS0VSTkVMX1BBUkFNU19fIDANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL3N0ZGludC5oIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGRpbnQuaAppbmRleCA1MTMzZjA1Li4wNTE3Y2RlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL3N0ZGludC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RkaW50LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KICNpZm5kZWYgRlJFRVJUT1NfU1RESU5UDQogI2RlZmluZSBGUkVFUlRPU19TVERJTlQNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9tYWluLmMKaW5kZXggOTZiNzc5OC4uYTdkZTBlMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGJiYzg1YmIuLjg5ZGQ2NTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9jcmZsYXNoX21vZGlmaWVkLmMgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvY3JmbGFzaF9tb2RpZmllZC5jCmluZGV4IDg1MTEwMTEuLjQyMDljYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9jcmZsYXNoX21vZGlmaWVkLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL2NyZmxhc2hfbW9kaWZpZWQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gZmlsZSBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZiBxdWV1ZXMgdG8gcGFzcyBkYXRhDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9tYWluLmMKaW5kZXggYzFiZTcxZC4uYTljNGRhOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9wYXJ0ZXN0L3BhcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9wYXJ0ZXN0L3BhcnRlc3QuYwppbmRleCBlYmRhMDNjLi5kNjc5YjJkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvcGFydGVzdC9wYXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL3BhcnRlc3QvcGFydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZDE4MDU4OS4uZjI4MWQ1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDlkNzY5ZTkuLmI3MjBmZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9jcmZsYXNoX3NrMTZmeDEwMG1wYy5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL2NyZmxhc2hfc2sxNmZ4MTAwbXBjLmMKaW5kZXggODUxMTAxMS4uNDIwOWNhMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL2NyZmxhc2hfc2sxNmZ4MTAwbXBjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL2NyZmxhc2hfc2sxNmZ4MTAwbXBjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGZpbGUgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgcXVldWVzIHRvIHBhc3MgZGF0YQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvbWFpbi5jCmluZGV4IGQ3ZjgzNjIuLmQwN2IzMzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvcGFydGVzdC9wYXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvcGFydGVzdC9wYXJ0ZXN0LmMKaW5kZXggYTIyYjg4Ny4uMTYwNzc5YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL3BhcnRlc3QvcGFydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9wYXJ0ZXN0L3BhcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGUwYTk3MzUuLmM3YTI5YjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuICAgDQogICogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suYyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0RpY2VUYXNrLmMKaW5kZXggZGQ4MDBmMy4uNzg4NDhkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9EaWNlVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9EaWNlVGFzay5oIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suaAppbmRleCBkODljMTVlLi42NDhmNWUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9EaWNlVGFzay5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0RpY2VUYXNrLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRElDRV9UQVNLX0gNCiAjZGVmaW5lIERJQ0VfVEFTS19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOWQwZDhlMi4uMmY3ZTUzNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMjU1MGE5ZC4uYzE4NDBlZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9TZWdtZW50VG9nZ2xlVGFza3MuYyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1NlZ21lbnRUb2dnbGVUYXNrcy5jCmluZGV4IDdiNjY3NTQuLjUzM2E1OTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1NlZ21lbnRUb2dnbGVUYXNrcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1NlZ21lbnRUb2dnbGVUYXNrcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBEZWZpbmVzIHRoZSB0YXNrcyBhbmQgY28tcm91dGluZXMgdXNlZCB0byB0b2dnbGUgdGhlIHNlZ21lbnRzIG9mIHRoZSB0d28NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9tYWluLmMKaW5kZXggYmRhNDc3OS4uODM4MDlmYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhlZTI2YzkuLjA4MTRkMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFRoZSBmb2xsb3dpbmcgI2Vycm9yIGRpcmVjdGl2ZSBpcyB0byByZW1pbmQgdXNlcnMgdGhhdCBhIGJhdGNoIGZpbGUgbXVzdCBiZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9QYXJUZXN0LmMKaW5kZXggOWJjZGI4Yi4uMDFkMTU0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcyB0byBmbGFzaCBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUmVnVGVzdC5hc20gYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1JlZ1Rlc3QuYXNtCmluZGV4IDcxYzE2NDUuLjRkYWY5ZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUmVnVGVzdC5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9SZWdUZXN0LmFzbQpAQCAtMSw1NiArMSwzMSBAQAogOw0KIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogOyAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSAicmVnaXN0ZXIgdGVzdCIgdGFza3MsIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mDQogOyAqIG1haW4uYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUnVuVGltZVN0YXRzQ29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1J1blRpbWVTdGF0c0NvbmZpZy5jCmluZGV4IDcyODNmMmEuLjBiZWE0NmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUnVuVGltZVN0YXRzQ29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9SdW5UaW1lU3RhdHNDb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL21haW4uYwppbmRleCBmZmU2MmJiLi5mNTVjMmJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gYXZhaWxhYmxlIG9uIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2Uvc2VyaWFsLmMKaW5kZXggNGMzOTNkZS4uMWYwMTg0NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNjI2ZGNmNy4uMjI5MDFhMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUGFyVGVzdC5jCmluZGV4IDliY2RiOGIuLjAxZDE1NDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMgdG8gZmxhc2ggTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1JlZ1Rlc3QuczQzIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9SZWdUZXN0LnM0MwppbmRleCA3YWM1NWU0Li41NTc2YTUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1JlZ1Rlc3QuczQzCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUmVnVGVzdC5zNDMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KICNpbmNsdWRlICJtc3A0MzAuaCINCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAiZGF0YV9tb2RlbC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUnVuVGltZVN0YXRzQ29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1J1blRpbWVTdGF0c0NvbmZpZy5jCmluZGV4IGMzOWIyNWQuLjNhZGQwOTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUnVuVGltZVN0YXRzQ29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9SdW5UaW1lU3RhdHNDb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL21haW4uYwppbmRleCA5NzUyYTYxLi5lOWZiZWU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGlzIGRlbW8gYXZhaWxhYmxlIG9uIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvc2VyaWFsLmMKaW5kZXggN2FkMzZhNy4uMmY3M2Q5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggZWMwZDZjMC4uMGMyZmM4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0NDU19Pbmx5L1JlZ1Rlc3QuYXNtIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9DQ1NfT25seS9SZWdUZXN0LmFzbQppbmRleCA5NzNjNDczLi4zYTU5MGVkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0NDU19Pbmx5L1JlZ1Rlc3QuYXNtCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvQ0NTX09ubHkvUmVnVGVzdC5hc20KQEAgLTEsNTYgKzEsMzEgQEAKIDsNCiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDsgKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgInJlZ2lzdGVyIHRlc3QiIHRhc2tzLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZg0KIDsgKiBtYWluLmMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZjQ3ZTk3Mi4uZDhkNGMwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IGE0YmYzNGMuLjUyOWM1ZGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GdWxsX0RlbW8vc2VyaWFsLmMKaW5kZXggODg2ODk3ZC4uZmU5YjAzYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GdWxsX0RlbW8vc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GdWxsX0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvSUFSX09ubHkvUmVnVGVzdC5zNDMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0lBUl9Pbmx5L1JlZ1Rlc3QuczQzCmluZGV4IDc2NGMzMWEuLjEwOTQyOWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvSUFSX09ubHkvUmVnVGVzdC5zNDMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9JQVJfT25seS9SZWdUZXN0LnM0MwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogI2luY2x1ZGUgIm1zcDQzMC5oIg0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KICNpbmNsdWRlICJkYXRhX21vZGVsLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9MRURzLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0xFRHMuYwppbmRleCA0ZjI3OWExLi5iOGJiODAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0xFRHMuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0xFRHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9tYWluLmMKaW5kZXggNzUxOGFjMC4uNTRjNTQyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IDhiNTZlMDIuLjE0NTNlNGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggY2Y3NmQ1MS4uZWZhOTFiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdHMuUyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdHMuUwppbmRleCA3MDQzMzllLi5kZTI4OTI3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RzLlMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vUmVnaXN0ZXJUZXN0cy5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggMTY0YzdiNC4uNTM0ZjQwMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0xFRHMuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvTEVEcy5jCmluZGV4IDZlOWFiM2UuLmZjMDlmZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvTEVEcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvTEVEcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCmluZGV4IGUxMTliNzMuLjYzNWY0MzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJzdGRsaWIuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKaW5kZXggYTE3OTg4Yi4uY2M2YTAwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaCBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaAppbmRleCBkMTIwOWNiLi43NjRmN2NkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaWZuZGVmIExXSVBfQVBQU19IDQogI2RlZmluZSBMV0lQX0FQUFNfSA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMKaW5kZXggZTAxOTA1MS4uMDJlNDg1OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdGhyZWUgZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbWFpbi5jCmluZGV4IDY3M2ZmY2IuLjAyN2EwODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHRocmVlIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvc2VyaWFsLmMKaW5kZXggMzkyY2VlMi4uNTI0MjY0ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgYSBVQVJUTGl0ZSBwZXJpcGhlcmFsLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25JU1IuczI2IGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0J1dHRvbklTUi5zMjYKaW5kZXggNzRjNDNhMi4uNTU2NzI4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0J1dHRvbklTUi5zMjYKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0J1dHRvbklTUi5zMjYKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogOw0KIDsgVGhpcyBmaWxlIGRlZmluZXMgYSB3cmFwcGVyIGZvciB0aGUgaW50ZXJydXB0IGdlbmVyYXRlZCBlYWNoIHRpbWUgdGhlIGJ1dHRvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvQnV0dG9uVGFzay5jCmluZGV4IDU1NTE5MzkuLmE3YWIzNzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0J1dHRvblRhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgYnV0dG9uIHB1c2ggdGFzayBhbmQgSVNSIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBiZTQxYjhlLi4zYTBmYmY5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvUmVnVGVzdC5zMjYgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvUmVnVGVzdC5zMjYKaW5kZXggZmRhMTQ1OS4uNGJhN2YyZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL1JlZ1Rlc3QuczI2CisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9SZWdUZXN0LnMyNgpAQCAtMSw1NSArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiANCiA7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9tYWluLmMKaW5kZXggMzkwOTMyYy4uYjRmZTM2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBmODMxMGVhLi40ZTBjYmM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdC5jIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0LmMKaW5kZXggMjZhODRmNC4uZmRlZDYxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdF9GeDMuYyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdF9GeDMuYwppbmRleCBkM2U0NTYxLi44OTZkYTU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfRngzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0X0Z4My5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfSHgyLmMgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfSHgyLmMKaW5kZXggNmM4OTY2ZC4uZWQ5ODgyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0X0h4Mi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdF9IeDIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfRngzX0FwcF9Cb2FyZC5jIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfRngzX0FwcF9Cb2FyZC5jCmluZGV4IGEwMmQwMDcuLjBjNmZjNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUGFyVGVzdC9QYXJUZXN0X0Z4M19BcHBfQm9hcmQuYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1BhclRlc3QvUGFyVGVzdF9GeDNfQXBwX0JvYXJkLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1BhclRlc3QvUGFyVGVzdF9HZW5lcmljX1RhcmdldF9Cb2FyZC5jIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfR2VuZXJpY19UYXJnZXRfQm9hcmQuYwppbmRleCA0MjIxZmVhLi41OTAxYzZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1BhclRlc3QvUGFyVGVzdF9HZW5lcmljX1RhcmdldF9Cb2FyZC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUGFyVGVzdC9QYXJUZXN0X0dlbmVyaWNfVGFyZ2V0X0JvYXJkLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1JlZ1Rlc3Quczg1IGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9SZWdUZXN0LnM4NQppbmRleCA4ZjY0MjA2Li5jNjM5MGFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1JlZ1Rlc3Quczg1CisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUmVnVGVzdC5zODUKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogOyBOb3RlOiBTZWxlY3QgdGhlIGNvcnJlY3QgaW5jbHVkZSBmaWxlcyBmb3IgdGhlIGRldmljZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4NCiANCiAJRVhURVJOCXZSZWdUZXN0RmFpbGVkDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL21haW4uYwppbmRleCAzMjRlNjk5Li43MWFjN2YyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDk3MjkwNjUuLjE3MzExYjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDFlZGNmODkuLmYyZmE3ZDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZGQ2NmNjOS4uMzBkYzgyZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL21haW4uYwppbmRleCBkNGQ0NTg3Li45MzllMWRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9zZXJpYWwuYwppbmRleCAxMTYxNjcxLi5jMDA4MGQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIE5PVEU6ICBUaGlzIGlzIGp1c3QgYSB0ZXN0IGZpbGUgYW5kIG5vdCBpbnRlbmRlZCB0byBiZSBhIGdlbmVyaWMgDQogQ09NIGRyaXZlci4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYzQyNDg1Ni4uMGRhZmFhNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiOGQ5OTdmLi43MzNjYmQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMi4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4xLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4xLmMKaW5kZXggMzc1NDU3NC4uNWQ4OTcwMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjEuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBJbnN0ZWFkIG9mIHRoZSBub3JtYWwgc2luZ2xlIGRlbW8gYXBwbGljYXRpb24sIHRoZSBQSUMxOEYgZGVtbyBpcyBzcGxpdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjIuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjIuYwppbmRleCA2MGYzYzFhLi4yYzdmNTc3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4yLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEluc3RlYWQgb2YgdGhlIG5vcm1hbCBzaW5nbGUgZGVtbyBhcHBsaWNhdGlvbiwgdGhlIFBJQzE4RiBkZW1vIGlzIHNwbGl0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMy5jCmluZGV4IDY0ZWIzYzIuLjg5MjllMGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4zLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVEhJUyBERU1PIEFQUExJQ0FUSU9OIFJFUVVJUkVTIEEgTE9PUEJBQ0sgQ09OTkVDVE9SIFRPIEJFIEZJVFRFRCBUTyBUSEUgUElDDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL3NlcmlhbC9zZXJpYWwuYwppbmRleCBmZGQzOTc3Li40MWY2OWNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi41DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvRnJlZVJUT1NDb25maWcuaAppbmRleCA1NjY1NGQ1Li45NzAyNTkwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL1dJWkNtYWtlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvV0laQ21ha2UuaAppbmRleCBlYTllY2Y2Li5kZDlmOTgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvV0laQ21ha2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvV0laQ21ha2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2Z1c2VzLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvZnVzZXMuYwppbmRleCAwMzdiMGUzLi40YTllNzU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvZnVzZXMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvZnVzZXMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2ludGVycnVwdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2ludGVycnVwdC5jCmluZGV4IGVkOWEwYWQuLmJmNTdkODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9pbnRlcnJ1cHQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvaW50ZXJydXB0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL21haW4uYwppbmRleCAwMmJmMjAwLi5lZTEyM2FmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZmM2NWY0My4uM2ZiNjljZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL1dJWkNtYWtlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvV0laQ21ha2UuaAppbmRleCA3MWYyMmVhLi5hNjI1NWYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvV0laQ21ha2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvV0laQ21ha2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2Z1c2VzLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvZnVzZXMuYwppbmRleCAwMzdiMGUzLi40YTllNzU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvZnVzZXMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvZnVzZXMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2ludGVycnVwdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2ludGVycnVwdC5jCmluZGV4IDFiMDlkZTQuLjkyZDc4MTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9pbnRlcnJ1cHQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvaW50ZXJydXB0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL21haW4uYwppbmRleCBiZjkyY2U0Li44YzNmZWYyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOTU5N2M3Zi4uMDQ3NmM2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9XSVpDbWFrZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL1dJWkNtYWtlLmgKaW5kZXggNzFmMjJlYS4uYTYyNTVmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL1dJWkNtYWtlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL1dJWkNtYWtlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9mdXNlcy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL2Z1c2VzLmMKaW5kZXggMDM3YjBlMy4uNGE5ZTc1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL2Z1c2VzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL2Z1c2VzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9pbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9pbnRlcnJ1cHQuYwppbmRleCAxYjA5ZGU0Li45MmQ3ODE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvaW50ZXJydXB0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL2ludGVycnVwdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9tYWluLmMKaW5kZXggMTVhMTU1NS4uNzU3NzYwOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDFhYTI1NGEuLjhhMWU0MWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvV0laQ21ha2UuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9XSVpDbWFrZS5oCmluZGV4IDcxZjIyZWEuLmE2MjU1ZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9XSVpDbWFrZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9XSVpDbWFrZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvZnVzZXMuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9mdXNlcy5jCmluZGV4IDAzN2IwZTMuLjRhOWU3NTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9mdXNlcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9mdXNlcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvaW50ZXJydXB0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvaW50ZXJydXB0LmMKaW5kZXggMWIwOWRlNC4uOTJkNzgxOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L2ludGVycnVwdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9pbnRlcnJ1cHQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvbWFpbi5jCmluZGV4IGJlOTM4MGEuLmVhMmYyYTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvRnJlZVJUT1NDb25maWcuaAppbmRleCAwOWJjMzg4Li5mNzUyN2ZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L1dJWkNtYWtlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvV0laQ21ha2UuaAppbmRleCA3MWYyMmVhLi5hNjI1NWYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvV0laQ21ha2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvV0laQ21ha2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2Z1c2VzLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvZnVzZXMuYwppbmRleCAwMzdiMGUzLi40YTllNzU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvZnVzZXMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvZnVzZXMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2ludGVycnVwdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2ludGVycnVwdC5jCmluZGV4IDFiMDlkZTQuLjkyZDc4MTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9pbnRlcnJ1cHQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvaW50ZXJydXB0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L21haW4uYwppbmRleCA5ZTc4YmJhLi4xNTdhY2QzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNmY5NTk5YS4uODgzMGEwOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9XSVpDbWFrZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L1dJWkNtYWtlLmgKaW5kZXggNzFmMjJlYS4uYTYyNTVmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L1dJWkNtYWtlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L1dJWkNtYWtlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9mdXNlcy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L2Z1c2VzLmMKaW5kZXggMDM3YjBlMy4uNGE5ZTc1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L2Z1c2VzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L2Z1c2VzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9pbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9pbnRlcnJ1cHQuYwppbmRleCAxYjA5ZGU0Li45MmQ3ODE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvaW50ZXJydXB0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L2ludGVycnVwdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9tYWluLmMKaW5kZXggMTllZGRhYi4uNGY0MzJhYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGU3MjBhYjAuLjFlNGFkM2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvV0laQ21ha2UuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9XSVpDbWFrZS5oCmluZGV4IDcxZjIyZWEuLmE2MjU1ZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9XSVpDbWFrZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9XSVpDbWFrZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvZnVzZXMuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9mdXNlcy5jCmluZGV4IDAzN2IwZTMuLjRhOWU3NTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9mdXNlcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9mdXNlcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvaW50ZXJydXB0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvaW50ZXJydXB0LmMKaW5kZXggMWIwOWRlNC4uOTJkNzgxOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L2ludGVycnVwdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9pbnRlcnJ1cHQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvbWFpbi5jCmluZGV4IDAwZTA2MzEuLmM1N2NlZWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGIxODc0NzAuLmZhOTQyOWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL2lzclNlcmlhbFJ4LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL2lzclNlcmlhbFJ4LmMKaW5kZXggMzQ3NGM2Mi4uYzlkZjg4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxSeC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvaXNyU2VyaWFsUnguYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxUeC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxUeC5jCmluZGV4IDcwYjA4NjAuLjBjNzJlM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvaXNyU2VyaWFsVHguYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL2lzclNlcmlhbFR4LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDkwOWZlN2QuLmY2NWY1OTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGNkNjE2NTguLjliMjYyM2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZjBkYzg1Yi4uNDVjNjQ3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmMKaW5kZXggYzQxMTA0ZS4uNDQwNDY1MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL2xjZC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmgKaW5kZXggNDQ5NWY5ZS4uMGE0NjdhMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL2xjZC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIExDRF9JTkNfSA0KICNkZWZpbmUgTENEX0lOQ19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL21haW4uYwppbmRleCBjYzliNTA5Li5kNmE0NTI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDM2ZjM4ZGYuLjhiZWM5NWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvdGltZXJ0ZXN0LmMKaW5kZXggMjYyYzc5My4uMjk3N2YxMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3RpbWVydGVzdC5oIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuaAppbmRleCBjZDQ1NzlkLi4zMDMzZjMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3RpbWVydGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvdGltZXJ0ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVElNRVJfVEVTVF9IDQogI2RlZmluZSBUSU1FUl9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IDE2MzU0NzguLmY3NjkyZmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMTQ1YjZjOC4uNmJkYzBkYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAyMTc4NGI0Li5kNTM3ZmQwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXJfaXNyLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXJfaXNyLlMKaW5kZXggOWE3YTgyZS4uZmYzNGQ0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyX2lzci5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lcl9pc3IuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHhjLmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdFRhc2tzLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdFRhc2tzLlMKaW5kZXggMGMzMGU1NC4uODA3YTJmNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RUYXNrcy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vUmVnaXN0ZXJUZXN0VGFza3MuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHhjLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggNTk3YTJjMS4uMjk3MGQ3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL3RpbWVydGVzdC5jCmluZGV4IDM1NWJlNWEuLmNmYjQ0ZjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby90aW1lcnRlc3QuYwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby90aW1lcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmgKaW5kZXggMmNhNzNjNy4uMzAzM2YzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby90aW1lcnRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL3RpbWVydGVzdC5oCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX1RFU1RfSA0KICNkZWZpbmUgVElNRVJfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9tYWluLmMKaW5kZXggZjgyOGY3Ni4uODFiNWY1OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmMKaW5kZXggMzMyYTFiNy4uZDNiMGQwOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGltcGxlbWVudHMgZnVuY3Rpb25zIHRvIGFjY2VzcyBhbmQgbWFuaXB1bGF0ZSB0aGUgUElDMzIgaGFyZHdhcmUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5oCmluZGV4IGNlYWVjODEuLjVmZDNhNTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPTkZJR19QRVJGT1JNQU5DRV9IDQogI2RlZmluZSBDT05GSUdfUEVSRk9STUFOQ0VfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMzUxNGZmZS4uODRjN2VkMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMmM2ZjkxNi4uMGE4NmY0NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAiSW50UXVldWVUaW1lci5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lcl9pc3IuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCmluZGV4IDEwMDkzZWEuLmNhMjYxYTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAgDQogI2luY2x1ZGUgPHAzMnh4eHguaD4NCiAjaW5jbHVkZSA8c3lzL2FzbS5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfRXhwbG9yZXIxNi5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9FeHBsb3JlcjE2LmMKaW5kZXggYWQxYzNhNy4uNzE1MmUxMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9FeHBsb3JlcjE2LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9FeHBsb3JlcjE2LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvUGFyVGVzdC9QYXJUZXN0X1VTQklJX1N0YXJ0ZXJfS2l0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvUGFyVGVzdC9QYXJUZXN0X1VTQklJX1N0YXJ0ZXJfS2l0LmMKaW5kZXggMjM2NTAzOC4uN2QyZTJmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9VU0JJSV9TdGFydGVyX0tpdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfVVNCSUlfU3RhcnRlcl9LaXQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1JlZ2lzdGVyVGVzdFRhc2tzLlMKaW5kZXggMjhhN2Q4ZS4uZDQxZjc3ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1JlZ2lzdGVyVGVzdFRhc2tzLlMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1JlZ2lzdGVyVGVzdFRhc2tzLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuYwppbmRleCA2ZTQxYTc4Li5iOTRjYjJkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbGNkLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL2xjZC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBwZXJpcGhlcmFsIGxpYnJhcnkgaW5jbHVkZSAqLw0KICNpbmNsdWRlIDxwbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL2xjZC5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL2xjZC5oCmluZGV4IDQ0OTVmOWUuLjBhNDY3YTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbGNkLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTENEX0lOQ19IDQogI2RlZmluZSBMQ0RfSU5DX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW4uYwppbmRleCAyZDUxZjY2Li4xMDhiZGZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9ibGlua3kuYwppbmRleCA0MTFjNWQ0Li45NmY0ZGFkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9mdWxsLmMKaW5kZXggMjU4ZjA5MS4uZGM5MjVlYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3NlcmlhbC9zZXJpYWwuYwppbmRleCBkMjQ4NWMzLi44OWQ5YmZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0LmMKaW5kZXggMGFiZTY1My4uNTcwOGIwZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5oCmluZGV4IGNkNDU3OWQuLjMwMzNmMzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVElNRVJfVEVTVF9IDQogI2RlZmluZSBUSU1FUl9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0X2lzci5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdF9pc3IuUwppbmRleCAwYzRmNjE1Li5iNWM5NmIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0X2lzci5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3RfaXNyLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxwMzJ4eHh4Lmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCmluZGV4IDZhYmY1YmMuLmM5NTkzODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9ucyB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgdGhlIFBJQzMyIGhhcmR3YXJlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaAppbmRleCBjZWFlYzgxLi41ZmQzYTU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDT05GSUdfUEVSRk9STUFOQ0VfSA0KICNkZWZpbmUgQ09ORklHX1BFUkZPUk1BTkNFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGJkZGE1NmIuLmRlYThlZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JU1JUcmlnZ2VyZWRUYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFzay5jCmluZGV4IGQ4NDRmOGUuLmUxYzEyOGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JU1JUcmlnZ2VyZWRUYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBJbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyB0aGF0IGNhbm5vdCBuZXN0IGhhdmUgbm8gc3BlY2lhbCByZXF1aXJlbWVudHMgYW5kDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFza19pc3IuUwppbmRleCA3YjNjODc5Li41ZTVlMmE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFza19pc3IuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFza19pc3IuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHhjLmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuYwppbmRleCAyYzZmOTE2Li4wYTg2ZjQ2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJJbnRRdWV1ZVRpbWVyLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXJfaXNyLlMKaW5kZXggMjdkY2Q2Mi4uOWM2NDJkNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXJfaXNyLlMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXJfaXNyLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDU0MjZkZjAuLmIzMDc2NjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtUElDMzJNWjIwNDhfU0subWsgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtUElDMzJNWjIwNDhfU0subWsKaW5kZXggMWMxM2Y2NS4uODQ0MDFkMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLVBJQzMyTVoyMDQ4X1NLLm1rCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1QSUMzMk1aMjA0OF9TSy5tawpAQCAtNDQsNiArNDQsMTIgQEAKIENPTVBBUklTT05fQlVJTEQ9CiBlbmRpZgogCitpZmRlZiBTVUJfSU1BR0VfQUREUkVTUworCitlbHNlCitTVUJfSU1BR0VfQUREUkVTU19DT01NQU5EPQorZW5kaWYKKwogIyBPYmplY3QgRGlyZWN0b3J5CiBPQkpFQ1RESVI9YnVpbGQvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfQogCkBAIC05OSwzNSArMTA1LDM1IEBACiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5vayAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5lcnIgCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vLmQiICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20ubyAuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0X2FzbS5TICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgLVdhLC0tZGVmc3ltPV9fTVBMQUJfQlVJTEQ9MSQoTVBfRVhUUkFfQVNfUE9TVCksLU1EPSIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUdHRVJfUEszPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLworCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uYXNtLmQiIC10ICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gJChNUF9FWFRSQV9BU19QUkUpICAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8gLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydF9hc20uUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1QS09CU0tERVBsYXRmb3JtVG9vbD0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3MubzogLi4vUmVnaXN0ZXJUZXN0VGFza3MuUyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3MubyAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLm9rICR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5lcnIgCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8gLi4vUmVnaXN0ZXJUZXN0VGFza3MuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09X19NUExBQl9ERUJVR0dFUl9QSzM9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8gLi4vUmVnaXN0ZXJUZXN0VGFza3MuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09UEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm86IC4uL0ludFF1ZXVlVGltZXJfaXNyLlMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8gCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5vayAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZXJyIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vIC4uL0ludFF1ZXVlVGltZXJfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUdHRVJfUEszPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLworCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vIC4uL0ludFF1ZXVlVGltZXJfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3Iuby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPVBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLwogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm86IC4uL3RpbWVydGVzdF9pc3IuUyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8gCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLm9rICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmVyciAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uZCIgIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vIC4uL3RpbWVydGVzdF9pc3IuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uZCIgIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vIC4uL3RpbWVydGVzdF9pc3IuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3RfaXNyLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1QS09CU0tERVBsYXRmb3JtVG9vbD0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3IubzogLi4vSVNSVHJpZ2dlcmVkVGFza19pc3IuUyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3IubyAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLm9rICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5lcnIgCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8gLi4vSVNSVHJpZ2dlcmVkVGFza19pc3IuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09X19NUExBQl9ERUJVR0dFUl9QSzM9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8gLi4vSVNSVHJpZ2dlcmVkVGFza19pc3IuUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09UEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCiAJCiBlbHNlCiAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20ubzogLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydF9hc20uUyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCkBAIC0xNzQsMTY5ICsxODAsMTY5IEBACiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvR2VuUVRlc3QubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvR2VuUVRlc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvR2VuUVRlc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9RUGVlay5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1FQZWVrLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1FQZWVrLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsubyAuLi8uLi9Db21tb24vTWluaW1hbC9RUGVlay5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsubyAuLi8uLi9Db21tb24vTWluaW1hbC9RUGVlay5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvYmxvY2t0aW0uby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvYmxvY2t0aW0uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIubzogLi4vLi4vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9mbGFzaF90aW1lci5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9mbGFzaF90aW1lci5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3NlbXRlc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvc2VtdGVzdC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvSW50UXVldWUuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvSW50UXVldWUuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUubzogLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZU92ZXJ3cml0ZS5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZU92ZXJ3cml0ZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9RdWV1ZVNldC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlU2V0Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlU2V0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQubyAuLi8uLi9Db21tb24vTWluaW1hbC9RdWV1ZVNldC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQubyAuLi8uLi9Db21tb24vTWluaW1hbC9RdWV1ZVNldC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvY291bnRzZW0uby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvY291bnRzZW0uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9keW5hbWljLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMubyAuLi8uLi9Db21tb24vTWluaW1hbC9keW5hbWljLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9keW5hbWljLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3JlY211dGV4Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3JlY211dGV4Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXgubyAuLi8uLi9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXguby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXgubyAuLi8uLi9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9FdmVudEdyb3Vwc0RlbW8uYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8uby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvRXZlbnRHcm91cHNEZW1vLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8ubyAuLi8uLi9Db21tb24vTWluaW1hbC9FdmVudEdyb3Vwc0RlbW8uYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvRXZlbnRHcm91cHNEZW1vLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvRXZlbnRHcm91cHNEZW1vLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vOiAuLi8uLi8uLi9Tb3VyY2UvcXVldWUuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvcXVldWUuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvcXVldWUubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8gLi4vLi4vLi4vU291cmNlL3F1ZXVlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vIC4uLy4uLy4uL1NvdXJjZS9xdWV1ZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3MubzogLi4vLi4vLi4vU291cmNlL3Rhc2tzLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3Rhc2tzLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3Rhc2tzLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vIC4uLy4uLy4uL1NvdXJjZS90YXNrcy5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3Muby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3MubyAuLi8uLi8uLi9Tb3VyY2UvdGFza3MuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3QubzogLi4vLi4vLi4vU291cmNlL2xpc3QuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvbGlzdC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvbGlzdC5vIC4uLy4uLy4uL1NvdXJjZS9saXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvbGlzdC5vIC4uLy4uLy4uL1NvdXJjZS9saXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90aW1lcnMubzogLi4vLi4vLi4vU291cmNlL3RpbWVycy5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90aW1lcnMuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90aW1lcnMuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3RpbWVycy5vIC4uLy4uLy4uL1NvdXJjZS90aW1lcnMuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90aW1lcnMuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8gLi4vLi4vLi4vU291cmNlL3RpbWVycy5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydC5vOiAuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4IiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQubyAuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydC5vIC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnQuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQubzogLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3NyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xODg0MDk2ODc3L2hlYXBfNC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8gLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xODg0MDk2ODc3L2hlYXBfNC5vIC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvZXZlbnRfZ3JvdXBzLm86IC4uLy4uLy4uL1NvdXJjZS9ldmVudF9ncm91cHMuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvZXZlbnRfZ3JvdXBzLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvZXZlbnRfZ3JvdXBzLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9ldmVudF9ncm91cHMubyAuLi8uLi8uLi9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvZXZlbnRfZ3JvdXBzLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vIC4uLy4uLy4uL1NvdXJjZS9ldmVudF9ncm91cHMuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm86IC4uL21haW4uYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vIC4uL21haW4uYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW4uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm8gLi4vbWFpbi5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vOiAuLi9QYXJUZXN0L1BhclRlc3QuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2L1BhclRlc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vIC4uL1BhclRlc3QvUGFyVGVzdC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2L1BhclRlc3QubyAuLi9QYXJUZXN0L1BhclRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vOiAuLi9tYWluX2JsaW5reS5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fYmxpbmt5Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fYmxpbmt5Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kubyAuLi9tYWluX2JsaW5reS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kubyAuLi9tYWluX2JsaW5reS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm86IC4uL0NvbmZpZ1BlcmZvcm1hbmNlLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvQ29uZmlnUGVyZm9ybWFuY2Uuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvQ29uZmlnUGVyZm9ybWFuY2Uuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vIC4uL0NvbmZpZ1BlcmZvcm1hbmNlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vIC4uL0NvbmZpZ1BlcmZvcm1hbmNlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm86IC4uL21haW5fZnVsbC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2Z1bGwuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vIC4uL21haW5fZnVsbC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2Z1bGwubyAuLi9tYWluX2Z1bGwuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm86IC4uL0ludFF1ZXVlVGltZXIuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vIC4uL0ludFF1ZXVlVGltZXIuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXIuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm8gLi4vSW50UXVldWVUaW1lci5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vOiAuLi90aW1lcnRlc3QuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3Quby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3QubyAuLi90aW1lcnRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0Lm8gLi4vdGltZXJ0ZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vOiAuLi9JU1JUcmlnZ2VyZWRUYXNrLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2suby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2suby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2subyAuLi9JU1JUcmlnZ2VyZWRUYXNrLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vIC4uL0lTUlRyaWdnZXJlZFRhc2suYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm86IC4uL2Zsb3BfbXouYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vIC4uL2Zsb3BfbXouYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL2Zsb3BfbXouby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm8gLi4vZmxvcF9tei5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiBlbHNlCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawpAQCAtNTIwLDcgKzUyNiw3IEBACiBpZmVxICgkKFRZUEVfSU1BR0UpLCBERUJVR19SVU4pCiBkaXN0LyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0vUlRPU0RlbW8uWC4ke0lNQUdFX1RZUEV9LiR7T1VUUFVUX1NVRkZJWH06ICR7T0JKRUNURklMRVN9ICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsgICAgCiAJQCR7TUtESVJ9IGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfSAKLQkke01QX0NDfSAkKE1QX0VYVFJBX0xEX1BSRSkgIC1tZGVidWdnZXIgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1vIGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfS9SVE9TRGVtby5YLiR7SU1BR0VfVFlQRX0uJHtPVVRQVVRfU1VGRklYfSAke09CSkVDVEZJTEVTX1FVT1RFRF9JRl9TUEFDRUR9ICAgICAgICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAgLW1yZXNlcnZlPWRhdGFAMHgwOjB4MjdGICAgLVdsLC0tZGVmc3ltPV9fTVBMQUJfQlVJTEQ9MSQoTVBfRVhUUkFfTERfUE9TVCkkKE1QX0xJTktFUl9GSUxFX09QVElPTiksLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHR0VSX1BLMz0xLC0tZGVmc3ltPV9taW5faGVhcF9zaXplPTAsLS1uby1jb2RlLWluLWRpbml0LC0tbm8tZGluaXQtaW4tc2VyaWFsLW1lbSwtTWFwPSIke0RJU1RESVJ9LyR7UFJPSkVDVE5BTUV9LiR7SU1BR0VfVFlQRX0ubWFwIiwtLW1lbW9yeXN1bW1hcnksZGlzdC8ke0NORF9DT05GfS8ke0lNQUdFX1RZUEV9L21lbW9yeWZpbGUueG1sCisJJHtNUF9DQ30gJChNUF9FWFRSQV9MRF9QUkUpIC1nIC1tZGVidWdnZXIgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1vIGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfS9SVE9TRGVtby5YLiR7SU1BR0VfVFlQRX0uJHtPVVRQVVRfU1VGRklYfSAke09CSkVDVEZJTEVTX1FVT1RFRF9JRl9TUEFDRUR9ICAgICAgICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAgLW1yZXNlcnZlPWRhdGFAMHgwOjB4MjdGICAgLVdsLC0tZGVmc3ltPV9fTVBMQUJfQlVJTEQ9MSQoTVBfRVhUUkFfTERfUE9TVCkkKE1QX0xJTktFUl9GSUxFX09QVElPTiksLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZGVmc3ltPV9fREVCVUc9MSwtRD1fX0RFQlVHX0QsLS1kZWZzeW09UEtPQlNLREVQbGF0Zm9ybVRvb2w9MSwtLWRlZnN5bT1fbWluX2hlYXBfc2l6ZT0wLC0tbm8tY29kZS1pbi1kaW5pdCwtLW5vLWRpbml0LWluLXNlcmlhbC1tZW0sLU1hcD0iJHtESVNURElSfS8ke1BST0pFQ1ROQU1FfS4ke0lNQUdFX1RZUEV9Lm1hcCIsLS1tZW1vcnlzdW1tYXJ5LGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfS9tZW1vcnlmaWxlLnhtbAogCQogZWxzZQogZGlzdC8ke0NORF9DT05GfS8ke0lNQUdFX1RZUEV9L1JUT1NEZW1vLlguJHtJTUFHRV9UWVBFfS4ke09VVFBVVF9TVUZGSVh9OiAke09CSkVDVEZJTEVTfSAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rICAgCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtZ2VuZXNpcy5wcm9wZXJ0aWVzIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWdlbmVzaXMucHJvcGVydGllcwppbmRleCA4MjI5NGYyLi45N2U5NjUzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtZ2VuZXNpcy5wcm9wZXJ0aWVzCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1nZW5lc2lzLnByb3BlcnRpZXMKQEAgLTEsMTUgKzEsMTUgQEAKICMNCi0jU3VuIEFwciAwOSAxMjowNDoyMyBQRFQgMjAxNw0KLVBJQzMyTVoyMDQ4X1NLLmNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtdG9vbGNoYWluWEMzMi1YQzMyTGFuZ3VhZ2VUb29sY2hhaW4ubWQ1PWI2YzA2YmEzYWE2ZjE1ODc4OTkwOTRkOTFhOGY3NjFkDQotUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLmRpcj1DXDpcXGRldnRvb2xzXFxNaWNyb2NoaXBcXHhjMzJcXHYxLjQyXFxiaW4NCisjTW9uIE5vdiAyNyAxOToxNTo0NyBQU1QgMjAxNw0KK1BJQzMyTVoyMDQ4X1NLLmNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtdG9vbGNoYWluWEMzMi1YQzMyTGFuZ3VhZ2VUb29sY2hhaW4ubWQ1PTAwMmUwN2ZjMzVhNzMyNTY2YjNjODBjMWVkMjg5N2U4DQorUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLmRpcj1DXDpcXGRldnRvb2xzXFxNaWNyb2NoaXBcXHhjMzJcXHYxLjQ0XFxiaW4NCiBjb25mLmlkcz1QSUMzMk1aMjA0OF9TSyxQSUMzMk1aMjA0OEVGX1NLX1NPRlRfRkxPQVQsUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FUDQotY29uZmlndXJhdGlvbnMteG1sPWYyYjZmZGU3NWJjM2E5MGYxYjc5ZmQwMzkzOTdhOGU5DQotUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLmRpcj1DXDpcXGRldnRvb2xzXFxNaWNyb2NoaXBcXHhjMzJcXHYxLjQyXFxiaW4NCi1QSUMzMk1aMjA0OEVGX1NLX1NPRlRfRkxPQVQuY29tLW1pY3JvY2hpcC1tcGxhYi1uYmlkZS10b29sY2hhaW5YQzMyLVhDMzJMYW5ndWFnZVRvb2xjaGFpbi5tZDU9YjZjMDZiYTNhYTZmMTU4Nzg5OTA5NGQ5MWE4Zjc2MWQNCi1QSUMzMk1aMjA0OEVGX1NLX0hBUkRfRkxPQVQubGFuZ3VhZ2V0b29sY2hhaW4udmVyc2lvbj0xLjQyDQotY29tLW1pY3JvY2hpcC1tcGxhYi1uYmlkZS1lbWJlZGRlZC1tYWtlcHJvamVjdC1NYWtlUHJvamVjdC5tZDU9MDUyZjFiNGNmYTdlNTBjZDMzYmJiYjQwNzM0MjNmOWUNCi1QSUMzMk1aMjA0OF9TSy5sYW5ndWFnZXRvb2xjaGFpbi52ZXJzaW9uPTEuNDINCi1QSUMzMk1aMjA0OF9TSy5sYW5ndWFnZXRvb2xjaGFpbi5kaXI9Q1w6XFxkZXZ0b29sc1xcTWljcm9jaGlwXFx4YzMyXFx2MS40MlxcYmluDQotUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FULmNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtdG9vbGNoYWluWEMzMi1YQzMyTGFuZ3VhZ2VUb29sY2hhaW4ubWQ1PWI2YzA2YmEzYWE2ZjE1ODc4OTkwOTRkOTFhOGY3NjFkDQotUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLnZlcnNpb249MS40Mg0KK2NvbmZpZ3VyYXRpb25zLXhtbD0xM2ZjYWUwZDFmYWQ1NTYxYzc5MDk5M2Y4MTRkZmY4Yg0KK1BJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi5kaXI9Q1w6XFxkZXZ0b29sc1xcTWljcm9jaGlwXFx4YzMyXFx2MS40NFxcYmluDQorUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULmNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtdG9vbGNoYWluWEMzMi1YQzMyTGFuZ3VhZ2VUb29sY2hhaW4ubWQ1PTAwMmUwN2ZjMzVhNzMyNTY2YjNjODBjMWVkMjg5N2U4DQorUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLnZlcnNpb249MS40NA0KK2NvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtZW1iZWRkZWQtbWFrZXByb2plY3QtTWFrZVByb2plY3QubWQ1PTVkMzBmZjUxMjhiMTQ4NjVjOGEzNzk2YThmMGJiOGEwDQorUElDMzJNWjIwNDhfU0subGFuZ3VhZ2V0b29sY2hhaW4udmVyc2lvbj0xLjQ0DQorUElDMzJNWjIwNDhfU0subGFuZ3VhZ2V0b29sY2hhaW4uZGlyPUNcOlxcZGV2dG9vbHNcXE1pY3JvY2hpcFxceGMzMlxcdjEuNDRcXGJpbg0KK1BJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVC5jb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLXRvb2xjaGFpblhDMzItWEMzMkxhbmd1YWdlVG9vbGNoYWluLm1kNT0wMDJlMDdmYzM1YTczMjU2NmIzYzgwYzFlZDI4OTdlOA0KK1BJQzMyTVoyMDQ4RUZfU0tfU09GVF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi52ZXJzaW9uPTEuNDQNCiBob3N0LnBsYXRmb3JtPXdpbmRvd3MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtbG9jYWwtUElDMzJNWjIwNDhfU0subWsgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtbG9jYWwtUElDMzJNWjIwNDhfU0subWsKaW5kZXggM2ZlYmZmYS4uM2UyMDIwOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWxvY2FsLVBJQzMyTVoyMDQ4X1NLLm1rCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1sb2NhbC1QSUMzMk1aMjA0OF9TSy5tawpAQCAtMTUsMjMgKzE1LDIzIEBACiAjICQgbWFrZU1QX0NDPSIvb3B0L21pY3JvY2hpcC9tcGxhYmMzMC92My4zMGMvYmluL3BpYzMwLWdjYyIgLi4uICAKICMKIFNIRUxMPWNtZC5leGUKLVBBVEhfVE9fSURFX0JJTj1DOi9kZXZ0b29scy9NaWNyb2NoaXAvTVBMQUJYL3YzLjUxL21wbGFiX2lkZS9wbGF0Zm9ybS8uLi9tcGxhYl9pZGUvbW9kdWxlcy8uLi8uLi9iaW4vCitQQVRIX1RPX0lERV9CSU49QzovZGV2dG9vbHMvTWljcm9jaGlwL01QTEFCWC92NC4wNS9tcGxhYl9pZGUvcGxhdGZvcm0vLi4vbXBsYWJfaWRlL21vZHVsZXMvLi4vLi4vYmluLwogIyBBZGRpbmcgTVBMQUIgWCBiaW4gZGlyZWN0b3J5IHRvIHBhdGguCi1QQVRIOj1DOi9kZXZ0b29scy9NaWNyb2NoaXAvTVBMQUJYL3YzLjUxL21wbGFiX2lkZS9wbGF0Zm9ybS8uLi9tcGxhYl9pZGUvbW9kdWxlcy8uLi8uLi9iaW4vOiQoUEFUSCkKK1BBVEg6PUM6L2RldnRvb2xzL01pY3JvY2hpcC9NUExBQlgvdjQuMDUvbXBsYWJfaWRlL3BsYXRmb3JtLy4uL21wbGFiX2lkZS9tb2R1bGVzLy4uLy4uL2Jpbi86JChQQVRIKQogIyBQYXRoIHRvIGphdmEgdXNlZCB0byBydW4gTVBMQUIgWCB3aGVuIHRoaXMgbWFrZWZpbGUgd2FzIGNyZWF0ZWQKLU1QX0pBVkFfUEFUSD0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXE1QTEFCWFx2My41MVxzeXNcamF2YVxqcmUxLjguMF85MS9iaW4vIgorTVBfSkFWQV9QQVRIPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBcTVBMQUJYXHY0LjA1XHN5c1xqYXZhXGpyZTEuOC4wXzE0NC9iaW4vIgogT1NfQ1VSUkVOVD0iJChzaGVsbCB1bmFtZSAtcykiCi1NUF9DQz0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluXHhjMzItZ2NjLmV4ZSIKLU1QX0NQUEM9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpblx4YzMyLWcrKy5leGUiCitNUF9DQz0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluXHhjMzItZ2NjLmV4ZSIKK01QX0NQUEM9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpblx4YzMyLWcrKy5leGUiCiAjIE1QX0JDIGlzIG5vdCBkZWZpbmVkCi1NUF9BUz0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluXHhjMzItYXMuZXhlIgotTVBfTEQ9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpblx4YzMyLWxkLmV4ZSIKLU1QX0FSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW5ceGMzMi1hci5leGUiCi1ERVBfR0VOPSR7TVBfSkFWQV9QQVRIfWphdmEgLWphciAiQzovZGV2dG9vbHMvTWljcm9jaGlwL01QTEFCWC92My41MS9tcGxhYl9pZGUvcGxhdGZvcm0vLi4vbXBsYWJfaWRlL21vZHVsZXMvLi4vLi4vYmluL2V4dHJhY3RvYmplY3RkZXBlbmRlbmNpZXMuamFyIgotTVBfQ0NfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW4iCi1NUF9DUFBDX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluIgorTVBfQVM9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpblx4YzMyLWFzLmV4ZSIKK01QX0xEPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW5ceGMzMi1sZC5leGUiCitNUF9BUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluXHhjMzItYXIuZXhlIgorREVQX0dFTj0ke01QX0pBVkFfUEFUSH1qYXZhIC1qYXIgIkM6L2RldnRvb2xzL01pY3JvY2hpcC9NUExBQlgvdjQuMDUvbXBsYWJfaWRlL3BsYXRmb3JtLy4uL21wbGFiX2lkZS9tb2R1bGVzLy4uLy4uL2Jpbi9leHRyYWN0b2JqZWN0ZGVwZW5kZW5jaWVzLmphciIKK01QX0NDX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluIgorTVBfQ1BQQ19ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpbiIKICMgTVBfQkNfRElSIGlzIG5vdCBkZWZpbmVkCi1NUF9BU19ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpbiIKLU1QX0xEX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluIgotTVBfQVJfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW4iCitNUF9BU19ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpbiIKK01QX0xEX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluIgorTVBfQVJfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW4iCiAjIE1QX0JDX0RJUiBpcyBub3QgZGVmaW5lZApkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L2NvbmZpZ3VyYXRpb25zLnhtbCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9jb25maWd1cmF0aW9ucy54bWwKaW5kZXggMzE3MTU0Ni4uMTk2OWQwZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L2NvbmZpZ3VyYXRpb25zLnhtbAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvY29uZmlndXJhdGlvbnMueG1sCkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAgIDx0YXJnZXRQbHVnaW5Cb2FyZD48L3RhcmdldFBsdWdpbkJvYXJkPg0KICAgICAgICAgPHBsYXRmb3JtVG9vbD5QS09CU0tERVBsYXRmb3JtVG9vbDwvcGxhdGZvcm1Ub29sPg0KICAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluPlhDMzI8L2xhbmd1YWdlVG9vbGNoYWluPg0KLSAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4xLjQyPC9sYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+DQorICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPjEuNDQ8L2xhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4NCiAgICAgICAgIDxwbGF0Zm9ybT4zPC9wbGF0Zm9ybT4NCiAgICAgICA8L3Rvb2xzU2V0Pg0KICAgICAgIDxjb21waWxlVHlwZT4NCkBAIC0zNzcsNyArMzc3LDcgQEAKICAgICAgICAgPHRhcmdldFBsdWdpbkJvYXJkPjwvdGFyZ2V0UGx1Z2luQm9hcmQ+DQogICAgICAgICA8cGxhdGZvcm1Ub29sPlBLT0JTS0RFUGxhdGZvcm1Ub29sPC9wbGF0Zm9ybVRvb2w+DQogICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW4+WEMzMjwvbGFuZ3VhZ2VUb29sY2hhaW4+DQotICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPjEuNDI8L2xhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4NCisgICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+MS40NDwvbGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPg0KICAgICAgICAgPHBsYXRmb3JtPjM8L3BsYXRmb3JtPg0KICAgICAgIDwvdG9vbHNTZXQ+DQogICAgICAgPGNvbXBpbGVUeXBlPg0KQEAgLTc2OSw3ICs3NjksNyBAQAogICAgICAgICA8dGFyZ2V0UGx1Z2luQm9hcmQ+PC90YXJnZXRQbHVnaW5Cb2FyZD4NCiAgICAgICAgIDxwbGF0Zm9ybVRvb2w+UEtPQlNLREVQbGF0Zm9ybVRvb2w8L3BsYXRmb3JtVG9vbD4NCiAgICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbj5YQzMyPC9sYW5ndWFnZVRvb2xjaGFpbj4NCi0gICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+MS40MjwvbGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPg0KKyAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4xLjQ0PC9sYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+DQogICAgICAgICA8cGxhdGZvcm0+MzwvcGxhdGZvcm0+DQogICAgICAgPC90b29sc1NldD4NCiAgICAgICA8Y29tcGlsZVR5cGU+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L3ByaXZhdGUvY29uZmlndXJhdGlvbnMueG1sIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L3ByaXZhdGUvY29uZmlndXJhdGlvbnMueG1sCmluZGV4IDIyODllNmEuLmY4MzMyNjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL2NvbmZpZ3VyYXRpb25zLnhtbAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9jb25maWd1cmF0aW9ucy54bWwKQEAgLTQsOCArNCw4IEBACiAgIDxkZWZhdWx0Q29uZj4wPC9kZWZhdWx0Q29uZj4NCiAgIDxjb25mcz4NCiAgICAgPGNvbmYgbmFtZT0iUElDMzJNWjIwNDhfU0siIHR5cGU9IjIiPg0KLSAgICAgIDxwbGF0Zm9ybVRvb2xTTj46PU1QTEFCQ29tbS1VU0ItTWljcm9jaGlwOj0mbHQ7dmlkPjA0RDg6PSZsdDtwaWQ+ODEwNzo9Jmx0O3Jldj4wMDAyOj0mbHQ7bWFuPk1pY3JvY2hpcCBUZWNobm9sb2d5IEluY29ycG9yYXRlZDo9Jmx0O3Byb2Q+UElDMzJNWiBFQyBGYW1pbHk6PSZsdDtzbj5CVVIxMzUxMTI0MzA6PSZsdDtkcnY+eDo9Jmx0O3hwdD5oOj1lbmQ8L3BsYXRmb3JtVG9vbFNOPg0KLSAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KKyAgICAgIDxwbGF0Zm9ybVRvb2xTTj46PU1QTEFCQ29tbS1VU0ItTWljcm9jaGlwOj0mbHQ7dmlkPjA0RDg6PSZsdDtwaWQ+ODEwNzo9Jmx0O3Jldj4wMDAyOj0mbHQ7bWFuPk1pY3JvY2hpcCBUZWNobm9sb2d5IEluY29ycG9yYXRlZDo9Jmx0O3Byb2Q+UElDMzJNWiBFQyBGYW1pbHk6PSZsdDtzbj5NVEkxMzI5OTAxNTU6PSZsdDtkcnY+eDo9Jmx0O3hwdD5oOj1lbmQ8L3BsYXRmb3JtVG9vbFNOPg0KKyAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KICAgICAgIDxtZGJkZWJ1Z2dlciB2ZXJzaW9uPSIxIj4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjE+cGxhY2UgaG9sZGVyIDE8L3BsYWNlaG9sZGVyMT4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjI+cGxhY2UgaG9sZGVyIDI8L3BsYWNlaG9sZGVyMj4NCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgPC9jb25mPg0KICAgICA8Y29uZiBuYW1lPSJQSUMzMk1aMjA0OEVGX1NLX1NPRlRfRkxPQVQiIHR5cGU9IjIiPg0KICAgICAgIDxwbGF0Zm9ybVRvb2xTTj46PU1QTEFCQ29tbS1VU0ItTWljcm9jaGlwOj0mbHQ7dmlkPjA0RDg6PSZsdDtwaWQ+ODEwNzo9Jmx0O3Jldj4wMDAyOj0mbHQ7bWFuPk1pY3JvY2hpcCBUZWNobm9sb2d5IEluY29ycG9yYXRlZDo9Jmx0O3Byb2Q+UElDMzJNWiBFRiBGYW1pbHk6PSZsdDtzbj5CVVIxNTMxMjQwMDQ6PSZsdDtkcnY+eDo9Jmx0O3hwdD5oOj1lbmQ8L3BsYXRmb3JtVG9vbFNOPg0KLSAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KKyAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KICAgICAgIDxtZGJkZWJ1Z2dlciB2ZXJzaW9uPSIxIj4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjE+cGxhY2UgaG9sZGVyIDE8L3BsYWNlaG9sZGVyMT4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjI+cGxhY2UgaG9sZGVyIDI8L3BsYWNlaG9sZGVyMj4NCkBAIC00MSw3ICs0MSw3IEBACiAgICAgPC9jb25mPg0KICAgICA8Y29uZiBuYW1lPSJQSUMzMk1aMjA0OEVGX1NLX0hBUkRfRkxPQVQiIHR5cGU9IjIiPg0KICAgICAgIDxwbGF0Zm9ybVRvb2xTTj46PU1QTEFCQ29tbS1VU0ItTWljcm9jaGlwOj0mbHQ7dmlkPjA0RDg6PSZsdDtwaWQ+ODEwNzo9Jmx0O3Jldj4wMDAyOj0mbHQ7bWFuPk1pY3JvY2hpcCBUZWNobm9sb2d5IEluY29ycG9yYXRlZDo9Jmx0O3Byb2Q+UElDMzJNWiBFQyBGYW1pbHk6PSZsdDtzbj5NVEkxMzI5OTAxNTU6PSZsdDtkcnY+eDo9Jmx0O3hwdD5oOj1lbmQ8L3BsYXRmb3JtVG9vbFNOPg0KLSAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KKyAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbkRpcj5DOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW48L2xhbmd1YWdlVG9vbGNoYWluRGlyPg0KICAgICAgIDxtZGJkZWJ1Z2dlciB2ZXJzaW9uPSIxIj4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjE+cGxhY2UgaG9sZGVyIDE8L3BsYWNlaG9sZGVyMT4NCiAgICAgICAgIDxwbGFjZWhvbGRlcjI+cGxhY2UgaG9sZGVyIDI8L3BsYWNlaG9sZGVyMj4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9wcml2YXRlLnhtbCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL3ByaXZhdGUueG1sCmluZGV4IDViNGYxM2UuLmI2MTJhZDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL3ByaXZhdGUueG1sCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL3ByaXZhdGUueG1sCkBAIC0xMCwxMCArMTAsNiBAQAogICAgICAgICAgICAgPGZpbGU+ZmlsZTovQzovRS9EZXYvRnJlZVJUT1MvV29ya2luZ0NvcHkvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jPC9maWxlPg0KICAgICAgICAgICAgIDxmaWxlPmZpbGU6L0M6L0UvRGV2L0ZyZWVSVE9TL1dvcmtpbmdDb3B5L0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlM8L2ZpbGU+DQogICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgPGdyb3VwPg0KLSAgICAgICAgICAgIDxmaWxlPmZpbGU6L0M6L1VzZXJzL3JpYmFycnkvRGV2L0ZyZWVSVE9TL1dvcmtpbmdDb3B5L0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluLmM8L2ZpbGU+DQotICAgICAgICAgICAgPGZpbGU+ZmlsZTovQzovVXNlcnMvcmliYXJyeS9EZXYvRnJlZVJUT1MvV29ya2luZ0NvcHkvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fZnVsbC5jPC9maWxlPg0KLSAgICAgICAgICAgIDxmaWxlPmZpbGU6L0M6L1VzZXJzL3JpYmFycnkvRGV2L0ZyZWVSVE9TL1dvcmtpbmdDb3B5L0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2JsaW5reS5jPC9maWxlPg0KLSAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxncm91cC8+DQogICAgIDwvb3Blbi1maWxlcz4NCiA8L3Byb2plY3QtcHJpdmF0ZT4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUmVnaXN0ZXJUZXN0VGFza3MuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCmluZGV4IGRmMWE4ZmMuLmE2MmQyMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaW5jbHVkZSA8eGMuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvZmxvcF9tei5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouYwppbmRleCA4YzhmOTg0Li42YmQyOTEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvZmxvcF9tei5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9mbG9wX216LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBlaWdodCB0YXNrcywgZWFjaCBvZiB3aGljaCBsb29wcyBjb250aW51b3VzbHkgcGVyZm9ybWluZyBhDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9mbG9wX216LmgKaW5kZXggZjBkOWU0NC4uNTJlN2E3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvZmxvcF9tei5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZMT1BfVEFTS1NfSA0KICNkZWZpbmUgRkxPUF9UQVNLU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluLmMKaW5kZXggMjAxM2RjMC4uYjQzZjBjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTYgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fYmxpbmt5LmMKaW5kZXggNDYwMWY2MC4uMDUxYTQ3ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fZnVsbC5jCmluZGV4IDUzOGZlNTkuLjMyYTJhYzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdC5jCmluZGV4IDdhYWY1ODkuLmE1MzIzNGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuaAppbmRleCBjZDQ1NzlkLi4zMDMzZjMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX1RFU1RfSA0KICNkZWZpbmUgVElNRVJfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdF9pc3IuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3RfaXNyLlMKaW5kZXggMWQ3YmY1Zi4uZWFmNzFhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdF9pc3IuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0X2lzci5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8eGMuaD4NCiAjaW5jbHVkZSA8c3lzL2FzbS5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA1ZjQwMWEzLi5jMDA2YTAzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCmluZGV4IGMwZjA4NDkuLjQ0MDAyNmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUZXN0cyB0aGUgZmxvYXRpbmcgcG9pbnQgY29udGV4dCBzYXZlIGFuZCByZXN0b3JlIG1lY2hhbmlzbS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaAppbmRleCAxMDE3MmVlLi5mYzQ1MWU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxPUF9SRUdfVEVTVF9IDQogI2RlZmluZSBGTE9QX1JFR19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYwppbmRleCA0NThiNmE5Li45NDkxMGQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBlaWdodCB0YXNrcywgZWFjaCBvZiB3aGljaCBsb29wcyBjb250aW51b3VzbHkgcGVyZm9ybWluZyBhDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYwppbmRleCAyZDhhNjUzLi43MzlhNWExIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYwppbmRleCA5YjlmY2U4Li40NzU4MzVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCmluZGV4IDgxYmJkN2MuLjg0ZGI1NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNWY0MDFhMy4uYzAwNmEwMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYwppbmRleCA5ZDQ3NmYwLi5mZDRkYjY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGVzdHMgdGhlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgc2F2ZSBhbmQgcmVzdG9yZSBtZWNoYW5pc20uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKaW5kZXggMTAxNzJlZS4uZmM0NTFlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZMT1BfUkVHX1RFU1RfSA0KICNkZWZpbmUgRkxPUF9SRUdfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKaW5kZXggMWMyMGQzYS4uN2JkMWJmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKaW5kZXggOTllZWVkYS4uYmI4YTE5MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKaW5kZXggOWI5ZmNlOC4uNDc1ODM1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwppbmRleCA4MWJiZDdjLi44NGRiNTUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA2NjA5Zjg5Li45Y2JlM2I2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKaW5kZXggOWQ0NzZmMC4uZmQ0ZGI2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUZXN0cyB0aGUgZmxvYXRpbmcgcG9pbnQgY29udGV4dCBzYXZlIGFuZCByZXN0b3JlIG1lY2hhbmlzbS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmggYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKaW5kZXggMTAxNzJlZS4uZmM0NTFlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTE9QX1JFR19URVNUX0gNCiAjZGVmaW5lIEZMT1BfUkVHX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYwppbmRleCAxYzIwZDNhLi43YmQxYmZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jCmluZGV4IDdlMGI1NjUuLjVhZTc1ZGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKaW5kZXggYWVlZDk0My4uMDAyODA5ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCmluZGV4IDgxYmJkN2MuLjg0ZGI1NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvUG9sbFEuYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL1BvbGxRLmMKaW5kZXggNmQ2M2QwZC4uZGRkMzk3MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvUG9sbFEuYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9Qb2xsUS5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIHZlcnNpb24gb2YgUG9sbFEuIGMgaXMgZm9yIHVzZSBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSBsaW1pdGVkIHN0YWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvYmxvY2t0aW0uYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2Jsb2NrdGltLmMKaW5kZXggZWQyMDQ3MS4uNDg2ZGFiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvYmxvY2t0aW0uYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9ibG9ja3RpbS5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgc29tZSB0ZXN0IHNjZW5hcmlvcyB0aGF0IGVuc3VyZSB0YXNrcyBkbyBub3QgZXhpdCBxdWV1ZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2R5bmFtaWMuYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2R5bmFtaWMuYwppbmRleCA4MmViNjBhLi42NThmNTE1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9keW5hbWljLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvZHluYW1pYy5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgZmlyc3QgdGVzdCBjcmVhdGVzIHRocmVlIHRhc2tzIC0gdHdvIGNvdW50ZXIgdGFza3MgKG9uZSBjb250aW51b3VzIGNvdW50DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9Qb2xsUS5oIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9Qb2xsUS5oCmluZGV4IDA2ZGQ1OGMuLjJmY2JjNmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvUG9sbFEuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL1BvbGxRLmgKQEAgLTEsNzAgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjMuMCAtIENvcHlyaWdodCAoQykgMjAxMiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSAgICANCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCBsaWNlbnNlIA0KLSAgICBhbmQgY29udGFjdCBkZXRhaWxzLiAgDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLg0KLQ0KLSAgICBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIA0KLSAgICB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uLCBhbmQgbWlkZGxld2FyZSwgdW5kZXIgDQotICAgIHRoZSBPcGVuUlRPUyBicmFuZDogaHR0cDovL3d3dy5PcGVuUlRPUy5jb20uICBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28NCi0gICAgcHJvdmlkZSBhIHNhZmV0eSBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gdW5kZXIgDQotICAgIHRoZSBTYWZlUlRPUyBicmFuZDogaHR0cDovL3d3dy5TYWZlUlRPUy5jb20uDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPTExFRF9RX0gNCiAjZGVmaW5lIFBPTExFRF9RX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2Jsb2NrdGltLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2Jsb2NrdGltLmgKaW5kZXggMmNmMjBmMS4uYTY4NTk1NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9ibG9ja3RpbS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvYmxvY2t0aW0uaApAQCAtMSw3MCArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuMy4wIC0gQ29weXJpZ2h0IChDKSAyMDEyIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVCANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0gICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0gICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotICAgIA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIGxpY2Vuc2UgDQotICAgIGFuZCBjb250YWN0IGRldGFpbHMuICANCi0gICAgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wuDQotDQotICAgIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgDQotICAgIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24sIGFuZCBtaWRkbGV3YXJlLCB1bmRlciANCi0gICAgdGhlIE9wZW5SVE9TIGJyYW5kOiBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbS4gIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbw0KLSAgICBwcm92aWRlIGEgc2FmZXR5IGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiB1bmRlciANCi0gICAgdGhlIFNhZmVSVE9TIGJyYW5kOiBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQkxPQ0tfVElNRV9URVNUX0gNCiAjZGVmaW5lIEJMT0NLX1RJTUVfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9keW5hbWljLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2R5bmFtaWMuaAppbmRleCBkZTM5YTY4Li44YWQ4ODZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2R5bmFtaWMuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2R5bmFtaWMuaApAQCAtMSw3MCArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuMy4wIC0gQ29weXJpZ2h0IChDKSAyMDEyIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVCANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0gICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0gICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotICAgIA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIGxpY2Vuc2UgDQotICAgIGFuZCBjb250YWN0IGRldGFpbHMuICANCi0gICAgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wuDQotDQotICAgIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgDQotICAgIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24sIGFuZCBtaWRkbGV3YXJlLCB1bmRlciANCi0gICAgdGhlIE9wZW5SVE9TIGJyYW5kOiBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbS4gIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbw0KLSAgICBwcm92aWRlIGEgc2FmZXR5IGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiB1bmRlciANCi0gICAgdGhlIFNhZmVSVE9TIGJyYW5kOiBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRFlOQU1JQ19NQU5JUFVMQVRJT05fSA0KICNkZWZpbmUgRFlOQU1JQ19NQU5JUFVMQVRJT05fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0V4YW1wbGVJU1IuUyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0V4YW1wbGVJU1IuUwppbmRleCA1MGZmZTMyLi4zN2Q5ZTczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9FeGFtcGxlSVNSLlMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvRXhhbXBsZUlTUi5TCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgYXNzZW1ibGVyIHdyYXBwZXIgZm9yIHRoZSBleGFtcGxlIGludGVycnVwdCB0aGF0IGlzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZThlN2Y1OS4uOTlmNzhmZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9SZWdUZXN0LlMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9SZWdUZXN0LlMKaW5kZXggODFjNWQwNS4uN2ZkMzQ1ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvUmVnVGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL1JlZ1Rlc3QuUwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIFJlZ1Rlc3QgdGFza3MgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgbWFpbi5jDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvZGVtb19zcGVjaWZpY19pby5oIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvZGVtb19zcGVjaWZpY19pby5oCmluZGV4IDg5ZDhmZDIuLjcyODQ2YzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL2RlbW9fc3BlY2lmaWNfaW8uaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9kZW1vX3NwZWNpZmljX2lvLmgKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLSAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLSAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+IUFORCBNT0RJRklFRCBCWSE8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMRURfSU9fSA0KICNkZWZpbmUgTEVEX0lPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluLmMKaW5kZXggMjVhNjhiNi4uZDI4ZmNhNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW4uYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW5fYmxpbmt5LmMKaW5kZXggMWU4ZDQ1Yi4uYjUyNDcwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluX2Z1bGwuYwppbmRleCBkMDYwNjVmLi5iZDM0OGFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA4YmM4MWNlLi40NjRmZjAwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvUmVnVGVzdC5zODcgYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvUmVnVGVzdC5zODcKaW5kZXggODAzZTdkZC4uOGI0MzZjYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL1JlZ1Rlc3Quczg3CisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9SZWdUZXN0LnM4NwpAQCAtMSw1NSArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiANCiA7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9tYWluLmMKaW5kZXggNjJhMGQxZC4uNmYwMDMwZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9FeGFtcGxlSVNSLnM4NyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvRXhhbXBsZUlTUi5zODcKaW5kZXggMDhiNGZhNC4uMWExMWIzMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9FeGFtcGxlSVNSLnM4NworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL0V4YW1wbGVJU1Iuczg3CkBAIC0xLDc0ICsxLDMwIEBACi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOyAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotOyAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLTsgICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQgY2FuIGJlDQotOyAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi07ICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLTsgICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLTsgICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotOyAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCis7LyoNCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDsqDQogOyAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBhc3NlbWJsZXIgd3JhcHBlciBmb3IgdGhlIGV4YW1wbGUgaW50ZXJydXB0IHRoYXQgaXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYjg1YTQ3ZC4uOGU1ZWQ4NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL1JlZ1Rlc3Quczg3IGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9SZWdUZXN0LnM4NwppbmRleCA4MmI2NjIwLi5hMDRlNzk3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL1JlZ1Rlc3Quczg3CisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvUmVnVGVzdC5zODcKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiANCiA7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9kZW1vX3NwZWNpZmljX2lvLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL2RlbW9fc3BlY2lmaWNfaW8uaAppbmRleCA3Mzc1OGU2Li40MmU0OWE1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL2RlbW9fc3BlY2lmaWNfaW8uaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL2RlbW9fc3BlY2lmaWNfaW8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMRURfSU9fSA0KICNkZWZpbmUgTEVEX0lPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbi5jCmluZGV4IDM2MmEyMDguLjY4YzNlNjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9ibGlua3kuYwppbmRleCAwMjM1YWFmLi43YmMzNDk1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fZnVsbC5jCmluZGV4IDc2MjJjMTQuLjIzZmFlZTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGZlNjBkY2EuLmNlNGY0OTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IGFlOWY1ZmQuLmY0NzhiMjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jCmluZGV4IGU0NDgxMjIuLjI3Yjc1MDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIGxvdyBwb3dlciBwcm9qZWN0IHRoYXQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggMGNmODkzNy4uNDhiM2RlZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fbG93X3Bvd2VyLmMKaW5kZXggNjNkYWRiOS4uOGZjMzg1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBXaGVuIGNvbmZpZ0NSRUFURV9MT1dfUE9XRVJfREVNTyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oIG1haW4oKSB3aWxsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBkMDVlMzI2Li40YmY2NmU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUGFyVGVzdC5jCmluZGV4IGFlOWY1ZmQuLmY0NzhiMjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCmluZGV4IDYxYWJmYWUuLmRmODY0ZWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQUklPUklUWV9ERUZJTklUSU9OU19IDQogI2RlZmluZSBQUklPUklUWV9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluLmMKaW5kZXggNTk3NDNhYy4uYTcyMDcxMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgbG93IHBvd2VyIHByb2plY3QgdGhhdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluX2Z1bGwuYwppbmRleCBiMDVlZjU1Li40MTAwYmY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fbG93X3Bvd2VyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9sb3dfcG93ZXIuYwppbmRleCBkNjBlOGJiLi5lZTAxYmMzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9sb3dfcG93ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFdoZW4gY29uZmlnQ1JFQVRFX0xPV19QT1dFUl9ERU1PIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmggbWFpbigpIHdpbGwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvcmVnX3Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9yZWdfdGVzdC5zCmluZGV4IGE0YmE3YmUuLjk0MTUxM2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9yZWdfdGVzdC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9yZWdfdGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJUFVCTElDIF92UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAlQVUJMSUMgX3ZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDY4OWUxNDAuLjU5YzYzNWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBhZTlmNWZkLi5mNDc4YjIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMKaW5kZXggYWQ0ZDQ0OS4uNTIyOWJiMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgcHJvamVjdCB0aGF0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggNzU2MzcwZi4uYTE0NmViMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jCmluZGV4IDM1MmE3YmYuLjQ1MTkzOWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBXaGVuIGNvbmZpZ0NSRUFURV9MT1dfUE9XRVJfREVNTyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oIG1haW4oKSB3aWxsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTU4ZTkzZS4uYjVkYzZjMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDcwZjAxZGQuLjQ2YjlmODAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGJiYTIyNTIuLjUzNTc5ZGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKaW5kZXggNTE0MTI2MC4uOGU0ZDIwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKQEAgLTEsNjcgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi07ICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotOyAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4hIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KLTsgICAgPj4hIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotOyAgICA+PiEgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICA+PiEga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLjsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5nbG9iYWwgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgX3ZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpAQCAtMjMxLDUgKzE5NCw1IEBACiAJOyBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7IC0gY2F1c2luZyB0aGUgY2hlY2sgdGFzayB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuDQogCUJSQSBSZWdUZXN0MkVycm9yDQotCQ0KKw0KIAkuRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwppbmRleCA0MmJhZGVlLi4yMjhhMjhiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBiMjlmYzhjLi5mMWM5NTkzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCAyNjJhYTQzLi42NDkwZTZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCiAjZGVmaW5lIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKaW5kZXggMGRlNjliNS4uNmRjMjAyZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1NThlOTNlLi5iNWRjNmMzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGI2N2I1OC4uOGI5Y2Q4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggNjZlM2Q1MC4uZDUyMGE1MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IGIwMDZlYjguLjAwYWE0MzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCmluZGV4IDQ1NzMwMTMuLmM2MTZlNzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9CdXR0b25BbmRMQ0QuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vQnV0dG9uQW5kTENELmMKaW5kZXggMjVmMWJiMC4uNGEzNjA1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9CdXR0b25BbmRMQ0QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0J1dHRvbkFuZExDRC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDNhYzFkM2QuLmM5YjI0ZGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCBmMWQyYTQ2Li40Mjk3MGJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGI5ZWQwM2UuLjY5ODAxMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IGVjYmJhY2QuLjlhNmZmYzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0J1dHRvbkFuZExDRC5oIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0J1dHRvbkFuZExDRC5oCmluZGV4IGU3YTU2YWIuLjM1YmVhMWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9CdXR0b25BbmRMQ0QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvQnV0dG9uQW5kTENELmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQlVUVE9OX0FORF9MQ0RfSA0KICNkZWZpbmUgQlVUVE9OX0FORF9MQ0RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKaW5kZXggMzQyZjViMC4uODhjNWM2MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcyBhbmQgb25lIHF1ZXVlLiAgT25lIHRhc2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwppbmRleCA4MDNlNzczLi5hY2FlZmIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1NGFjOWNmLi45ZTcyNjUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNTFhZTU1YS4uN2NkNDI3NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGRkMmU4OWYuLjRkNjc1ZGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKaW5kZXggNTE0MTI2MC4uOGU0ZDIwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKQEAgLTEsNjcgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi07ICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotOyAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4hIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KLTsgICAgPj4hIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotOyAgICA+PiEgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICA+PiEga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLjsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5nbG9iYWwgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgX3ZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpAQCAtMjMxLDUgKzE5NCw1IEBACiAJOyBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7IC0gY2F1c2luZyB0aGUgY2hlY2sgdGFzayB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuDQogCUJSQSBSZWdUZXN0MkVycm9yDQotCQ0KKw0KIAkuRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwppbmRleCBjNjQ1YzNiLi44NmQ2ODA4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCA2YTk4YzBmLi5jNjk0OTU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCAyNjJhYTQzLi42NDkwZTZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCiAjZGVmaW5lIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKaW5kZXggMzIzYzFmNy4uMDkyNTE3NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA1NGFjOWNmLi45ZTcyNjUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOWRlYzAwMC4uNTc0ZGIyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDJhM2RjNWMuLjEwMjhlZTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCAwODQ1YjZlLi4xMDNlODQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYwppbmRleCA3OWQ1NzgxLi44YWFkZTMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGFkMzg1MWMuLjEwZTA4NGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggN2FiMzYzNi4uNWQ4OWUyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMTI5MzJjZC4uODFiNzA1OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IDgzZTRlM2MuLmZmM2QyYjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IGYxMmFjMGUuLjA4NTk5YWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcyBhbmQgb25lIHF1ZXVlLiAgT25lIHRhc2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCmluZGV4IDZjNmQ4OTUuLjA3ZDNjZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3VJUF9UYXNrLmMKaW5kZXggMTgzNTVlMy4uODkzN2Y1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggNzE4N2M0Ny4uYTg0YWNkMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiaW9kZWZpbmUuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDkxNjQyN2QuLmNmZDBkMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IDExODdmOGMuLmJmN2MxYmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggODMyZTQ3Ny4uZmRkNzUzNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1BhclRlc3QuYwppbmRleCBjZjJlZmY5Li4xM2Q5NzRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCBhMmRhYzU0Li5lOWNjNWQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KICNkZWZpbmUgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9SZWdUZXN0LnMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUmVnVGVzdC5zCmluZGV4IDNkNzgyZTIuLjZmMTQ3OGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9SZWdUZXN0LnMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1JlZ1Rlc3QucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfcHJ2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAlQVUJMSUMgX3BydlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWJsaW5reS5jCmluZGV4IGE3M2Y3NDkuLmViMzJhNzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL21haW4tZnVsbC5jCmluZGV4IDZmZTkxNWUuLmUwY2MzYWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi91SVBfVGFzay5jCmluZGV4IGFiMDM2ZWYuLjc4ODFhNjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvd2Vic2VydmVyL0VNQUMuYwppbmRleCBlZDk1ZjMzLi43NzNkZGY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPGlvcng2Mm4uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNmVlMmQ5YS4uNjFmMTRmZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IGYxZDJhNDYuLjQyOTcwYmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggYjllZDAzZS4uNjk4MDEyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggOWM5ZjQ5Mi4uYjU3NzBkOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IGZjMWVhNzUuLmUxZDI0NjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggYTNjNGJmNi4uNGRjNGFhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCmluZGV4IDE4MzU1ZTMuLjg5MzdmNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggMmNkZGQ3My4uMWNkMzRlOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImlvZGVmaW5lLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNTQzMGQyOC4uNWNiNjM2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCA3YWIzNjM2Li41ZDg5ZTJiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAxMjkzMmNkLi44MWI3MDU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggYmRiZTRkOS4uMThkNjU5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKaW5kZXggZjEyYWMwZS4uMDg1OTlhYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZGVtbyB0aGF0IGNyZWF0ZXMgdHdvIHRhc2tzIGFuZCBvbmUgcXVldWUuICBPbmUgdGFzaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggNmM2ZDg5NS4uMDdkM2NlYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYwppbmRleCAxODM1NWUzLi44OTM3ZjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwppbmRleCA3MTg3YzQ3Li5hODRhY2QyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhhcmR3YXJlIHNwZWNpZmljIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJpb2RlZmluZS5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYzBhNGVmMS4uZGVhYzVmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggMTE4N2Y4Yy4uYmY3YzFiZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ludFF1ZXVlVGltZXIuYwppbmRleCA4MzJlNDc3Li5mZGQ3NTM0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUGFyVGVzdC5jCmluZGV4IDU3YzQwNjYuLjU3MTk5MDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCmluZGV4IGEyZGFjNTQuLmU5Y2M1ZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQUklPUklUWV9ERUZJTklUSU9OU19IDQogI2RlZmluZSBQUklPUklUWV9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9SZWdUZXN0LnMKaW5kZXggM2Q3ODJlMi4uNmYxNDc4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1JlZ1Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUmVnVGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJUFVCTElDIF9wcnZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCVBVQkxJQyBfcHJ2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tYmxpbmt5LmMKaW5kZXggNjMzYjQxOS4uYjFiZjcxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcyBhbmQgb25lIHF1ZXVlLiAgT25lIHRhc2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvbWFpbi1mdWxsLmMKaW5kZXggODI2YWVhZS4uNzAwYTE5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL3VJUF9UYXNrLmMKaW5kZXggYWIwMzZlZi4uNzg4MWE2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IGVkOTVmMzMuLjc3M2RkZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8aW9yeDYybi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA5ODVhNWY1Li5mZjA4MDUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggZjFkMmE0Ni4uNDI5NzBiYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBiOWVkMDNlLi42OTgwMTI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBiZGJlNGQ5Li4xOGQ2NTkzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKaW5kZXggZmMxZWE3NS4uZTFkMjQ2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcyBhbmQgb25lIHF1ZXVlLiAgT25lIHRhc2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwppbmRleCBkYzE0MmUzLi5lMWNhZmIyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKaW5kZXggMTgzNTVlMy4uODkzN2Y1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwppbmRleCA1ZGQ1YWIyLi4zODY1NWVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiaW9kZWZpbmUuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYjkyNGFjNC4uNDVhOGYwNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IGYxZDJhNDYuLjQyOTcwYmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggYjllZDAzZS4uNjk4MDEyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggZWNiYmFjZC4uOWE2ZmZjOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IDFmNzZiZDcuLmYxNWE4OGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggMjg2MjgwNC4uOTg5MDA1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDkzZjMyN2EuLmJlZWQzYWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCAzZTNiMzhlLi5lNDdmZjJlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGIxZmIwZDQuLmFlMWQzMTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggMWI0Yjk0MS4uYjcwNmQ3NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKaW5kZXggNDlmNWU5Ny4uMWU5YWQwMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcywgb25lIHF1ZXVlLCBhbmQgb25lIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCmluZGV4IDI0MWNmMDkuLmE2OTNlZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwppbmRleCAxODM1NWUzLi44OTM3ZjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IDNmMzBkYWQuLjE4ZGUyM2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA3YTM4MjNlLi4wYWQzMGIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkgDQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQgDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IGFhMmIwOTEuLjQyOTcwYmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkgDQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQgDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDIwMDcwZDAuLjY5ODAxMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkgDQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQgDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCBmMTRjODMzLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBmZjFiMzc4Li45YTZmZmM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKaW5kZXggMjAwOGIyYy4uZTYyNDE4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MsIG9uZSBxdWV1ZSwgYW5kIG9uZSANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwppbmRleCA1NWI3NzVjLi40ZmU0MTgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eSANCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZCANCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCmluZGV4IDhhYmExYTAuLjg5MzdmNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IDdiNWYwOTcuLjI2MjJjN2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eSANCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZCANCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAicGxhdGZvcm0uaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZTIyZjZkZS4uM2FiMjFjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCmluZGV4IDk0NzY1NDAuLmM4ZWI3M2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2NE0gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9QYXJUZXN0LmMKaW5kZXggNDcyMDA3Yi4uZjA2NGI4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL1JlZ1Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUmVnVGVzdC5TCmluZGV4IGI5MGMzMzguLjRlYjRkNjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUmVnVGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUmVnVGVzdC5TCkBAIC0xLDY3ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotOyAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLTsgICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+ISBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUNCi07ICAgID4+ISBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZQ0KLTsgICAgPj4hIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAgPj4hIGtlcm5lbC4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy47DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuZ2xvYmFsIF92UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KQEAgLTk3LDcgKzYwLDcgQEAKIAlNT1YuTAkjMTMsIFIxMw0KIAlNT1YuTAkjMTQsIFIxNA0KIAlNT1YuTAkjMTUsIFIxNQ0KLQkNCisNCiAJOy8qIFB1dCBhIGtub3duIHZhbHVlIGluIHRoZSBoaSBhbmQgbG93IG9mIHRoZSBhY2N1bXVsYXRvcnMuICovDQogCU1WVEFDSEkgUjEsIEEwDQogCU1WVEFDTE8gUjIsIEEwDQpAQCAtMTA2LDI0ICs2OSwyNCBAQAogDQogCTsvKiBMb29wLCBjaGVja2luZyBlYWNoIGl0ZXJhdGlvbiB0aGF0IGVhY2ggcmVnaXN0ZXIgc3RpbGwgY29udGFpbnMgdGhlDQogCTtleHBlY3RlZCB2YWx1ZS4gKi8NCi1UZXN0TG9vcDE6CQkJCQkJCQkNCitUZXN0TG9vcDE6DQogDQogCTsvKiBQdXNoIHRoZSByZWdpc3RlcnMgdGhhdCBhcmUgZ29pbmcgdG8gZ2V0IGNsb2JiZXJlZC4gKi8NCi0JUFVTSE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUFVTSE0JUjE0LVIxNQ0KKw0KIAk7LyogSW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIgdG8gc2hvdyB0aGlzIHRhc2sgaXMgc3RpbGwgZ2V0dGluZyBDUFUgdGltZS4gKi8NCiAJTU9WLkwJI191bFJlZ1Rlc3QxTG9vcENvdW50ZXIsIFIxNA0KIAlNT1YuTAlbIFIxNCBdLCBSMTUNCi0JQURECSMxLCBSMTUJCQkJCQkNCisJQURECSMxLCBSMTUNCiAJTU9WLkwJUjE1LCBbIFIxNCBdDQotCQ0KKw0KIAk7LyogWWllbGQgdG8gZXh0ZW5kIHRoZSB0ZXh0IGNvdmVyYWdlLiAgU2V0IHRoZSBiaXQgaW4gdGhlIElUVSBTV0lOVFIgcmVnaXN0ZXIuICovDQogCU1PVi5MCSMxLCBSMTQNCiAJTU9WLkwgCSMwODcyRTBILCBSMTUNCiAJTU9WLkIJUjE0LCBbUjE1XQ0KLQlOT1AJCQkJCQkJCQ0KLQlOT1AJCQkJCQkJCQ0KLQkNCisJTk9QDQorCU5PUA0KKw0KIAk7LyogQ2hlY2sgYWNjdW11bGF0b3JzLiAqLw0KIAlNVkZBQ0hJCSMwLCBBMCwgUjE1DQogCUNNUCAjMSwgUjE1DQpAQCAtMTQ1LDQ4ICsxMDgsNDggQEAKIAlCTkUgUmVnVGVzdDFFcnJvcg0KIA0KIAk7LyogUmVzdG9yZSB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycy4gKi8NCi0JUE9QTQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQT1BNCVIxNC1SMTUNCisNCiAJOy8qIE5vdyBjb21wYXJlIGVhY2ggcmVnaXN0ZXIgdG8gZW5zdXJlIGl0IHN0aWxsIGNvbnRhaW5zIHRoZSB2YWx1ZSB0aGF0IHdhcw0KIAk7c2V0IGJlZm9yZSB0aGlzIGxvb3Agd2FzIGVudGVyZWQuICovDQotCUNNUAkjMSwgUjEJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMiwgUjIJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMywgUjMJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjNCwgUjQJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjNSwgUjUJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjNiwgUjYJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjNywgUjcJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjOCwgUjgJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjOSwgUjkJCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTAsIFIxMAkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzExLCBSMTEJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMiwgUjEyCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTMsIFIxMwkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzE0LCBSMTQJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxNSwgUjE1CQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQorCUNNUAkjMSwgUjENCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMyLCBSMg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzMsIFIzDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNCwgUjQNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM1LCBSNQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzYsIFI2DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNywgUjcNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM4LCBSOA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzksIFI5DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTAsIFIxMA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzExLCBSMTENCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMiwgUjEyDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTMsIFIxMw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzE0LCBSMTQNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxNSwgUjE1DQorCUJORQlSZWdUZXN0MUVycm9yDQogDQogCTsvKiBBbGwgY29tcGFyaXNvbnMgcGFzc2VkLCBzdGFydCBhIG5ldyBpdHRlcmF0aW8gb2YgdGhpcyBsb29wLiAqLw0KLQlCUkEJCVRlc3RMb29wMQkJCQkNCi0JDQotUmVnVGVzdDFFcnJvcjoJCQkJCQkJDQorCUJSQQkJVGVzdExvb3AxDQorDQorUmVnVGVzdDFFcnJvcjoNCiAJOy8qIEEgY29tcGFyZSBmYWlsZWQsIGp1c3QgbG9vcCBoZXJlIHNvIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nDQogCTstIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiAqLw0KLQlCUkEgUmVnVGVzdDFFcnJvcgkJCQkJDQorCUJSQSBSZWdUZXN0MUVycm9yDQogOy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KIDsvKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGxhaW5lZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiBtYWluLmMuICovDQpAQCAtMjIzLDE3ICsxODYsMTcgQEAKIA0KIAk7LyogTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KIAk7ZXhwZWN0ZWQgdmFsdWUuICovDQotVGVzdExvb3AyOgkJCQkJCQkJDQorVGVzdExvb3AyOg0KIA0KIAk7LyogUHVzaCB0aGUgcmVnaXN0ZXJzIHRoYXQgYXJlIGdvaW5nIHRvIGdldCBjbG9iYmVyZWQuICovDQotCVBVU0hNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBVU0hNCVIxNC1SMTUNCisNCiAJOy8qIEluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyIHRvIHNob3cgdGhpcyB0YXNrIGlzIHN0aWxsIGdldHRpbmcgQ1BVIHRpbWUuICovDQogCU1PVi5MCSNfdWxSZWdUZXN0Mkxvb3BDb3VudGVyLCBSMTQNCiAJTU9WLkwJWyBSMTQgXSwgUjE1DQotCUFERAkjMSwgUjE1CQkJCQkJDQorCUFERAkjMSwgUjE1DQogCU1PVi5MCVIxNSwgWyBSMTQgXQ0KLQkNCisNCiAJOy8qIENoZWNrIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZGQUNISQkjMCwgQTAsIFIxNQ0KIAlDTVAgIzEwSCwgUjE1DQpAQCAtMjU1LDQ4ICsyMTgsNDggQEAKIAlCTkUgUmVnVGVzdDFFcnJvcg0KIA0KIAk7LyogUmVzdG9yZSB0aGUgY2xvYmJlcmVkIHJlZ2lzdGVycy4gKi8NCi0JUE9QTQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQT1BNCVIxNC1SMTUNCisNCiAJOy8qIE5vdyBjb21wYXJlIGVhY2ggcmVnaXN0ZXIgdG8gZW5zdXJlIGl0IHN0aWxsIGNvbnRhaW5zIHRoZSB2YWx1ZSB0aGF0IHdhcw0KIAk7c2V0IGJlZm9yZSB0aGlzIGxvb3Agd2FzIGVudGVyZWQuICovDQotCUNNUAkjMTBILCBSMQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzIwSCwgUjIJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMzMEgsIFIzCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNDBILCBSNAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzUwSCwgUjUJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM2MEgsIFI2CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNzBILCBSNwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzgwSCwgUjgJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM5MEgsIFI5CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTAwSCwgUjEwCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTEwSCwgUjExCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTIwSCwgUjEyCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTMwSCwgUjEzCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTQwSCwgUjE0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMTUwSCwgUjE1CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQorCUNNUAkjMTBILCBSMQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzIwSCwgUjINCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMzMEgsIFIzDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNDBILCBSNA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzUwSCwgUjUNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM2MEgsIFI2DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNzBILCBSNw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzgwSCwgUjgNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM5MEgsIFI5DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTAwSCwgUjEwDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTEwSCwgUjExDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTIwSCwgUjEyDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTMwSCwgUjEzDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTQwSCwgUjE0DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMTUwSCwgUjE1DQorCUJORQlSZWdUZXN0MkVycm9yDQogDQogCTsvKiBBbGwgY29tcGFyaXNvbnMgcGFzc2VkLCBzdGFydCBhIG5ldyBpdHRlcmF0aW8gb2YgdGhpcyBsb29wLiAqLw0KLQlCUkEJVGVzdExvb3AyCQkJCQkNCi0JDQotUmVnVGVzdDJFcnJvcjoJCQkJCQkJDQorCUJSQQlUZXN0TG9vcDINCisNCitSZWdUZXN0MkVycm9yOg0KIAk7LyogQSBjb21wYXJlIGZhaWxlZCwganVzdCBsb29wIGhlcmUgc28gdGhlIGxvb3AgY291bnRlciBzdG9wcyBpbmNyZW1lbnRpbmcNCiAJOy0gY2F1c2luZyB0aGUgY2hlY2sgdGFzayB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuICovDQotCUJSQSBSZWdUZXN0MkVycm9yCQkJCQkNCisJQlJBIFJlZ1Rlc3QyRXJyb3INCiANCi0JDQorDQogCS5FTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbi5jCmluZGV4IDRiZDEyMGQuLjI1MTM2NTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9ibGlua3kuYwppbmRleCBmNjk1NDNhLi4yNDIxMTkzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IGEwZWZlOTAuLjkxYzhmMjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAppbmRleCBlMjJmNmRlLi4zYWIyMWM0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvSW50UXVldWVUaW1lci5jCmluZGV4IGU2MGI1ZTcuLmRiYmEwZGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDY0TSBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL1BhclRlc3QuYwppbmRleCBjYmIyODU4Li4zYTJkNDIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUmVnVGVzdC5zcmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9SZWdUZXN0LnNyYwppbmRleCA0MDY5NzI1Li41MzEzNTIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9SZWdUZXN0LnNyYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9SZWdUZXN0LnNyYwpAQCAtMSw2NyArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLTsgICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi07ICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+PiEgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlDQotOyAgICA+PiEgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUNCi07ICAgID4+ISB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgID4+ISBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLkdMQiBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJLkdMQiBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCkBAIC05Nyw3ICs2MCw3IEBACiAJTU9WLkwJIzEzLCBSMTMNCiAJTU9WLkwJIzE0LCBSMTQNCiAJTU9WLkwJIzE1LCBSMTUNCi0JDQorDQogCTsvKiBQdXQgYSBrbm93biB2YWx1ZSBpbiB0aGUgaGkgYW5kIGxvdyBvZiB0aGUgYWNjdW11bGF0b3JzLiAqLw0KIAlNVlRBQ0hJIFIxLCBBMA0KIAlNVlRBQ0xPIFIyLCBBMA0KQEAgLTEwNiwyNCArNjksMjQgQEAKIA0KIAk7LyogTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KIAk7ZXhwZWN0ZWQgdmFsdWUuICovDQotVGVzdExvb3AxOgkJCQkJCQkJDQorVGVzdExvb3AxOg0KIA0KIAk7LyogUHVzaCB0aGUgcmVnaXN0ZXJzIHRoYXQgYXJlIGdvaW5nIHRvIGdldCBjbG9iYmVyZWQuICovDQotCVBVU0hNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBVU0hNCVIxNC1SMTUNCisNCiAJOy8qIEluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyIHRvIHNob3cgdGhpcyB0YXNrIGlzIHN0aWxsIGdldHRpbmcgQ1BVIHRpbWUuICovDQogCU1PVi5MCSNfdWxSZWdUZXN0MUxvb3BDb3VudGVyLCBSMTQNCiAJTU9WLkwJWyBSMTQgXSwgUjE1DQotCUFERAkjMSwgUjE1CQkJCQkJDQorCUFERAkjMSwgUjE1DQogCU1PVi5MCVIxNSwgWyBSMTQgXQ0KLQkNCisNCiAJOy8qIFlpZWxkIHRvIGV4dGVuZCB0aGUgdGV4dCBjb3ZlcmFnZS4gIFNldCB0aGUgYml0IGluIHRoZSBJVFUgU1dJTlRSIHJlZ2lzdGVyLiAqLw0KIAlNT1YuTAkjMSwgUjE0DQogCU1PVi5MIAkjMDg3MkUwSCwgUjE1DQogCU1PVi5CCVIxNCwgW1IxNV0NCi0JTk9QCQkJCQkJCQkNCi0JTk9QCQkJCQkJCQkNCi0JDQorCU5PUA0KKwlOT1ANCisNCiAJOy8qIENoZWNrIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZGQUNISQkjMCwgQTAsIFIxNQ0KIAlDTVAgIzEsIFIxNQ0KQEAgLTE0NSw0OCArMTA4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEsIFIxCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzIsIFIyCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzMsIFIzCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzQsIFI0CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzUsIFI1CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzYsIFI2CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzcsIFI3CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzgsIFI4CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzksIFI5CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEwLCBSMTAJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMSwgUjExCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTIsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEzLCBSMTMJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxNCwgUjE0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTUsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KKwlDTVAJIzEsIFIxDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMiwgUjINCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMzLCBSMw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzQsIFI0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNSwgUjUNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM2LCBSNg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzcsIFI3DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjOCwgUjgNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM5LCBSOQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEwLCBSMTANCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMSwgUjExDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTIsIFIxMg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEzLCBSMTMNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxNCwgUjE0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTUsIFIxNQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCQlUZXN0TG9vcDEJCQkJDQotCQ0KLVJlZ1Rlc3QxRXJyb3I6CQkJCQkJCQ0KKwlCUkEJCVRlc3RMb29wMQ0KKw0KK1JlZ1Rlc3QxRXJyb3I6DQogCTsvKiBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7LSBjYXVzaW5nIHRoZSBjaGVjayB0YXNrIHRvIGluZGljYXRlIHRoZSBlcnJvci4gKi8NCi0JQlJBIFJlZ1Rlc3QxRXJyb3IJCQkJCQ0KKwlCUkEgUmVnVGVzdDFFcnJvcg0KIDsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiA7LyogVGhpcyBmdW5jdGlvbiBpcyBleHBsYWluZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgbWFpbi5jLiAqLw0KQEAgLTIyMywxNyArMTg2LDE3IEBACiANCiAJOy8qIExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCiAJO2V4cGVjdGVkIHZhbHVlLiAqLw0KLVRlc3RMb29wMjoJCQkJCQkJCQ0KK1Rlc3RMb29wMjoNCiANCiAJOy8qIFB1c2ggdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBnb2luZyB0byBnZXQgY2xvYmJlcmVkLiAqLw0KLQlQVVNITQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQVVNITQlSMTQtUjE1DQorDQogCTsvKiBJbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciB0byBzaG93IHRoaXMgdGFzayBpcyBzdGlsbCBnZXR0aW5nIENQVSB0aW1lLiAqLw0KIAlNT1YuTAkjX3VsUmVnVGVzdDJMb29wQ291bnRlciwgUjE0DQogCU1PVi5MCVsgUjE0IF0sIFIxNQ0KLQlBREQJIzEsIFIxNQkJCQkJCQ0KKwlBREQJIzEsIFIxNQ0KIAlNT1YuTAlSMTUsIFsgUjE0IF0NCi0JDQorDQogCTsvKiBDaGVjayBhY2N1bXVsYXRvcnMuICovDQogCU1WRkFDSEkJIzAsIEEwLCBSMTUNCiAJQ01QICMxMEgsIFIxNQ0KQEAgLTI1NSw0OCArMjE4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEwSCwgUjEJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMyMEgsIFIyCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMzBILCBSMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzQwSCwgUjQJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM1MEgsIFI1CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNjBILCBSNgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzcwSCwgUjcJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM4MEgsIFI4CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjOTBILCBSOQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEwMEgsIFIxMAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzExMEgsIFIxMQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEyMEgsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEzMEgsIFIxMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE0MEgsIFIxNAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE1MEgsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KKwlDTVAJIzEwSCwgUjENCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMyMEgsIFIyDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMzBILCBSMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzQwSCwgUjQNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM1MEgsIFI1DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNjBILCBSNg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzcwSCwgUjcNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM4MEgsIFI4DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjOTBILCBSOQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEwMEgsIFIxMA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzExMEgsIFIxMQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEyMEgsIFIxMg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEzMEgsIFIxMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE0MEgsIFIxNA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE1MEgsIFIxNQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCVRlc3RMb29wMgkJCQkJDQotCQ0KLVJlZ1Rlc3QyRXJyb3I6CQkJCQkJCQ0KKwlCUkEJVGVzdExvb3AyDQorDQorUmVnVGVzdDJFcnJvcjoNCiAJOy8qIEEgY29tcGFyZSBmYWlsZWQsIGp1c3QgbG9vcCBoZXJlIHNvIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nDQogCTstIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiAqLw0KLQlCUkEgUmVnVGVzdDJFcnJvcgkJCQkJDQorCUJSQSBSZWdUZXN0MkVycm9yDQogDQotCQ0KKw0KIAkuRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbi5jCmluZGV4IDM4MGJlMzguLjVlMTVhNmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fYmxpbmt5LmMKaW5kZXggZjY5NTQzYS4uMjQyMTE5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9mdWxsLmMKaW5kZXggOTM3NDE4NC4uNzkwNjViZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggZjE5ODFjNC4uNjQ5MDI4MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGM5YjU1NGIuLjE0MTAzOTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCA0ZTVkOGU5Li41OGI0MmI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWCBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuUwppbmRleCBiOTBjMzM4Li40ZWI0ZDY3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuUworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuUwpAQCAtMSw2NyArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLTsgICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi07ICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+PiEgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlDQotOyAgICA+PiEgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUNCi07ICAgID4+ISB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgID4+ISBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLmdsb2JhbCBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJLmdsb2JhbCBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCkBAIC05Nyw3ICs2MCw3IEBACiAJTU9WLkwJIzEzLCBSMTMNCiAJTU9WLkwJIzE0LCBSMTQNCiAJTU9WLkwJIzE1LCBSMTUNCi0JDQorDQogCTsvKiBQdXQgYSBrbm93biB2YWx1ZSBpbiB0aGUgaGkgYW5kIGxvdyBvZiB0aGUgYWNjdW11bGF0b3JzLiAqLw0KIAlNVlRBQ0hJIFIxLCBBMA0KIAlNVlRBQ0xPIFIyLCBBMA0KQEAgLTEwNiwyNCArNjksMjQgQEAKIA0KIAk7LyogTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KIAk7ZXhwZWN0ZWQgdmFsdWUuICovDQotVGVzdExvb3AxOgkJCQkJCQkJDQorVGVzdExvb3AxOg0KIA0KIAk7LyogUHVzaCB0aGUgcmVnaXN0ZXJzIHRoYXQgYXJlIGdvaW5nIHRvIGdldCBjbG9iYmVyZWQuICovDQotCVBVU0hNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBVU0hNCVIxNC1SMTUNCisNCiAJOy8qIEluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyIHRvIHNob3cgdGhpcyB0YXNrIGlzIHN0aWxsIGdldHRpbmcgQ1BVIHRpbWUuICovDQogCU1PVi5MCSNfdWxSZWdUZXN0MUxvb3BDb3VudGVyLCBSMTQNCiAJTU9WLkwJWyBSMTQgXSwgUjE1DQotCUFERAkjMSwgUjE1CQkJCQkJDQorCUFERAkjMSwgUjE1DQogCU1PVi5MCVIxNSwgWyBSMTQgXQ0KLQkNCisNCiAJOy8qIFlpZWxkIHRvIGV4dGVuZCB0aGUgdGV4dCBjb3ZlcmFnZS4gIFNldCB0aGUgYml0IGluIHRoZSBJVFUgU1dJTlRSIHJlZ2lzdGVyLiAqLw0KIAlNT1YuTAkjMSwgUjE0DQogCU1PVi5MIAkjMDg3MkUwSCwgUjE1DQogCU1PVi5CCVIxNCwgW1IxNV0NCi0JTk9QCQkJCQkJCQkNCi0JTk9QCQkJCQkJCQkNCi0JDQorCU5PUA0KKwlOT1ANCisNCiAJOy8qIENoZWNrIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZGQUNISQkjMCwgQTAsIFIxNQ0KIAlDTVAgIzEsIFIxNQ0KQEAgLTE0NSw0OCArMTA4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEsIFIxCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzIsIFIyCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzMsIFIzCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzQsIFI0CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzUsIFI1CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzYsIFI2CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzcsIFI3CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzgsIFI4CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzksIFI5CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEwLCBSMTAJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMSwgUjExCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTIsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEzLCBSMTMJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxNCwgUjE0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTUsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KKwlDTVAJIzEsIFIxDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMiwgUjINCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMzLCBSMw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzQsIFI0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNSwgUjUNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM2LCBSNg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzcsIFI3DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjOCwgUjgNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM5LCBSOQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEwLCBSMTANCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMSwgUjExDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTIsIFIxMg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEzLCBSMTMNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxNCwgUjE0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTUsIFIxNQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCQlUZXN0TG9vcDEJCQkJDQotCQ0KLVJlZ1Rlc3QxRXJyb3I6CQkJCQkJCQ0KKwlCUkEJCVRlc3RMb29wMQ0KKw0KK1JlZ1Rlc3QxRXJyb3I6DQogCTsvKiBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7LSBjYXVzaW5nIHRoZSBjaGVjayB0YXNrIHRvIGluZGljYXRlIHRoZSBlcnJvci4gKi8NCi0JQlJBIFJlZ1Rlc3QxRXJyb3IJCQkJCQ0KKwlCUkEgUmVnVGVzdDFFcnJvcg0KIDsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiA7LyogVGhpcyBmdW5jdGlvbiBpcyBleHBsYWluZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgbWFpbi5jLiAqLw0KQEAgLTIyMywxNyArMTg2LDE3IEBACiANCiAJOy8qIExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCiAJO2V4cGVjdGVkIHZhbHVlLiAqLw0KLVRlc3RMb29wMjoJCQkJCQkJCQ0KK1Rlc3RMb29wMjoNCiANCiAJOy8qIFB1c2ggdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBnb2luZyB0byBnZXQgY2xvYmJlcmVkLiAqLw0KLQlQVVNITQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQVVNITQlSMTQtUjE1DQorDQogCTsvKiBJbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciB0byBzaG93IHRoaXMgdGFzayBpcyBzdGlsbCBnZXR0aW5nIENQVSB0aW1lLiAqLw0KIAlNT1YuTAkjX3VsUmVnVGVzdDJMb29wQ291bnRlciwgUjE0DQogCU1PVi5MCVsgUjE0IF0sIFIxNQ0KLQlBREQJIzEsIFIxNQkJCQkJCQ0KKwlBREQJIzEsIFIxNQ0KIAlNT1YuTAlSMTUsIFsgUjE0IF0NCi0JDQorDQogCTsvKiBDaGVjayBhY2N1bXVsYXRvcnMuICovDQogCU1WRkFDSEkJIzAsIEEwLCBSMTUNCiAJQ01QICMxMEgsIFIxNQ0KQEAgLTI1NSw0OCArMjE4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEwSCwgUjEJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMyMEgsIFIyCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMzBILCBSMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzQwSCwgUjQJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM1MEgsIFI1CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNjBILCBSNgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzcwSCwgUjcJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM4MEgsIFI4CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjOTBILCBSOQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEwMEgsIFIxMAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzExMEgsIFIxMQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEyMEgsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEzMEgsIFIxMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE0MEgsIFIxNAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE1MEgsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KKwlDTVAJIzEwSCwgUjENCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMyMEgsIFIyDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMzBILCBSMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzQwSCwgUjQNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM1MEgsIFI1DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNjBILCBSNg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzcwSCwgUjcNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM4MEgsIFI4DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjOTBILCBSOQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEwMEgsIFIxMA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzExMEgsIFIxMQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEyMEgsIFIxMg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEzMEgsIFIxMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE0MEgsIFIxNA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE1MEgsIFIxNQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCVRlc3RMb29wMgkJCQkJDQotCQ0KLVJlZ1Rlc3QyRXJyb3I6CQkJCQkJCQ0KKwlCUkEJVGVzdExvb3AyDQorDQorUmVnVGVzdDJFcnJvcjoNCiAJOy8qIEEgY29tcGFyZSBmYWlsZWQsIGp1c3QgbG9vcCBoZXJlIHNvIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nDQogCTstIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiAqLw0KLQlCUkEgUmVnVGVzdDJFcnJvcgkJCQkJDQorCUJSQSBSZWdUZXN0MkVycm9yDQogDQotCQ0KKw0KIAkuRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwppbmRleCBjNjQ1YzNiLi44NmQ2ODA4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBhNWNiZWYyLi5iNjlhN2U2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaCBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCAyNjJhYTQzLi42NDkwZTZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCiAjZGVmaW5lIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKaW5kZXggMWY2OWQyNi4uZDk2MDdjNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBmMTk4MWM0Li42NDkwMjgzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2ZmMWY5OS4uNmYxMzMxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGQ2MDg1MWIuLjhiNGZmMTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYIHNwZWNpZmljIHBhcnRzIG9mIHRoZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZTVjMzRjYi4uYzcwYjdjZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggNWNhMzFiMi4uODE1MGU5NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAxMWQxNTQxLi44ODU1NDI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJpb2RlZmluZS5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggNTg2YTY5MC4uMzYyZjU4OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9mbG9wLmMKaW5kZXggMjE3Zjg3MS4uMjVmMmVhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vZmxvcC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGVpZ2h0IHRhc2tzLCBlYWNoIG9mIHdoaWNoIGxvb3BzIGNvbnRpbnVvdXNseSBwZXJmb3JtaW5nIGEgZmxvYXRpbmcgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vbWFpbi5jCmluZGV4IGQ4YWVlMjcuLjExN2UzZmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3JlZ3Rlc3Quc3JjIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vcmVndGVzdC5zcmMKaW5kZXggZWRjMTIwMS4uOTBhMjNkMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vcmVndGVzdC5zcmMKKysrIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vcmVndGVzdC5zcmMKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5pbXBvcnQgX3VsUmVnVGVzdDFDeWNsZUNvdW50DQogCS5pbXBvcnQgX3VsUmVnVGVzdDJDeWNsZUNvdW50DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKaW5kZXggNzYzOTRhZi4uY2E5YjFiOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggMWViMzI4ZC4uYmNhMGZmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiaW9kZWZpbmUuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQ19JU1Iuc3JjIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUNfSVNSLnNyYwppbmRleCAxNjNjMTFiLi43NzU1M2QwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQ19JU1Iuc3JjCisrKyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDX0lTUi5zcmMKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5pbXBvcnQgX3ZFTUFDX0lTUl9IYW5kbGVyDQogCS5pbXBvcnQgX3B4Q3VycmVudFRDQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDY2ZTcyMzguLmJmOTk4NmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5jIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vSW50ZXJydXB0TmVzdFRlc3QuYwppbmRleCAyODBlNTBhLi5jN2Y4NzM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ludGVycnVwdE5lc3RUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogSXQgaXMgaW50ZW5kZWQgdGhhdCB0aGUgdGFza3MgYW5kIHRpbWVycyBpbiB0aGlzIGZpbGUgY2F1c2UgaW50ZXJydXB0cyB0bw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ludGVycnVwdE5lc3RUZXN0LmggYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5oCmluZGV4IGFkMmFlNDUuLjIxYTI3ZGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ludGVycnVwdE5lc3RUZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vSW50ZXJydXB0TmVzdFRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRFUlJVUFRfTkVTVF9URVNUX0gNCiAjZGVmaW5lIElOVEVSUlVQVF9ORVNUX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBhZGFhOWYwLi5mZTNlMGUzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgSW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vbWFpbi5jCmluZGV4IGFkNzgyY2YuLjlhMWU5OWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiA+Pj4+Pj4gTk9URTogPDw8PDw8DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9zZXJpYWwuYwppbmRleCAyYTUxMDU4Li4wODRhNzNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHRjMTc4Mi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDMxODBhZTAuLmNmMGIwMjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2ogYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qCmluZGV4IDFhMGIzZDAuLmJmNWJmMDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2oKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvV0lOMzIudmN4cHJvagpAQCAtMTg4LDYgKzE4OCw3IEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHRpbWVycy5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFN0YXRpY0FsbG9jYXRpb24uYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWluLmMiPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2ouZmlsdGVycyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2ouZmlsdGVycwppbmRleCAzYzNmOWYzLi5mZjRkMWU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvV0lOMzIudmN4cHJvai5maWx0ZXJzCkBAIC00MCw2ICs0MCw5IEBACiAgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFN0YXRpY0FsbG9jYXRpb24uYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jIj4NCisgICAgICA8RmlsdGVyPkZyZWVSVE9TIFNvdXJjZVxTb3VyY2U8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICA8L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGluY2x1ZGVcY3JvdXRpbmUuaCI+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvbWFpbi5jCmluZGV4IDkzZWE5ZGIuLjI5Y2Y4MTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGExYTU4MjcuLjk4NGI1MjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKaW5kZXggMGIyMzE1Yy4uMjJhOTdkYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJzdGRsaWIuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvbHdJUF9BcHBzLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKaW5kZXggY2JiZDM0Yi4uOGYzZmIwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9sd0lQX0FwcHMuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5oIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5oCmluZGV4IDNkM2FmMzMuLjIxYTAyZTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9sd0lQX0FwcHMuaAorKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKQEAgLTEsODQgKzEsMzggQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KKyNpZm5kZWYgTFdJUF9BUFBTX0gNCisjZGVmaW5lIExXSVBfQVBQU19IDQogDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisvKiBGdW5jdGlvbnMgdXNlZCB0byBvYnRhaW4gYW5kIHJlbGVhc2UgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgVHggYnVmZmVyLiAgVGhlDQorR2V0IGZ1bmN0aW9uIHdpbGwgYmxvY2sgaWYgdGhlIFR4IGJ1ZmZlciBpcyBub3QgYXZhaWxhYmxlIC0gdXNlIHdpdGggY2FyZSEgKi8NCitzaWduZWQgY2hhciAqcGNMd2lwQXBwc0Jsb2NraW5nR2V0VHhCdWZmZXIoIHZvaWQgKTsNCit2b2lkIHZMd2lwQXBwc1JlbGVhc2VUeEJ1ZmZlciggdm9pZCApOw0KIA0KKyNlbmRpZiAvKiBMV0lQX0FQUFNfSCAqLw0KIA0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQotDQotI2lmbmRlZiBMV0lQX0FQUFNfSAotI2RlZmluZSBMV0lQX0FQUFNfSAotCi0vKiBGdW5jdGlvbnMgdXNlZCB0byBvYnRhaW4gYW5kIHJlbGVhc2UgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgVHggYnVmZmVyLiAgVGhlCi1HZXQgZnVuY3Rpb24gd2lsbCBibG9jayBpZiB0aGUgVHggYnVmZmVyIGlzIG5vdCBhdmFpbGFibGUgLSB1c2Ugd2l0aCBjYXJlISAqLwotc2lnbmVkIGNoYXIgKnBjTHdpcEFwcHNCbG9ja2luZ0dldFR4QnVmZmVyKCB2b2lkICk7Ci12b2lkIHZMd2lwQXBwc1JlbGVhc2VUeEJ1ZmZlciggdm9pZCApOwotCi0jZW5kaWYgLyogTFdJUF9BUFBTX0ggKi8KLQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbWFpbi5jCmluZGV4IDdlZjdjZjguLmJhMzY5ODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9tYWluLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLy52cy9XSU4zMi92MTQvLnN1byBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy8udnMvV0lOMzIvdjE0Ly5zdW8KaW5kZXggN2Y0ZDkwMS4uZTI4Yzg4OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLy52cy9XSU4zMi92MTQvLnN1bworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvLnZzL1dJTjMyL3YxNC8uc3VvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZjA1YmQzMS4uMjM1NjljYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCkBAIC04OCw4ICs0Nyw4IEBACiAjZGVmaW5lIGNvbmZpZ1VTRV9USUNLX0hPT0sJCQkJCQkxDQogI2RlZmluZSBjb25maWdVU0VfREFFTU9OX1RBU0tfU1RBUlRVUF9IT09LCQkxDQogI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJCQkoIDEwMDAgKSAvKiBJbiB0aGlzIG5vbi1yZWFsIHRpbWUgc2ltdWxhdGVkIGVudmlyb25tZW50IHRoZSB0aWNrIGZyZXF1ZW5jeSBoYXMgdG8gYmUgYXQgbGVhc3QgYSBtdWx0aXBsZSBvZiB0aGUgV2luMzIgdGljayBmcmVxdWVuY3ksIGFuZCB0aGVyZWZvcmUgdmVyeSBzbG93LiAqLw0KLSNkZWZpbmUgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFCQkJCSggKCB1bnNpZ25lZCBzaG9ydCApIDUwICkgLyogSW4gdGhpcyBzaW11bGF0ZWQgY2FzZSwgdGhlIHN0YWNrIG9ubHkgaGFzIHRvIGhvbGQgb25lIHNtYWxsIHN0cnVjdHVyZSBhcyB0aGUgcmVhbCBzdGFjayBpcyBwYXJ0IG9mIHRoZSB3aW4zMiB0aHJlYWQuICovDQotI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkJCSggKCBzaXplX3QgKSAoIDMwICogMTAyNCApICkNCisjZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJCQkoICggdW5zaWduZWQgc2hvcnQgKSA3MCApIC8qIEluIHRoaXMgc2ltdWxhdGVkIGNhc2UsIHRoZSBzdGFjayBvbmx5IGhhcyB0byBob2xkIG9uZSBzbWFsbCBzdHJ1Y3R1cmUgYXMgdGhlIHJlYWwgc3RhY2sgaXMgcGFydCBvZiB0aGUgd2luMzIgdGhyZWFkLiAqLw0KKyNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJCQkoICggc2l6ZV90ICkgKCA0NSAqIDEwMjQgKSApDQogI2RlZmluZSBjb25maWdNQVhfVEFTS19OQU1FX0xFTgkJCQkJKCAxMiApDQogI2RlZmluZSBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkJCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFXzE2X0JJVF9USUNLUwkJCQkJMA0KQEAgLTE1Niw2ICsxMTUsMTIgQEAKIGV4dGVybiB2b2lkIHZBc3NlcnRDYWxsZWQoIHVuc2lnbmVkIGxvbmcgdWxMaW5lLCBjb25zdCBjaGFyICogY29uc3QgcGNGaWxlTmFtZSApOw0KICNkZWZpbmUgY29uZmlnQVNTRVJUKCB4ICkgaWYoICggeCApID09IDAgKSB2QXNzZXJ0Q2FsbGVkKCBfX0xJTkVfXywgX19GSUxFX18gKQ0KIA0KKyNkZWZpbmUgY29uZmlnSU5DTFVERV9NRVNTQUdFX0JVRkZFUl9BTVBfREVNTwkwDQorI2lmICggY29uZmlnSU5DTFVERV9NRVNTQUdFX0JVRkZFUl9BTVBfREVNTyA9PSAxICkNCisJZXh0ZXJuIHZvaWQgdkdlbmVyYXRlQ29yZUJJbnRlcnJ1cHQoIHZvaWQgKiB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgKTsNCisJI2RlZmluZSBzYlNFTkRfQ09NUExFVEVEKCBweFN0cmVhbUJ1ZmZlciApIHZHZW5lcmF0ZUNvcmVCSW50ZXJydXB0KCBweFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmIC8qIGNvbmZpZ0lOQ0xVREVfTUVTU0FHRV9CVUZGRVJfQU1QX0RFTU8gKi8NCisNCiAvKiBJbmNsdWRlIHRoZSBGcmVlUlRPUytUcmFjZSBGcmVlUlRPUyB0cmFjZSBtYWNybyBkZWZpbml0aW9ucy4gKi8NCiAjaW5jbHVkZSAidHJjUmVjb3JkZXIuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9SdW4tdGltZS1zdGF0cy11dGlscy5jCmluZGV4IGMyODE1Y2EuLjI0M2I0NTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9SdW4tdGltZS1zdGF0cy11dGlscy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9SdW4tdGltZS1zdGF0cy11dGlscy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFV0aWxpdHkgZnVuY3Rpb25zIHJlcXVpcmVkIHRvIGdhdGhlciBydW4gdGltZSBzdGF0aXN0aWNzLiAgU2VlOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2oKaW5kZXggZmY5YmIyMC4uODdjMDM0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2oKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2oKQEAgLTQ4LDExICs0OCwxMiBAQAogICAgICAgPEFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj4uXERlYnVnLzwvQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPg0KICAgICAgIDxPYmplY3RGaWxlTmFtZT4uXERlYnVnLzwvT2JqZWN0RmlsZU5hbWU+DQogICAgICAgPFByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPi5cRGVidWcvPC9Qcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPg0KKyAgICAgIDxXYXJuaW5nTGV2ZWw+RW5hYmxlQWxsV2FybmluZ3M8L1dhcm5pbmdMZXZlbD4NCiAgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4NCiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5FZGl0QW5kQ29udGludWU8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQogICAgICAgPERpc2FibGVMYW5ndWFnZUV4dGVuc2lvbnM+ZmFsc2U8L0Rpc2FibGVMYW5ndWFnZUV4dGVuc2lvbnM+DQotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi93ZDQyMTAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vd2Q0MjEwIC93YzQ1NzQgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPg0KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40NTc0OzQ4MjA7NDY2ODs0MjU1OzQ3MTA7JShEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncyk8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPg0KICAgICA8L0NsQ29tcGlsZT4NCiAgICAgPFJlc291cmNlQ29tcGlsZT4NCiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCkBAIC03OSw2ICs4MCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcY3JvdXRpbmUuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF81LmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcdGltZXJzLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcQWJvcnREZWxheS5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jIiAvPg0KQEAgLTkxLDYgKzkzLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcaW50ZWdlci5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXEludFNlbVRlc3QuYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxNZXNzYWdlQnVmZmVyQU1QLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcUG9sbFEuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxRUGVlay5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmMiIC8+DQpAQCAtOTksNiArMTAyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFN0YXRpY0FsbG9jYXRpb24uYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxNZXNzYWdlQnVmZmVyRGVtby5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFN0cmVhbUJ1ZmZlckRlbW8uYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdHJlYW1CdWZmZXJJbnRlcnJ1cHQuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxUYXNrTm90aWZ5LmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcdGltZXJkZW1vLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jIj4NCkBAIC0xMjcsNiArMTMzLDggQEAKICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXGV2ZW50X2dyb3Vwcy5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXG1lc3NhZ2VfYnVmZmVyLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGluY2x1ZGVcc3RyZWFtX2J1ZmZlci5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXHRpbWVycy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNU1ZDLU1pbmdXXHBvcnRtYWNyby5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZyZWVSVE9TQ29uZmlnLmgiIC8+DQpAQCAtMTQwLDYgKzE0OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVx0YXNrLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iVHJhY2VfUmVjb3JkZXJfQ29uZmlndXJhdGlvblx0cmNDb25maWcuaCIgLz4NCiAgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0icGFja2FnZXMuY29uZmlnIiAvPg0KKyAgPC9JdGVtR3JvdXA+DQogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPg0KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4NCiAgIDwvSW1wb3J0R3JvdXA+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2ouZmlsdGVycyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZDczYzIwZS4uYWU0M2VhNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2ouZmlsdGVycworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvV0lOMzIudmN4cHJvai5maWx0ZXJzCkBAIC0xNDUsNiArMTQ1LDIxIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLVRyYWNlXHRyY1NuYXBzaG90UmVjb3JkZXIuYyI+DQogICAgICAgPEZpbHRlcj5EZW1vIEFwcCBTb3VyY2VcRnJlZVJUT1MrVHJhY2UgUmVjb3JkZXI8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYyI+DQorICAgICAgPEZpbHRlcj5GcmVlUlRPUyBTb3VyY2VcU291cmNlPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXE1lc3NhZ2VCdWZmZXJEZW1vLmMiPg0KKyAgICAgIDxGaWx0ZXI+RGVtbyBBcHAgU291cmNlXEZ1bGxfRGVtb1xDb21tb24gRGVtbyBUYXNrczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdHJlYW1CdWZmZXJEZW1vLmMiPg0KKyAgICAgIDxGaWx0ZXI+RGVtbyBBcHAgU291cmNlXEZ1bGxfRGVtb1xDb21tb24gRGVtbyBUYXNrczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdHJlYW1CdWZmZXJJbnRlcnJ1cHQuYyI+DQorICAgICAgPEZpbHRlcj5EZW1vIEFwcCBTb3VyY2VcRnVsbF9EZW1vXENvbW1vbiBEZW1vIFRhc2tzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXE1lc3NhZ2VCdWZmZXJBTVAuYyI+DQorICAgICAgPEZpbHRlcj5EZW1vIEFwcCBTb3VyY2VcRnVsbF9EZW1vXENvbW1vbiBEZW1vIFRhc2tzPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IkZyZWVSVE9TQ29uZmlnLmgiPg0KQEAgLTE4Niw1ICsyMDEsMTQgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXGV2ZW50X2dyb3Vwcy5oIj4NCiAgICAgICA8RmlsdGVyPkZyZWVSVE9TIFNvdXJjZVxJbmNsdWRlPC9GaWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXG1lc3NhZ2VfYnVmZmVyLmgiPg0KKyAgICAgIDxGaWx0ZXI+RnJlZVJUT1MgU291cmNlXEluY2x1ZGU8L0ZpbHRlcj4NCisgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGluY2x1ZGVcc3RyZWFtX2J1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkZyZWVSVE9TIFNvdXJjZVxJbmNsdWRlPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgPC9JdGVtR3JvdXA+DQorICA8SXRlbUdyb3VwPg0KKyAgICA8Tm9uZSBJbmNsdWRlPSJwYWNrYWdlcy5jb25maWciIC8+DQogICA8L0l0ZW1Hcm91cD4NCiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluLmMKaW5kZXggZjQyY2ZiMy4uYjkwNTQ4NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KQEAgLTg2LDggKzQ1LDcgQEAKICAqIHBvcnQgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb246DQogICogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvRnJlZVJUT1MtV2luZG93cy1TaW11bGF0b3ItRW11bGF0b3ItZm9yLVZpc3VhbC1TdHVkaW8tYW5kLUVjbGlwc2UtTWluZ1cuaHRtbA0KICAqDQotICogVGhpcyBkZW1vIHdhcyBjcmVhdGVkIHVzaW5nIFdpbmRvd3MgWFAgb24gYSBkdWFsIGNvcmUgbGFwdG9wLCBhbmQgaGFzIHNpbmNlDQotICogYmVlbiBtYWludGFpbmVkIHVzaW5nIFdpbmRvd3MgNyBvbiBhIHF1YWQgY29yZSBsYXB0b3AuDQorDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqLw0KQEAgLTExMSwxNiArNjksMTYgQEAKIElmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgbm90IDEgdGhlbiB0aGUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZA0KIGRlbW8gYXBwbGljYXRpb24gd2lsbCBiZSBidWlsdC4gIFRoZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24gaXMNCiBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fZnVsbC5jLiAqLw0KLSNkZWZpbmUgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQkxDQorI2RlZmluZSBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZCTANCiANCiAvKiBUaGlzIGRlbW8gdXNlcyBoZWFwXzUuYywgYW5kIHRoZXNlIGNvbnN0YW50cyBkZWZpbmUgdGhlIHNpemVzIG9mIHRoZSByZWdpb25zDQogdGhhdCBtYWtlIHVwIHRoZSB0b3RhbCBoZWFwLiAgaGVhcF81IGlzIG9ubHkgdXNlZCBmb3IgdGVzdCBhbmQgZXhhbXBsZSBwdXJwb3Nlcw0KIGFzIHRoaXMgZGVtbyBjb3VsZCBlYXNpbHkgY3JlYXRlIG9uZSBsYXJnZSBoZWFwIHJlZ2lvbiBpbnN0ZWFkIG9mIG11bHRpcGxlDQogc21hbGxlciBoZWFwIHJlZ2lvbnMgLSBpbiB3aGljaCBjYXNlIGhlYXBfNC5jIHdvdWxkIGJlIHRoZSBtb3JlIGFwcHJvcHJpYXRlDQogY2hvaWNlLiAgU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sIGZvciBhbiBleHBsYW5hdGlvbi4gKi8NCi0jZGVmaW5lIG1haW5SRUdJT05fMV9TSVpFCTcwMDENCi0jZGVmaW5lIG1haW5SRUdJT05fMl9TSVpFCTE4MTA1DQotI2RlZmluZSBtYWluUkVHSU9OXzNfU0laRQkyODA3DQorI2RlZmluZSBtYWluUkVHSU9OXzFfU0laRQk3MjAxDQorI2RlZmluZSBtYWluUkVHSU9OXzJfU0laRQkyOTkwNQ0KKyNkZWZpbmUgbWFpblJFR0lPTl8zX1NJWkUJNjQwNw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KQEAgLTMxNiw3ICsyNzQsNyBAQAogCSggdm9pZCApIHVsTGluZTsNCiAJKCB2b2lkICkgcGNGaWxlTmFtZTsNCiANCi0JcHJpbnRmKCAiQVNTRVJUISBMaW5lICVkLCBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSAlZFxyXG4iLCB1bExpbmUsIHBjRmlsZU5hbWUsIEdldExhc3RFcnJvcigpICk7DQorCXByaW50ZiggIkFTU0VSVCEgTGluZSAlbGQsIGZpbGUgJXMsIEdldExhc3RFcnJvcigpICVsZFxyXG4iLCB1bExpbmUsIHBjRmlsZU5hbWUsIEdldExhc3RFcnJvcigpICk7DQogDQogIAl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCiAJew0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fYmxpbmt5LmMKaW5kZXggYjI3OGZlNC4uYmNmZmM1NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFOiBXaW5kb3dzIHdpbGwgbm90IGJlIHJ1bm5pbmcgdGhlIEZyZWVSVE9TIGRlbW8gdGhyZWFkcyBjb250aW51b3VzbHksIHNvDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fZnVsbC5jCmluZGV4IGQxMjcwZjAuLmM3MGQ2MzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvbWFpbl9mdWxsLmMKQEAgLTEsODAgKzEsNDQgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBOT1RFOiBXaW5kb3dzIHdpbGwgbm90IGJlIHJ1bm5pbmcgdGhlIEZyZWVSVE9TIGRlbW8gdGhyZWFkcyBjb250aW51b3VzbHksIHNvDQotICogZG8gbm90IGV4cGVjdCB0byBnZXQgcmVhbCB0aW1lIGJlaGF2aW91ciBmcm9tIHRoZSBGcmVlUlRPUyBXaW5kb3dzIHBvcnQsIG9yDQotICogdGhpcyBkZW1vIGFwcGxpY2F0aW9uLiAgQWxzbywgdGhlIHRpbWluZyBpbmZvcm1hdGlvbiBpbiB0aGUgRnJlZVJUT1MrVHJhY2UNCi0gKiBsb2dzIGhhdmUgbm8gbWVhbmluZ2Z1bCB1bml0cy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGUgV2luZG93cw0KLSAqIHBvcnQgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb246DQorICogTk9URSAxOiBUaGUgV2luMzIgcG9ydCBpcyBhIHNpbXVsYXRpb24gKG9yIGlzIHRoYXQgZW11bGF0aW9uPykgb25seSEgIERvIG5vdA0KKyAqIGV4cGVjdCB0byBnZXQgcmVhbCB0aW1lIGJlaGF2aW91ciBmcm9tIHRoZSBXaW4zMiBwb3J0IG9yIHRoaXMgZGVtbw0KKyAqIGFwcGxpY2F0aW9uLiAgSXQgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW50IGRldmVsb3BtZW50IGFuZCBkZW1vbnN0cmF0aW9uDQorICogdGVzdCBiZWQgb25seS4NCisgKg0KKyAqIFdpbmRvd3Mgd2lsbCBub3QgYmUgcnVubmluZyB0aGUgRnJlZVJUT1Mgc2ltdWxhdG9yIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KKyAqIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlIEZyZWVSVE9TK1RyYWNlIGxvZ3MgaGF2ZSBubyBtZWFuaW5nZnVsIHVuaXRzLg0KKyAqIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGUgV2luZG93cyBzaW11bGF0b3IgZm9yIGFuIGV4cGxhbmF0aW9uIG9mDQorICogdGhlIHNsb3cgdGltaW5nOg0KICAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0ZyZWVSVE9TLVdpbmRvd3MtU2ltdWxhdG9yLUVtdWxhdG9yLWZvci1WaXN1YWwtU3R1ZGlvLWFuZC1FY2xpcHNlLU1pbmdXLmh0bWwNCisgKiAtIFJFQUQgVEhFIFdFQiBET0NVTUVOVEFUSU9OIEZPUiBUSElTIFBPUlQgRk9SIE1PUkUgSU5GT1JNQVRJT04gT04gVVNJTkcgSVQgLQ0KICAqDQogICogTk9URSAyOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KICAqIHByb2plY3QsIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQpAQCAtOTgsOSArNjIsOSBAQAogICogIkNoZWNrIiB0YXNrIC0gVGhpcyBvbmx5IGV4ZWN1dGVzIGV2ZXJ5IGZpdmUgc2Vjb25kcyBidXQgaGFzIGEgaGlnaCBwcmlvcml0eQ0KICAqIHRvIGVuc3VyZSBpdCBnZXRzIHByb2Nlc3NvciB0aW1lLiAgSXRzIG1haW4gZnVuY3Rpb24gaXMgdG8gY2hlY2sgdGhhdCBhbGwgdGhlDQogICogc3RhbmRhcmQgZGVtbyB0YXNrcyBhcmUgc3RpbGwgb3BlcmF0aW9uYWwuICBXaGlsZSBubyBlcnJvcnMgaGF2ZSBiZWVuDQotICogZGlzY292ZXJlZCB0aGUgY2hlY2sgdGFzayB3aWxsIHByaW50IG91dCAiTm8gRXJyb3JzIiBhbG9uZyB3aXRoIHNvbWUgc3lzdGVtDQotICogc3RhdHVzIGluZm9ybWF0aW9uLiAgSWYgYW4gZXJyb3IgaXMgZGlzY292ZXJlZCBpbiB0aGUgZXhlY3V0aW9uIG9mIGEgdGFzaw0KLSAqIHRoZW4gdGhlIGNoZWNrIHRhc2sgd2lsbCBwcmludCBvdXQgYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZS4NCisgKiBkaXNjb3ZlcmVkIHRoZSBjaGVjayB0YXNrIHdpbGwgcHJpbnQgb3V0ICJPSyIgYW5kIHRoZSBjdXJyZW50IHNpbXVsYXRlZCB0aWNrDQorICogdGltZS4gIElmIGFuIGVycm9yIGlzIGRpc2NvdmVyZWQgaW4gdGhlIGV4ZWN1dGlvbiBvZiBhIHRhc2sgdGhlbiB0aGUgY2hlY2sNCisgKiB0YXNrIHdpbGwgcHJpbnQgb3V0IGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuDQogICoNCiAgKi8NCiANCkBAIC0xMzgsNiArMTAyLDEwIEBACiAjaW5jbHVkZSAiU3RhdGljQWxsb2NhdGlvbi5oIg0KICNpbmNsdWRlICJibG9ja3RpbS5oIg0KICNpbmNsdWRlICJBYm9ydERlbGF5LmgiDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJEZW1vLmgiDQorI2luY2x1ZGUgIlN0cmVhbUJ1ZmZlckRlbW8uaCINCisjaW5jbHVkZSAiU3RyZWFtQnVmZmVySW50ZXJydXB0LmgiDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJBTVAuaCINCiANCiAvKiBQcmlvcml0aWVzIGF0IHdoaWNoIHRoZSB0YXNrcyBhcmUgY3JlYXRlZC4gKi8NCiAjZGVmaW5lIG1haW5DSEVDS19UQVNLX1BSSU9SSVRZCQkJKCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDIgKQ0KQEAgLTIzNyw2ICsyMDUsMTEgQEAKIAl4VGFza0NyZWF0ZSggcHJ2UGVybWFuZW50bHlCbG9ja2luZ1NlbWFwaG9yZVRhc2ssICJCbG9ja1NlbSIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KIAl4VGFza0NyZWF0ZSggcHJ2UGVybWFuZW50bHlCbG9ja2luZ05vdGlmaWNhdGlvblRhc2ssICJCbG9ja05vdGkiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIE5VTEwsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCiANCisJdlN0YXJ0TWVzc2FnZUJ1ZmZlclRhc2tzKCk7DQorCXZTdGFydFN0cmVhbUJ1ZmZlclRhc2tzKCk7DQorCXZTdGFydFN0cmVhbUJ1ZmZlckludGVycnVwdERlbW8oKTsNCisJdlN0YXJ0TWVzc2FnZUJ1ZmZlckFNUFRhc2tzKCk7DQorDQogCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCiAJew0KIAkJdlN0YXJ0U3RhdGljYWxseUFsbG9jYXRlZFRhc2tzKCk7DQpAQCAtMjk2LDEyICsyNjksMTkgQEAKIAkJfQ0KIAkJI2VuZGlmDQogDQotCQlpZiggeEFyZVRhc2tOb3RpZmljYXRpb25UYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQlpZiggeEFyZVN0cmVhbUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCXsNCisJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBTdHJlYW1CdWZmZXIiOw0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgTWVzc2FnZUJ1ZmZlciI7DQorCQl9DQorCQllbHNlIGlmKCB4QXJlVGFza05vdGlmaWNhdGlvblRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBOb3RpZmljYXRpb24iOw0KIAkJfQ0KLQ0KLQkJaWYoIHhBcmVJbnRlcnJ1cHRTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQllbHNlIGlmKCB4QXJlSW50ZXJydXB0U2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogSW50U2VtIjsNCiAJCX0NCkBAIC0zNzMsNiArMzUzLDE0IEBACiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEFib3J0IGRlbGF5IjsNCiAJCX0NCisJCWVsc2UgaWYoIHhJc0ludGVycnVwdFN0cmVhbUJ1ZmZlckRlbW9TdGlsbFJ1bm5pbmcoKSAhPSBwZFBBU1MgKQ0KKwkJew0KKwkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogU3RyZWFtIGJ1ZmZlciBpbnRlcnJ1cHQiOw0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZU1lc3NhZ2VCdWZmZXJBTVBUYXNrc1N0aWxsUnVubmluZygpICE9IHBkUEFTUyApDQorCQl7DQorCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBNZXNzYWdlIGJ1ZmZlciBBTVAiOw0KKwkJfQ0KIA0KIAkJI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgKQ0KIAkJCWVsc2UgaWYoIHhBcmVTdGF0aWNBbGxvY2F0aW9uVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFBBU1MgKQ0KQEAgLTM4MywxMCArMzcxLDEwIEBACiANCiAJCS8qIFRoaXMgaXMgdGhlIG9ubHkgdGFzayB0aGF0IHVzZXMgc3Rkb3V0IHNvIGl0cyBvayB0byBjYWxsIHByaW50ZigpDQogCQlkaXJlY3RseS4gKi8NCi0JCXByaW50ZiggIiVzIC0gdGljayBjb3VudCAlZCAtIGZyZWUgaGVhcCAlZCAtIG1pbiBmcmVlIGhlYXAgJWRcclxuIiwgcGNTdGF0dXNNZXNzYWdlLA0KLQkJCQkJCQkJCQkJCQkJCQkJCQl4VGFza0dldFRpY2tDb3VudCgpLA0KLQkJCQkJCQkJCQkJCQkJCQkJCQl4UG9ydEdldEZyZWVIZWFwU2l6ZSgpLA0KLQkJCQkJCQkJCQkJCQkJCQkJCQl4UG9ydEdldE1pbmltdW1FdmVyRnJlZUhlYXBTaXplKCkgKTsNCisJCXByaW50ZiggIiVzIC0gdGljayBjb3VudCAlenUgLSBmcmVlIGhlYXAgJXp1IC0gbWluIGZyZWUgaGVhcCAlenVcclxuIiwgcGNTdGF0dXNNZXNzYWdlLA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkgICB4VGFza0dldFRpY2tDb3VudCgpLA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkgICB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpLA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkgICB4UG9ydEdldE1pbmltdW1FdmVyRnJlZUhlYXBTaXplKCkgKTsNCiAJfQ0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC00OTAsNiArNDc4LDE0IEBACiAJLyogRXhlcmNpc2UgdXNpbmcgdGFzayBub3RpZmljYXRpb25zIGZyb20gYW4gaW50ZXJydXB0LiAqLw0KIAl4Tm90aWZ5VGFza0Zyb21JU1IoKTsNCiANCisJLyogV3JpdGVzIHRvIHN0cmVhbSBidWZmZXIgYnl0ZSBieSBieXRlIHRvIHRlc3QgdGhlIHN0cmVhbSBidWZmZXIgdHJpZ2dlcg0KKwlsZXZlbCBmdW5jdGlvbmFsaXR5LiAqLw0KKwl2UGVyaW9kaWNTdHJlYW1CdWZmZXJQcm9jZXNzaW5nKCk7DQorDQorCS8qIFdyaXRlcyBhIHN0cmluZyB0byBhIHN0cmluZyBidWZmZXIgZm91ciBieXRlcyBhdCBhIHRpbWUgdG8gZGVtb25zdHJhdGUNCisJYSBzdHJlYW0gYmVpbmcgc2VudCBmcm9tIGFuIGludGVycnVwdCB0byBhIHRhc2suICovDQorCXZCYXNpY1N0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCk7DQorDQogCS8qIEZvciBjb2RlIGNvdmVyYWdlIHB1cnBvc2VzLiAqLw0KIAl4VGltZXJUYXNrID0geFRpbWVyR2V0VGltZXJEYWVtb25UYXNrSGFuZGxlKCk7DQogCWNvbmZpZ0FTU0VSVCggdXhUYXNrUHJpb3JpdHlHZXRGcm9tSVNSKCB4VGltZXJUYXNrICkgPT0gY29uZmlnVElNRVJfVEFTS19QUklPUklUWSApOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvLnByb2plY3QgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXLy5wcm9qZWN0CmluZGV4IDUxY2RmOGUuLjNkMjc0MWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvLnByb2plY3QKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy8ucHJvamVjdApAQCAtNTYsNyArNTYsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDU4NTgxNjA1Mzk5PC9pZD4NCisJCQk8aWQ+MTUwNzczNTE1NjMwNDwvaWQ+DQogCQkJPG5hbWU+U3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTY1LDcgKzY1LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQwNDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMDc8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC03NCw3ICs3NCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0MTA8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzEwPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtODMsNyArODMsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDU4NTgxNjA1NDE1PC9pZD4NCisJCQk8aWQ+MTUwNzczNTE1NjMxMzwvaWQ+DQogCQkJPG5hbWU+U3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTkyLDcgKzkyLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQyMTwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMTY8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMDEsNyArMTAxLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQyNzwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMTk8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMTAsNyArMTEwLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQzNDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMjM8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMTksNyArMTE5LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ0MTwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMjc8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMjgsNyArMTI4LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ1MDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMzA8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMzcsNyArMTM3LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ1ODwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMzM8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ2MzwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMzc8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xNTUsNyArMTU1LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ3MzwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNDA8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQ5MDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNDM8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xNzMsNyArMTczLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTUxNDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNDc8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xODIsNyArMTgyLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTUyNDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNTA8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xOTEsNyArMTkxLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTUzMDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNTM8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTUzNTwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNTY8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0yMDksNyArMjA5LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTU0MDwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNTk8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0yMTgsNyArMjE4LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTU0NzwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzNjI8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0yMjcsNiArMjI3LDI0IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQorCQkJPGlkPjE1MDc3MzUxNTYzNjY8L2lkPg0KKwkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQorCQkJPHR5cGU+NTwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS1TdHJlYW1CdWZmZXJEZW1vLmM8L2FyZ3VtZW50cz4NCisJCQk8L21hdGNoZXI+DQorCQk8L2ZpbHRlcj4NCisJCTxmaWx0ZXI+DQorCQkJPGlkPjE1MDc3MzUxNTYzNjk8L2lkPg0KKwkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQorCQkJPHR5cGU+NTwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS1NZXNzYWdlQnVmZmVyRGVtby5jPC9hcmd1bWVudHM+DQorCQkJPC9tYXRjaGVyPg0KKwkJPC9maWx0ZXI+DQorCQk8ZmlsdGVyPg0KIAkJCTxpZD4wPC9pZD4NCiAJCQk8bmFtZT5GcmVlUlRPU19Tb3VyY2UvcG9ydGFibGU8L25hbWU+DQogCQkJPHR5cGU+OTwvdHlwZT4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0RlbW9zTW9kaWZpZWRGb3JMb3dUaWNrUmF0ZS9yZWNtdXRleC5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9EZW1vc01vZGlmaWVkRm9yTG93VGlja1JhdGUvcmVjbXV0ZXguYwppbmRleCA3ZDY5MzYxLi5mMjdhYjRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0RlbW9zTW9kaWZpZWRGb3JMb3dUaWNrUmF0ZS9yZWNtdXRleC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvRGVtb3NNb2RpZmllZEZvckxvd1RpY2tSYXRlL3JlY211dGV4LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCVRoZSB0YXNrcyBkZWZpbmVkIG9uIHRoaXMgcGFnZSBkZW1vbnN0cmF0ZSB0aGUgdXNlIG9mIHJlY3Vyc2l2ZSBtdXRleGVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvRnJlZVJUT1NDb25maWcuaAppbmRleCA3Zjk3ZGY1Li41MzQ4ZTllIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpAQCAtODYsOSArNDUsMTAgQEAKICNkZWZpbmUgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OCTENCiAjZGVmaW5lIGNvbmZpZ1VTRV9JRExFX0hPT0sJCQkJCQkxDQogI2RlZmluZSBjb25maWdVU0VfVElDS19IT09LCQkJCQkJMQ0KKyNkZWZpbmUgY29uZmlnVVNFX0RBRU1PTl9UQVNLX1NUQVJUVVBfSE9PSwkJMQ0KICNkZWZpbmUgY29uZmlnVElDS19SQVRFX0haCQkJCQkJKCAxMDAwICkgLyogSW4gdGhpcyBub24tcmVhbCB0aW1lIHNpbXVsYXRlZCBlbnZpcm9ubWVudCB0aGUgdGljayBmcmVxdWVuY3kgaGFzIHRvIGJlIGF0IGxlYXN0IGEgbXVsdGlwbGUgb2YgdGhlIFdpbjMyIHRpY2sgZnJlcXVlbmN5LCBhbmQgdGhlcmVmb3JlIHZlcnkgc2xvdy4gKi8NCi0jZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJCQkoICggdW5zaWduZWQgc2hvcnQgKSA1MCApIC8qIEluIHRoaXMgc2ltdWxhdGVkIGNhc2UsIHRoZSBzdGFjayBvbmx5IGhhcyB0byBob2xkIG9uZSBzbWFsbCBzdHJ1Y3R1cmUgYXMgdGhlIHJlYWwgc3RhY2sgaXMgcGFydCBvZiB0aGUgd2luMzIgdGhyZWFkLiAqLw0KLSNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJCQkoICggc2l6ZV90ICkgKCAzNSAqIDEwMjQgKSApDQorI2RlZmluZSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUJCQkJKCAoIHVuc2lnbmVkIHNob3J0ICkgNzAgKSAvKiBJbiB0aGlzIHNpbXVsYXRlZCBjYXNlLCB0aGUgc3RhY2sgb25seSBoYXMgdG8gaG9sZCBvbmUgc21hbGwgc3RydWN0dXJlIGFzIHRoZSByZWFsIHN0YWNrIGlzIHBhcnQgb2YgdGhlIHdpbjMyIHRocmVhZC4gKi8NCisjZGVmaW5lIGNvbmZpZ1RPVEFMX0hFQVBfU0laRQkJCQkJKCAoIHNpemVfdCApICggNDUgKiAxMDI0ICkgKQ0KICNkZWZpbmUgY29uZmlnTUFYX1RBU0tfTkFNRV9MRU4JCQkJCSggMTIgKQ0KICNkZWZpbmUgY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZCQkJCTENCiAjZGVmaW5lIGNvbmZpZ1VTRV8xNl9CSVRfVElDS1MJCQkJCTANCkBAIC0xMDMsNiArNjMsNyBAQAogI2RlZmluZSBjb25maWdVU0VfQUxURVJOQVRJVkVfQVBJCQkJCTANCiAjZGVmaW5lIGNvbmZpZ1VTRV9RVUVVRV9TRVRTCQkJCQkxDQogI2RlZmluZSBjb25maWdVU0VfVEFTS19OT1RJRklDQVRJT05TCQkJMQ0KKyNkZWZpbmUgY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTgkJCTANCiANCiAvKiBTb2Z0d2FyZSB0aW1lciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gKi8NCiAjZGVmaW5lIGNvbmZpZ1VTRV9USU1FUlMJCQkJCQkxDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9SdW4tdGltZS1zdGF0cy11dGlscy5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9SdW4tdGltZS1zdGF0cy11dGlscy5jCmluZGV4IGY2NmNiNDYuLmYxMDljZGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVXRpbGl0eSBmdW5jdGlvbnMgcmVxdWlyZWQgdG8gZ2F0aGVyIHJ1biB0aW1lIHN0YXRpc3RpY3MuICBTZWU6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW4uYwppbmRleCBjYWFlZTFjLi5hOTg3ODc2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCkBAIC03OSwxOSArMzgsMTYgQEAKICAqIGhhcmR3YXJlIHNldHVwIGFuZCBGcmVlUlRPUyBob29rIGZ1bmN0aW9ucy4NCiAgKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogLU5PVEUtIFRoZSBXaW4zMiBwb3J0IGlzIGEgc2ltdWxhdGlvbiAob3IgaXMgdGhhdCBlbXVsYXRpb24/KSBvbmx5ISAgRG8gbm90DQotICogZXhwZWN0IHRvIGdldCByZWFsIHRpbWUgYmVoYXZpb3VyIGZyb20gdGhlIFdpbjMyIHBvcnQgb3IgdGhpcyBkZW1vDQotICogYXBwbGljYXRpb24uICBJdCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbnQgZGV2ZWxvcG1lbnQgYW5kIGRlbW9uc3RyYXRpb24NCi0gKiB0ZXN0IGJlZCBvbmx5LiAgVGhpcyB3YXMgdGVzdGVkIHVzaW5nIFdpbmRvd3MgWFAgb24gYSBkdWFsIGNvcmUgbGFwdG9wLg0KLSAqDQotICogV2luZG93cyB3aWxsIG5vdCBiZSBydW5uaW5nIHRoZSBGcmVlUlRPUyBzaW11bGF0b3IgdGhyZWFkcyBjb250aW51b3VzbHksIHNvDQotICogdGhlIHRpbWluZyBpbmZvcm1hdGlvbiBpbiB0aGUgRnJlZVJUT1MrVHJhY2UgbG9ncyBoYXZlIG5vIG1lYW5pbmdmdWwgdW5pdHMuDQotICogU2VlIHRoZSBkb2N1bWVudGF0aW9uIHBhZ2UgZm9yIHRoZSBXaW5kb3dzIHNpbXVsYXRvciBmb3IgYW4gZXhwbGFuYXRpb24gb2YNCi0gKiB0aGUgc2xvdyB0aW1pbmc6DQorICogTk9URTogV2luZG93cyB3aWxsIG5vdCBiZSBydW5uaW5nIHRoZSBGcmVlUlRPUyBkZW1vIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KKyAqIGRvIG5vdCBleHBlY3QgdG8gZ2V0IHJlYWwgdGltZSBiZWhhdmlvdXIgZnJvbSB0aGUgRnJlZVJUT1MgV2luZG93cyBwb3J0LCBvcg0KKyAqIHRoaXMgZGVtbyBhcHBsaWNhdGlvbi4gIEFsc28sIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlIEZyZWVSVE9TK1RyYWNlDQorICogbG9ncyBoYXZlIG5vIG1lYW5pbmdmdWwgdW5pdHMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhlIFdpbmRvd3MNCisgKiBwb3J0IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uOg0KICAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0ZyZWVSVE9TLVdpbmRvd3MtU2ltdWxhdG9yLUVtdWxhdG9yLWZvci1WaXN1YWwtU3R1ZGlvLWFuZC1FY2xpcHNlLU1pbmdXLmh0bWwNCi0gKiAtIFJFQUQgVEhFIFdFQiBET0NVTUVOVEFUSU9OIEZPUiBUSElTIFBPUlQgRk9SIE1PUkUgSU5GT1JNQVRJT04gT04gVVNJTkcgSVQgLQ0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICoNCisNCisgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpAQCAtMTAzLDIyICs1OSwyOCBAQAogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCiANCi0vKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQotYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCisvKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIGRlbW8NCithcHBsaWNhdGlvbiwgYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaXMgdXNlZCB0byBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvLg0KLVRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaXMgaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbiBtYWluX2JsaW5reS5jLiAgVGhlIG1vcmUNCi1jb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24gaXMgaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbg0KLW1haW5fZnVsbC5jLiAqLw0KLSNkZWZpbmUgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQkxDQorDQorSWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyAxIHRoZW4gdGhlIGJsaW5reSBkZW1vIHdpbGwgYmUgYnVpbHQuDQorVGhlIGJsaW5reSBkZW1vIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4gbWFpbl9ibGlua3kuYy4NCisNCitJZiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIG5vdCAxIHRoZW4gdGhlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQNCitkZW1vIGFwcGxpY2F0aW9uIHdpbGwgYmUgYnVpbHQuICBUaGUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uIGlzDQoraW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbiBtYWluX2Z1bGwuYy4gKi8NCisjZGVmaW5lIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkJMA0KIA0KIC8qIFRoaXMgZGVtbyB1c2VzIGhlYXBfNS5jLCBhbmQgdGhlc2UgY29uc3RhbnRzIGRlZmluZSB0aGUgc2l6ZXMgb2YgdGhlIHJlZ2lvbnMNCi10aGF0IG1ha2UgdXAgdGhlIHRvdGFsIGhlYXAuICBUaGlzIGlzIG9ubHkgZG9uZSB0byBwcm92aWRlIGFuIGV4YW1wbGUgb2YgaGVhcF81DQotYmVpbmcgdXNlZCBhcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUgbGFyZ2UgaGVhcCByZWdpb24gaW5zdGVhZCBvZg0KLW11bHRpcGxlIHNtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZSBoZWFwXzQuYyB3b3VsZCBiZSB0aGUgbW9yZQ0KLWFwcHJvcHJpYXRlIGNob2ljZS4gKi8NCi0jZGVmaW5lIG1haW5SRUdJT05fMV9TSVpFCTcwMDENCi0jZGVmaW5lIG1haW5SRUdJT05fMl9TSVpFCTE4MTA1DQotI2RlZmluZSBtYWluUkVHSU9OXzNfU0laRQkyODA3DQordGhhdCBtYWtlIHVwIHRoZSB0b3RhbCBoZWFwLiAgaGVhcF81IGlzIG9ubHkgdXNlZCBmb3IgdGVzdCBhbmQgZXhhbXBsZSBwdXJwb3Nlcw0KK2FzIHRoaXMgZGVtbyBjb3VsZCBlYXNpbHkgY3JlYXRlIG9uZSBsYXJnZSBoZWFwIHJlZ2lvbiBpbnN0ZWFkIG9mIG11bHRpcGxlDQorc21hbGxlciBoZWFwIHJlZ2lvbnMgLSBpbiB3aGljaCBjYXNlIGhlYXBfNC5jIHdvdWxkIGJlIHRoZSBtb3JlIGFwcHJvcHJpYXRlDQorY2hvaWNlLiAgU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sIGZvciBhbiBleHBsYW5hdGlvbi4gKi8NCisjZGVmaW5lIG1haW5SRUdJT05fMV9TSVpFCTcyMDENCisjZGVmaW5lIG1haW5SRUdJT05fMl9TSVpFCTI5OTA1DQorI2RlZmluZSBtYWluUkVHSU9OXzNfU0laRQk2NDA3DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogLyoNCiAgKiBtYWluX2JsaW5reSgpIGlzIHVzZWQgd2hlbiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAxLg0KQEAgLTEyOCwyNiArOTAsMjMgQEAKIGV4dGVybiB2b2lkIG1haW5fZnVsbCggdm9pZCApOw0KIA0KIC8qDQotICogU29tZSBvZiB0aGUgUlRPUyBob29rIChjYWxsYmFjaykgZnVuY3Rpb25zIG9ubHkgbmVlZCBzcGVjaWFsIHByb2Nlc3Npbmcgd2hlbg0KLSAqIHRoZSBmdWxsIGRlbW8gaXMgYmVpbmcgdXNlZC4gIFRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaGFzIG5vIHNwZWNpYWwNCi0gKiByZXF1aXJlbWVudHMsIHNvIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gdGhlIGhvb2sgZnVuY3Rpb25zIGRlZmluZWQNCi0gKiBpbiB0aGlzIGZpbGUsIGJ1dCBhcmUgZGVmaW5lZCBpbiBtYWluX2Z1bGwuYy4NCisgKiBPbmx5IHRoZSBjb21wcmVoZW5zaXZlIGRlbW8gdXNlcyBhcHBsaWNhdGlvbiBob29rIChjYWxsYmFjaykgZnVuY3Rpb25zLiAgU2VlDQorICogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMDE2Lmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQogICovDQogdm9pZCB2RnVsbERlbW9UaWNrSG9va0Z1bmN0aW9uKCB2b2lkICk7DQogdm9pZCB2RnVsbERlbW9JZGxlRnVuY3Rpb24oIHZvaWQgKTsNCiANCiAvKg0KLSAqIFRoaXMgZGVtbyB1c2VzIGhlYXBfNS5jLCBzbyBzdGFydCBieSBkZWZpbmluZyBzb21lIGhlYXAgcmVnaW9ucy4gIFRoaXMgaXMNCi0gKiBvbmx5IGRvbmUgdG8gcHJvdmlkZSBhbiBleGFtcGxlIGFzIHRoaXMgZGVtbyBjb3VsZCBlYXNpbHkgY3JlYXRlIG9uZSBsYXJnZQ0KLSAqIGhlYXAgcmVnaW9uIGluc3RlYWQgb2YgbXVsdGlwbGUgc21hbGxlciBoZWFwIHJlZ2lvbnMgLSBpbiB3aGljaCBjYXNlIGhlYXBfNC5jDQotICogd291bGQgYmUgdGhlIG1vcmUgYXBwcm9wcmlhdGUgY2hvaWNlLiAgTm8gaW5pdGlhbGlzYXRpb24gaXMgcmVxdWlyZWQgd2hlbg0KLSAqIGhlYXBfNC5jIGlzIHVzZWQuDQorICogVGhpcyBkZW1vIHVzZXMgaGVhcF81LmMsIHNvIHN0YXJ0IGJ5IGRlZmluaW5nIHNvbWUgaGVhcCByZWdpb25zLiAgSXQgaXMgbm90DQorICogbmVjZXNzYXJ5IGZvciB0aGlzIGRlbW8gdG8gdXNlIGhlYXBfNSwgYXMgaXQgY291bGQgZGVmaW5lIG9uZSBsYXJnZSBoZWFwDQorICogcmVnaW9uLiAgSGVhcF81IGlzIG9ubHkgdXNlZCBmb3IgdGVzdCBhbmQgZXhhbXBsZSBwdXJwb3Nlcy4gIFNlZQ0KKyAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sIGZvciBhbiBleHBsYW5hdGlvbi4NCiAgKi8NCiBzdGF0aWMgdm9pZCAgcHJ2SW5pdGlhbGlzZUhlYXAoIHZvaWQgKTsNCiANCiAvKg0KLSAqIFByb3RvdHlwZXMgZm9yIHRoZSBzdGFuZGFyZCBGcmVlUlRPUyBjYWxsYmFjay9ob29rIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZA0KLSAqIHdpdGhpbiB0aGlzIGZpbGUuDQorICogUHJvdG90eXBlcyBmb3IgdGhlIHN0YW5kYXJkIEZyZWVSVE9TIGFwcGxpY2F0aW9uIGhvb2sgKGNhbGxiYWNrKSBmdW5jdGlvbnMNCisgKiBpbXBsZW1lbnRlZCB3aXRoaW4gdGhpcyBmaWxlLiAgU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDAxNi5odG1sIC4NCiAgKi8NCiB2b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKTsNCiB2b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICk7DQpAQCAtMTY3LDExICsxMjYsOSBAQAogDQogaW50IG1haW4oIHZvaWQgKQ0KIHsNCi0JLyogVGhpcyBkZW1vIHVzZXMgaGVhcF81LmMsIHNvIHN0YXJ0IGJ5IGRlZmluaW5nIHNvbWUgaGVhcCByZWdpb25zLiAgVGhpcw0KLQlpcyBvbmx5IGRvbmUgdG8gcHJvdmlkZSBhbiBleGFtcGxlIGFzIHRoaXMgZGVtbyBjb3VsZCBlYXNpbHkgY3JlYXRlIG9uZQ0KLQlsYXJnZSBoZWFwIHJlZ2lvbiBpbnN0ZWFkIG9mIG11bHRpcGxlIHNtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZQ0KLQloZWFwXzQuYyB3b3VsZCBiZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSBjaG9pY2UuICBObyBpbml0aWFsaXNhdGlvbiBpcw0KLQlyZXF1aXJlZCB3aGVuIGhlYXBfNC5jIGlzIHVzZWQuICovDQorCS8qIFRoaXMgZGVtbyB1c2VzIGhlYXBfNS5jLCBzbyBzdGFydCBieSBkZWZpbmluZyBzb21lIGhlYXAgcmVnaW9ucy4gIGhlYXBfNQ0KKwlpcyBvbmx5IHVzZWQgZm9yIHRlc3QgYW5kIGV4YW1wbGUgcmVhc29ucy4gIEhlYXBfNCBpcyBtb3JlIGFwcHJvcHJpYXRlLiAgU2VlDQorCWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sIGZvciBhbiBleHBsYW5hdGlvbi4gKi8NCiAJcHJ2SW5pdGlhbGlzZUhlYXAoKTsNCiANCiAJLyogSW5pdGlhbGlzZSB0aGUgdHJhY2UgcmVjb3JkZXIuICBVc2Ugb2YgdGhlIHRyYWNlIHJlY29yZGVyIGlzIG9wdGlvbmFsLg0KQEAgLTIwNywxMSArMTY0LDEzIEBACiAJZnVuY3Rpb24gdGhhdCB3aWxsIGdldCBjYWxsZWQgaWYgYSBjYWxsIHRvIHB2UG9ydE1hbGxvYygpIGZhaWxzLg0KIAlwdlBvcnRNYWxsb2MoKSBpcyBjYWxsZWQgaW50ZXJuYWxseSBieSB0aGUga2VybmVsIHdoZW5ldmVyIGEgdGFzaywgcXVldWUsDQogCXRpbWVyIG9yIHNlbWFwaG9yZSBpcyBjcmVhdGVkLiAgSXQgaXMgYWxzbyBjYWxsZWQgYnkgdmFyaW91cyBwYXJ0cyBvZiB0aGUNCi0JZGVtbyBhcHBsaWNhdGlvbi4gIElmIGhlYXBfMS5jIG9yIGhlYXBfMi5jIGFyZSB1c2VkLCB0aGVuIHRoZSBzaXplIG9mIHRoZQ0KLQloZWFwIGF2YWlsYWJsZSB0byBwdlBvcnRNYWxsb2MoKSBpcyBkZWZpbmVkIGJ5IGNvbmZpZ1RPVEFMX0hFQVBfU0laRSBpbg0KLQlGcmVlUlRPU0NvbmZpZy5oLCBhbmQgdGhlIHhQb3J0R2V0RnJlZUhlYXBTaXplKCkgQVBJIGZ1bmN0aW9uIGNhbiBiZSB1c2VkDQotCXRvIHF1ZXJ5IHRoZSBzaXplIG9mIGZyZWUgaGVhcCBzcGFjZSB0aGF0IHJlbWFpbnMgKGFsdGhvdWdoIGl0IGRvZXMgbm90DQotCXByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRoZSByZW1haW5pbmcgaGVhcCBtaWdodCBiZSBmcmFnbWVudGVkKS4gKi8NCisJZGVtbyBhcHBsaWNhdGlvbi4gIElmIGhlYXBfMS5jLCBoZWFwXzIuYyBvciBoZWFwXzQuYyBpcyBiZWluZyB1c2VkLCB0aGVuIHRoZQ0KKwlzaXplIG9mIHRoZQloZWFwIGF2YWlsYWJsZSB0byBwdlBvcnRNYWxsb2MoKSBpcyBkZWZpbmVkIGJ5DQorCWNvbmZpZ1RPVEFMX0hFQVBfU0laRSBpbiBGcmVlUlRPU0NvbmZpZy5oLCBhbmQgdGhlIHhQb3J0R2V0RnJlZUhlYXBTaXplKCkNCisJQVBJIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBzaXplIG9mIGZyZWUgaGVhcCBzcGFjZSB0aGF0IHJlbWFpbnMNCisJKGFsdGhvdWdoIGl0IGRvZXMgbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRoZSByZW1haW5pbmcgaGVhcCBtaWdodCBiZQ0KKwlmcmFnbWVudGVkKS4gIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbCBmb3IgbW9yZQ0KKwlpbmZvcm1hdGlvbi4gKi8NCiAJdkFzc2VydENhbGxlZCggX19MSU5FX18sIF9fRklMRV9fICk7DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQEAgLTIyMiwxMyArMTgxLDEzIEBACiAJdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGlkbGUNCiAJdGFzay4gIEl0IGlzIGVzc2VudGlhbCB0aGF0IGNvZGUgYWRkZWQgdG8gdGhpcyBob29rIGZ1bmN0aW9uIG5ldmVyIGF0dGVtcHRzDQogCXRvIGJsb2NrIGluIGFueSB3YXkgKGZvciBleGFtcGxlLCBjYWxsIHhRdWV1ZVJlY2VpdmUoKSB3aXRoIGEgYmxvY2sgdGltZQ0KLQlzcGVjaWZpZWQsIG9yIGNhbGwgdlRhc2tEZWxheSgpKS4gIElmIHRoZSBhcHBsaWNhdGlvbiBtYWtlcyB1c2Ugb2YgdGhlDQotCXZUYXNrRGVsZXRlKCkgQVBJIGZ1bmN0aW9uIChhcyB0aGlzIGRlbW8gYXBwbGljYXRpb24gZG9lcykgdGhlbiBpdCBpcyBhbHNvDQotCWltcG9ydGFudCB0aGF0IHZBcHBsaWNhdGlvbklkbGVIb29rKCkgaXMgcGVybWl0dGVkIHRvIHJldHVybiB0byBpdHMgY2FsbGluZw0KLQlmdW5jdGlvbiwgYmVjYXVzZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGlkbGUgdGFzayB0byBjbGVhbiB1cA0KLQltZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBrZXJuZWwgdG8gYW55IHRhc2sgdGhhdCBoYXMgc2luY2UgYmVlbiBkZWxldGVkLiAqLw0KKwlzcGVjaWZpZWQsIG9yIGNhbGwgdlRhc2tEZWxheSgpKS4gIElmIGFwcGxpY2F0aW9uIHRhc2tzIG1ha2UgdXNlIG9mIHRoZQ0KKwl2VGFza0RlbGV0ZSgpIEFQSSBmdW5jdGlvbiB0byBkZWxldGUgdGhlbXNlbHZlcyB0aGVuIGl0IGlzIGFsc28gaW1wb3J0YW50DQorCXRoYXQgdkFwcGxpY2F0aW9uSWRsZUhvb2soKSBpcyBwZXJtaXR0ZWQgdG8gcmV0dXJuIHRvIGl0cyBjYWxsaW5nIGZ1bmN0aW9uLA0KKwliZWNhdXNlIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaWRsZSB0YXNrIHRvIGNsZWFuIHVwIG1lbW9yeQ0KKwlhbGxvY2F0ZWQgYnkgdGhlIGtlcm5lbCB0byBhbnkgdGFzayB0aGF0IGhhcyBzaW5jZSBkZWxldGVkIGl0c2VsZi4gKi8NCiANCi0JLyogVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgY29kZSB0byBhbGxvdyB0aGUgdHJhY2UgdG8gYmUgc3RvcHBlZCB3aXRoIGFueSANCisJLyogVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgY29kZSB0byBhbGxvdyB0aGUgdHJhY2UgdG8gYmUgc3RvcHBlZCB3aXRoIGFueQ0KIAlrZXkgcHJlc3MuICBUaGUgY29kZSBpcyBjb21tZW50ZWQgb3V0IGJ5IGRlZmF1bHQgYXMgdGhlIGtiaGl0KCkgZnVuY3Rpb24NCiAJaW50ZXJmZXJlcyB3aXRoIHRoZSBydW4gdGltZSBiZWhhdmlvdXIuICovDQogCS8qDQpAQCAtMjYwLDcgKzIxOSw5IEBACiANCiAJLyogUnVuIHRpbWUgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgcGVyZm9ybWVkIGlmDQogCWNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyBpcyBkZWZpbmVkIHRvIDEgb3IgMi4gIFRoaXMgaG9vaw0KLQlmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYSBzdGFjayBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gKi8NCisJZnVuY3Rpb24gaXMgY2FsbGVkIGlmIGEgc3RhY2sgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICBUaGlzIGZ1bmN0aW9uIGlzDQorCXByb3ZpZGVkIGFzIGFuIGV4YW1wbGUgb25seSBhcyBzdGFjayBvdmVyZmxvdyBjaGVja2luZyBkb2VzIG5vdCBmdW5jdGlvbg0KKwl3aGVuIHJ1bm5pbmcgdGhlIEZyZWVSVE9TIFdpbmRvd3MgcG9ydC4gKi8NCiAJdkFzc2VydENhbGxlZCggX19MSU5FX18sIF9fRklMRV9fICk7DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQEAgLTI4MSwxNSArMjQyLDI4IEBACiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQordm9pZCB2QXBwbGljYXRpb25EYWVtb25UYXNrU3RhcnR1cEhvb2soIHZvaWQgKQ0KK3sNCisJLyogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmNlIG9ubHksIHdoZW4gdGhlIGRhZW1vbiB0YXNrIHN0YXJ0cyB0bw0KKwlleGVjdXRlCShzb21ldGltZXMgY2FsbGVkIHRoZSB0aW1lciB0YXNrKS4gIFRoaXMgaXMgdXNlZnVsIGlmIHRoZQ0KKwlhcHBsaWNhdGlvbiBpbmNsdWRlcyBpbml0aWFsaXNhdGlvbiBjb2RlIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGV4ZWN1dGluZw0KKwlhZnRlciB0aGUgc2NoZWR1bGVyIGhhcyBiZWVuIHN0YXJ0ZWQuICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KIHZvaWQgdkFzc2VydENhbGxlZCggdW5zaWduZWQgbG9uZyB1bExpbmUsIGNvbnN0IGNoYXIgKiBjb25zdCBwY0ZpbGVOYW1lICkNCiB7DQogc3RhdGljIEJhc2VUeXBlX3QgeFByaW50ZWQgPSBwZEZBTFNFOw0KIHZvbGF0aWxlIHVpbnQzMl90IHVsU2V0VG9Ob25aZXJvSW5EZWJ1Z2dlclRvQ29udGludWUgPSAwOw0KIA0KKwkvKiBDYWxsZWQgaWYgYW4gYXNzZXJ0aW9uIHBhc3NlZCB0byBjb25maWdBU1NFUlQoKSBmYWlscy4gIFNlZQ0KKwlodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTAuaHRtbCNjb25maWdBU1NFUlQgZm9yIG1vcmUgaW5mb3JtYXRpb24uICovDQorDQogCS8qIFBhcmFtZXRlcnMgYXJlIG5vdCB1c2VkLiAqLw0KIAkoIHZvaWQgKSB1bExpbmU7DQogCSggdm9pZCApIHBjRmlsZU5hbWU7DQogDQorDQogIAl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCiAJew0KIAkJLyogU3RvcCB0aGUgdHJhY2UgcmVjb3JkaW5nLiAqLw0KQEAgLTMzNywxMyArMzExLDE1IEBACiANCiBzdGF0aWMgdm9pZCAgcHJ2SW5pdGlhbGlzZUhlYXAoIHZvaWQgKQ0KIHsNCi0vKiBUaGlzIGRlbW8gdXNlcyBoZWFwXzUuYywgc28gc3RhcnQgYnkgZGVmaW5pbmcgc29tZSBoZWFwIHJlZ2lvbnMuICBUaGlzIGlzDQotb25seSBkb25lIHRvIHByb3ZpZGUgYW4gZXhhbXBsZSBhcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUgbGFyZ2UgaGVhcA0KLXJlZ2lvbiBpbnN0ZWFkIG9mIG11bHRpcGxlIHNtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZSBoZWFwXzQuYyB3b3VsZA0KLWJlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIGNob2ljZS4gIE5vIGluaXRpYWxpc2F0aW9uIGlzIHJlcXVpcmVkIHdoZW4gaGVhcF80LmMgaXMNCi11c2VkLiAgVGhlIHhIZWFwUmVnaW9ucyBzdHJ1Y3R1cmUgcmVxdWlyZXMgdGhlIHJlZ2lvbnMgdG8gYmUgZGVmaW5lZCBpbiBvcmRlciwNCi1zbyB0aGlzIGp1c3QgY3JlYXRlcyBvbmUgYmlnIGFycmF5LCB0aGVuIHBvcHVsYXRlcyB0aGUgc3RydWN0dXJlIHdpdGggb2Zmc2V0cw0KLWludG8gdGhlIGFycmF5IC0gd2l0aCBnYXBzIGluIGJldHdlZW4gYW5kIG1lc3N5IGFsaWdubWVudCBqdXN0IGZvciB0ZXN0DQorLyogVGhlIFdpbmRvd3MgZGVtbyBjb3VsZCBjcmVhdGUgb25lIGxhcmdlIGhlYXAgcmVnaW9uLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkDQorYmUgYXBwcm9wcmlhdGUgdG8gdXNlIGhlYXBfNC4gIEhvd2V2ZXIsIHB1cmVseSBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3NlcywNCitoZWFwXzUgaXMgdXNlZCBpbnN0ZWFkLCBzbyBzdGFydCBieSBkZWZpbmluZyBzb21lIGhlYXAgcmVnaW9ucy4gIE5vDQoraW5pdGlhbGlzYXRpb24gaXMgcmVxdWlyZWQgd2hlbiBhbnkgb3RoZXIgaGVhcCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkLiAgU2VlDQoraHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTExLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQorDQorVGhlIHhIZWFwUmVnaW9ucyBzdHJ1Y3R1cmUgcmVxdWlyZXMgdGhlIHJlZ2lvbnMgdG8gYmUgZGVmaW5lZCBpbiBzdGFydCBhZGRyZXNzDQorb3JkZXIsIHNvIHRoaXMganVzdCBjcmVhdGVzIG9uZSBiaWcgYXJyYXksIHRoZW4gcG9wdWxhdGVzIHRoZSBzdHJ1Y3R1cmUgd2l0aA0KK29mZnNldHMgaW50byB0aGUgYXJyYXkgLSB3aXRoIGdhcHMgaW4gYmV0d2VlbiBhbmQgbWVzc3kgYWxpZ25tZW50IGp1c3QgZm9yIHRlc3QNCiBwdXJwb3Nlcy4gKi8NCiBzdGF0aWMgdWludDhfdCB1Y0hlYXBbIGNvbmZpZ1RPVEFMX0hFQVBfU0laRSBdOw0KIHZvbGF0aWxlIHVpbnQzMl90IHVsQWRkaXRpb25hbE9mZnNldCA9IDE5OyAvKiBKdXN0IHRvIHByZXZlbnQgJ2NvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZScgd2FybmluZ3MgaW4gY29uZmlnQVNTRVJUKCkuICovDQpAQCAtMzYwLDYgKzMzNiw5IEBACiAJYXJyYXkuICovDQogCWNvbmZpZ0FTU0VSVCggKCB1bEFkZGl0aW9uYWxPZmZzZXQgKyBtYWluUkVHSU9OXzFfU0laRSArIG1haW5SRUdJT05fMl9TSVpFICsgbWFpblJFR0lPTl8zX1NJWkUgKSA8IGNvbmZpZ1RPVEFMX0hFQVBfU0laRSApOw0KIA0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHVsQWRkaXRpb25hbE9mZnNldDsNCisNCiAJdlBvcnREZWZpbmVIZWFwUmVnaW9ucyggeEhlYXBSZWdpb25zICk7DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9ibGlua3kuYwppbmRleCA2YWY1MmE0Li41NmFjZWZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiBUaGUgV2luMzIgcG9ydCBpcyBhIHNpbXVsYXRpb24gKG9yIGlzIHRoYXQgZW11bGF0aW9uPykgb25seSEgIERvIG5vdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fZnVsbC5jCmluZGV4IDk3YmRiZjYuLjMxMmU2N2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluX2Z1bGwuYwpAQCAtMSw3OCArMSwzNyBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogVGhlIFdpbjMyIHBvcnQgaXMgYSBzaW11bGF0aW9uIChvciBpcyB0aGF0IGVtdWxhdGlvbj8pIG9ubHkhICBEbyBub3QNCiAgKiBleHBlY3QgdG8gZ2V0IHJlYWwgdGltZSBiZWhhdmlvdXIgZnJvbSB0aGUgV2luMzIgcG9ydCBvciB0aGlzIGRlbW8NCiAgKiBhcHBsaWNhdGlvbi4gIEl0IGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVudCBkZXZlbG9wbWVudCBhbmQgZGVtb25zdHJhdGlvbg0KLSAqIHRlc3QgYmVkIG9ubHkuICBUaGlzIHdhcyB0ZXN0ZWQgdXNpbmcgV2luZG93cyBYUCBvbiBhIGR1YWwgY29yZSBsYXB0b3AuDQorICogdGVzdCBiZWQgb25seS4NCiAgKg0KICAqIFdpbmRvd3Mgd2lsbCBub3QgYmUgcnVubmluZyB0aGUgRnJlZVJUT1Mgc2ltdWxhdG9yIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KICAqIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlIEZyZWVSVE9TK1RyYWNlIGxvZ3MgaGF2ZSBubyBtZWFuaW5nZnVsIHVuaXRzLg0KQEAgLTE0Miw2ICsxMDEsOCBAQAogI2luY2x1ZGUgIlF1ZXVlU2V0UG9sbGluZy5oIg0KICNpbmNsdWRlICJibG9ja3RpbS5oIg0KICNpbmNsdWRlICJBYm9ydERlbGF5LmgiDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJEZW1vLmgiDQorI2luY2x1ZGUgIlN0cmVhbUJ1ZmZlckRlbW8uaCINCiANCiAvKiBQcmlvcml0aWVzIGF0IHdoaWNoIHRoZSB0YXNrcyBhcmUgY3JlYXRlZC4gKi8NCiAjZGVmaW5lIG1haW5DSEVDS19UQVNLX1BSSU9SSVRZCQkJKCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDIgKQ0KQEAgLTE4MywxNCArMTQ0LDI5IEBACiBzdGF0aWMgdm9pZCBwcnZQZW5kZWRGdW5jdGlvbiggdm9pZCAqcHZQYXJhbWV0ZXIxLCB1aW50MzJfdCB1bFBhcmFtZXRlcjIgKTsNCiANCiAvKg0KKyAqIHBydkRlbW9uc3RyYXRlVGltZXJRdWVyeUZ1bmN0aW9ucygpIGlzIGNhbGxlZCBmcm9tIHRoZSBpZGxlIHRhc2sgaG9vaw0KKyAqIGZ1bmN0aW9uIHRvIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgZnVuY3Rpb25zIHRoYXQgcXVlcnkgaW5mb3JtYXRpb24gYWJvdXQgYQ0KKyAqIHNvZnR3YXJlIHRpbWVyLiAgcHJ2VGVzdFRpbWVyQ2FsbGJhY2soKSBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZQ0KKyAqIHRpbWVyIGJlaW5nIHF1ZXJpZWQuDQorICovDQorc3RhdGljIHZvaWQgcHJ2RGVtb25zdHJhdGVUaW1lclF1ZXJ5RnVuY3Rpb25zKCB2b2lkICk7DQorc3RhdGljIHZvaWQgcHJ2VGVzdFRpbWVyQ2FsbGJhY2soIFRpbWVySGFuZGxlX3QgeFRpbWVyICk7DQorDQorLyoNCiAgKiBBIHRhc2sgdG8gZGVtb25zdHJhdGUgdGhlIHVzZSBvZiB0aGUgeFF1ZXVlU3BhY2VzQXZhaWxhYmxlKCkgZnVuY3Rpb24uDQogICovDQogc3RhdGljIHZvaWQgcHJ2RGVtb1F1ZXVlU3BhY2VGdW5jdGlvbnMoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KIA0KKy8qDQorICogVGFza3MgdGhhdCBlbnN1cmUgaW5kZWZpbml0ZSBkZWxheXMgYXJlIHRydWx5IGluZGVmaW5pdGUuDQorICovDQorc3RhdGljIHZvaWQgcHJ2UGVybWFuZW50bHlCbG9ja2luZ1NlbWFwaG9yZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KK3N0YXRpYyB2b2lkIHBydlBlcm1hbmVudGx5QmxvY2tpbmdOb3RpZmljYXRpb25UYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiAvKiBUaGUgdmFyaWFibGUgaW50byB3aGljaCBlcnJvciBtZXNzYWdlcyBhcmUgbGF0Y2hlZC4gKi8NCi1zdGF0aWMgY2hhciAqcGNTdGF0dXNNZXNzYWdlID0gIk9LIjsNCitzdGF0aWMgY2hhciAqcGNTdGF0dXNNZXNzYWdlID0gIk5vIGVycm9ycyI7DQogDQogLyogVGhpcyBzZW1hcGhvcmUgaXMgY3JlYXRlZCBwdXJlbHkgdG8gdGVzdCB1c2luZyB0aGUgdlNlbWFwaG9yZURlbGV0ZSgpIGFuZA0KIHNlbWFwaG9yZSB0cmFjaW5nIEFQSSBmdW5jdGlvbnMuICBJdCBoYXMgbm8gb3RoZXIgcHVycG9zZS4gKi8NCkBAIC0yMjMsNiArMTk5LDEyIEBACiAJdlN0YXJ0UXVldWVTZXRQb2xsaW5nVGFzaygpOw0KIAl2Q3JlYXRlQmxvY2tUaW1lVGFza3MoKTsNCiAJdkNyZWF0ZUFib3J0RGVsYXlUYXNrcygpOw0KKwl4VGFza0NyZWF0ZSggcHJ2RGVtb1F1ZXVlU3BhY2VGdW5jdGlvbnMsICJRU3BhY2UiLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIE5VTEwsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCisJeFRhc2tDcmVhdGUoIHBydlBlcm1hbmVudGx5QmxvY2tpbmdTZW1hcGhvcmVUYXNrLCAiQmxvY2tTZW0iLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIE5VTEwsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCisJeFRhc2tDcmVhdGUoIHBydlBlcm1hbmVudGx5QmxvY2tpbmdOb3RpZmljYXRpb25UYXNrLCAiQmxvY2tOb3RpIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorDQorCXZTdGFydE1lc3NhZ2VCdWZmZXJUYXNrcygpOw0KKwl2U3RhcnRTdHJlYW1CdWZmZXJUYXNrcygpOw0KIA0KIAkjaWYoIGNvbmZpZ1VTRV9QUkVFTVBUSU9OICE9IDAgICkNCiAJew0KQEAgLTI3NywxMiArMjU5LDE5IEBACiAJCX0NCiAJCSNlbmRpZg0KIA0KLQkJaWYoIHhBcmVUYXNrTm90aWZpY2F0aW9uVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJaWYoIHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgU3RyZWFtQnVmZmVyIjsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIE1lc3NhZ2VCdWZmZXIiOw0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZVRhc2tOb3RpZmljYXRpb25UYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgTm90aWZpY2F0aW9uIjsNCiAJCX0NCi0NCi0JCWlmKCB4QXJlSW50ZXJydXB0U2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJZWxzZSBpZiggeEFyZUludGVycnVwdFNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEludFNlbSI7DQogCQl9DQpAQCAtMjkwLDEwICsyNzksMTAgQEAKIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogRXZlbnRHcm91cCI7DQogCQl9DQotCSAgICBlbHNlIGlmKCB4QXJlSW50ZWdlck1hdGhzVGFza1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCSAgICB7DQorCQllbHNlIGlmKCB4QXJlSW50ZWdlck1hdGhzVGFza1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBJbnRNYXRoIjsNCi0JICAgIH0NCisJCX0NCiAJCWVsc2UgaWYoIHhBcmVHZW5lcmljUXVldWVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBHZW5RdWV1ZSI7DQpAQCAtMzA2LDIwICsyOTUsMjAgQEAKIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogQmxvY2tRdWV1ZSI7DQogCQl9DQotCSAgICBlbHNlIGlmKCB4QXJlU2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkgICAgew0KKwkJZWxzZSBpZiggeEFyZVNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IFNlbVRlc3QiOw0KLQkgICAgfQ0KLQkgICAgZWxzZSBpZiggeEFyZVBvbGxpbmdRdWV1ZXNTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkgICAgew0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZVBvbGxpbmdRdWV1ZXNTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogUG9sbFF1ZXVlIjsNCi0JICAgIH0NCisJCX0NCiAJCWVsc2UgaWYoIHhBcmVNYXRoc1Rhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFBBU1MgKQ0KIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogRmxvcCI7DQogCQl9DQotCSAgICBlbHNlIGlmKCB4QXJlUmVjdXJzaXZlTXV0ZXhUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCSAgICB7DQorCQllbHNlIGlmKCB4QXJlUmVjdXJzaXZlTXV0ZXhUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBSZWNNdXRleCI7DQogCQl9DQogCQllbHNlIGlmKCB4QXJlQ291bnRpbmdTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQpAQCAtMzk5LDE5ICszODgsMzQgQEAKIAlkZW1vbnN0cmF0ZWQgYnkgYW55IG9mIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLiAqLw0KIAlwcnZEZW1vbnN0cmF0ZVBlbmRpbmdGdW5jdGlvbkNhbGwoKTsNCiANCisJLyogRGVtb25zdHJhdGUgdGhlIHVzZSBvZiBmdW5jdGlvbnMgdGhhdCBxdWVyeSBpbmZvcm1hdGlvbiBhYm91dCBhIHNvZnR3YXJlDQorCXRpbWVyLiAqLw0KKwlwcnZEZW1vbnN0cmF0ZVRpbWVyUXVlcnlGdW5jdGlvbnMoKTsNCisNCisNCiAJLyogSWYgeE11dGV4VG9EZWxldGUgaGFzIG5vdCBhbHJlYWR5IGJlZW4gZGVsZXRlZCwgdGhlbiBkZWxldGUgaXQgbm93Lg0KIAlUaGlzIGlzIGRvbmUgcHVyZWx5IHRvIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YsIGFuZCB0ZXN0LCB0aGUNCiAJdlNlbWFwaG9yZURlbGV0ZSgpIG1hY3JvLiAgQ2FyZSBtdXN0IGJlIHRha2VuIG5vdCB0byBkZWxldGUgYSBzZW1hcGhvcmUNCiAJdGhhdCBoYXMgdGFza3MgYmxvY2tlZCBvbiBpdC4gKi8NCiAJaWYoIHhNdXRleFRvRGVsZXRlICE9IE5VTEwgKQ0KIAl7DQorCQkvKiBGb3IgdGVzdCBwdXJwb3NlcywgYWRkIHRoZSBtdXRleCB0byB0aGUgcmVnaXN0cnksIHRoZW4gcmVtb3ZlIGl0DQorCQlhZ2FpbiwgYmVmb3JlIGl0IGlzIGRlbGV0ZWQgLSBjaGVja2luZyBpdHMgbmFtZSBpcyBhcyBleHBlY3RlZCBiZWZvcmUNCisJCWFuZCBhZnRlciB0aGUgYXNzZXJ0aW9uIGludG8gdGhlIHJlZ2lzdHJ5IGFuZCBpdHMgcmVtb3ZhbCBmcm9tIHRoZQ0KKwkJcmVnaXN0cnkuICovDQorCQljb25maWdBU1NFUlQoIHBjUXVldWVHZXROYW1lKCB4TXV0ZXhUb0RlbGV0ZSApID09IE5VTEwgKTsNCisJCXZRdWV1ZUFkZFRvUmVnaXN0cnkoIHhNdXRleFRvRGVsZXRlLCAiVGVzdF9NdXRleCIgKTsNCisJCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBwY1F1ZXVlR2V0TmFtZSggeE11dGV4VG9EZWxldGUgKSwgIlRlc3RfTXV0ZXgiICkgPT0gMCApOw0KKwkJdlF1ZXVlVW5yZWdpc3RlclF1ZXVlKCB4TXV0ZXhUb0RlbGV0ZSApOw0KKwkJY29uZmlnQVNTRVJUKCBwY1F1ZXVlR2V0TmFtZSggeE11dGV4VG9EZWxldGUgKSA9PSBOVUxMICk7DQorDQogCQl2U2VtYXBob3JlRGVsZXRlKCB4TXV0ZXhUb0RlbGV0ZSApOw0KIAkJeE11dGV4VG9EZWxldGUgPSBOVUxMOw0KIAl9DQogDQogCS8qIEV4ZXJjaXNlIGhlYXBfNSBhIGJpdC4gIFRoZSBtYWxsb2MgZmFpbGVkIGhvb2sgd2lsbCB0cmFwIGZhaWxlZA0KIAlhbGxvY2F0aW9ucyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHRlc3QgaGVyZS4gKi8NCi0JcHZBbGxvY2F0ZWQgPSBwdlBvcnRNYWxsb2MoICggcmFuZCgpICUgMTAwICkgKyAxICk7DQorCXB2QWxsb2NhdGVkID0gcHZQb3J0TWFsbG9jKCAoIHJhbmQoKSAlIDUwMCApICsgMSApOw0KIAl2UG9ydEZyZWUoIHB2QWxsb2NhdGVkICk7DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQEAgLTQxOSw2ICs0MjMsOCBAQAogLyogQ2FsbGVkIGJ5IHZBcHBsaWNhdGlvblRpY2tIb29rKCksIHdoaWNoIGlzIGRlZmluZWQgaW4gbWFpbi5jLiAqLw0KIHZvaWQgdkZ1bGxEZW1vVGlja0hvb2tGdW5jdGlvbiggdm9pZCApDQogew0KK1Rhc2tIYW5kbGVfdCB4VGltZXJUYXNrOw0KKw0KIAkvKiBDYWxsIHRoZSBwZXJpb2RpYyB0aW1lciB0ZXN0LCB3aGljaCB0ZXN0cyB0aGUgdGltZXIgQVBJIGZ1bmN0aW9ucyB0aGF0DQogCWNhbiBiZSBjYWxsZWQgZnJvbSBhbiBJU1IuICovDQogCSNpZiggY29uZmlnVVNFX1BSRUVNUFRJT04gIT0gMCApDQpAQCAtNDQ0LDYgKzQ1MCwxNSBAQAogDQogCS8qIEV4ZXJjaXNlIHVzaW5nIHRhc2sgbm90aWZpY2F0aW9ucyBmcm9tIGFuIGludGVycnVwdC4gKi8NCiAJeE5vdGlmeVRhc2tGcm9tSVNSKCk7DQorDQorCS8qIFdyaXRlcyB0byBzdHJlYW0gYnVmZmVyIGJ5dGUgYnkgYnl0ZSB0byB0ZXN0IHRoZSBzdHJlYW0gYnVmZmVyIHRyaWdnZXINCisJbGV2ZWwgZnVuY3Rpb25hbGl0eS4gKi8NCisJdlBlcmlvZGljU3RyZWFtQnVmZmVyUHJvY2Vzc2luZygpOw0KKw0KKwkvKiBGb3IgY29kZSBjb3ZlcmFnZSBwdXJwb3Nlcy4gKi8NCisJeFRpbWVyVGFzayA9IHhUaW1lckdldFRpbWVyRGFlbW9uVGFza0hhbmRsZSgpOw0KKwljb25maWdBU1NFUlQoIHV4VGFza1ByaW9yaXR5R2V0RnJvbUlTUiggeFRpbWVyVGFzayApID09IGNvbmZpZ1RJTUVSX1RBU0tfUFJJT1JJVFkgKTsNCisJKCB2b2lkICkgeFRpbWVyVGFzazsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtNDYxLDYgKzQ3Niw1NyBAQAogCS8qIFJlbWVtYmVyIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbmV4dCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuICovDQogCXVsTGFzdFBhcmFtZXRlcjEgPSB1bFBhcmFtZXRlcjE7DQogCXVsTGFzdFBhcmFtZXRlcjIgPSB1bFBhcmFtZXRlcjI7DQorDQorCS8qIFJlbW92ZSBjb21waWxlciB3YXJuaW5ncyBpbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bExhc3RQYXJhbWV0ZXIxOw0KKwkoIHZvaWQgKSB1bExhc3RQYXJhbWV0ZXIyOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZUZXN0VGltZXJDYWxsYmFjayggVGltZXJIYW5kbGVfdCB4VGltZXIgKQ0KK3sNCisJLyogVGhpcyBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSB0aW1lciBhY2Nlc3NlZCBieQ0KKwlwcnZEZW1vbnN0cmF0ZVRpbWVyUXVlcnlGdW5jdGlvbnMoKS4gIFRoZSBjYWxsYmFjayBkb2VzIG5vdCBkbyBhbnl0aGluZy4gKi8NCisJKCB2b2lkICkgeFRpbWVyOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZEZW1vbnN0cmF0ZVRpbWVyUXVlcnlGdW5jdGlvbnMoIHZvaWQgKQ0KK3sNCitzdGF0aWMgVGltZXJIYW5kbGVfdCB4VGltZXIgPSBOVUxMOw0KK2NvbnN0IGNoYXIgKnBjVGltZXJOYW1lID0gIlRlc3RUaW1lciI7DQordm9sYXRpbGUgVGlja1R5cGVfdCB4RXhwaXJ5VGltZTsNCitjb25zdCBUaWNrVHlwZV90IHhEb250QmxvY2sgPSAwOw0KKw0KKwlpZiggeFRpbWVyID09IE5VTEwgKQ0KKwl7DQorCQl4VGltZXIgPSB4VGltZXJDcmVhdGUoIHBjVGltZXJOYW1lLCBwb3J0TUFYX0RFTEFZLCBwZFRSVUUsIE5VTEwsIHBydlRlc3RUaW1lckNhbGxiYWNrICk7DQorDQorCQlpZiggeFRpbWVyICE9IE5VTEwgKQ0KKwkJew0KKwkJCS8qIENhbGxlZCBmcm9tIHRoZSBpZGxlIHRhc2sgc28gYSBibG9jayB0aW1lIG11c3Qgbm90IGJlDQorCQkJc3BlY2lmaWVkLiAqLw0KKwkJCXhUaW1lclN0YXJ0KCB4VGltZXIsIHhEb250QmxvY2sgKTsNCisJCX0NCisJfQ0KKw0KKwlpZiggeFRpbWVyICE9IE5VTEwgKQ0KKwl7DQorCQkvKiBEZW1vbnN0cmF0ZSBxdWVyeWluZyBhIHRpbWVyJ3MgbmFtZS4gKi8NCisJCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBwY1RpbWVyR2V0TmFtZSggeFRpbWVyICksIHBjVGltZXJOYW1lICkgPT0gMCApOw0KKw0KKwkJLyogRGVtb25zdHJhdGUgcXVlcnlpbmcgYSB0aW1lcidzIHBlcmlvZC4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeFRpbWVyR2V0UGVyaW9kKCB4VGltZXIgKSA9PSBwb3J0TUFYX0RFTEFZICk7DQorDQorCQkvKiBEZW1vbnN0cmF0ZSBxdWVyeWluZyBhIHRpbWVyJ3MgbmV4dCBleHBpcnkgdGltZSwgYWx0aG91Z2ggbm90aGluZyBpcw0KKwkJZG9uZSB3aXRoIHRoZSByZXR1cm5lZCB2YWx1ZS4gIE5vdGUgaWYgdGhlIGV4cGlyeSB0aW1lIGlzIGxlc3MgdGhhbiB0aGUNCisJCW1heGltdW0gdGljayBjb3VudCB0aGVuIHRoZSBleHBpcnkgdGltZSBoYXMgb3ZlcmZsb3dlZCBmcm9tIHRoZSBjdXJyZW50DQorCQl0aW1lLiAgSW4gdGhpcyBjYXNlIHRoZSBleHBpcnkgdGltZSB3YXMgc2V0IHRvIHBvcnRNQVhfREVMQVksIHNvIGl0IGlzDQorCQlleHBlY3RlZCB0byBiZSBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgdGltZSB1bnRpbCB0aGUgY3VycmVudCB0aW1lIGhhcw0KKwkJaXRzZWxmIG92ZXJmbG93ZWQuICovDQorCQl4RXhwaXJ5VGltZSA9IHhUaW1lckdldEV4cGlyeVRpbWUoIHhUaW1lciApOw0KKwkJKCB2b2lkICkgeEV4cGlyeVRpbWU7DQorCX0NCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtNDg1LDYgKzU1MSw3IEBACiBjaGFyICpwY1Rhc2tOYW1lOw0KIHN0YXRpYyBwb3J0QkFTRV9UWVBFIHhQZXJmb3JtZWRPbmVTaG90VGVzdHMgPSBwZEZBTFNFOw0KIFRhc2tIYW5kbGVfdCB4VGVzdFRhc2s7DQorVGFza1N0YXR1c190IHhUYXNrSW5mbzsNCiANCiAJLyogRGVtb25zdHJhdGUgdGhlIHVzZSBvZiB0aGUgeFRpbWVyR2V0VGltZXJEYWVtb25UYXNrSGFuZGxlKCkgYW5kDQogCXhUYXNrR2V0SWRsZVRhc2tIYW5kbGUoKSBmdW5jdGlvbnMuICBBbHNvIHRyeSB1c2luZyB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzDQpAQCAtNDk5LDYgKzU2NiwxOCBAQAogCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBSZXR1cm5lZCBpZGxlIHRhc2sgaGFuZGxlIHdhcyBpbmNvcnJlY3QiOw0KIAl9DQogDQorCS8qIENoZWNrIHRoZSBzYW1lIGhhbmRsZSBpcyBvYnRhaW5lZCB1c2luZyB0aGUgaWRsZSB0YXNrJ3MgbmFtZS4gIEZpcnN0IHRyeQ0KKwl3aXRoIHRoZSB3cm9uZyBuYW1lLCB0aGVuIHRoZSByaWdodCBuYW1lLiAqLw0KKwlpZiggeFRhc2tHZXRIYW5kbGUoICJJZGxlIiApID09IHhJZGxlVGFza0hhbmRsZSApDQorCXsNCisJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFJldHVybmVkIGhhbmRsZSBmb3IgbmFtZSBJZGxlIHdhcyBpbmNvcnJlY3QiOw0KKwl9DQorDQorCWlmKCB4VGFza0dldEhhbmRsZSggIklETEUiICkgIT0geElkbGVUYXNrSGFuZGxlICkNCisJew0KKwkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgUmV0dXJuZWQgaGFuZGxlIGZvciBuYW1lIElkbGUgd2FzIGluY29ycmVjdCI7DQorCX0NCisNCiAJLyogQ2hlY2sgdGhlIHRpbWVyIHRhc2sgaGFuZGxlIHdhcyByZXR1cm5lZCBjb3JyZWN0bHkuICovDQogCXBjVGFza05hbWUgPSBwY1Rhc2tHZXROYW1lKCB4VGltZXJUYXNrSGFuZGxlICk7DQogCWlmKCBzdHJjbXAoIHBjVGFza05hbWUsICJUbXIgU3ZjIiApICE9IDAgKQ0KQEAgLTUwNiw2ICs1ODUsMTEgQEAKIAkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgUmV0dXJuZWQgdGltZXIgdGFzayBoYW5kbGUgd2FzIGluY29ycmVjdCI7DQogCX0NCiANCisJaWYoIHhUYXNrR2V0SGFuZGxlKCAiVG1yIFN2YyIgKSAhPSB4VGltZXJUYXNrSGFuZGxlICkNCisJew0KKwkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgUmV0dXJuZWQgaGFuZGxlIGZvciBuYW1lIFRtciBTdmMgd2FzIGluY29ycmVjdCI7DQorCX0NCisNCiAJLyogVGhpcyB0YXNrIGlzIHJ1bm5pbmcsIG1ha2Ugc3VyZSBpdCdzIHN0YXRlIGlzIHJldHVybmVkIGFzIHJ1bm5pbmcuICovDQogCWlmKCBlVGFza1N0YXRlR2V0KCB4SWRsZVRhc2tIYW5kbGUgKSAhPSBlUnVubmluZyApDQogCXsNCkBAIC01MTgsNiArNjAyLDIxIEBACiAJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFJldHVybmVkIHRpbWVyIHRhc2sgc3RhdGUgd2FzIGluY29ycmVjdCI7DQogCX0NCiANCisJLyogQWxzbyB3aXRoIHRoZSB2VGFza0dldEluZm8oKSBmdW5jdGlvbi4gKi8NCisJdlRhc2tHZXRJbmZvKCB4VGltZXJUYXNrSGFuZGxlLCAvKiBUaGUgdGFzayBiZWluZyBxdWVyaWVkLiAqLw0KKwkJCQkJICAmeFRhc2tJbmZvLAkJLyogVGhlIHN0cnVjdHVyZSBpbnRvIHdoaWNoIGluZm9ybWF0aW9uIG9uIHRoZSB0YXNrIHdpbGwgYmUgd3JpdHRlbi4gKi8NCisJCQkJCSAgcGRUUlVFLAkJCS8qIEluY2x1ZGUgdGhlIHRhc2sncyBoaWdoIHdhdGVybWFyayBpbiB0aGUgc3RydWN0dXJlLiAqLw0KKwkJCQkJICBlSW52YWxpZCApOwkJLyogSW5jbHVkZSB0aGUgdGFzayBzdGF0ZSBpbiB0aGUgc3RydWN0dXJlLiAqLw0KKw0KKwkvKiBDaGVjayB0aGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdlRhc2tHZXRJbmZvKCkgaXMgYXMgZXhwZWN0ZWQuICovDQorCWlmKCAoIHhUYXNrSW5mby5lQ3VycmVudFN0YXRlICE9IGVCbG9ja2VkICkJCQkJCQkgfHwNCisJCSggc3RyY21wKCB4VGFza0luZm8ucGNUYXNrTmFtZSwgIlRtciBTdmMiICkgIT0gMCApCQkJIHx8DQorCQkoIHhUYXNrSW5mby51eEN1cnJlbnRQcmlvcml0eSAhPSBjb25maWdUSU1FUl9UQVNLX1BSSU9SSVRZICkgfHwNCisJCSggeFRhc2tJbmZvLnhIYW5kbGUgIT0geFRpbWVyVGFza0hhbmRsZSApICkNCisJew0KKwkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgdlRhc2tHZXRJbmZvKCkgcmV0dXJuZWQgaW5jb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aW1lciB0YXNrIjsNCisJfQ0KKw0KIAkvKiBPdGhlciB0ZXN0cyB0aGF0IHNob3VsZCBvbmx5IGJlIHBlcmZvcm1lZCBvbmNlIGZvbGxvdy4gIFRoZSB0ZXN0IHRhc2sNCiAJaXMgbm90IGNyZWF0ZWQgb24gZWFjaCBpdGVyYXRpb24gYmVjYXVzZSB0byBkbyBzbyB3b3VsZCBjYXVzZSB0aGUgZGVhdGgNCiAJdGFzayB0byByZXBvcnQgYW4gZXJyb3IgKHRvbyBtYW55IHRhc2tzIHJ1bm5pbmcpLiAqLw0KQEAgLTYyMSw1ICs3MjAsNDIgQEAKIAkJI2VuZGlmDQogCX0NCiB9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2UGVybWFuZW50bHlCbG9ja2luZ1NlbWFwaG9yZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK1NlbWFwaG9yZUhhbmRsZV90IHhTZW1hcGhvcmU7DQorDQorCS8qIFByZXZlbnQgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyIGluIHRoZSBjYXNlIHRoYXQNCisJY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogVGhpcyB0YXNrIHNob3VsZCBibG9jayBvbiBhIHNlbWFwaG9yZSwgYW5kIG5ldmVyIHJldHVybi4gKi8NCisJeFNlbWFwaG9yZSA9IHhTZW1hcGhvcmVDcmVhdGVCaW5hcnkoKTsNCisJY29uZmlnQVNTRVJUKCB4U2VtYXBob3JlICk7DQorDQorCXhTZW1hcGhvcmVUYWtlKCB4U2VtYXBob3JlLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCS8qIFRoZSBhYm92ZSB4U2VtYXBob3JlVGFrZSgpIGNhbGwgc2hvdWxkIG5ldmVyIHJldHVybiwgZm9yY2UgYW4gYXNzZXJ0IGlmDQorCWl0IGRvZXMuICovDQorCWNvbmZpZ0FTU0VSVCggcHZQYXJhbWV0ZXJzICE9IE5VTEwgKTsNCisJdlRhc2tEZWxldGUoIE5VTEwgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2UGVybWFuZW50bHlCbG9ja2luZ05vdGlmaWNhdGlvblRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgdW51c2VkIHBhcmFtZXRlciBpbiB0aGUgY2FzZSB0aGF0DQorCWNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIFRoaXMgdGFzayBzaG91bGQgYmxvY2sgb24gYSB0YXNrIG5vdGlmaWNhdGlvbiwgYW5kIG5ldmVyIHJldHVybi4gKi8NCisJdWxUYXNrTm90aWZ5VGFrZSggcGRUUlVFLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCS8qIFRoZSBhYm92ZSB1bFRhc2tOb3RpZnlUYWtlKCkgY2FsbCBzaG91bGQgbmV2ZXIgcmV0dXJuLCBmb3JjZSBhbiBhc3NlcnQNCisJaWYgaXQgZG9lcy4gKi8NCisJY29uZmlnQVNTRVJUKCBwdlBhcmFtZXRlcnMgIT0gTlVMTCApOw0KKwl2VGFza0RlbGV0ZSggTlVMTCApOw0KK30NCiANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDFhOGFjNy4uMDgzNTQ1MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9IVFRQX1NlcnYuYwppbmRleCAzODgxZDE2Li4yNjVkNjY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvSFRUUF9TZXJ2LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvSFRUUF9TZXJ2LmggYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5oCmluZGV4IDA3YzhkNDkuLmQ0ODE1YWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvSFRUUF9TZXJ2LmgKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9IVFRQX1NlcnYuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBIVFRQX0gNCiAjZGVmaW5lIEhUVFBfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvTWFrZWZpbGUgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L01ha2VmaWxlCmluZGV4IDJiZGNmMTAuLjMxOTlhODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvTWFrZWZpbGUKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9NYWtlZmlsZQpAQCAtMSw1NSArMSwzMCBAQAogIy8qDQotIyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotIwkNCi0jDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSMgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0jICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0jICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotIyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSMgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0jICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotIyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jDQotIw0KLSMgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0jDQotIyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotIyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0jICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0jICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSMgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0jICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotIyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0jICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotIyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotIyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSMgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSMgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSMgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0jICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLSMNCi0jICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSMNCi0jICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSMgICAgY29udGFjdCBkZXRhaWxzLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotIyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0jICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotIyovDQorIyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorIyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjICoNCisjICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyMgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyMgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorIyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorIyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisjICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorIyAqDQorIyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyMgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyMgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorIyAqDQorIyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorIyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorIyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyMgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisjICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisjICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisjICoNCisjICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisjICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorIyAqDQorIyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyMgKi8NCiANCiANCiBDQz1hcm0tZWxmLWdjYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmMgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5jCmluZGV4IDVkYzY4OTMuLmNlMzNhNjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYzLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmggYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5oCmluZGV4IDBlZjAzNmMuLjc4NmI2OGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1AuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBUQ1BfSA0KICNkZWZpbmUgVENQX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUElTUi5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1BJU1IuYwppbmRleCBjM2EyY2FlLi4yZjVkM2E2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUElTUi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQSVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlIGZpbGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaHRtbF9wYWdlcy5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9odG1sX3BhZ2VzLmgKaW5kZXggMGY4NGJiOC4uZDU0OTdlZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9odG1sX3BhZ2VzLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9odG1sX3BhZ2VzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSFRNTF9QQUdFU19IDQogI2RlZmluZSBIVE1MX1BBR0VTX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmMuYwppbmRleCAwM2E3OWQ5Li5kNzI2MjRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjLmggYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5oCmluZGV4IDdjODIwMDMuLjg3YWIyZmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJMkNfSA0KICNkZWZpbmUgSTJDX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyY0lTUi5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmNJU1IuYwppbmRleCBiZDAzOWJjLi42ZTY5NDRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyY0lTUi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjSVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9tYWluLmMKaW5kZXggOTVmODE0NC4uOTcxNDc3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCU5PVEUgOiBUYXNrcyBydW4gaW4gc3lzdGVtIG1vZGUgYW5kIHRoZSBzY2hlZHVsZXIgcnVucyBpbiBTdXBlcnZpc29yIG1vZGUuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGUyYjk5ODEuLjNiZDk1Y2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5jCmluZGV4IGIwNWU5OTguLmM0OGY2OTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvSFRUUFRhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0hUVFBUYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVmVyeSBzaW1wbGUgdGFzayB0aGF0IHJlc3BvbmRzIHdpdGggYSBzaW5nbGUgV0VCIHBhZ2UgdG8gaHR0cCByZXF1ZXN0cy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0hUVFBUYXNrLmggYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0hUVFBUYXNrLmgKaW5kZXggMzk1YmJhNS4uMWJlMDM2MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvSFRUUFRhc2suaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBIVFRQX1RBU0tfSA0KICNkZWZpbmUgSFRUUF9UQVNLX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvbWFpbi5jCmluZGV4IDA0ZjY0YmEuLjkyM2YyYzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBJbiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGJhZjBlN2UuLjM2MTMzOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDQ2NGY1OGIuLjg3YTYwMWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMDM2MDg0NC4uN2YwOGRkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuYyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmMKaW5kZXggNTkyMzk0Ni4uNzYwY2MzMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuYworKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL2xjZC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuaCBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmgKaW5kZXggNDQ5NWY5ZS4uMGE0NjdhMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuaAorKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL2xjZC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIExDRF9JTkNfSA0KICNkZWZpbmUgTENEX0lOQ19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL21haW4uYwppbmRleCBlYmViNzJhLi4zYmJmNmFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGZhZDc2ODguLjYwZTg4NzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvdGltZXJ0ZXN0LmMKaW5kZXggMjYyYzc5My4uMjk3N2YxMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3RpbWVydGVzdC5oIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuaAppbmRleCBjZDQ1NzlkLi4zMDMzZjMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3RpbWVydGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvdGltZXJ0ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVElNRVJfVEVTVF9IDQogI2RlZmluZSBUSU1FUl9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvQmFzaWNXRUIuYwppbmRleCBhNGY5NWQ2Li5mZjA2MzlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0Jhc2ljV0VCLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUltcGxlbWVudHMgYSBzaW1wbGlzdGljIFdFQiBzZXJ2ZXIuICBFdmVyeSB0aW1lIGEgY29ubmVjdGlvbiBpcyBtYWRlIGFuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0Jhc2ljV0VCLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5oCmluZGV4IDFjY2Y2NmQuLmY1OTFlODQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0Jhc2ljV0VCLmgKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvQmFzaWNXRUIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBCQVNJQ19XRUJfU0VSVkVSX0gNCiAjZGVmaW5lIEJBU0lDX1dFQl9TRVJWRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5jCmluZGV4IDcyNjhhNjkuLjMxMDM4MmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBJbnRlcnJ1cHQgZHJpdmVuIGRyaXZlciBmb3IgdGhlIEVNQUMgcGVyaXBoZXJhbC4gIFRoaXMgZHJpdmVyIGlzIG5vdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5oCmluZGV4IGY5MmViYTEuLmIwZWQwYjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmgKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMi40DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUNfSVNSLmMgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQ19JU1IuYwppbmRleCA5ZmU2MDE1Li4xMmU4NmUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQ19JU1IuYworKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQ19JU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggY2RkODc2OS4uZDY2NTlkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZTA2NjQ4Zi4uODQxMmRmMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQi1DREMuYwppbmRleCBjNGEzZjgxLi5hNGJhMGVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0ItQ0RDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCVVTQiBDb21tdW5pY2F0aW9ucyBEZXZpY2UgQ2xhc3MgZHJpdmVyLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0ItQ0RDLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5oCmluZGV4IDRiMjE0MTguLmE3NDVjOTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0ItQ0RDLmgKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQi1DREMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBVU0JfQ0RDX0gNCiAjZGVmaW5lIFVTQl9DRENfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0JJc3IuYyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0JJc3IuYwppbmRleCA5ZjYyYTViLi45Yzc1NTQzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCSXNyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQklzci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvZGVzY3JpcHRvcnMuaCBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9kZXNjcmlwdG9ycy5oCmluZGV4IGY4NDgwOWMuLjhiNDgzNmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9kZXNjcmlwdG9ycy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9kZXNjcmlwdG9ycy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAktIERFU0NSSVBUT1IgREVGSU5JVElPTlMgLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi91c2IuaCBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi91c2IuaAppbmRleCAwNGE1ZmJiLi5jYTg4YTI2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvdXNiLmgKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL3VzYi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBEZXNjcmlwdG9yIHR5cGUgZGVmaW5pdGlvbnMuICovDQogI2RlZmluZSB1c2JERVNDUklQVE9SX1RZUEVfREVWSUNFCQkJKCAweDAxICkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWluLmMKaW5kZXggNWNiMDRhMS4uMThiY2ZiNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWtlZmlsZSBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L21ha2VmaWxlCmluZGV4IDYzYjNmOWIuLjI3NWM2ZDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L21ha2VmaWxlCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L21ha2VmaWxlCkBAIC0xLDU1ICsxLDMwIEBACiAjLyoNCi0jICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0jCQ0KLSMNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotIyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSMgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSMgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0jICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotIyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSMgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0jICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMNCi0jDQotIyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLSMNCi0jICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0jICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSMgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSMgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotIyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSMgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0jICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSMgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0jICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0jICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotIyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotIyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotIyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSMgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotIw0KLSMgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotIw0KLSMgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotIyAgICBjb250YWN0IGRldGFpbHMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0jICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSMgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0jKi8NCisjICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisjICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMgKg0KKyMgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorIyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorIyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisjICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisjICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyMgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisjICoNCisjICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorIyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorIyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisjICoNCisjICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisjICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisjICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorIyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyMgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyMgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyMgKg0KKyMgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyMgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisjICoNCisjICogMSB0YWIgPT0gNCBzcGFjZXMhDQorIyAqLw0KIA0KIENDPWFybS1lbGYtZ2NjDQogT0JKQ09QWT1hcm0tZWxmLW9iamNvcHkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYmRmMTIyMi4uNGU0ZTMyMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBjMTMyMmMzLi43N2I5OGRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBDaGFyYWN0ZXJzIG9uIHRoZSBMQ0QgYXJlIHVzZWQgdG8gc2ltdWxhdGUgTEVEJ3MuICBJbiB0aGlzIGNhc2UgdGhlICdQYXJUZXN0Jw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9tYWluLmMKaW5kZXggYWQyOTM1YS4uYjUwZDg3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL3NlcmlhbC9zZXJpYWwuYwppbmRleCBiZmU1ZGI5Li44YmVmOTRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuICAgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsQVNNLmFzbSBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3Mvc2VyaWFsL3NlcmlhbEFTTS5hc20KaW5kZXggMjU3YjhiMi4uOTI5MjA2MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsQVNNLmFzbQorKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL3NlcmlhbC9zZXJpYWxBU00uYXNtCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAicG9ydGFzbS5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGRkOWYzMy4uZWQ1ZDliMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDcwOTVkYWMuLjhlYTYzOWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBDaGFyYWN0ZXJzIG9uIHRoZSBMQ0QgYXJlIHVzZWQgdG8gc2ltdWxhdGUgTEVEJ3MuICBJbiB0aGlzIGNhc2UgdGhlICdQYXJUZXN0Jw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFpbi5jCmluZGV4IGQ2OWFhZjAuLjI0ZDZkYmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFrZWZpbGUgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFrZWZpbGUKaW5kZXggNzk2M2Y0Ni4uYTg0NGIxYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL21ha2VmaWxlCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9tYWtlZmlsZQpAQCAtMSw1NSArMSwzMCBAQAogIy8qDQotIyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotIwkNCi0jDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSMgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0jICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0jICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotIyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSMgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0jICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotIyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jDQotIw0KLSMgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0jDQotIyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotIyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0jICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0jICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSMgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0jICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotIyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0jICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotIyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotIyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSMgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSMgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSMgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0jICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLSMNCi0jICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSMNCi0jICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSMgICAgY29udGFjdCBkZXRhaWxzLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotIyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0jICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotIyovDQorIyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorIyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjICoNCisjICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyMgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyMgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorIyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorIyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisjICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorIyAqDQorIyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyMgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyMgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorIyAqDQorIyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorIyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorIyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyMgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisjICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisjICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisjICoNCisjICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisjICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorIyAqDQorIyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyMgKi8NCiANCiANCiBDQz1tc3A0MzAtZ2NjDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggNzY4MjNhOS4uOTliNjk3NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4gICANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGE5NzI4ODYuLjhjNjY2ODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBjMTMyMmMzLi43N2I5OGRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogQ2hhcmFjdGVycyBvbiB0aGUgTENEIGFyZSB1c2VkIHRvIHNpbXVsYXRlIExFRCdzLiAgSW4gdGhpcyBjYXNlIHRoZSAnUGFyVGVzdCcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL21haW4uYwppbmRleCAyYWY0YTcyLi4zMmFlZTM0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggYzU0YmM3Yi4uN2QwY2VlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvc2VyaWFsL3NlcmlhbEFTTS5zNDMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvc2VyaWFsL3NlcmlhbEFTTS5zNDMKaW5kZXggODAzZTIwZS4uOWU2ZjRjNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWxBU00uczQzCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9zZXJpYWwvc2VyaWFsQVNNLnM0MwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgIi4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcTVNQNDMwXHBvcnRhc20uaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9MaWNlbnNlL2xpY2Vuc2UudHh0IGIvRnJlZVJUT1MvTGljZW5zZS9saWNlbnNlLnR4dAppbmRleCA5NjY3OTU4Li5lNjNiOTQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9MaWNlbnNlL2xpY2Vuc2UudHh0CisrKyBiL0ZyZWVSVE9TL0xpY2Vuc2UvbGljZW5zZS50eHQKQEAgLTEsMzk5ICsxLDM4IEBACi1UaGUgRnJlZVJUT1Mgb3BlbiBzb3VyY2UgbGljZW5zZSBjb3ZlcnMgdGhlIEZyZWVSVE9TIHNvdXJjZSBmaWxlcywNCi13aGljaCBhcmUgbG9jYXRlZCBpbiB0aGUgL0ZyZWVSVE9TL1NvdXJjZSBkaXJlY3Rvcnkgb2YgdGhlIG9mZmljaWFsIEZyZWVSVE9TDQotZG93bmxvYWQuICBJdCBhbHNvIGNvdmVycyBtb3N0IG9mIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhlIGRlbW8gYXBwbGljYXRpb24NCi1wcm9qZWN0cywgd2hpY2ggYXJlIGxvY2F0ZWQgaW4gdGhlIC9GcmVlUlRPUy9EZW1vIGRpcmVjdG9yeSBvZiB0aGUgb2ZmaWNpYWwNCi1GcmVlUlRPUyBkb3dubG9hZC4gIFRoZSBkZW1vIHByb2plY3RzIG1heSBhbHNvIGluY2x1ZGUgdGhpcmQgcGFydHkgc29mdHdhcmUgdGhhdA0KLWlzIG5vdCBwYXJ0IG9mIEZyZWVSVE9TIGFuZCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IHRvIEZyZWVSVE9TLiAgRXhhbXBsZXMgb2YNCi10aGlyZCBwYXJ0eSBzb2Z0d2FyZSBpbmNsdWRlcyBoZWFkZXIgZmlsZXMgcHJvdmlkZWQgYnkgY2hpcCBvciB0b29scyB2ZW5kb3JzLA0KLWxpbmtlciBzY3JpcHRzLCBwZXJpcGhlcmFsIGRyaXZlcnMsIGV0Yy4gIEFsbCB0aGUgc29mdHdhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YNCi10aGUgL0ZyZWVSVE9TIGRpcmVjdG9yeSBpcyBlaXRoZXIgb3BlbiBzb3VyY2Ugb3IgZGlzdHJpYnV0ZWQgd2l0aCBwZXJtaXNzaW9uLA0KLWFuZCBpcyBmcmVlIGZvciB1c2UuICBGb3IgdGhlIGF2b2lkYW5jZSBvZiBkb3VidCwgcmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0IHRoZQ0KLXRvcCBvZiBlYWNoIHNvdXJjZSBmaWxlLg0KK1RoZSBGcmVlUlRPUyBrZXJuZWwgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBvcGVuIHNvdXJjZSBsaWNlbnNlLCB0aGUgdGV4dCBvZg0KK3doaWNoIGlzIHByb3ZpZGVkIGJlbG93Lg0KIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitUaGlzIGxpY2Vuc2UgY292ZXJzIHRoZSBGcmVlUlRPUyBrZXJuZWwgc291cmNlIGZpbGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbiB0aGUNCisvRnJlZVJUT1MvU291cmNlIGRpcmVjdG9yeSBvZiB0aGUgb2ZmaWNpYWwgRnJlZVJUT1Mga2VybmVsIGRvd25sb2FkLiAgSXQgYWxzbw0KK2NvdmVycyBtb3N0IG9mIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhlIGRlbW8gYXBwbGljYXRpb24gcHJvamVjdHMsIHdoaWNoIGFyZQ0KK2xvY2F0ZWQgaW4gdGhlIC9GcmVlUlRPUy9EZW1vIGRpcmVjdG9yeSBvZiB0aGUgb2ZmaWNpYWwgRnJlZVJUT1MgZG93bmxvYWQuICBUaGUNCitkZW1vIHByb2plY3RzIG1heSBhbHNvIGluY2x1ZGUgdGhpcmQgcGFydHkgc29mdHdhcmUgdGhhdCBpcyBub3QgcGFydCBvZiBGcmVlUlRPUw0KK2FuZCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IHRvIEZyZWVSVE9TLiAgRXhhbXBsZXMgb2YgdGhpcmQgcGFydHkgc29mdHdhcmUNCitpbmNsdWRlcyBoZWFkZXIgZmlsZXMgcHJvdmlkZWQgYnkgY2hpcCBvciB0b29scyB2ZW5kb3JzLCBsaW5rZXIgc2NyaXB0cywNCitwZXJpcGhlcmFsIGRyaXZlcnMsIGV0Yy4gIEFsbCB0aGUgc29mdHdhcmUgaW4gc3ViZGlyZWN0b3JpZXMgb2YgdGhlIC9GcmVlUlRPUw0KK2RpcmVjdG9yeSBpcyBlaXRoZXIgb3BlbiBzb3VyY2Ugb3IgZGlzdHJpYnV0ZWQgd2l0aCBwZXJtaXNzaW9uLCBhbmQgaXMgZnJlZSBmb3INCit1c2UuICBGb3IgdGhlIGF2b2lkYW5jZSBvZiBkb3VidCwgcmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgZWFjaA0KK3NvdXJjZSBmaWxlLg0KIA0KLU5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZSBhDQotY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UNCi1jb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzLg0KIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitMaWNlbnNlIHRleHQ6DQorLS0tLS0tLS0tLS0tLQ0KIA0KLUFwcGx5aW5nIHRvIEZyZWVSVE9TIFY4LjIuMyB1cCB0byB0aGUgbGF0ZXN0IHZlcnNpb24sIHRoZSBGcmVlUlRPUyBHUEwgRXhjZXB0aW9uDQotVGV4dCBmb2xsb3dzOg0KK0NvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQordGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCit0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQordXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCit0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQogDQotQW55IEZyZWVSVE9TICpzb3VyY2UgY29kZSosIHdoZXRoZXIgbW9kaWZpZWQgb3IgaW4gaXQncyBvcmlnaW5hbCByZWxlYXNlIGZvcm0sDQotb3Igd2hldGhlciBpbiB3aG9sZSBvciBpbiBwYXJ0LCBjYW4gb25seSBiZSBkaXN0cmlidXRlZCBieSB5b3UgdW5kZXIgdGhlIHRlcm1zDQotb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHBsdXMgdGhpcyBleGNlcHRpb24uICBBbiBpbmRlcGVuZGVudCBtb2R1bGUgaXMNCi1hIG1vZHVsZSB3aGljaCBpcyBub3QgZGVyaXZlZCBmcm9tIG9yIGJhc2VkIG9uIEZyZWVSVE9TLg0KK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KK2NvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KIA0KLUNsYXVzZSAxOg0KLQ0KLUxpbmtpbmcgRnJlZVJUT1Mgd2l0aCBvdGhlciBtb2R1bGVzIGlzIG1ha2luZyBhIGNvbWJpbmVkIHdvcmsgYmFzZWQgb24gRnJlZVJUT1MuDQotVGh1cywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWMiBjb3ZlciB0aGUNCi13aG9sZSBjb21iaW5hdGlvbi4NCi0NCi1BcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YgRnJlZVJUT1MgZ2l2ZSB5b3UgcGVybWlzc2lvbiB0bw0KLWxpbmsgRnJlZVJUT1Mgd2l0aCBpbmRlcGVuZGVudCBtb2R1bGVzIHRvIHByb2R1Y2UgYSBzdGF0aWNhbGx5IGxpbmtlZA0KLWV4ZWN1dGFibGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGxpY2Vuc2UgdGVybXMgb2YgdGhlc2UgaW5kZXBlbmRlbnQgbW9kdWxlcywgYW5kIHRvDQotY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsDQotcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0LCBmb3IgZWFjaCBsaW5rZWQgaW5kZXBlbmRlbnQgbW9kdWxlLCB0aGUgdGVybXMgYW5kDQotY29uZGl0aW9ucyBvZiB0aGUgbGljZW5zZSBvZiB0aGF0IG1vZHVsZS4gIEFuIGluZGVwZW5kZW50IG1vZHVsZSBpcyBhIG1vZHVsZQ0KLXdoaWNoIGlzIG5vdCBkZXJpdmVkIGZyb20gb3IgYmFzZWQgb24gRnJlZVJUT1MuDQotDQotQ2xhdXNlIDI6DQotDQotRnJlZVJUT1MgbWF5IG5vdCBiZSB1c2VkIGZvciBhbnkgY29tcGV0aXRpdmUgb3IgY29tcGFyYXRpdmUgcHVycG9zZSwgaW5jbHVkaW5nDQotdGhlIHB1YmxpY2F0aW9uIG9mIGFueSBmb3JtIG9mIHJ1biB0aW1lIG9yIGNvbXBpbGUgdGltZSBtZXRyaWMsIHdpdGhvdXQgdGhlDQotZXhwcmVzcyBwZXJtaXNzaW9uIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiAodGhpcyBpcyB0aGUgbm9ybSB3aXRoaW4gdGhlDQotaW5kdXN0cnkgYW5kIGlzIGludGVuZGVkIHRvIGVuc3VyZSBpbmZvcm1hdGlvbiBhY2N1cmFjeSkuDQotDQotDQotDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi0NCi0NCi1UaGUgc3RhbmRhcmQgR1BMIFYyIHRleHQ6DQotDQotDQotCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UNCi0JCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQ0KLQ0KLSBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQotICAgICAgICAgICAgICAgICAgICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBDQotIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KLSBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4NCi0NCi0JCQkgICAgUHJlYW1ibGUNCi0NCi0gIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXINCi1mcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLUxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUNCi1zb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcw0KLUdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlDQotRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bw0KLXVzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkNCi10aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8NCi15b3VyIHByb2dyYW1zLCB0b28uDQotDQotICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90DQotcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQ0KLWhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCi10aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQNCi1pZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdA0KLWluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4NCi0NCi0gIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQNCi1hbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuDQotVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UNCi1kaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuDQotDQotICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQotZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0DQoteW91IGhhdmUuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUNCi1zb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyDQotcmlnaHRzLg0KLQ0KLSAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZA0KLSgyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksDQotZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4NCi0NCi0gIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluDQotdGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUNCi1zb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UNCi13YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbw0KLXRoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhlIG9yaWdpbmFsDQotYXV0aG9ycycgcmVwdXRhdGlvbnMuDQotDQotICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQ0KLXBhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUNCi1wcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlDQotcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55DQotcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4NCi0NCi0gIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kDQotbW9kaWZpY2F0aW9uIGZvbGxvdy4NCi0MDQotCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UNCi0gICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04NCi0NCi0gIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMNCi1hIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZA0KLXVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywNCi1yZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSINCi1tZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Og0KLXRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsDQotZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXINCi1sYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluDQotdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuDQotDQotQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QNCi1jb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mDQotcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQ0KLWlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlDQotUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4NCi1XaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4NCi0NCi0gIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncw0KLXNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQ0KLWNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUNCi1jb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlDQotbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5Ow0KLWFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UNCi1hbG9uZyB3aXRoIHRoZSBQcm9ncmFtLg0KLQ0KLVlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZA0KLXlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuDQotDQotICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uDQotb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZA0KLWRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQ0KLWFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6DQotDQotICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcw0KLSAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLg0KLQ0KLSAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4NCi0gICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55DQotICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkDQotICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4NCi0NCi0gICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQ0KLSAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoDQotICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4NCi0gICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhDQotICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQ0KLSAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyDQotICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzDQotICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0DQotICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24NCi0gICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pDQotDA0KLVRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYNCi1pZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLA0KLWFuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbg0KLXRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UNCi1zZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UNCi1kaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQNCi1vbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YNCi10aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQ0KLWVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4NCi0NCi1UaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QNCi15b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8NCi1leGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3INCi1jb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLg0KLQ0KLUluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0NCi13aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YNCi1hIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcg0KLXRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuDQotDQotICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwNCi11bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YNCi1TZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6DQotDQotICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUNCi0gICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zDQotICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLA0KLQ0KLSAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQ0KLSAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cg0KLSAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlDQotICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUNCi0gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0NCi0gICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLA0KLQ0KLSAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcg0KLSAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcw0KLSAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQ0KLSAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoDQotICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQ0KLQ0KLVRoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3INCi1tYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQ0KLWNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55DQotYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvDQotY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQ0KLXNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQ0KLWFueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5DQotZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUNCi1vcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudA0KLWl0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4NCi0NCi1JZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nDQotYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudA0KLWFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcw0KLWRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdA0KLWNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuDQotDA0KLSAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtDQotZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdA0KLW90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcw0KLXZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4NCi1Ib3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcg0KLXRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoDQotcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLg0KLQ0KLSAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90DQotc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3INCi1kaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUNCi1wcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5DQotbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlDQotUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQNCi1hbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nDQotdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuDQotDQotICA2LiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlDQotUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUNCi1vcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvDQotdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXINCi1yZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uDQotWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8NCi10aGlzIExpY2Vuc2UuDQotDQotICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50DQotaW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwNCi1jb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yDQotb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdA0KLWV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90DQotZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcw0KLUxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UNCi1tYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50DQotbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQ0KLWFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbg0KLXRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8NCi1yZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLg0KLQ0KLUlmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcg0KLWFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8NCi1hcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcg0KLWNpcmN1bXN0YW5jZXMuDQotDQotSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQ0KLXBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55DQotc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQ0KLWludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcw0KLWltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQ0KLWdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQNCi10aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdA0KLXN5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcNCi10byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QNCi1pbXBvc2UgdGhhdCBjaG9pY2UuDQotDQotVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvDQotYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuDQotDA0KLSAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4NCi1jZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUNCi1vcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlDQotbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nDQotdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZw0KLWNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcw0KLXRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLg0KLQ0KLSAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMNCi1vZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwNCi1iZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8NCi1hZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCi0NCi1FYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtDQotc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkNCi1sYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zDQotZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUNCi1Tb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mDQotdGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQ0KLUZvdW5kYXRpb24uDQotDQotICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlDQotcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcg0KLXRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQ0KLVNvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcw0KLW1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzDQotb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZA0KLW9mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5Lg0KLQ0KLQkJCSAgICBOTyBXQVJSQU5UWQ0KLQ0KLSAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZDQotRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVODQotT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUw0KLVBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEDQotT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCi1NRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTDQotVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQ0KLVBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLA0KLVJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KLQ0KLSAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORw0KLVdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1INCi1SRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLA0KLUlOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORw0KLU9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQNCi1UTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkNCi1ZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUg0KLVBST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQ0KLVBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0NCi0JCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TDQotDA0KLQkgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zDQotDQotICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0DQotcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdA0KLWZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLg0KLQ0KLSAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QNCi10byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5DQotY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QNCi10aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4NCi0NCi0gICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4NCi0gICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4NCi0NCi0gICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCi0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSoqIGFzIHB1Ymxpc2hlZCBieQ0KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KLQ0KLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KLQ0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KLSAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBDQotDQotDQotQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuDQotDQotSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcw0KLXdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6DQotDQotICAgIEdub21vdmlzaW9uIHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgeWVhciBuYW1lIG9mIGF1dGhvcg0KLSAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuDQotICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQNCi0gICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLg0KLQ0KLVRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQ0KLXBhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkNCi1iZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUNCi1tb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLg0KLQ0KLVlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyDQotc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYNCi1uZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6DQotDQotICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtDQotICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4NCi0NCi0gIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQ0KLSAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UNCi0NCi1UaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8NCi1wcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQ0KLWNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQ0KLWxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbA0KLVB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLg0KK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCitGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCitDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCitJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KK0NPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2Nyb3V0aW5lLmMgYi9GcmVlUlRPUy9Tb3VyY2UvY3JvdXRpbmUuYwppbmRleCA1Njk0M2E1Li42MDg0MjAxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvY3JvdXRpbmUuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvY3JvdXRpbmUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMgYi9GcmVlUlRPUy9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMKaW5kZXggNmIyNDZmOS4uOWRhMDQxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2V2ZW50X2dyb3Vwcy5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9ldmVudF9ncm91cHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KQEAgLTI2OSw2ICsyMjgsNyBAQAogCQkJCS8qIFRoZSByZW5kZXp2b3VzIGJpdHMgd2VyZSBub3Qgc2V0LCBidXQgbm8gYmxvY2sgdGltZSB3YXMNCiAJCQkJc3BlY2lmaWVkIC0ganVzdCByZXR1cm4gdGhlIGN1cnJlbnQgZXZlbnQgYml0IHZhbHVlLiAqLw0KIAkJCQl1eFJldHVybiA9IHB4RXZlbnRCaXRzLT51eEV2ZW50Qml0czsNCisJCQkJeFRpbWVvdXRPY2N1cnJlZCA9IHBkVFJVRTsNCiAJCQl9DQogCQl9DQogCX0NCkBAIC0zMjcsNiArMjg3LDkgQEAKIA0KIAl0cmFjZUVWRU5UX0dST1VQX1NZTkNfRU5EKCB4RXZlbnRHcm91cCwgdXhCaXRzVG9TZXQsIHV4Qml0c1RvV2FpdEZvciwgeFRpbWVvdXRPY2N1cnJlZCApOw0KIA0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdHJhY2UgbWFjcm9zIGFyZSBub3QgdXNlZC4gKi8NCisJKCB2b2lkICkgeFRpbWVvdXRPY2N1cnJlZDsNCisNCiAJcmV0dXJuIHV4UmV0dXJuOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC0zNzgsNiArMzQxLDcgQEAKIAkJCS8qIFRoZSB3YWl0IGNvbmRpdGlvbiBoYXMgbm90IGJlZW4gbWV0LCBidXQgbm8gYmxvY2sgdGltZSB3YXMNCiAJCQlzcGVjaWZpZWQsIHNvIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlLiAqLw0KIAkJCXV4UmV0dXJuID0gdXhDdXJyZW50RXZlbnRCaXRzOw0KKwkJCXhUaW1lb3V0T2NjdXJyZWQgPSBwZFRSVUU7DQogCQl9DQogCQllbHNlDQogCQl7DQpAQCAtNDU5LDExICs0MjMsOSBAQAogCQkJCXsNCiAJCQkJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCiAJCQkJfQ0KKwkJCQl4VGltZW91dE9jY3VycmVkID0gcGRUUlVFOw0KIAkJCX0NCiAJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLQ0KLQkJCS8qIFByZXZlbnQgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0cmFjZSBtYWNyb3MgYXJlIG5vdCB1c2VkLiAqLw0KLQkJCXhUaW1lb3V0T2NjdXJyZWQgPSBwZEZBTFNFOw0KIAkJfQ0KIAkJZWxzZQ0KIAkJew0KQEAgLTQ3NSw2ICs0MzcsOSBAQAogCX0NCiAJdHJhY2VFVkVOVF9HUk9VUF9XQUlUX0JJVFNfRU5EKCB4RXZlbnRHcm91cCwgdXhCaXRzVG9XYWl0Rm9yLCB4VGltZW91dE9jY3VycmVkICk7DQogDQorCS8qIFByZXZlbnQgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0cmFjZSBtYWNyb3MgYXJlIG5vdCB1c2VkLiAqLw0KKwkoIHZvaWQgKSB4VGltZW91dE9jY3VycmVkOw0KKw0KIAlyZXR1cm4gdXhSZXR1cm47DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KQEAgLTc1OCw1ICs3MjMsMTcgQEAKIAkJcmV0dXJuIHhSZXR1cm47DQogCX0NCiANCi0jZW5kaWYNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwl2b2lkIHZFdmVudEdyb3VwU2V0TnVtYmVyKCB2b2lkICogeEV2ZW50R3JvdXAsIFVCYXNlVHlwZV90IHV4RXZlbnRHcm91cE51bWJlciApDQorCXsNCisJCSggKCBFdmVudEdyb3VwX3QgKiApIHhFdmVudEdyb3VwICktPnV4RXZlbnRHcm91cE51bWJlciA9IHV4RXZlbnRHcm91cE51bWJlcjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9GcmVlUlRPUy5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvRnJlZVJUT1MuaAppbmRleCA2MTU0ZGIxLi5kZmQ4OWNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9GcmVlUlRPUy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL0ZyZWVSVE9TLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5DX0ZSRUVSVE9TX0gNCiAjZGVmaW5lIElOQ19GUkVFUlRPU19IDQpAQCAtMzk2LDYgKzM1NSwxNCBAQAogCSNkZWZpbmUgdHJhY2VCTE9DS0lOR19PTl9RVUVVRV9SRUNFSVZFKCBweFF1ZXVlICkNCiAjZW5kaWYNCiANCisjaWZuZGVmIHRyYWNlQkxPQ0tJTkdfT05fUVVFVUVfUEVFSw0KKwkvKiBUYXNrIGlzIGFib3V0IHRvIGJsb2NrIGJlY2F1c2UgaXQgY2Fubm90IHJlYWQgZnJvbSBhDQorCXF1ZXVlL211dGV4L3NlbWFwaG9yZS4gIHB4UXVldWUgaXMgYSBwb2ludGVyIHRvIHRoZSBxdWV1ZS9tdXRleC9zZW1hcGhvcmUNCisJdXBvbiB3aGljaCB0aGUgcmVhZCB3YXMgYXR0ZW1wdGVkLiAgcHhDdXJyZW50VENCIHBvaW50cyB0byB0aGUgVENCIG9mIHRoZQ0KKwl0YXNrIHRoYXQgYXR0ZW1wdGVkIHRoZSByZWFkLiAqLw0KKwkjZGVmaW5lIHRyYWNlQkxPQ0tJTkdfT05fUVVFVUVfUEVFSyggcHhRdWV1ZSApDQorI2VuZGlmDQorDQogI2lmbmRlZiB0cmFjZUJMT0NLSU5HX09OX1FVRVVFX1NFTkQNCiAJLyogVGFzayBpcyBhYm91dCB0byBibG9jayBiZWNhdXNlIGl0IGNhbm5vdCB3cml0ZSB0byBhDQogCXF1ZXVlL211dGV4L3NlbWFwaG9yZS4gIHB4UXVldWUgaXMgYSBwb2ludGVyIHRvIHRoZSBxdWV1ZS9tdXRleC9zZW1hcGhvcmUNCkBAIC00ODIsNiArNDQ5LDEwIEBACiAJI2RlZmluZSB0cmFjZVFVRVVFX1BFRUsoIHB4UXVldWUgKQ0KICNlbmRpZg0KIA0KKyNpZm5kZWYgdHJhY2VRVUVVRV9QRUVLX0ZBSUxFRA0KKwkjZGVmaW5lIHRyYWNlUVVFVUVfUEVFS19GQUlMRUQoIHB4UXVldWUgKQ0KKyNlbmRpZg0KKw0KICNpZm5kZWYgdHJhY2VRVUVVRV9QRUVLX0ZST01fSVNSDQogCSNkZWZpbmUgdHJhY2VRVUVVRV9QRUVLX0ZST01fSVNSKCBweFF1ZXVlICkNCiAjZW5kaWYNCkBAIC02NjYsNiArNjM3LDU4IEBACiAJI2RlZmluZSB0cmFjZVRBU0tfTk9USUZZX0dJVkVfRlJPTV9JU1IoKQ0KICNlbmRpZg0KIA0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9GQUlMRUQNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFX0ZBSUxFRCggeElzTWVzc2FnZUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFX1NUQVRJQ19GQUlMRUQNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFX1NUQVRJQ19GQUlMRUQoIHhSZXR1cm4sIHhJc01lc3NhZ2VCdWZmZXIgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURQ0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9DUkVBVEUoIHB4U3RyZWFtQnVmZmVyLCB4SXNNZXNzYWdlQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9ERUxFVEUNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfREVMRVRFKCB4U3RyZWFtQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9SRVNFVA0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9SRVNFVCggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZUJMT0NLSU5HX09OX1NUUkVBTV9CVUZGRVJfU0VORA0KKwkjZGVmaW5lIHRyYWNlQkxPQ0tJTkdfT05fU1RSRUFNX0JVRkZFUl9TRU5EKCB4U3RyZWFtQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkQoIHhTdHJlYW1CdWZmZXIsIHhCeXRlc1NlbnQgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkRfRkFJTEVEDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkRfRkFJTEVEKCB4U3RyZWFtQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EX0ZST01fSVNSDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkRfRlJPTV9JU1IoIHhTdHJlYW1CdWZmZXIsIHhCeXRlc1NlbnQgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VCTE9DS0lOR19PTl9TVFJFQU1fQlVGRkVSX1JFQ0VJVkUNCisJI2RlZmluZSB0cmFjZUJMT0NLSU5HX09OX1NUUkVBTV9CVUZGRVJfUkVDRUlWRSggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfUkVDRUlWRQ0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFKCB4U3RyZWFtQnVmZmVyLCB4UmVjZWl2ZWRMZW5ndGggKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkVfRkFJTEVEDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkVfRkFJTEVEKCB4U3RyZWFtQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZST01fSVNSDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkVfRlJPTV9JU1IoIHhTdHJlYW1CdWZmZXIsIHhSZWNlaXZlZExlbmd0aCApDQorI2VuZGlmDQorDQogI2lmbmRlZiBjb25maWdHRU5FUkFURV9SVU5fVElNRV9TVEFUUw0KIAkjZGVmaW5lIGNvbmZpZ0dFTkVSQVRFX1JVTl9USU1FX1NUQVRTIDANCiAjZW5kaWYNCkBAIC04NDYsNiArODY5LDMyIEBACiAJI2RlZmluZSBjb25maWdFTkFCTEVfQkFDS1dBUkRfQ09NUEFUSUJJTElUWSAxDQogI2VuZGlmDQogDQorI2lmbmRlZiBjb25maWdQUklOVEYNCisJLyogY29uZmlnUFJJTlRGKCkgd2FzIG5vdCBkZWZpbmVkLCBzbyBkZWZpbmUgaXQgYXdheSB0byBub3RoaW5nLiAgVG8gdXNlDQorCWNvbmZpZ1BSSU5URigpIHRoZW4gZGVmaW5lIGl0IGFzIGZvbGxvd3MgKHdoZXJlIE15UHJpbnRGdW5jdGlvbigpIGlzDQorCXByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIpOg0KKw0KKwl2b2lkIE15UHJpbnRGdW5jdGlvbihjb25zdCBjaGFyICpwY0Zvcm1hdCwgLi4uICk7DQorCSNkZWZpbmUgY29uZmlnUFJJTlRGKCBYICkgICBNeVByaW50RnVuY3Rpb24gWA0KKw0KKwlUaGVuIGNhbGwgbGlrZSBhIHN0YW5kYXJkIHByaW50ZigpIGZ1bmN0aW9uLCBidXQgcGxhY2luZyBicmFja2V0cyBhcm91bmQNCisJYWxsIHBhcmFtZXRlcnMgc28gdGhleSBhcmUgcGFzc2VkIGFzIGEgc2luZ2xlIHBhcmFtZXRlci4gIEZvciBleGFtcGxlOg0KKwljb25maWdQUklOVEYoICgiVmFsdWUgPSAlZCIsIE15VmFyaWFibGUpICk7ICovDQorCSNkZWZpbmUgY29uZmlnUFJJTlRGKCBYICkNCisjZW5kaWYNCisNCisjaWZuZGVmIGNvbmZpZ01BWA0KKwkvKiBUaGUgYXBwbGljYXRpb24gd3JpdGVyIGhhcyBub3QgcHJvdmlkZWQgdGhlaXIgb3duIE1BWCBtYWNybywgc28gZGVmaW5lDQorCXRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbi4gKi8NCisJI2RlZmluZSBjb25maWdNQVgoIGEsIGIgKSAoICggKCBhICkgPiAoIGIgKSApID8gKCBhICkgOiAoIGIgKSApDQorI2VuZGlmDQorDQorI2lmbmRlZiBjb25maWdNSU4NCisJLyogVGhlIGFwcGxpY2F0aW9uIHdyaXRlciBoYXMgbm90IHByb3ZpZGVkIHRoZWlyIG93biBNQVggbWFjcm8sIHNvIGRlZmluZQ0KKwl0aGUgZm9sbG93aW5nIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICovDQorCSNkZWZpbmUgY29uZmlnTUlOKCBhLCBiICkgKCAoICggYSApIDwgKCBiICkgKSA/ICggYSApIDogKCBiICkgKQ0KKyNlbmRpZg0KKw0KICNpZiBjb25maWdFTkFCTEVfQkFDS1dBUkRfQ09NUEFUSUJJTElUWSA9PSAxDQogCSNkZWZpbmUgZVRhc2tTdGF0ZUdldCBlVGFza0dldFN0YXRlDQogCSNkZWZpbmUgcG9ydFRpY2tUeXBlIFRpY2tUeXBlX3QNCkBAIC0xMDg1LDYgKzExMzQsMzMgQEAKIA0KIH0gU3RhdGljVGltZXJfdDsNCiANCisvKg0KKyogSW4gbGluZSB3aXRoIHNvZnR3YXJlIGVuZ2luZWVyaW5nIGJlc3QgcHJhY3RpY2UsIGVzcGVjaWFsbHkgd2hlbiBzdXBwbHlpbmcgYQ0KKyogbGlicmFyeSB0aGF0IGlzIGxpa2VseSB0byBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zLCBGcmVlUlRPUyBpbXBsZW1lbnRzIGENCisqIHN0cmljdCBkYXRhIGhpZGluZyBwb2xpY3kuICBUaGlzIG1lYW5zIHRoZSBzdHJlYW0gYnVmZmVyIHN0cnVjdHVyZSB1c2VkDQorKiBpbnRlcm5hbGx5IGJ5IEZyZWVSVE9TIGlzIG5vdCBhY2Nlc3NpYmxlIHRvIGFwcGxpY2F0aW9uIGNvZGUuICBIb3dldmVyLCBpZg0KKyogdGhlIGFwcGxpY2F0aW9uIHdyaXRlciB3YW50cyB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBtZW1vcnkgcmVxdWlyZWQgdG8NCisqIGNyZWF0ZSBhIHN0cmVhbSBidWZmZXIgdGhlbiB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBvYmplY3QgbmVlZHMgdG8gYmUNCisqIGtub3cuICBUaGUgU3RhdGljU3RyZWFtQnVmZmVyX3Qgc3RydWN0dXJlIGJlbG93IGlzIHByb3ZpZGVkIGZvciB0aGlzIHB1cnBvc2UuDQorKiBJdHMgc2l6ZSBhbmQgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBhcmUgZ3VhcmFudGVlZCB0byBtYXRjaCB0aG9zZSBvZiB0aGUNCisqIGdlbnVpbmUgc3RydWN0dXJlLCBubyBtYXR0ZXIgd2hpY2ggYXJjaGl0ZWN0dXJlIGlzIGJlaW5nIHVzZWQsIGFuZCBubyBtYXR0ZXINCisqIGhvdyB0aGUgdmFsdWVzIGluIEZyZWVSVE9TQ29uZmlnLmggYXJlIHNldC4gIEl0cyBjb250ZW50cyBhcmUgc29tZXdoYXQNCisqIG9iZnVzY2F0ZWQgaW4gdGhlIGhvcGUgdXNlcnMgd2lsbCByZWNvZ25pc2UgdGhhdCBpdCB3b3VsZCBiZSB1bndpc2UgdG8gbWFrZQ0KKyogZGlyZWN0IHVzZSBvZiB0aGUgc3RydWN0dXJlIG1lbWJlcnMuDQorKi8NCit0eXBlZGVmIHN0cnVjdCB4U1RBVElDX1NUUkVBTV9CVUZGRVINCit7DQorCXNpemVfdCB1eER1bW15MVsgNCBdOw0KKwl2b2lkICogcHZEdW1teTJbIDMgXTsNCisJdWludDhfdCB1Y0R1bW15MzsNCisJI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwkJVUJhc2VUeXBlX3QgdXhEdW1teTQ7DQorCSNlbmRpZg0KK30gU3RhdGljU3RyZWFtQnVmZmVyX3Q7DQorDQorLyogTWVzc2FnZSBidWZmZXJzIGFyZSBidWlsdCBvbiBzdHJlYW0gYnVmZmVycy4gKi8NCit0eXBlZGVmIFN0YXRpY1N0cmVhbUJ1ZmZlcl90IFN0YXRpY01lc3NhZ2VCdWZmZXJfdDsNCisNCiAjaWZkZWYgX19jcGx1c3BsdXMNCiB9DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvU3RhY2tNYWNyb3MuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL1N0YWNrTWFjcm9zLmgKaW5kZXggNmY2NmM0Mi4uNTVjNTIxYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvU3RhY2tNYWNyb3MuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9TdGFja01hY3Jvcy5oCkBAIC0xLDc1ICsxLDM4IEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNUQUNLX01BQ1JPU19IDQogI2RlZmluZSBTVEFDS19NQUNST1NfSA0KIA0KKyNpZm5kZWYgX01TQ19WRVIgLyogVmlzdWFsIFN0dWRpbyBkb2Vzbid0IHN1cHBvcnQgI3dhcm5pbmcuICovDQorCSN3YXJuaW5nIFRoZSBuYW1lIG9mIHRoaXMgZmlsZSBoYXMgY2hhbmdlZCB0byBzdGFja19tYWNyb3MuaC4gIFBsZWFzZSB1cGRhdGUgeW91ciBjb2RlIGFjY29yZGluZ2x5LiAgVGhpcyBzb3VyY2UgZmlsZSAod2hpY2ggaGFzIHRoZSBvcmlnaW5hbCBuYW1lKSB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VkLg0KKyNlbmRpZg0KKw0KIC8qDQogICogQ2FsbCB0aGUgc3RhY2sgb3ZlcmZsb3cgaG9vayBmdW5jdGlvbiBpZiB0aGUgc3RhY2sgb2YgdGhlIHRhc2sgYmVpbmcgc3dhcHBlZA0KICAqIG91dCBpcyBjdXJyZW50bHkgb3ZlcmZsb3dlZCwgb3IgbG9va3MgbGlrZSBpdCBtaWdodCBoYXZlIG92ZXJmbG93ZWQgaW4gdGhlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvY3JvdXRpbmUuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2Nyb3V0aW5lLmgKaW5kZXggNWJlYzhhYS4uYjQ0NDdjNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvY3JvdXRpbmUuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9jcm91dGluZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPX1JPVVRJTkVfSA0KICNkZWZpbmUgQ09fUk9VVElORV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvZGVwcmVjYXRlZF9kZWZpbml0aW9ucy5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvZGVwcmVjYXRlZF9kZWZpbml0aW9ucy5oCmluZGV4IDA3YTQ0N2MuLjNmZDNhNmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2RlcHJlY2F0ZWRfZGVmaW5pdGlvbnMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9kZXByZWNhdGVkX2RlZmluaXRpb25zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgREVQUkVDQVRFRF9ERUZJTklUSU9OU19IDQogI2RlZmluZSBERVBSRUNBVEVEX0RFRklOSVRJT05TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9ldmVudF9ncm91cHMuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2V2ZW50X2dyb3Vwcy5oCmluZGV4IGU4OTIyNmUuLmM3ZDk3ZDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2V2ZW50X2dyb3Vwcy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2V2ZW50X2dyb3Vwcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEVWRU5UX0dST1VQU19IDQogI2RlZmluZSBFVkVOVF9HUk9VUFNfSA0KQEAgLTc4Niw2ICs3NDUsNyBAQAogDQogI2lmIChjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSkNCiAJVUJhc2VUeXBlX3QgdXhFdmVudEdyb3VwR2V0TnVtYmVyKCB2b2lkKiB4RXZlbnRHcm91cCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorCXZvaWQgdkV2ZW50R3JvdXBTZXROdW1iZXIoIHZvaWQqIHhFdmVudEdyb3VwLCBVQmFzZVR5cGVfdCB1eEV2ZW50R3JvdXBOdW1iZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KICNlbmRpZg0KIA0KICNpZmRlZiBfX2NwbHVzcGx1cw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2xpc3QuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2xpc3QuaAppbmRleCBlMDhmY2FiLi45MjhhOGViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9saXN0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbGlzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgaXMgdGhlIGxpc3QgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0aGUgc2NoZWR1bGVyLiAgV2hpbGUgaXQgaXMgdGFpbG9yZWQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tZXNzYWdlX2J1ZmZlci5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbWVzc2FnZV9idWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWFiMGEyCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbWVzc2FnZV9idWZmZXIuaApAQCAtMCwwICsxLDc4MCBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisNCisvKg0KKyAqIE1lc3NhZ2UgYnVmZmVycyBidWlsZCBmdW5jdGlvbmFsaXR5IG9uIHRvcCBvZiBGcmVlUlRPUyBzdHJlYW0gYnVmZmVycy4NCisgKiBXaGVyZWFzIHN0cmVhbSBidWZmZXJzIGFyZSB1c2VkIHRvIHNlbmQgYSBjb250aW51b3VzIHN0cmVhbSBvZiBkYXRhIGZyb20gb25lDQorICogdGFzayBvciBpbnRlcnJ1cHQgdG8gYW5vdGhlciwgbWVzc2FnZSBidWZmZXJzIGFyZSB1c2VkIHRvIHNlbmQgdmFyaWFibGUNCisgKiBsZW5ndGggZGlzY3JldGUgbWVzc2FnZXMgZnJvbSBvbmUgdGFzayBvciBpbnRlcnJ1cHQgdG8gYW5vdGhlci4gIFRoZWlyDQorICogaW1wbGVtZW50YXRpb24gaXMgbGlnaHQgd2VpZ2h0LCBtYWtpbmcgdGhlbSBwYXJ0aWN1bGFybHkgc3VpdGVkIGZvciBpbnRlcnJ1cHQNCisgKiB0byB0YXNrIGFuZCBjb3JlIHRvIGNvcmUgY29tbXVuaWNhdGlvbiBzY2VuYXJpb3MuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyU2VuZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHNlbmQNCisgKiBibG9jayB0aW1lIHRvIDAuICBMaWtld2lzZSwgaWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgcmVhZGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclJlYWQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSByZWNlaXZlDQorICogdGltZW91dCB0byAwLg0KKyAqDQorICogTWVzc2FnZSBidWZmZXJzIGhvbGQgdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLiAgVG8gZW5hYmxlIHRoYXQsIHdoZW4gYQ0KKyAqIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIgYW4gYWRkaXRpb25hbCBzaXplb2YoIHNpemVfdCApIGJ5dGVzDQorICogYXJlIGFsc28gd3JpdHRlbiB0byBzdG9yZSB0aGUgbWVzc2FnZSdzIGxlbmd0aCAodGhhdCBoYXBwZW5zIGludGVybmFsbHksIHdpdGgNCisgKiB0aGUgQVBJIGZ1bmN0aW9uKS4gIHNpemVvZiggc2l6ZV90ICkgaXMgdHlwaWNhbGx5IDQgYnl0ZXMgb24gYSAzMi1iaXQNCisgKiBhcmNoaXRlY3R1cmUsIHNvIHdyaXRpbmcgYSAxMCBieXRlIG1lc3NhZ2UgdG8gYSBtZXNzYWdlIGJ1ZmZlciBvbiBhIDMyLWJpdA0KKyAqIGFyY2hpdGVjdHVyZSB3aWxsIGFjdHVhbGx5IHJlZHVjZSB0aGUgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSBtZXNzYWdlIGJ1ZmZlcg0KKyAqIGJ5IDE0IGJ5dGVzICgxMCBieXRlIGFyZSB1c2VkIGJ5IHRoZSBtZXNzYWdlLCBhbmQgNCBieXRlcyB0byBob2xkIHRoZSBsZW5ndGgNCisgKiBvZiB0aGUgbWVzc2FnZSkuDQorICovDQorDQorI2lmbmRlZiBGUkVFUlRPU19NRVNTQUdFX0JVRkZFUl9IDQorI2RlZmluZSBGUkVFUlRPU19NRVNTQUdFX0JVRkZFUl9IDQorDQorLyogTWVzc2FnZSBidWZmZXJzIGFyZSBidWlsdCBvbnRvIG9mIHN0cmVhbSBidWZmZXJzLiAqLw0KKyNpbmNsdWRlICJzdHJlYW1fYnVmZmVyLmgiDQorDQorI2lmIGRlZmluZWQoIF9fY3BsdXNwbHVzICkNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKioNCisgKiBUeXBlIGJ5IHdoaWNoIG1lc3NhZ2UgYnVmZmVycyBhcmUgcmVmZXJlbmNlZC4gIEZvciBleGFtcGxlLCBhIGNhbGwgdG8NCisgKiB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSgpIHJldHVybnMgYW4gTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHZhcmlhYmxlIHRoYXQgY2FuDQorICogdGhlbiBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHRvIHhNZXNzYWdlQnVmZmVyU2VuZCgpLCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoKSwNCisgKiBldGMuDQorICovDQordHlwZWRlZiB2b2lkICogTWVzc2FnZUJ1ZmZlckhhbmRsZV90Ow0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcyApOw0KKzwvcHJlPg0KKyAqDQorICogQ3JlYXRlcyBhIG5ldyBtZXNzYWdlIGJ1ZmZlciB1c2luZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LiAgU2VlDQorICogeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoKSBmb3IgYSB2ZXJzaW9uIHRoYXQgdXNlcyBzdGF0aWNhbGx5IGFsbG9jYXRlZA0KKyAqIG1lbW9yeSAobWVtb3J5IHRoYXQgaXMgYWxsb2NhdGVkIGF0IGNvbXBpbGUgdGltZSkuDQorICoNCisgKiBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiBtdXN0IGJlIHNldCB0byAxIG9yIGxlZnQgdW5kZWZpbmVkIGluDQorICogRnJlZVJUT1NDb25maWcuaCBmb3IgeE1lc3NhZ2VCdWZmZXJDcmVhdGUoKSB0byBiZSBhdmFpbGFibGUuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlclNpemVCeXRlcyBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIChub3QgbWVzc2FnZXMpIHRoZSBtZXNzYWdlDQorICogYnVmZmVyIHdpbGwgYmUgYWJsZSB0byBob2xkIGF0IGFueSBvbmUgdGltZS4gIFdoZW4gYSBtZXNzYWdlIGlzIHdyaXR0ZW4gdG8NCisgKiB0aGUgbWVzc2FnZSBidWZmZXIgYW4gYWRkaXRpb25hbCBzaXplb2YoIHNpemVfdCApIGJ5dGVzIGFyZSBhbHNvIHdyaXR0ZW4gdG8NCisgKiBzdG9yZSB0aGUgbWVzc2FnZSdzIGxlbmd0aC4gIHNpemVvZiggc2l6ZV90ICkgaXMgdHlwaWNhbGx5IDQgYnl0ZXMgb24gYQ0KKyAqIDMyLWJpdCBhcmNoaXRlY3R1cmUsIHNvIG9uIG1vc3QgMzItYml0IGFyY2hpdGVjdHVyZXMgYSAxMCBieXRlIG1lc3NhZ2Ugd2lsbA0KKyAqIHRha2UgdXAgMTQgYnl0ZXMgb2YgbWVzc2FnZSBidWZmZXIgc3BhY2UuDQorICoNCisgKiBAcmV0dXJuIElmIE5VTEwgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGNhbm5vdCBiZSBjcmVhdGVkDQorICogYmVjYXVzZSB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgaGVhcCBtZW1vcnkgYXZhaWxhYmxlIGZvciBGcmVlUlRPUyB0byBhbGxvY2F0ZQ0KKyAqIHRoZSBtZXNzYWdlIGJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMgYW5kIHN0b3JhZ2UgYXJlYS4gIEEgbm9uLU5VTEwgdmFsdWUgYmVpbmcNCisgKiByZXR1cm5lZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbWVzc2FnZSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkgLQ0KKyAqIHRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUgc3RvcmVkIGFzIHRoZSBoYW5kbGUgdG8gdGhlIGNyZWF0ZWQgbWVzc2FnZQ0KKyAqIGJ1ZmZlci4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorDQordm9pZCB2QUZ1bmN0aW9uKCB2b2lkICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyOw0KK2NvbnN0IHNpemVfdCB4TWVzc2FnZUJ1ZmZlclNpemVCeXRlcyA9IDEwMDsNCisNCisgICAgLy8gQ3JlYXRlIGEgbWVzc2FnZSBidWZmZXIgdGhhdCBjYW4gaG9sZCAxMDAgYnl0ZXMuICBUaGUgbWVtb3J5IHVzZWQgdG8gaG9sZA0KKyAgICAvLyBib3RoIHRoZSBtZXNzYWdlIGJ1ZmZlciBzdHJ1Y3R1cmUgYW5kIHRoZSBtZXNzYWdlcyB0aGVtc2VsdmVzIGlzIGFsbG9jYXRlZA0KKyAgICAvLyBkeW5hbWljYWxseS4gIEVhY2ggbWVzc2FnZSBhZGRlZCB0byB0aGUgYnVmZmVyIGNvbnN1bWVzIGFuIGFkZGl0aW9uYWwgNA0KKyAgICAvLyBieXRlcyB3aGljaCBhcmUgdXNlZCB0byBob2xkIHRoZSBsZW5naCBvZiB0aGUgbWVzc2FnZS4NCisgICAgeE1lc3NhZ2VCdWZmZXIgPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSggeE1lc3NhZ2VCdWZmZXJTaXplQnl0ZXMgKTsNCisNCisgICAgaWYoIHhNZXNzYWdlQnVmZmVyID09IE5VTEwgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGVyZSB3YXMgbm90IGVub3VnaCBoZWFwIG1lbW9yeSBzcGFjZSBhdmFpbGFibGUgdG8gY3JlYXRlIHRoZQ0KKyAgICAgICAgLy8gbWVzc2FnZSBidWZmZXIuDQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgbWVzc2FnZSBidWZmZXIgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IGFuZCBjYW4gbm93IGJlIHVzZWQuDQorICAgIH0NCisNCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJDcmVhdGUgeE1lc3NhZ2VCdWZmZXJDcmVhdGUNCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJDcmVhdGUoIHhCdWZmZXJTaXplQnl0ZXMgKSAoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCApIHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlKCB4QnVmZmVyU2l6ZUJ5dGVzLCAoIHNpemVfdCApIDAsIHBkVFJVRSApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVjTWVzc2FnZUJ1ZmZlclN0b3JhZ2VBcmVhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWVzc2FnZUJ1ZmZlcl90ICpweFN0YXRpY01lc3NhZ2VCdWZmZXIgKTsNCis8L3ByZT4NCisgKiBDcmVhdGVzIGEgbmV3IG1lc3NhZ2UgYnVmZmVyIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gIFNlZQ0KKyAqIHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCkgZm9yIGEgdmVyc2lvbiB0aGF0IHVzZXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4NCisgKg0KKyAqIEBwYXJhbSB4QnVmZmVyU2l6ZUJ5dGVzIFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHRoZQ0KKyAqIHB1Y01lc3NhZ2VCdWZmZXJTdG9yYWdlQXJlYSBwYXJhbWV0ZXIuICBXaGVuIGEgbWVzc2FnZSBpcyB3cml0dGVuIHRvIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyIGFuIGFkZGl0aW9uYWwgc2l6ZW9mKCBzaXplX3QgKSBieXRlcyBhcmUgYWxzbyB3cml0dGVuIHRvIHN0b3JlDQorICogdGhlIG1lc3NhZ2UncyBsZW5ndGguICBzaXplb2YoIHNpemVfdCApIGlzIHR5cGljYWxseSA0IGJ5dGVzIG9uIGEgMzItYml0DQorICogYXJjaGl0ZWN0dXJlLCBzbyBvbiBtb3N0IDMyLWJpdCBhcmNoaXRlY3R1cmUgYSAxMCBieXRlIG1lc3NhZ2Ugd2lsbCB0YWtlIHVwDQorICogMTQgYnl0ZXMgb2YgbWVzc2FnZSBidWZmZXIgc3BhY2UuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUNCisgKiBzdG9yZWQgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGlzIGFjdHVhbGx5ICh4QnVmZmVyU2l6ZUJ5dGVzIC0gMSkuDQorICoNCisgKiBAcGFyYW0gcHVjTWVzc2FnZUJ1ZmZlclN0b3JhZ2VBcmVhIE11c3QgcG9pbnQgdG8gYSB1aW50OF90IGFycmF5IHRoYXQgaXMgYXQNCisgKiBsZWFzdCB4QnVmZmVyU2l6ZUJ5dGVzICsgMSBiaWcuICBUaGlzIGlzIHRoZSBhcnJheSB0byB3aGljaCBtZXNzYWdlcyBhcmUNCisgKiBjb3BpZWQgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSBweFN0YXRpY01lc3NhZ2VCdWZmZXIgTXVzdCBwb2ludCB0byBhIHZhcmlhYmxlIG9mIHR5cGUNCisgKiBTdGF0aWNNZXNzYWdlQnVmZmVyX3QsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkIHRoZSBtZXNzYWdlIGJ1ZmZlcidzIGRhdGENCisgKiBzdHJ1Y3R1cmUuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBtZXNzYWdlIGJ1ZmZlciBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB0aGVuIGEgaGFuZGxlIHRvIHRoZQ0KKyAqIGNyZWF0ZWQgbWVzc2FnZSBidWZmZXIgaXMgcmV0dXJuZWQuIElmIGVpdGhlciBwdWNNZXNzYWdlQnVmZmVyU3RvcmFnZUFyZWEgb3INCisgKiBweFN0YXRpY21lc3NhZ2VCdWZmZXIgYXJlIE5VTEwgdGhlbiBOVUxMIGlzIHJldHVybmVkLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCisNCisvLyBVc2VkIHRvIGRpbWVuc2lvbiB0aGUgYXJyYXkgdXNlZCB0byBob2xkIHRoZSBtZXNzYWdlcy4gIFRoZSBhdmFpbGFibGUgc3BhY2UNCisvLyB3aWxsIGFjdHVhbGx5IGJlIG9uZSBsZXNzIHRoYW4gdGhpcywgc28gOTk5Lg0KKyNkZWZpbmUgU1RPUkFHRV9TSVpFX0JZVEVTIDEwMDANCisNCisvLyBEZWZpbmVzIHRoZSBtZW1vcnkgdGhhdCB3aWxsIGFjdHVhbGx5IGhvbGQgdGhlIG1lc3NhZ2VzIHdpdGhpbiB0aGUgbWVzc2FnZQ0KKy8vIGJ1ZmZlci4NCitzdGF0aWMgdWludDhfdCB1Y1N0b3JhZ2VCdWZmZXJbIFNUT1JBR0VfU0laRV9CWVRFUyBdOw0KKw0KKy8vIFRoZSB2YXJpYWJsZSB1c2VkIHRvIGhvbGQgdGhlIG1lc3NhZ2UgYnVmZmVyIHN0cnVjdHVyZS4NCitTdGF0aWNNZXNzYWdlQnVmZmVyX3QgeE1lc3NhZ2VCdWZmZXJTdHJ1Y3Q7DQorDQordm9pZCBNeUZ1bmN0aW9uKCB2b2lkICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyOw0KKw0KKyAgICB4TWVzc2FnZUJ1ZmZlciA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljKCBzaXplb2YoIHVjQnVmZmVyU3RvcmFnZSApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y0J1ZmZlclN0b3JhZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4TWVzc2FnZUJ1ZmZlclN0cnVjdCApOw0KKw0KKyAgICAvLyBBcyBuZWl0aGVyIHRoZSBwdWNNZXNzYWdlQnVmZmVyU3RvcmFnZUFyZWEgb3IgcHhTdGF0aWNNZXNzYWdlQnVmZmVyDQorICAgIC8vIHBhcmFtZXRlcnMgd2VyZSBOVUxMLCB4TWVzc2FnZUJ1ZmZlciB3aWxsIG5vdCBiZSBOVUxMLCBhbmQgY2FuIGJlIHVzZWQgdG8NCisgICAgLy8gcmVmZXJlbmNlIHRoZSBjcmVhdGVkIG1lc3NhZ2UgYnVmZmVyIGluIG90aGVyIG1lc3NhZ2UgYnVmZmVyIEFQSSBjYWxscy4NCisNCisgICAgLy8gT3RoZXIgY29kZSB0aGF0IHVzZXMgdGhlIG1lc3NhZ2UgYnVmZmVyIGNhbiBnbyBoZXJlLg0KK30NCisNCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMgeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMNCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoIHhCdWZmZXJTaXplQnl0ZXMsIHB1Y01lc3NhZ2VCdWZmZXJTdG9yYWdlQXJlYSwgcHhTdGF0aWNNZXNzYWdlQnVmZmVyICkgKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgKSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZVN0YXRpYyggeEJ1ZmZlclNpemVCeXRlcywgMCwgcGRUUlVFLCBwdWNNZXNzYWdlQnVmZmVyU3RvcmFnZUFyZWEsIHB4U3RhdGljTWVzc2FnZUJ1ZmZlciApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeE1lc3NhZ2VCdWZmZXJTZW5kKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCis8cHJlPg0KKyAqDQorICogU2VuZHMgYSBkaXNjcmV0ZSBtZXNzYWdlIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFRoZSBtZXNzYWdlIGNhbiBiZSBhbnkNCisgKiBsZW5ndGggdGhhdCBmaXRzIHdpdGhpbiB0aGUgYnVmZmVyJ3MgZnJlZSBzcGFjZSwgYW5kIGlzIGNvcGllZCBpbnRvIHRoZQ0KKyAqIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHJlY2VpdmUNCisgKiBibG9jayB0aW1lIHRvIDAuDQorICoNCisgKiBVc2UgeE1lc3NhZ2VCdWZmZXJTZW5kKCkgdG8gd3JpdGUgdG8gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKSB0byB3cml0ZSB0byBhIG1lc3NhZ2UgYnVmZmVyIGZyb20gYW4gaW50ZXJydXB0DQorICogc2VydmljZSByb3V0aW5lIChJU1IpLg0KKyAqDQorICogQHBhcmFtIHhNZXNzYWdlQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRvIHdoaWNoIGEgbWVzc2FnZSBpcw0KKyAqIGJlaW5nIHNlbnQuDQorICoNCisgKiBAcGFyYW0gcHZUeERhdGEgQSBwb2ludGVyIHRvIHRoZSBtZXNzYWdlIHRoYXQgaXMgdG8gYmUgY29waWVkIGludG8gdGhlDQorICogbWVzc2FnZSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geERhdGFMZW5ndGhCeXRlcyBUaGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlLiAgVGhhdCBpcywgdGhlIG51bWJlciBvZg0KKyAqIGJ5dGVzIHRvIGNvcHkgZnJvbSBwdlR4RGF0YSBpbnRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFdoZW4gYSBtZXNzYWdlIGlzDQorICogd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIgYW4gYWRkaXRpb25hbCBzaXplb2YoIHNpemVfdCApIGJ5dGVzIGFyZSBhbHNvDQorICogd3JpdHRlbiB0byBzdG9yZSB0aGUgbWVzc2FnZSdzIGxlbmd0aC4gIHNpemVvZiggc2l6ZV90ICkgaXMgdHlwaWNhbGx5IDQgYnl0ZXMNCisgKiBvbiBhIDMyLWJpdCBhcmNoaXRlY3R1cmUsIHNvIG9uIG1vc3QgMzItYml0IGFyY2hpdGVjdHVyZSBzZXR0aW5nDQorICogeERhdGFMZW5ndGhCeXRlcyB0byAyMCB3aWxsIHJlZHVjZSB0aGUgZnJlZSBzcGFjZSBpbiB0aGUgbWVzc2FnZSBidWZmZXIgYnkgMjQNCisgKiBieXRlcyAoMjAgYnl0ZXMgb2YgbWVzc2FnZSBkYXRhIGFuZCA0IGJ5dGVzIHRvIGhvbGQgdGhlIG1lc3NhZ2UgbGVuZ3RoKS4NCisgKg0KKyAqIEBwYXJhbSB4VGlja3NUb1dhaXQgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIGNhbGxpbmcgdGFzayBzaG91bGQgcmVtYWluDQorICogaW4gdGhlIEJsb2NrZWQgc3RhdGUgdG8gd2FpdCBmb3IgZW5vdWdoIHNwYWNlIHRvIGJlY29tZSBhdmFpbGFibGUgaW4gdGhlDQorICogbWVzc2FnZSBidWZmZXIsIHNob3VsZCB0aGUgbWVzc2FnZSBidWZmZXIgaGF2ZSBpbnN1ZmZpY2llbnQgc3BhY2Ugd2hlbg0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZCgpIGlzIGNhbGxlZC4gIFRoZSBjYWxsaW5nIHRhc2sgd2lsbCBuZXZlciBibG9jayBpZg0KKyAqIHhUaWNrc1RvV2FpdCBpcyB6ZXJvLiAgVGhlIGJsb2NrIHRpbWUgaXMgc3BlY2lmaWVkIGluIHRpY2sgcGVyaW9kcywgc28gdGhlDQorICogYWJzb2x1dGUgdGltZSBpdCByZXByZXNlbnRzIGlzIGRlcGVuZGVudCBvbiB0aGUgdGljayBmcmVxdWVuY3kuICBUaGUgbWFjcm8NCisgKiBwZE1TX1RPX1RJQ0tTKCkgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIHRpbWUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcyBpbnRvDQorICogYSB0aW1lIHNwZWNpZmllZCBpbiB0aWNrcy4gIFNldHRpbmcgeFRpY2tzVG9XYWl0IHRvIHBvcnRNQVhfREVMQVkgd2lsbCBjYXVzZQ0KKyAqIHRoZSB0YXNrIHRvIHdhaXQgaW5kZWZpbml0ZWx5ICh3aXRob3V0IHRpbWluZyBvdXQpLCBwcm92aWRlZA0KKyAqIElOQ0xVREVfdlRhc2tTdXNwZW5kIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBUYXNrcyBkbyBub3QgdXNlIGFueQ0KKyAqIENQVSB0aW1lIHdoZW4gdGhleSBhcmUgaW4gdGhlIEJsb2NrZWQgc3RhdGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIuICBJZiB0aGUgY2FsbCB0bw0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZCgpIHRpbWVzIG91dCBiZWZvcmUgdGhlcmUgd2FzIGVub3VnaCBzcGFjZSB0byB3cml0ZSB0aGUNCisgKiBtZXNzYWdlIGludG8gdGhlIG1lc3NhZ2UgYnVmZmVyIHRoZW4gemVybyBpcyByZXR1cm5lZC4gIElmIHRoZSBjYWxsIGRpZCBub3QNCisgKiB0aW1lIG91dCB0aGVuIHhEYXRhTGVuZ3RoQnl0ZXMgaXMgcmV0dXJuZWQuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KK3ZvaWQgdkFGdW5jdGlvbiggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICkNCit7DQorc2l6ZV90IHhCeXRlc1NlbnQ7DQordWludDhfdCB1Y0FycmF5VG9TZW5kW10gPSB7IDAsIDEsIDIsIDMgfTsNCitjaGFyICpwY1N0cmluZ1RvU2VuZCA9ICJTdHJpbmcgdG8gc2VuZCI7DQorY29uc3QgVGlja1R5cGVfdCB4MTAwbXMgPSBwZE1TX1RPX1RJQ0tTKCAxMDAgKTsNCisNCisgICAgLy8gU2VuZCBhbiBhcnJheSB0byB0aGUgbWVzc2FnZSBidWZmZXIsIGJsb2NraW5nIGZvciBhIG1heGltdW0gb2YgMTAwbXMgdG8NCisgICAgLy8gd2FpdCBmb3IgZW5vdWdoIHNwYWNlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUgbWVzc2FnZSBidWZmZXIuDQorICAgIHhCeXRlc1NlbnQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHVjQXJyYXlUb1NlbmQsIHNpemVvZiggdWNBcnJheVRvU2VuZCApLCB4MTAwbXMgKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc2l6ZW9mKCB1Y0FycmF5VG9TZW5kICkgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgY2FsbCB0byB4TWVzc2FnZUJ1ZmZlclNlbmQoKSB0aW1lcyBvdXQgYmVmb3JlIHRoZXJlIHdhcyBlbm91Z2gNCisgICAgICAgIC8vIHNwYWNlIGluIHRoZSBidWZmZXIgZm9yIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4uDQorICAgIH0NCisNCisgICAgLy8gU2VuZCB0aGUgc3RyaW5nIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGVyZSBpcw0KKyAgICAvLyBub3QgZW5vdWdoIHNwYWNlIGluIHRoZSBidWZmZXIuDQorICAgIHhCeXRlc1NlbnQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLCBzdHJsZW4oIHBjU3RyaW5nVG9TZW5kICksIDAgKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlIHN0cmluZyBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGJlY2F1c2UgdGhlcmUgd2FzDQorICAgICAgICAvLyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIGJ1ZmZlci4NCisgICAgfQ0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJTZW5kIHhNZXNzYWdlQnVmZmVyU2VuZA0KKyAqIFxpbmdyb3VwIE1lc3NhZ2VCdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcywgeFRpY2tzVG9XYWl0ICkgeFN0cmVhbUJ1ZmZlclNlbmQoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciwgcHZUeERhdGEsIHhEYXRhTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUiggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCis8cHJlPg0KKyAqDQorICogSW50ZXJydXB0IHNhZmUgdmVyc2lvbiBvZiB0aGUgQVBJIGZ1bmN0aW9uIHRoYXQgc2VuZHMgYSBkaXNjcmV0ZSBtZXNzYWdlIHRvDQorICogdGhlIG1lc3NhZ2UgYnVmZmVyLiAgVGhlIG1lc3NhZ2UgY2FuIGJlIGFueSBsZW5ndGggdGhhdCBmaXRzIHdpdGhpbiB0aGUNCisgKiBidWZmZXIncyBmcmVlIHNwYWNlLCBhbmQgaXMgY29waWVkIGludG8gdGhlIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHJlY2VpdmUNCisgKiBibG9jayB0aW1lIHRvIDAuDQorICoNCisgKiBVc2UgeE1lc3NhZ2VCdWZmZXJTZW5kKCkgdG8gd3JpdGUgdG8gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKSB0byB3cml0ZSB0byBhIG1lc3NhZ2UgYnVmZmVyIGZyb20gYW4gaW50ZXJydXB0DQorICogc2VydmljZSByb3V0aW5lIChJU1IpLg0KKyAqDQorICogQHBhcmFtIHhNZXNzYWdlQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRvIHdoaWNoIGEgbWVzc2FnZSBpcw0KKyAqIGJlaW5nIHNlbnQuDQorICoNCisgKiBAcGFyYW0gcHZUeERhdGEgQSBwb2ludGVyIHRvIHRoZSBtZXNzYWdlIHRoYXQgaXMgdG8gYmUgY29waWVkIGludG8gdGhlDQorICogbWVzc2FnZSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geERhdGFMZW5ndGhCeXRlcyBUaGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlLiAgVGhhdCBpcywgdGhlIG51bWJlciBvZg0KKyAqIGJ5dGVzIHRvIGNvcHkgZnJvbSBwdlR4RGF0YSBpbnRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFdoZW4gYSBtZXNzYWdlIGlzDQorICogd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIgYW4gYWRkaXRpb25hbCBzaXplb2YoIHNpemVfdCApIGJ5dGVzIGFyZSBhbHNvDQorICogd3JpdHRlbiB0byBzdG9yZSB0aGUgbWVzc2FnZSdzIGxlbmd0aC4gIHNpemVvZiggc2l6ZV90ICkgaXMgdHlwaWNhbGx5IDQgYnl0ZXMNCisgKiBvbiBhIDMyLWJpdCBhcmNoaXRlY3R1cmUsIHNvIG9uIG1vc3QgMzItYml0IGFyY2hpdGVjdHVyZSBzZXR0aW5nDQorICogeERhdGFMZW5ndGhCeXRlcyB0byAyMCB3aWxsIHJlZHVjZSB0aGUgZnJlZSBzcGFjZSBpbiB0aGUgbWVzc2FnZSBidWZmZXIgYnkgMjQNCisgKiBieXRlcyAoMjAgYnl0ZXMgb2YgbWVzc2FnZSBkYXRhIGFuZCA0IGJ5dGVzIHRvIGhvbGQgdGhlIG1lc3NhZ2UgbGVuZ3RoKS4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICBJdCBpcyBwb3NzaWJsZSB0aGF0IGEgbWVzc2FnZSBidWZmZXIgd2lsbA0KKyAqIGhhdmUgYSB0YXNrIGJsb2NrZWQgb24gaXQgd2FpdGluZyBmb3IgZGF0YS4gIENhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSKCkgY2FuIG1ha2UgZGF0YSBhdmFpbGFibGUsIGFuZCBzbyBjYXVzZSBhIHRhc2sgdGhhdA0KKyAqIHdhcyB3YWl0aW5nIGZvciBkYXRhIHRvIGxlYXZlIHRoZSBCbG9ja2VkIHN0YXRlLiAgSWYgY2FsbGluZw0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKSBjYXVzZXMgYSB0YXNrIHRvIGxlYXZlIHRoZSBCbG9ja2VkIHN0YXRlLCBhbmQgdGhlDQorICogdW5ibG9ja2VkIHRhc2sgaGFzIGEgcHJpb3JpdHkgaGlnaGVyIHRoYW4gdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayAodGhlDQorICogdGFzayB0aGF0IHdhcyBpbnRlcnJ1cHRlZCksIHRoZW4sIGludGVybmFsbHksIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKQ0KKyAqIHdpbGwgc2V0ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHRvIHBkVFJVRS4gIElmDQorICogeE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUigpIHNldHMgdGhpcyB2YWx1ZSB0byBwZFRSVUUsIHRoZW4gbm9ybWFsbHkgYQ0KKyAqIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgYmVmb3JlIHRoZSBpbnRlcnJ1cHQgaXMgZXhpdGVkLiAgVGhpcyB3aWxsDQorICogZW5zdXJlIHRoYXQgdGhlIGludGVycnVwdCByZXR1cm5zIGRpcmVjdGx5IHRvIHRoZSBoaWdoZXN0IHByaW9yaXR5IFJlYWR5DQorICogc3RhdGUgdGFzay4gICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHNob3VsZCBiZSBzZXQgdG8gcGRGQUxTRSBiZWZvcmUgaXQNCisgKiBpcyBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24uICBTZWUgdGhlIGNvZGUgZXhhbXBsZSBiZWxvdyBmb3IgYW4gZXhhbXBsZS4NCisgKg0KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIElmIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyIGRpZG4ndCBoYXZlIGVub3VnaCBmcmVlIHNwYWNlIGZvciB0aGUgbWVzc2FnZSB0byBiZSBzdG9yZWQNCisgKiB0aGVuIDAgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSB4RGF0YUxlbmd0aEJ5dGVzIGlzIHJldHVybmVkLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCisvLyBBIG1lc3NhZ2UgYnVmZmVyIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLg0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlcjsNCisNCit2b2lkIHZBbkludGVycnVwdFNlcnZpY2VSb3V0aW5lKCB2b2lkICkNCit7DQorc2l6ZV90IHhCeXRlc1NlbnQ7DQorY2hhciAqcGNTdHJpbmdUb1NlbmQgPSAiU3RyaW5nIHRvIHNlbmQiOw0KK0Jhc2VUeXBlX3QgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsgLy8gSW5pdGlhbGlzZWQgdG8gcGRGQUxTRS4NCisNCisgICAgLy8gQXR0ZW1wdCB0byBzZW5kIHRoZSBzdHJpbmcgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKw0KKyAgICBpZiggeEJ5dGVzU2VudCAhPSBzdHJsZW4oIHBjU3RyaW5nVG9TZW5kICkgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgc3RyaW5nIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBidWZmZXIgYmVjYXVzZSB0aGVyZSB3YXMNCisgICAgICAgIC8vIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgYnVmZmVyLg0KKyAgICB9DQorDQorICAgIC8vIElmIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3YXMgc2V0IHRvIHBkVFJVRSBpbnNpZGUNCisgICAgLy8geE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUigpIHRoZW4gYSB0YXNrIHRoYXQgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlDQorICAgIC8vIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgd2FzIHVuYmxvY2tlZCBhbmQgYSBjb250ZXh0DQorICAgIC8vIHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGVuc3VyZSB0aGUgSVNSIHJldHVybnMgdG8gdGhlIHVuYmxvY2tlZA0KKyAgICAvLyB0YXNrLiAgSW4gbW9zdCBGcmVlUlRPUyBwb3J0cyB0aGlzIGlzIGRvbmUgYnkgc2ltcGx5IHBhc3NpbmcNCisgICAgLy8geEhpZ2hlclByaW9yaXR5VGFza1dva2VuIGludG8gdGFza1lJRUxEX0ZST01fSVNSKCksIHdoaWNoIHdpbGwgdGVzdCB0aGUNCisgICAgLy8gdmFyaWFibGVzIHZhbHVlLCBhbmQgcGVyZm9ybSB0aGUgY29udGV4dCBzd2l0Y2ggaWYgbmVjZXNzYXJ5LiAgQ2hlY2sgdGhlDQorICAgIC8vIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwb3J0IGluIHVzZSBmb3IgcG9ydCBzcGVjaWZpYyBpbnN0cnVjdGlvbnMuDQorICAgIHRhc2tZSUVMRF9GUk9NX0lTUiggeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1INCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCisNCisvKioNCisgKiBtZXNzYWdlX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK3NpemVfdCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdlJ4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorPC9wcmU+DQorICoNCisgKiBSZWNlaXZlcyBhIGRpc2NyZXRlIG1lc3NhZ2UgZnJvbSBhIG1lc3NhZ2UgYnVmZmVyLiAgTWVzc2FnZXMgY2FuIGJlIG9mDQorICogdmFyaWFibGUgbGVuZ3RoIGFuZCBhcmUgY29waWVkIG91dCBvZiB0aGUgYnVmZmVyLg0KKyAqDQorICogKioqTk9URSoqKjogIFVuaXF1ZWx5IGFtb25nIEZyZWVSVE9TIG9iamVjdHMsIHRoZSBzdHJlYW0gYnVmZmVyDQorICogaW1wbGVtZW50YXRpb24gKHNvIGFsc28gdGhlIG1lc3NhZ2UgYnVmZmVyIGltcGxlbWVudGF0aW9uLCBhcyBtZXNzYWdlIGJ1ZmZlcnMNCisgKiBhcmUgYnVpbHQgb24gdG9wIG9mIHN0cmVhbSBidWZmZXJzKSBhc3N1bWVzIHRoZXJlIGlzIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHdyaXRlIHRvIHRoZSBidWZmZXIgKHRoZSB3cml0ZXIpLCBhbmQgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgcmVhZCBmcm9tIHRoZSBidWZmZXIgKHRoZSByZWFkZXIpLiAgSXQgaXMgc2FmZSBmb3IgdGhlDQorICogd3JpdGVyIGFuZCByZWFkZXIgdG8gYmUgZGlmZmVyZW50IHRhc2tzIG9yIGludGVycnVwdHMsIGJ1dCwgdW5saWtlIG90aGVyDQorICogRnJlZVJUT1Mgb2JqZWN0cywgaXQgaXMgbm90IHNhZmUgdG8gaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycyBvcg0KKyAqIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzLiAgSWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgd3JpdGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclNlbmQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSBzZW5kDQorICogYmxvY2sgdGltZSB0byAwLiAgTGlrZXdpc2UsIGlmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHJlYWRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqIFVzZSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoKSB0byByZWFkIGZyb20gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0byByZWFkIGZyb20gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGFuDQorICogaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBmcm9tIHdoaWNoIGEgbWVzc2FnZQ0KKyAqIGlzIGJlaW5nIHJlY2VpdmVkLg0KKyAqDQorICogQHBhcmFtIHB2UnhEYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGludG8gd2hpY2ggdGhlIHJlY2VpdmVkIG1lc3NhZ2UgaXMNCisgKiB0byBiZSBjb3BpZWQuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlckxlbmd0aEJ5dGVzIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHRoZSBwdlJ4RGF0YQ0KKyAqIHBhcmFtZXRlci4gIFRoaXMgc2V0cyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgdGhhdCBjYW4gYmUgcmVjZWl2ZWQuDQorICogSWYgeEJ1ZmZlckxlbmd0aEJ5dGVzIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBuZXh0IG1lc3NhZ2UgdGhlbiB0aGUgbWVzc2FnZQ0KKyAqIHdpbGwgYmUgbGVmdCBpbiB0aGUgbWVzc2FnZSBidWZmZXIgYW5kIDAgd2lsbCBiZSByZXR1cm5lZC4NCisgKg0KKyAqIEBwYXJhbSB4VGlja3NUb1dhaXQgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHRhc2sgc2hvdWxkIHJlbWFpbiBpbiB0aGUNCisgKiBCbG9ja2VkIHN0YXRlIHRvIHdhaXQgZm9yIGEgbWVzc2FnZSwgc2hvdWxkIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZSBlbXB0eS4NCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoKSB3aWxsIHJldHVybiBpbW1lZGlhdGVseSBpZiB4VGlja3NUb1dhaXQgaXMgemVybyBhbmQNCisgKiB0aGUgbWVzc2FnZSBidWZmZXIgaXMgZW1wdHkuICBUaGUgYmxvY2sgdGltZSBpcyBzcGVjaWZpZWQgaW4gdGljayBwZXJpb2RzLCBzbw0KKyAqIHRoZSBhYnNvbHV0ZSB0aW1lIGl0IHJlcHJlc2VudHMgaXMgZGVwZW5kZW50IG9uIHRoZSB0aWNrIGZyZXF1ZW5jeS4gIFRoZQ0KKyAqIG1hY3JvIHBkTVNfVE9fVElDS1MoKSBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgdGltZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzDQorICogaW50byBhIHRpbWUgc3BlY2lmaWVkIGluIHRpY2tzLiAgU2V0dGluZyB4VGlja3NUb1dhaXQgdG8gcG9ydE1BWF9ERUxBWSB3aWxsDQorICogY2F1c2UgdGhlIHRhc2sgdG8gd2FpdCBpbmRlZmluaXRlbHkgKHdpdGhvdXQgdGltaW5nIG91dCksIHByb3ZpZGVkDQorICogSU5DTFVERV92VGFza1N1c3BlbmQgaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIFRhc2tzIGRvIG5vdCB1c2UgYW55DQorICogQ1BVIHRpbWUgd2hlbiB0aGV5IGFyZSBpbiB0aGUgQmxvY2tlZCBzdGF0ZS4NCisgKg0KKyAqIEByZXR1cm4gVGhlIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBtZXNzYWdlIHJlYWQgZnJvbSB0aGUgbWVzc2FnZSBidWZmZXIsIGlmDQorICogYW55LiAgSWYgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCkgdGltZXMgb3V0IGJlZm9yZSBhIG1lc3NhZ2UgYmVjYW1lIGF2YWlsYWJsZQ0KKyAqIHRoZW4gemVybyBpcyByZXR1cm5lZC4gIElmIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgaXMgZ3JlYXRlciB0aGFuDQorICogeEJ1ZmZlckxlbmd0aEJ5dGVzIHRoZW4gdGhlIG1lc3NhZ2Ugd2lsbCBiZSBsZWZ0IGluIHRoZSBtZXNzYWdlIGJ1ZmZlciBhbmQNCisgKiB6ZXJvIGlzIHJldHVybmVkLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCit2b2lkIHZBRnVuY3Rpb24oIE1lc3NhZ2VCdWZmZXJfdCB4TWVzc2FnZUJ1ZmZlciApDQorew0KK3VpbnQ4X3QgdWNSeERhdGFbIDIwIF07DQorc2l6ZV90IHhSZWNlaXZlZEJ5dGVzOw0KK2NvbnN0IFRpY2tUeXBlX3QgeEJsb2NrVGltZSA9IHBkTVNfVE9fVElDS1MoIDIwICk7DQorDQorICAgIC8vIFJlY2VpdmUgdGhlIG5leHQgbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFdhaXQgaW4gdGhlIEJsb2NrZWQNCisgICAgLy8gc3RhdGUgKHNvIG5vdCB1c2luZyBhbnkgQ1BVIHByb2Nlc3NpbmcgdGltZSkgZm9yIGEgbWF4aW11bSBvZiAxMDBtcyBmb3INCisgICAgLy8gYSBtZXNzYWdlIHRvIGJlY29tZSBhdmFpbGFibGUuDQorICAgIHhSZWNlaXZlZEJ5dGVzID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdm9pZCAqICkgdWNSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHVjUnhEYXRhICksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4QmxvY2tUaW1lICk7DQorDQorICAgIGlmKCB4UmVjZWl2ZWRCeXRlcyA+IDAgKQ0KKyAgICB7DQorICAgICAgICAvLyBBIHVjUnhEYXRhIGNvbnRhaW5zIGEgbWVzc2FnZSB0aGF0IGlzIHhSZWNlaXZlZEJ5dGVzIGxvbmcuICBQcm9jZXNzDQorICAgICAgICAvLyB0aGUgbWVzc2FnZSBoZXJlLi4uLg0KKyAgICB9DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlDQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZSggeE1lc3NhZ2VCdWZmZXIsIHB2UnhEYXRhLCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIsIHB2UnhEYXRhLCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApDQorDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUiggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdlJ4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKzwvcHJlPg0KKyAqDQorICogQW4gaW50ZXJydXB0IHNhZmUgdmVyc2lvbiBvZiB0aGUgQVBJIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgYSBkaXNjcmV0ZQ0KKyAqIG1lc3NhZ2UgZnJvbSBhIG1lc3NhZ2UgYnVmZmVyLiAgTWVzc2FnZXMgY2FuIGJlIG9mIHZhcmlhYmxlIGxlbmd0aCBhbmQgYXJlDQorICogY29waWVkIG91dCBvZiB0aGUgYnVmZmVyLg0KKyAqDQorICogKioqTk9URSoqKjogIFVuaXF1ZWx5IGFtb25nIEZyZWVSVE9TIG9iamVjdHMsIHRoZSBzdHJlYW0gYnVmZmVyDQorICogaW1wbGVtZW50YXRpb24gKHNvIGFsc28gdGhlIG1lc3NhZ2UgYnVmZmVyIGltcGxlbWVudGF0aW9uLCBhcyBtZXNzYWdlIGJ1ZmZlcnMNCisgKiBhcmUgYnVpbHQgb24gdG9wIG9mIHN0cmVhbSBidWZmZXJzKSBhc3N1bWVzIHRoZXJlIGlzIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHdyaXRlIHRvIHRoZSBidWZmZXIgKHRoZSB3cml0ZXIpLCBhbmQgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgcmVhZCBmcm9tIHRoZSBidWZmZXIgKHRoZSByZWFkZXIpLiAgSXQgaXMgc2FmZSBmb3IgdGhlDQorICogd3JpdGVyIGFuZCByZWFkZXIgdG8gYmUgZGlmZmVyZW50IHRhc2tzIG9yIGludGVycnVwdHMsIGJ1dCwgdW5saWtlIG90aGVyDQorICogRnJlZVJUT1Mgb2JqZWN0cywgaXQgaXMgbm90IHNhZmUgdG8gaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycyBvcg0KKyAqIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzLiAgSWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgd3JpdGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclNlbmQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSBzZW5kDQorICogYmxvY2sgdGltZSB0byAwLiAgTGlrZXdpc2UsIGlmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHJlYWRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqIFVzZSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoKSB0byByZWFkIGZyb20gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0byByZWFkIGZyb20gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGFuDQorICogaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBmcm9tIHdoaWNoIGEgbWVzc2FnZQ0KKyAqIGlzIGJlaW5nIHJlY2VpdmVkLg0KKyAqDQorICogQHBhcmFtIHB2UnhEYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGludG8gd2hpY2ggdGhlIHJlY2VpdmVkIG1lc3NhZ2UgaXMNCisgKiB0byBiZSBjb3BpZWQuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlckxlbmd0aEJ5dGVzIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHRoZSBwdlJ4RGF0YQ0KKyAqIHBhcmFtZXRlci4gIFRoaXMgc2V0cyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgdGhhdCBjYW4gYmUgcmVjZWl2ZWQuDQorICogSWYgeEJ1ZmZlckxlbmd0aEJ5dGVzIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBuZXh0IG1lc3NhZ2UgdGhlbiB0aGUgbWVzc2FnZQ0KKyAqIHdpbGwgYmUgbGVmdCBpbiB0aGUgbWVzc2FnZSBidWZmZXIgYW5kIDAgd2lsbCBiZSByZXR1cm5lZC4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICBJdCBpcyBwb3NzaWJsZSB0aGF0IGEgbWVzc2FnZSBidWZmZXIgd2lsbA0KKyAqIGhhdmUgYSB0YXNrIGJsb2NrZWQgb24gaXQgd2FpdGluZyBmb3Igc3BhY2UgdG8gYmVjb21lIGF2YWlsYWJsZS4gIENhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgY2FuIG1ha2Ugc3BhY2UgYXZhaWxhYmxlLCBhbmQgc28gY2F1c2UgYSB0YXNrDQorICogdGhhdCBpcyB3YWl0aW5nIGZvciBzcGFjZSB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZS4gIElmIGNhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgY2F1c2VzIGEgdGFzayB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZSwgYW5kDQorICogdGhlIHVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sNCisgKiAodGhlIHRhc2sgdGhhdCB3YXMgaW50ZXJydXB0ZWQpLCB0aGVuLCBpbnRlcm5hbGx5LA0KKyAqIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB3aWxsIHNldCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB0byBwZFRSVUUuDQorICogSWYgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUigpIHNldHMgdGhpcyB2YWx1ZSB0byBwZFRSVUUsIHRoZW4gbm9ybWFsbHkgYQ0KKyAqIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgYmVmb3JlIHRoZSBpbnRlcnJ1cHQgaXMgZXhpdGVkLiAgVGhhdCB3aWxsDQorICogZW5zdXJlIHRoZSBpbnRlcnJ1cHQgcmV0dXJucyBkaXJlY3RseSB0byB0aGUgaGlnaGVzdCBwcmlvcml0eSBSZWFkeSBzdGF0ZQ0KKyAqIHRhc2suICAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUgc2V0IHRvIHBkRkFMU0UgYmVmb3JlIGl0IGlzDQorICogcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uLiAgU2VlIHRoZSBjb2RlIGV4YW1wbGUgYmVsb3cgZm9yIGFuIGV4YW1wbGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBsZW5ndGgsIGluIGJ5dGVzLCBvZiB0aGUgbWVzc2FnZSByZWFkIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVyLCBpZg0KKyAqIGFueS4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorLy8gQSBtZXNzYWdlIGJ1ZmZlciB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4NCitNZXNzYWdlQnVmZmVyX3QgeE1lc3NhZ2VCdWZmZXI7DQorDQordm9pZCB2QW5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSggdm9pZCApDQorew0KK3VpbnQ4X3QgdWNSeERhdGFbIDIwIF07DQorc2l6ZV90IHhSZWNlaXZlZEJ5dGVzOw0KK0Jhc2VUeXBlX3QgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsgIC8vIEluaXRpYWxpc2VkIHRvIHBkRkFMU0UuDQorDQorICAgIC8vIFJlY2VpdmUgdGhlIG5leHQgbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlci4NCisgICAgeFJlY2VpdmVkQnl0ZXMgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCB4TWVzc2FnZUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdm9pZCAqICkgdWNSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHVjUnhEYXRhICksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorDQorICAgIGlmKCB4UmVjZWl2ZWRCeXRlcyA+IDAgKQ0KKyAgICB7DQorICAgICAgICAvLyBBIHVjUnhEYXRhIGNvbnRhaW5zIGEgbWVzc2FnZSB0aGF0IGlzIHhSZWNlaXZlZEJ5dGVzIGxvbmcuICBQcm9jZXNzDQorICAgICAgICAvLyB0aGUgbWVzc2FnZSBoZXJlLi4uLg0KKyAgICB9DQorDQorICAgIC8vIElmIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3YXMgc2V0IHRvIHBkVFJVRSBpbnNpZGUNCisgICAgLy8geE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUigpIHRoZW4gYSB0YXNrIHRoYXQgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlDQorICAgIC8vIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgd2FzIHVuYmxvY2tlZCBhbmQgYSBjb250ZXh0DQorICAgIC8vIHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGVuc3VyZSB0aGUgSVNSIHJldHVybnMgdG8gdGhlIHVuYmxvY2tlZA0KKyAgICAvLyB0YXNrLiAgSW4gbW9zdCBGcmVlUlRPUyBwb3J0cyB0aGlzIGlzIGRvbmUgYnkgc2ltcGx5IHBhc3NpbmcNCisgICAgLy8geEhpZ2hlclByaW9yaXR5VGFza1dva2VuIGludG8gdGFza1lJRUxEX0ZST01fSVNSKCksIHdoaWNoIHdpbGwgdGVzdCB0aGUNCisgICAgLy8gdmFyaWFibGVzIHZhbHVlLCBhbmQgcGVyZm9ybSB0aGUgY29udGV4dCBzd2l0Y2ggaWYgbmVjZXNzYXJ5LiAgQ2hlY2sgdGhlDQorICAgIC8vIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwb3J0IGluIHVzZSBmb3IgcG9ydCBzcGVjaWZpYyBpbnN0cnVjdGlvbnMuDQorICAgIHRhc2tZSUVMRF9GUk9NX0lTUiggeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1INCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsIHB2UnhEYXRhLCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciwgcHZSeERhdGEsIHhCdWZmZXJMZW5ndGhCeXRlcywgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCit2b2lkIHZNZXNzYWdlQnVmZmVyRGVsZXRlKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKTsNCis8L3ByZT4NCisgKg0KKyAqIERlbGV0ZXMgYSBtZXNzYWdlIGJ1ZmZlciB0aGF0IHdhcyBwcmV2aW91c2x5IGNyZWF0ZWQgdXNpbmcgYSBjYWxsIHRvDQorICogeE1lc3NhZ2VCdWZmZXJDcmVhdGUoKSBvciB4TWVzc2FnZUJ1ZmZlckNyZWF0ZVN0YXRpYygpLiAgSWYgdGhlIG1lc3NhZ2UNCisgKiBidWZmZXIgd2FzIGNyZWF0ZWQgdXNpbmcgZHluYW1pYyBtZW1vcnkgKHRoYXQgaXMsIGJ5IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCkpLA0KKyAqIHRoZW4gdGhlIGFsbG9jYXRlZCBtZW1vcnkgaXMgZnJlZWQuDQorICoNCisgKiBBIG1lc3NhZ2UgYnVmZmVyIGhhbmRsZSBtdXN0IG5vdCBiZSB1c2VkIGFmdGVyIHRoZSBtZXNzYWdlIGJ1ZmZlciBoYXMgYmVlbg0KKyAqIGRlbGV0ZWQuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgdG8gYmUgZGVsZXRlZC4NCisgKg0KKyAqLw0KKyNkZWZpbmUgdk1lc3NhZ2VCdWZmZXJEZWxldGUoIHhNZXNzYWdlQnVmZmVyICkgdlN0cmVhbUJ1ZmZlckRlbGV0ZSggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyICkNCisNCisvKioNCisgKiBtZXNzYWdlX2J1ZmZlci5oDQorPHByZT4NCitCYXNlVHlwZV90IHhNZXNzYWdlQnVmZmVySXNGdWxsKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKSApOw0KKzwvcHJlPg0KKyAqDQorICogVGVzdHMgdG8gc2VlIGlmIGEgbWVzc2FnZSBidWZmZXIgaXMgZnVsbC4gIEEgbWVzc2FnZSBidWZmZXIgaXMgZnVsbCBpZiBpdA0KKyAqIGNhbm5vdCBhY2NlcHQgYW55IG1vcmUgbWVzc2FnZXMsIG9mIGFueSBzaXplLCB1bnRpbCBzcGFjZSBpcyBtYWRlIGF2YWlsYWJsZQ0KKyAqIGJ5IGEgbWVzc2FnZSBiZWluZyByZW1vdmVkIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhNZXNzYWdlQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIGJlaW5nIHF1ZXJpZWQuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBtZXNzYWdlIGJ1ZmZlciByZWZlcmVuY2VkIGJ5IHhNZXNzYWdlQnVmZmVyIGlzIGZ1bGwgdGhlbg0KKyAqIHBkVFJVRSBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJJc0Z1bGwoIHhNZXNzYWdlQnVmZmVyICkgeFN0cmVhbUJ1ZmZlcklzRnVsbCggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyICkNCisNCisvKioNCisgKiBtZXNzYWdlX2J1ZmZlci5oDQorPHByZT4NCitCYXNlVHlwZV90IHhNZXNzYWdlQnVmZmVySXNFbXB0eSggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICkgKTsNCis8L3ByZT4NCisgKg0KKyAqIFRlc3RzIHRvIHNlZSBpZiBhIG1lc3NhZ2UgYnVmZmVyIGlzIGVtcHR5IChkb2VzIG5vdCBjb250YWluIGFueSBtZXNzYWdlcykuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgYmVpbmcgcXVlcmllZC4NCisgKg0KKyAqIEByZXR1cm4gSWYgdGhlIG1lc3NhZ2UgYnVmZmVyIHJlZmVyZW5jZWQgYnkgeE1lc3NhZ2VCdWZmZXIgaXMgZW1wdHkgdGhlbg0KKyAqIHBkVFJVRSBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlcklzRW1wdHkoIHhNZXNzYWdlQnVmZmVyICkgeFN0cmVhbUJ1ZmZlcklzRW1wdHkoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKzxwcmU+DQorQmFzZVR5cGVfdCB4TWVzc2FnZUJ1ZmZlclJlc2V0KCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKTsNCis8L3ByZT4NCisgKg0KKyAqIFJlc2V0cyBhIG1lc3NhZ2UgYnVmZmVyIHRvIGl0cyBpbml0aWFsIGVtcHR5IHN0YXRlLCBkaXNjYXJkaW5nIGFueSBtZXNzYWdlIGl0DQorICogY29udGFpbmVkLg0KKyAqDQorICogQSBtZXNzYWdlIGJ1ZmZlciBjYW4gb25seSBiZSByZXNldCBpZiB0aGVyZSBhcmUgbm8gdGFza3MgYmxvY2tlZCBvbiBpdC4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZWluZyByZXNldC4NCisgKg0KKyAqIEByZXR1cm4gSWYgdGhlIG1lc3NhZ2UgYnVmZmVyIHdhcyByZXNldCB0aGVuIHBkUEFTUyBpcyByZXR1cm5lZC4gIElmIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyIGNvdWxkIG5vdCBiZSByZXNldCBiZWNhdXNlIGVpdGhlciB0aGVyZSB3YXMgYSB0YXNrIGJsb2NrZWQgb24NCisgKiB0aGUgbWVzc2FnZSBxdWV1ZSB0byB3YWl0IGZvciBzcGFjZSB0byBiZWNvbWUgYXZhaWxhYmxlLCBvciB0byB3YWl0IGZvciBhDQorICogYSBtZXNzYWdlIHRvIGJlIGF2YWlsYWJsZSwgdGhlbiBwZEZBSUwgaXMgcmV0dXJuZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJSZXNldCB4TWVzc2FnZUJ1ZmZlclJlc2V0DQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyUmVzZXQoIHhNZXNzYWdlQnVmZmVyICkgeFN0cmVhbUJ1ZmZlclJlc2V0KCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIgKQ0KKw0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCis8cHJlPg0KK3NpemVfdCB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIgKSApOw0KKzwvcHJlPg0KKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBmcmVlIHNwYWNlIGluIHRoZSBtZXNzYWdlIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZWluZyBxdWVyaWVkLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGJlZm9yZQ0KKyAqIHRoZSBtZXNzYWdlIGJ1ZmZlciB3b3VsZCBiZSBmdWxsLiAgV2hlbiBhIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUgbWVzc2FnZQ0KKyAqIGJ1ZmZlciBhbiBhZGRpdGlvbmFsIHNpemVvZiggc2l6ZV90ICkgYnl0ZXMgYXJlIGFsc28gd3JpdHRlbiB0byBzdG9yZSB0aGUNCisgKiBtZXNzYWdlJ3MgbGVuZ3RoLiAgc2l6ZW9mKCBzaXplX3QgKSBpcyB0eXBpY2FsbHkgNCBieXRlcyBvbiBhIDMyLWJpdA0KKyAqIGFyY2hpdGVjdHVyZSwgc28gaWYgeE1lc3NhZ2VCdWZmZXJTcGFjZXNBdmFpbGFibGUoKSByZXR1cm5zIDEwLCB0aGVuIHRoZSBzaXplDQorICogb2YgdGhlIGxhcmdlc3QgbWVzc2FnZSB0aGF0IGNhbiBiZSB3cml0dGVuIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpcyA2IGJ5dGVzLg0KKyAqDQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUgeE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZQ0KKyAqIFxpbmdyb3VwIE1lc3NhZ2VCdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlKCB4TWVzc2FnZUJ1ZmZlciApIHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitCYXNlVHlwZV90IHhNZXNzYWdlQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPC9wcmU+DQorICoNCisgKiBGb3IgYWR2YW5jZWQgdXNlcnMgb25seS4NCisgKg0KKyAqIFRoZSBzYlNFTkRfQ09NUExFVEVEKCkgbWFjcm8gaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBGcmVlUlRPUyBBUElzIHdoZW4NCisgKiBkYXRhIGlzIHNlbnQgdG8gYSBtZXNzYWdlIGJ1ZmZlciBvciBzdHJlYW0gYnVmZmVyLiAgSWYgdGhlcmUgd2FzIGEgdGFzayB0aGF0DQorICogd2FzIGJsb2NrZWQgb24gdGhlIG1lc3NhZ2Ugb3Igc3RyZWFtIGJ1ZmZlciB3YWl0aW5nIGZvciBkYXRhIHRvIGFycml2ZSB0aGVuDQorICogdGhlIHNiU0VORF9DT01QTEVURUQoKSBtYWNybyBzZW5kcyBhIG5vdGlmaWNhdGlvbiB0byB0aGUgdGFzayB0byByZW1vdmUgaXQNCisgKiBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLiAgeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUigpIGRvZXMgdGhlIHNhbWUNCisgKiB0aGluZy4gIEl0IGlzIHByb3ZpZGVkIHRvIGVuYWJsZSBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvIGltcGxlbWVudCB0aGVpciBvd24NCisgKiB2ZXJzaW9uIG9mIHNiU0VORF9DT01QTEVURUQoKSwgYW5kIE1VU1QgTk9UIEJFIFVTRUQgQVQgQU5ZIE9USEVSIFRJTUUuDQorICoNCisgKiBTZWUgdGhlIGV4YW1wbGUgaW1wbGVtZW50ZWQgaW4gRnJlZVJUT1MvRGVtby9NaW5pbWFsL01lc3NhZ2VCdWZmZXJBTVAuYyBmb3INCisgKiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciB0byB3aGljaCBkYXRhIHdhcw0KKyAqIHdyaXR0ZW4uDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUNCisgKiBpbml0aWFsaXNlZCB0byBwZEZBTFNFIGJlZm9yZSBpdCBpcyBwYXNzZWQgaW50bw0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoKS4gIElmIGNhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCkgcmVtb3ZlcyBhIHRhc2sgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSwNCisgKiBhbmQgdGhlIHRhc2sgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrLA0KKyAqIHRoZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2lsbCBnZXQgc2V0IHRvIHBkVFJVRSBpbmRpY2F0aW5nIHRoYXQgYQ0KKyAqIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgYmVmb3JlIGV4aXRpbmcgdGhlIElTUi4NCisgKg0KKyAqIEByZXR1cm4gSWYgYSB0YXNrIHdhcyByZW1vdmVkIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUgdGhlbiBwZFRSVUUgaXMgcmV0dXJuZWQuDQorICogT3RoZXJ3aXNlIHBkRkFMU0UgaXMgcmV0dXJuZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUiB4TWVzc2FnZUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciwgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitCYXNlVHlwZV90IHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPC9wcmU+DQorICoNCisgKiBGb3IgYWR2YW5jZWQgdXNlcnMgb25seS4NCisgKg0KKyAqIFRoZSBzYlJFQ0VJVkVfQ09NUExFVEVEKCkgbWFjcm8gaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBGcmVlUlRPUyBBUElzIHdoZW4NCisgKiBkYXRhIGlzIHJlYWQgb3V0IG9mIGEgbWVzc2FnZSBidWZmZXIgb3Igc3RyZWFtIGJ1ZmZlci4gIElmIHRoZXJlIHdhcyBhIHRhc2sNCisgKiB0aGF0IHdhcyBibG9ja2VkIG9uIHRoZSBtZXNzYWdlIG9yIHN0cmVhbSBidWZmZXIgd2FpdGluZyBmb3IgZGF0YSB0byBhcnJpdmUNCisgKiB0aGVuIHRoZSBzYlJFQ0VJVkVfQ09NUExFVEVEKCkgbWFjcm8gc2VuZHMgYSBub3RpZmljYXRpb24gdG8gdGhlIHRhc2sgdG8NCisgKiByZW1vdmUgaXQgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZS4gIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoKQ0KKyAqIGRvZXMgdGhlIHNhbWUgdGhpbmcuICBJdCBpcyBwcm92aWRlZCB0byBlbmFibGUgYXBwbGljYXRpb24gd3JpdGVycyB0bw0KKyAqIGltcGxlbWVudCB0aGVpciBvd24gdmVyc2lvbiBvZiBzYlJFQ0VJVkVfQ09NUExFVEVEKCksIGFuZCBNVVNUIE5PVCBCRSBVU0VEIEFUDQorICogQU5ZIE9USEVSIFRJTUUuDQorICoNCisgKiBTZWUgdGhlIGV4YW1wbGUgaW1wbGVtZW50ZWQgaW4gRnJlZVJUT1MvRGVtby9NaW5pbWFsL01lc3NhZ2VCdWZmZXJBTVAuYyBmb3INCisgKiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBmcm9tIHdoaWNoIGRhdGEgd2FzDQorICogcmVhZC4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHNob3VsZCBiZQ0KKyAqIGluaXRpYWxpc2VkIHRvIHBkRkFMU0UgYmVmb3JlIGl0IGlzIHBhc3NlZCBpbnRvDQorICogeE1lc3NhZ2VCdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUigpLiAgSWYgY2FsbGluZw0KKyAqIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoKSByZW1vdmVzIGEgdGFzayBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLA0KKyAqIGFuZCB0aGUgdGFzayBoYXMgYSBwcmlvcml0eSBhYm92ZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2ssDQorICogdGhlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3aWxsIGdldCBzZXQgdG8gcGRUUlVFIGluZGljYXRpbmcgdGhhdCBhDQorICogY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCBiZWZvcmUgZXhpdGluZyB0aGUgSVNSLg0KKyAqDQorICogQHJldHVybiBJZiBhIHRhc2sgd2FzIHJlbW92ZWQgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSB0aGVuIHBkVFJVRSBpcyByZXR1cm5lZC4NCisgKiBPdGhlcndpc2UgcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1INCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCB4TWVzc2FnZUJ1ZmZlciwgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApIHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUiggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCisNCisjaWYgZGVmaW5lZCggX19jcGx1c3BsdXMgKQ0KK30gLyogZXh0ZXJuICJDIiAqLw0KKyNlbmRpZg0KKw0KKyNlbmRpZgkvKiAhZGVmaW5lZCggRlJFRVJUT1NfTUVTU0FHRV9CVUZGRVJfSCApICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3Byb3RvdHlwZXMuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21wdV9wcm90b3R5cGVzLmgKaW5kZXggZjc3ZTMxMC4uM2I5ODI2NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3Byb3RvdHlwZXMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tcHVfcHJvdG90eXBlcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFdoZW4gdGhlIE1QVSBpcyB1c2VkIHRoZSBzdGFuZGFyZCAobm9uIE1QVSkgQVBJIGZ1bmN0aW9ucyBhcmUgbWFwcGVkIHRvDQpAQCAtNzksNyArMzgsNyBAQAogI2lmbmRlZiBNUFVfUFJPVE9UWVBFU19IDQogI2RlZmluZSBNUFVfUFJPVE9UWVBFU19IDQogDQotLyogTVBVIHZlcnNpb25zIG9mIHRhc2tzLmggQVBJIGZ1bmN0aW9uLiAqLw0KKy8qIE1QVSB2ZXJzaW9ucyBvZiB0YXNrcy5oIEFQSSBmdW5jdGlvbnMuICovDQogQmFzZVR5cGVfdCBNUFVfeFRhc2tDcmVhdGUoIFRhc2tGdW5jdGlvbl90IHB4VGFza0NvZGUsIGNvbnN0IGNoYXIgKiBjb25zdCBwY05hbWUsIGNvbnN0IHVpbnQxNl90IHVzU3RhY2tEZXB0aCwgdm9pZCAqIGNvbnN0IHB2UGFyYW1ldGVycywgVUJhc2VUeXBlX3QgdXhQcmlvcml0eSwgVGFza0hhbmRsZV90ICogY29uc3QgcHhDcmVhdGVkVGFzayApOw0KIFRhc2tIYW5kbGVfdCBNUFVfeFRhc2tDcmVhdGVTdGF0aWMoIFRhc2tGdW5jdGlvbl90IHB4VGFza0NvZGUsIGNvbnN0IGNoYXIgKiBjb25zdCBwY05hbWUsIGNvbnN0IHVpbnQzMl90IHVsU3RhY2tEZXB0aCwgdm9pZCAqIGNvbnN0IHB2UGFyYW1ldGVycywgVUJhc2VUeXBlX3QgdXhQcmlvcml0eSwgU3RhY2tUeXBlX3QgKiBjb25zdCBwdXhTdGFja0J1ZmZlciwgU3RhdGljVGFza190ICogY29uc3QgcHhUYXNrQnVmZmVyICk7DQogQmFzZVR5cGVfdCBNUFVfeFRhc2tDcmVhdGVSZXN0cmljdGVkKCBjb25zdCBUYXNrUGFyYW1ldGVyc190ICogY29uc3QgcHhUYXNrRGVmaW5pdGlvbiwgVGFza0hhbmRsZV90ICpweENyZWF0ZWRUYXNrICk7DQpAQCAtMTIzLDcgKzgyLDcgQEAKIHZvaWQgTVBVX3ZUYXNrTWlzc2VkWWllbGQoIHZvaWQgKTsNCiBCYXNlVHlwZV90IE1QVV94VGFza0dldFNjaGVkdWxlclN0YXRlKCB2b2lkICk7DQogDQotLyogTVBVIHZlcnNpb25zIG9mIHF1ZXVlLmggQVBJIGZ1bmN0aW9uLiAqLw0KKy8qIE1QVSB2ZXJzaW9ucyBvZiBxdWV1ZS5oIEFQSSBmdW5jdGlvbnMuICovDQogQmFzZVR5cGVfdCBNUFVfeFF1ZXVlR2VuZXJpY1NlbmQoIFF1ZXVlSGFuZGxlX3QgeFF1ZXVlLCBjb25zdCB2b2lkICogY29uc3QgcHZJdGVtVG9RdWV1ZSwgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQsIGNvbnN0IEJhc2VUeXBlX3QgeENvcHlQb3NpdGlvbiApOw0KIEJhc2VUeXBlX3QgTVBVX3hRdWV1ZVJlY2VpdmUoIFF1ZXVlSGFuZGxlX3QgeFF1ZXVlLCB2b2lkICogY29uc3QgcHZCdWZmZXIsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQogQmFzZVR5cGVfdCB4UXVldWVQZWVrKCBRdWV1ZUhhbmRsZV90IHhRdWV1ZSwgdm9pZCAqIGNvbnN0IHB2QnVmZmVyLCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApOw0KQEAgLTE1Miw5ICsxMTEsOSBAQAogVUJhc2VUeXBlX3QgTVBVX3V4UXVldWVHZXRRdWV1ZU51bWJlciggUXVldWVIYW5kbGVfdCB4UXVldWUgKTsNCiB1aW50OF90IE1QVV91Y1F1ZXVlR2V0UXVldWVUeXBlKCBRdWV1ZUhhbmRsZV90IHhRdWV1ZSApOw0KIA0KLS8qIE1QVSB2ZXJzaW9ucyBvZiB0aW1lcnMuaCBBUEkgZnVuY3Rpb24uICovDQotVGltZXJIYW5kbGVfdCBNUFVfeFRpbWVyQ3JlYXRlKAljb25zdCBjaGFyICogY29uc3QgcGNUaW1lck5hbWUsIGNvbnN0IFRpY2tUeXBlX3QgeFRpbWVyUGVyaW9kSW5UaWNrcywgY29uc3QgVUJhc2VUeXBlX3QgdXhBdXRvUmVsb2FkLCB2b2lkICogY29uc3QgcHZUaW1lcklELCBUaW1lckNhbGxiYWNrRnVuY3Rpb25fdCBweENhbGxiYWNrRnVuY3Rpb24gKTsNCi1UaW1lckhhbmRsZV90IE1QVV94VGltZXJDcmVhdGVTdGF0aWMoCWNvbnN0IGNoYXIgKiBjb25zdCBwY1RpbWVyTmFtZSwgY29uc3QgVGlja1R5cGVfdCB4VGltZXJQZXJpb2RJblRpY2tzLCBjb25zdCBVQmFzZVR5cGVfdCB1eEF1dG9SZWxvYWQsIHZvaWQgKiBjb25zdCBwdlRpbWVySUQsIFRpbWVyQ2FsbGJhY2tGdW5jdGlvbl90IHB4Q2FsbGJhY2tGdW5jdGlvbiwgU3RhdGljVGltZXJfdCAqcHhUaW1lckJ1ZmZlciApOw0KKy8qIE1QVSB2ZXJzaW9ucyBvZiB0aW1lcnMuaCBBUEkgZnVuY3Rpb25zLiAqLw0KK1RpbWVySGFuZGxlX3QgTVBVX3hUaW1lckNyZWF0ZSggY29uc3QgY2hhciAqIGNvbnN0IHBjVGltZXJOYW1lLCBjb25zdCBUaWNrVHlwZV90IHhUaW1lclBlcmlvZEluVGlja3MsIGNvbnN0IFVCYXNlVHlwZV90IHV4QXV0b1JlbG9hZCwgdm9pZCAqIGNvbnN0IHB2VGltZXJJRCwgVGltZXJDYWxsYmFja0Z1bmN0aW9uX3QgcHhDYWxsYmFja0Z1bmN0aW9uICk7DQorVGltZXJIYW5kbGVfdCBNUFVfeFRpbWVyQ3JlYXRlU3RhdGljKCBjb25zdCBjaGFyICogY29uc3QgcGNUaW1lck5hbWUsIGNvbnN0IFRpY2tUeXBlX3QgeFRpbWVyUGVyaW9kSW5UaWNrcywgY29uc3QgVUJhc2VUeXBlX3QgdXhBdXRvUmVsb2FkLCB2b2lkICogY29uc3QgcHZUaW1lcklELCBUaW1lckNhbGxiYWNrRnVuY3Rpb25fdCBweENhbGxiYWNrRnVuY3Rpb24sIFN0YXRpY1RpbWVyX3QgKnB4VGltZXJCdWZmZXIgKTsNCiB2b2lkICogTVBVX3B2VGltZXJHZXRUaW1lcklEKCBjb25zdCBUaW1lckhhbmRsZV90IHhUaW1lciApOw0KIHZvaWQgTVBVX3ZUaW1lclNldFRpbWVySUQoIFRpbWVySGFuZGxlX3QgeFRpbWVyLCB2b2lkICpwdk5ld0lEICk7DQogQmFzZVR5cGVfdCBNUFVfeFRpbWVySXNUaW1lckFjdGl2ZSggVGltZXJIYW5kbGVfdCB4VGltZXIgKTsNCkBAIC0xNjYsNyArMTI1LDcgQEAKIEJhc2VUeXBlX3QgTVBVX3hUaW1lckNyZWF0ZVRpbWVyVGFzayggdm9pZCApOw0KIEJhc2VUeXBlX3QgTVBVX3hUaW1lckdlbmVyaWNDb21tYW5kKCBUaW1lckhhbmRsZV90IHhUaW1lciwgY29uc3QgQmFzZVR5cGVfdCB4Q29tbWFuZElELCBjb25zdCBUaWNrVHlwZV90IHhPcHRpb25hbFZhbHVlLCBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiwgY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCiANCi0vKiBNUFUgdmVyc2lvbnMgb2YgZXZlbnRfZ3JvdXAuaCBBUEkgZnVuY3Rpb24uICovDQorLyogTVBVIHZlcnNpb25zIG9mIGV2ZW50X2dyb3VwLmggQVBJIGZ1bmN0aW9ucy4gKi8NCiBFdmVudEdyb3VwSGFuZGxlX3QgTVBVX3hFdmVudEdyb3VwQ3JlYXRlKCB2b2lkICk7DQogRXZlbnRHcm91cEhhbmRsZV90IE1QVV94RXZlbnRHcm91cENyZWF0ZVN0YXRpYyggU3RhdGljRXZlbnRHcm91cF90ICpweEV2ZW50R3JvdXBCdWZmZXIgKTsNCiBFdmVudEJpdHNfdCBNUFVfeEV2ZW50R3JvdXBXYWl0Qml0cyggRXZlbnRHcm91cEhhbmRsZV90IHhFdmVudEdyb3VwLCBjb25zdCBFdmVudEJpdHNfdCB1eEJpdHNUb1dhaXRGb3IsIGNvbnN0IEJhc2VUeXBlX3QgeENsZWFyT25FeGl0LCBjb25zdCBCYXNlVHlwZV90IHhXYWl0Rm9yQWxsQml0cywgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCkBAIC0xNzYsNSArMTM1LDIyIEBACiB2b2lkIE1QVV92RXZlbnRHcm91cERlbGV0ZSggRXZlbnRHcm91cEhhbmRsZV90IHhFdmVudEdyb3VwICk7DQogVUJhc2VUeXBlX3QgTVBVX3V4RXZlbnRHcm91cEdldE51bWJlciggdm9pZCogeEV2ZW50R3JvdXAgKTsNCiANCisvKiBNUFUgdmVyc2lvbnMgb2YgbWVzc2FnZS9zdHJlYW1fYnVmZmVyLmggQVBJIGZ1bmN0aW9ucy4gKi8NCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJTZW5kKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBjb25zdCB2b2lkICpwdlR4RGF0YSwgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIGNvbnN0IHZvaWQgKnB2VHhEYXRhLCBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywgQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJSZWNlaXZlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCB2b2lkICpwdlJ4RGF0YSwgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgdm9pZCAqcHZSeERhdGEsIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIEJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQordm9pZCBNUFVfdlN0cmVhbUJ1ZmZlckRlbGV0ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KK0Jhc2VUeXBlX3QgTVBVX3hTdHJlYW1CdWZmZXJJc0Z1bGwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVySXNFbXB0eSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KK0Jhc2VUeXBlX3QgTVBVX3hTdHJlYW1CdWZmZXJSZXNldCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorQmFzZVR5cGVfdCBNUFVfeFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgc2l6ZV90IHhUcmlnZ2VyTGV2ZWwgKTsNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCBNUFVfeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLCBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLCBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIgKTsNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCBNUFVfeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLCBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLCBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIsIHVpbnQ4X3QgKiBjb25zdCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwgU3RhdGljU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0YXRpY1N0cmVhbUJ1ZmZlciApOw0KKw0KKw0KKw0KICNlbmRpZiAvKiBNUFVfUFJPVE9UWVBFU19IICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3dyYXBwZXJzLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tcHVfd3JhcHBlcnMuaAppbmRleCBkZTIwNTYxLi40YzhhYTEyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tcHVfd3JhcHBlcnMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tcHVfd3JhcHBlcnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBNUFVfV1JBUFBFUlNfSA0KICNkZWZpbmUgTVBVX1dSQVBQRVJTX0gNCkBAIC0xNzksNiArMTM4LDIzIEBACiAJCSNkZWZpbmUgeEV2ZW50R3JvdXBTeW5jCQkJCQkJCU1QVV94RXZlbnRHcm91cFN5bmMNCiAJCSNkZWZpbmUgdkV2ZW50R3JvdXBEZWxldGUJCQkJCQlNUFVfdkV2ZW50R3JvdXBEZWxldGUNCiANCisJCS8qIE1hcCBzdGFuZGFyZCBtZXNzYWdlL3N0cmVhbV9idWZmZXIuaCBBUEkgZnVuY3Rpb25zIHRvIHRoZSBNUFUNCisJCWVxdWl2YWxlbnRzLiAqLw0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyU2VuZAkJCQkJCU1QVV94U3RyZWFtQnVmZmVyU2VuZA0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IJCQkJTVBVX3hTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUg0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyUmVjZWl2ZQkJCQkJTVBVX3hTdHJlYW1CdWZmZXJSZWNlaXZlDQorCQkjZGVmaW5lIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUgkJCQlNUFVfeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSDQorCQkjZGVmaW5lIHZTdHJlYW1CdWZmZXJEZWxldGUJCQkJCQlNUFVfdlN0cmVhbUJ1ZmZlckRlbGV0ZQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVySXNGdWxsCQkJCQkJTVBVX3hTdHJlYW1CdWZmZXJJc0Z1bGwNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlcklzRW1wdHkJCQkJCU1QVV94U3RyZWFtQnVmZmVySXNFbXB0eQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyUmVzZXQJCQkJCQlNUFVfeFN0cmVhbUJ1ZmZlclJlc2V0DQorCQkjZGVmaW5lIHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUJCQlNUFVfeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUJCQkJTVBVX3hTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsCQkJTVBVX3hTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUJCQkJTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlDQorCQkjZGVmaW5lIHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljCQlNUFVfeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMNCisNCisNCiAJCS8qIFJlbW92ZSB0aGUgcHJpdmlsZWdlZCBmdW5jdGlvbiBtYWNybywgYnV0IGtlZXAgdGhlIFBSSVZJTEVHRURfREFUQQ0KIAkJbWFjcm8gc28gYXBwbGljYXRpb25zIGNhbiBwbGFjZSBkYXRhIGluIHByaXZpbGVnZWQgYWNjZXNzIHNlY3Rpb25zDQogCQkodXNlZnVsIHdoZW4gdXNpbmcgc3RhdGljYWxseSBhbGxvY2F0ZWQgb2JqZWN0cykuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcG9ydGFibGUuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3BvcnRhYmxlLmgKaW5kZXggMWM3NzQzMi4uOGJmYjI4NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcG9ydGFibGUuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9wb3J0YWJsZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogUG9ydGFibGUgbGF5ZXIgQVBJLiAgRWFjaCBmdW5jdGlvbiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9wcm9qZGVmcy5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcHJvamRlZnMuaAppbmRleCAzNjllMDgzLi44ZWQ5NzJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9wcm9qZGVmcy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3Byb2pkZWZzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUFJPSkRFRlNfSA0KICNkZWZpbmUgUFJPSkRFRlNfSA0KQEAgLTE1Miw4ICsxMTEsMTMgQEAKIA0KIC8qIFRoZSBmb2xsb3dpbmcgZW5kaWFuIHZhbHVlcyBhcmUgdXNlZCBieSBGcmVlUlRPUysgY29tcG9uZW50cywgbm90IEZyZWVSVE9TDQogaXRzZWxmLiAqLw0KLSNkZWZpbmUgcGRGUkVFUlRPU19MSVRUTEVfRU5ESUFOCTANCi0jZGVmaW5lIHBkRlJFRVJUT1NfQklHX0VORElBTgkJMQ0KKyNkZWZpbmUgcGRGUkVFUlRPU19MSVRUTEVfRU5ESUFOCQkwDQorI2RlZmluZSBwZEZSRUVSVE9TX0JJR19FTkRJQU4JCQkxDQorDQorLyogUmUtZGVmaW5pbmcgZW5kaWFuIHZhbHVlcyBmb3IgZ2VuZXJpYyBuYW1pbmcuICovDQorI2RlZmluZSBwZExJVFRMRV9FTkRJQU4JCQkJCXBkRlJFRVJUT1NfTElUVExFX0VORElBTg0KKyNkZWZpbmUgcGRCSUdfRU5ESUFOCQkJCQlwZEZSRUVSVE9TX0JJR19FTkRJQU4NCisNCiANCiAjZW5kaWYgLyogUFJPSkRFRlNfSCAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3F1ZXVlLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9xdWV1ZS5oCmluZGV4IDVlYTgxODguLjU3NzU3ZDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3F1ZXVlLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcXVldWUuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBRVUVVRV9IDQpAQCAtMjgyLDggKzI0MSw2IEBACiAJCQkJCQkJICAgKTsNCiAgKiA8L3ByZT4NCiAgKg0KLSAqIFRoaXMgaXMgYSBtYWNybyB0aGF0IGNhbGxzIHhRdWV1ZUdlbmVyaWNTZW5kKCkuDQotICoNCiAgKiBQb3N0IGFuIGl0ZW0gdG8gdGhlIGZyb250IG9mIGEgcXVldWUuICBUaGUgaXRlbSBpcyBxdWV1ZWQgYnkgY29weSwgbm90IGJ5DQogICogcmVmZXJlbmNlLiAgVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBiZSBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgc2VydmljZQ0KICAqIHJvdXRpbmUuICBTZWUgeFF1ZXVlU2VuZEZyb21JU1IgKCkgZm9yIGFuIGFsdGVybmF0aXZlIHdoaWNoIG1heSBiZSB1c2VkDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc2VtcGhyLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zZW1waHIuaAppbmRleCBmODc5MWJlLi41MjU1YzA3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zZW1waHIuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zZW1waHIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTRU1BUEhPUkVfSA0KICNkZWZpbmUgU0VNQVBIT1JFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdGFja19tYWNyb3MuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3N0YWNrX21hY3Jvcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZGQ3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdGFja19tYWNyb3MuaApAQCAtMCwwICsxLDEzMCBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaWZuZGVmIFNUQUNLX01BQ1JPU19IDQorI2RlZmluZSBTVEFDS19NQUNST1NfSA0KKw0KKy8qDQorICogQ2FsbCB0aGUgc3RhY2sgb3ZlcmZsb3cgaG9vayBmdW5jdGlvbiBpZiB0aGUgc3RhY2sgb2YgdGhlIHRhc2sgYmVpbmcgc3dhcHBlZA0KKyAqIG91dCBpcyBjdXJyZW50bHkgb3ZlcmZsb3dlZCwgb3IgbG9va3MgbGlrZSBpdCBtaWdodCBoYXZlIG92ZXJmbG93ZWQgaW4gdGhlDQorICogcGFzdC4NCisgKg0KKyAqIFNldHRpbmcgY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XIHRvIDEgd2lsbCBjYXVzZSB0aGUgbWFjcm8gdG8gY2hlY2sNCisgKiB0aGUgY3VycmVudCBzdGFjayBzdGF0ZSBvbmx5IC0gY29tcGFyaW5nIHRoZSBjdXJyZW50IHRvcCBvZiBzdGFjayB2YWx1ZSB0bw0KKyAqIHRoZSBzdGFjayBsaW1pdC4gIFNldHRpbmcgY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XIHRvIGdyZWF0ZXIgdGhhbiAxDQorICogd2lsbCBhbHNvIGNhdXNlIHRoZSBsYXN0IGZldyBzdGFjayBieXRlcyB0byBiZSBjaGVja2VkIHRvIGVuc3VyZSB0aGUgdmFsdWUNCisgKiB0byB3aGljaCB0aGUgYnl0ZXMgd2VyZSBzZXQgd2hlbiB0aGUgdGFzayB3YXMgY3JlYXRlZCBoYXZlIG5vdCBiZWVuDQorICogb3ZlcndyaXR0ZW4uICBOb3RlIHRoaXMgc2Vjb25kIHRlc3QgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYW4gb3ZlcmZsb3dlZA0KKyAqIHN0YWNrIHdpbGwgYWx3YXlzIGJlIHJlY29nbmlzZWQuDQorICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCAoIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA9PSAxICkgJiYgKCBwb3J0U1RBQ0tfR1JPV1RIIDwgMCApICkNCisNCisJLyogT25seSB0aGUgY3VycmVudCBzdGFjayBzdGF0ZSBpcyB0byBiZSBjaGVja2VkLiAqLw0KKwkjZGVmaW5lIHRhc2tDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1coKQkJCQkJCQkJCQkJCQkJCQlcDQorCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJLyogSXMgdGhlIGN1cnJlbnRseSBzYXZlZCBzdGFjayBwb2ludGVyIHdpdGhpbiB0aGUgc3RhY2sgbGltaXQ/ICovCQkJCQkJCQlcDQorCQlpZiggcHhDdXJyZW50VENCLT5weFRvcE9mU3RhY2sgPD0gcHhDdXJyZW50VENCLT5weFN0YWNrICkJCQkJCQkJCQkJXA0KKwkJewkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQl2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggKCBUYXNrSGFuZGxlX3QgKSBweEN1cnJlbnRUQ0IsIHB4Q3VycmVudFRDQi0+cGNUYXNrTmFtZSApOwlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwl9DQorDQorI2VuZGlmIC8qIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA9PSAxICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCAoIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA9PSAxICkgJiYgKCBwb3J0U1RBQ0tfR1JPV1RIID4gMCApICkNCisNCisJLyogT25seSB0aGUgY3VycmVudCBzdGFjayBzdGF0ZSBpcyB0byBiZSBjaGVja2VkLiAqLw0KKwkjZGVmaW5lIHRhc2tDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1coKQkJCQkJCQkJCQkJCQkJCQlcDQorCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJLyogSXMgdGhlIGN1cnJlbnRseSBzYXZlZCBzdGFjayBwb2ludGVyIHdpdGhpbiB0aGUgc3RhY2sgbGltaXQ/ICovCQkJCQkJCQlcDQorCQlpZiggcHhDdXJyZW50VENCLT5weFRvcE9mU3RhY2sgPj0gcHhDdXJyZW50VENCLT5weEVuZE9mU3RhY2sgKQkJCQkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soICggVGFza0hhbmRsZV90ICkgcHhDdXJyZW50VENCLCBweEN1cnJlbnRUQ0ItPnBjVGFza05hbWUgKTsJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPT0gMSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggKCBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPiAxICkgJiYgKCBwb3J0U1RBQ0tfR1JPV1RIIDwgMCApICkNCisNCisJI2RlZmluZSB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XKCkJCQkJCQkJCQkJCQkJCQkJXA0KKwl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCWNvbnN0IHVpbnQzMl90ICogY29uc3QgcHVsU3RhY2sgPSAoIHVpbnQzMl90ICogKSBweEN1cnJlbnRUQ0ItPnB4U3RhY2s7CQkJCQkJCVwNCisJCWNvbnN0IHVpbnQzMl90IHVsQ2hlY2tWYWx1ZSA9ICggdWludDMyX3QgKSAweGE1YTVhNWE1OwkJCQkJCQkJCQkJXA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJaWYoICggcHVsU3RhY2tbIDAgXSAhPSB1bENoZWNrVmFsdWUgKSB8fAkJCQkJCQkJCQkJCVwNCisJCQkoIHB1bFN0YWNrWyAxIF0gIT0gdWxDaGVja1ZhbHVlICkgfHwJCQkJCQkJCQkJCQlcDQorCQkJKCBwdWxTdGFja1sgMiBdICE9IHVsQ2hlY2tWYWx1ZSApIHx8CQkJCQkJCQkJCQkJXA0KKwkJCSggcHVsU3RhY2tbIDMgXSAhPSB1bENoZWNrVmFsdWUgKSApCQkJCQkJCQkJCQkJXA0KKwkJewkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQl2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggKCBUYXNrSGFuZGxlX3QgKSBweEN1cnJlbnRUQ0IsIHB4Q3VycmVudFRDQi0+cGNUYXNrTmFtZSApOwlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwl9DQorDQorI2VuZGlmIC8qICNpZiggY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XID4gMSApICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCAoIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA+IDEgKSAmJiAoIHBvcnRTVEFDS19HUk9XVEggPiAwICkgKQ0KKw0KKwkjZGVmaW5lIHRhc2tDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1coKQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJewkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJaW50OF90ICpwY0VuZE9mU3RhY2sgPSAoIGludDhfdCAqICkgcHhDdXJyZW50VENCLT5weEVuZE9mU3RhY2s7CQkJCQkJCQkJCQkJCQkJCQkJXA0KKwlzdGF0aWMgY29uc3QgdWludDhfdCB1Y0V4cGVjdGVkU3RhY2tCeXRlc1tdID0gewl0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsCQlcDQorCQkJCQkJCQkJCQkJCXRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwJCVwNCisJCQkJCQkJCQkJCQkJdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLAkJXA0KKwkJCQkJCQkJCQkJCQl0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsCQlcDQorCQkJCQkJCQkJCQkJCXRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSB9OwlcDQorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJcGNFbmRPZlN0YWNrIC09IHNpemVvZiggdWNFeHBlY3RlZFN0YWNrQnl0ZXMgKTsJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCS8qIEhhcyB0aGUgZXh0cmVtaXR5IG9mIHRoZSB0YXNrIHN0YWNrIGV2ZXIgYmVlbiB3cml0dGVuIG92ZXI/ICovCQkJCQkJCQkJCQkJCQkJCVwNCisJCWlmKCBtZW1jbXAoICggdm9pZCAqICkgcGNFbmRPZlN0YWNrLCAoIHZvaWQgKiApIHVjRXhwZWN0ZWRTdGFja0J5dGVzLCBzaXplb2YoIHVjRXhwZWN0ZWRTdGFja0J5dGVzICkgKSAhPSAwICkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQl2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggKCBUYXNrSGFuZGxlX3QgKSBweEN1cnJlbnRUQ0IsIHB4Q3VycmVudFRDQi0+cGNUYXNrTmFtZSApOwkJCQkJCQkJCVwNCisJCX0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJfQ0KKw0KKyNlbmRpZiAvKiAjaWYoIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA+IDEgKSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFJlbW92ZSBzdGFjayBvdmVyZmxvdyBtYWNybyBpZiBub3QgYmVpbmcgdXNlZC4gKi8NCisjaWZuZGVmIHRhc2tDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cNCisJI2RlZmluZSB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XKCkNCisjZW5kaWYNCisNCisNCisNCisjZW5kaWYgLyogU1RBQ0tfTUFDUk9TX0ggKi8NCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdHJlYW1fYnVmZmVyLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdHJlYW1fYnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNiNDkyMwotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3N0cmVhbV9idWZmZXIuaApAQCAtMCwwICsxLDg0OSBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisvKg0KKyAqIFN0cmVhbSBidWZmZXJzIGFyZSB1c2VkIHRvIHNlbmQgYSBjb250aW51b3VzIHN0cmVhbSBvZiBkYXRhIGZyb20gb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdG8gYW5vdGhlci4gIFRoZWlyIGltcGxlbWVudGF0aW9uIGlzIGxpZ2h0IHdlaWdodCwgbWFraW5nIHRoZW0NCisgKiBwYXJ0aWN1bGFybHkgc3VpdGVkIGZvciBpbnRlcnJ1cHQgdG8gdGFzayBhbmQgY29yZSB0byBjb3JlIGNvbW11bmljYXRpb24NCisgKiBzY2VuYXJpb3MuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gc2VjdGlvbiBhbmQgc2V0IHRoZQ0KKyAqIHJlY2VpdmUgYmxvY2sgdGltZSB0byAwLg0KKyAqDQorICovDQorDQorI2lmbmRlZiBTVFJFQU1fQlVGRkVSX0gNCisjZGVmaW5lIFNUUkVBTV9CVUZGRVJfSA0KKw0KKy8qKg0KKyAqIFR5cGUgYnkgd2hpY2ggc3RyZWFtIGJ1ZmZlcnMgYXJlIHJlZmVyZW5jZWQuICBGb3IgZXhhbXBsZSwgYSBjYWxsIHRvDQorICogeFN0cmVhbUJ1ZmZlckNyZWF0ZSgpIHJldHVybnMgYW4gU3RyZWFtQnVmZmVySGFuZGxlX3QgdmFyaWFibGUgdGhhdCBjYW4NCisgKiB0aGVuIGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXIgdG8geFN0cmVhbUJ1ZmZlclNlbmQoKSwgeFN0cmVhbUJ1ZmZlclJlY2VpdmUoKSwNCisgKiBldGMuDQorICovDQordHlwZWRlZiB2b2lkICogU3RyZWFtQnVmZmVySGFuZGxlX3Q7DQorDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyQ3JlYXRlKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcyApOw0KKzwvcHJlPg0KKyAqDQorICogQ3JlYXRlcyBhIG5ldyBzdHJlYW0gYnVmZmVyIHVzaW5nIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuICBTZWUNCisgKiB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljKCkgZm9yIGEgdmVyc2lvbiB0aGF0IHVzZXMgc3RhdGljYWxseSBhbGxvY2F0ZWQNCisgKiBtZW1vcnkgKG1lbW9yeSB0aGF0IGlzIGFsbG9jYXRlZCBhdCBjb21waWxlIHRpbWUpLg0KKyAqDQorICogY29uZmlnU1VQUE9SVF9EWU5BTUlDX0FMTE9DQVRJT04gbXVzdCBiZSBzZXQgdG8gMSBvciBsZWZ0IHVuZGVmaW5lZCBpbg0KKyAqIEZyZWVSVE9TQ29uZmlnLmggZm9yIHhTdHJlYW1CdWZmZXJDcmVhdGUoKSB0byBiZSBhdmFpbGFibGUuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlclNpemVCeXRlcyBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRoZSBzdHJlYW0gYnVmZmVyIHdpbGwgYmUNCisgKiBhYmxlIHRvIGhvbGQgYXQgYW55IG9uZSB0aW1lLg0KKyAqDQorICogQHBhcmFtIHhUcmlnZ2VyTGV2ZWxCeXRlcyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBpbiB0aGUgc3RyZWFtDQorICogYnVmZmVyIGJlZm9yZSBhIHRhc2sgdGhhdCBpcyBibG9ja2VkIG9uIHRoZSBzdHJlYW0gYnVmZmVyIHRvIHdhaXQgZm9yIGRhdGEgaXMNCisgKiBtb3ZlZCBvdXQgb2YgdGhlIGJsb2NrZWQgc3RhdGUuICBGb3IgZXhhbXBsZSwgaWYgYSB0YXNrIGlzIGJsb2NrZWQgb24gYSByZWFkDQorICogb2YgYW4gZW1wdHkgc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhIHRyaWdnZXIgbGV2ZWwgb2YgMSB0aGVuIHRoZSB0YXNrIHdpbGwgYmUNCisgKiB1bmJsb2NrZWQgd2hlbiBhIHNpbmdsZSBieXRlIGlzIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlciBvciB0aGUgdGFzaydzIGJsb2NrDQorICogdGltZSBleHBpcmVzLiAgQXMgYW5vdGhlciBleGFtcGxlLCBpZiBhIHRhc2sgaXMgYmxvY2tlZCBvbiBhIHJlYWQgb2YgYW4gZW1wdHkNCisgKiBzdHJlYW0gYnVmZmVyIHRoYXQgaGFzIGEgdHJpZ2dlciBsZXZlbCBvZiAxMCB0aGVuIHRoZSB0YXNrIHdpbGwgbm90IGJlDQorICogdW5ibG9ja2VkIHVudGlsIHRoZSBzdHJlYW0gYnVmZmVyIGNvbnRhaW5zIGF0IGxlYXN0IDEwIGJ5dGVzIG9yIHRoZSB0YXNrJ3MNCisgKiBibG9jayB0aW1lIGV4cGlyZXMuICBJZiBhIHJlYWRpbmcgdGFzaydzIGJsb2NrIHRpbWUgZXhwaXJlcyBiZWZvcmUgdGhlDQorICogdHJpZ2dlciBsZXZlbCBpcyByZWFjaGVkIHRoZW4gdGhlIHRhc2sgd2lsbCBzdGlsbCByZWNlaXZlIGhvd2V2ZXIgbWFueSBieXRlcw0KKyAqIGFyZSBhY3R1YWxseSBhdmFpbGFibGUuICBTZXR0aW5nIGEgdHJpZ2dlciBsZXZlbCBvZiAwIHdpbGwgcmVzdWx0IGluIGENCisgKiB0cmlnZ2VyIGxldmVsIG9mIDEgYmVpbmcgdXNlZC4gIEl0IGlzIG5vdCB2YWxpZCB0byBzcGVjaWZ5IGEgdHJpZ2dlciBsZXZlbA0KKyAqIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBidWZmZXIgc2l6ZS4NCisgKg0KKyAqIEByZXR1cm4gSWYgTlVMTCBpcyByZXR1cm5lZCwgdGhlbiB0aGUgc3RyZWFtIGJ1ZmZlciBjYW5ub3QgYmUgY3JlYXRlZA0KKyAqIGJlY2F1c2UgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgRnJlZVJUT1MgdG8gYWxsb2NhdGUNCisgKiB0aGUgc3RyZWFtIGJ1ZmZlciBkYXRhIHN0cnVjdHVyZXMgYW5kIHN0b3JhZ2UgYXJlYS4gIEEgbm9uLU5VTEwgdmFsdWUgYmVpbmcNCisgKiByZXR1cm5lZCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseSAtDQorICogdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBzdG9yZWQgYXMgdGhlIGhhbmRsZSB0byB0aGUgY3JlYXRlZCBzdHJlYW0NCisgKiBidWZmZXIuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KKw0KK3ZvaWQgdkFGdW5jdGlvbiggdm9pZCApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorY29uc3Qgc2l6ZV90IHhTdHJlYW1CdWZmZXJTaXplQnl0ZXMgPSAxMDAsIHhUcmlnZ2VyTGV2ZWwgPSAxMDsNCisNCisgICAgLy8gQ3JlYXRlIGEgc3RyZWFtIGJ1ZmZlciB0aGF0IGNhbiBob2xkIDEwMCBieXRlcy4gIFRoZSBtZW1vcnkgdXNlZCB0byBob2xkDQorICAgIC8vIGJvdGggdGhlIHN0cmVhbSBidWZmZXIgc3RydWN0dXJlIGFuZCB0aGUgZGF0YSBpbiB0aGUgc3RyZWFtIGJ1ZmZlciBpcw0KKyAgICAvLyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkuDQorICAgIHhTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCB4U3RyZWFtQnVmZmVyU2l6ZUJ5dGVzLCB4VHJpZ2dlckxldmVsICk7DQorDQorICAgIGlmKCB4U3RyZWFtQnVmZmVyID09IE5VTEwgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGVyZSB3YXMgbm90IGVub3VnaCBoZWFwIG1lbW9yeSBzcGFjZSBhdmFpbGFibGUgdG8gY3JlYXRlIHRoZQ0KKyAgICAgICAgLy8gc3RyZWFtIGJ1ZmZlci4NCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIC8vIFRoZSBzdHJlYW0gYnVmZmVyIHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSBhbmQgY2FuIG5vdyBiZSB1c2VkLg0KKyAgICB9DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyQ3JlYXRlIHhTdHJlYW1CdWZmZXJDcmVhdGUNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCB4QnVmZmVyU2l6ZUJ5dGVzLCB4VHJpZ2dlckxldmVsQnl0ZXMgKSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggeEJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbEJ5dGVzLCBwZEZBTFNFICkNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYyggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNTdHJlYW1CdWZmZXJfdCAqcHhTdGF0aWNTdHJlYW1CdWZmZXIgKTsNCis8L3ByZT4NCisgKiBDcmVhdGVzIGEgbmV3IHN0cmVhbSBidWZmZXIgdXNpbmcgc3RhdGljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LiAgU2VlDQorICogeFN0cmVhbUJ1ZmZlckNyZWF0ZSgpIGZvciBhIHZlcnNpb24gdGhhdCB1c2VzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuDQorICoNCisgKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OIG11c3QgYmUgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaCBmb3INCisgKiB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljKCkgdG8gYmUgYXZhaWxhYmxlLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJTaXplQnl0ZXMgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgdGhlDQorICogcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEgcGFyYW1ldGVyLg0KKyAqDQorICogQHBhcmFtIHhUcmlnZ2VyTGV2ZWxCeXRlcyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBpbiB0aGUgc3RyZWFtDQorICogYnVmZmVyIGJlZm9yZSBhIHRhc2sgdGhhdCBpcyBibG9ja2VkIG9uIHRoZSBzdHJlYW0gYnVmZmVyIHRvIHdhaXQgZm9yIGRhdGEgaXMNCisgKiBtb3ZlZCBvdXQgb2YgdGhlIGJsb2NrZWQgc3RhdGUuICBGb3IgZXhhbXBsZSwgaWYgYSB0YXNrIGlzIGJsb2NrZWQgb24gYSByZWFkDQorICogb2YgYW4gZW1wdHkgc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhIHRyaWdnZXIgbGV2ZWwgb2YgMSB0aGVuIHRoZSB0YXNrIHdpbGwgYmUNCisgKiB1bmJsb2NrZWQgd2hlbiBhIHNpbmdsZSBieXRlIGlzIHdyaXR0ZW4gdG8gdGhlIGJ1ZmZlciBvciB0aGUgdGFzaydzIGJsb2NrDQorICogdGltZSBleHBpcmVzLiAgQXMgYW5vdGhlciBleGFtcGxlLCBpZiBhIHRhc2sgaXMgYmxvY2tlZCBvbiBhIHJlYWQgb2YgYW4gZW1wdHkNCisgKiBzdHJlYW0gYnVmZmVyIHRoYXQgaGFzIGEgdHJpZ2dlciBsZXZlbCBvZiAxMCB0aGVuIHRoZSB0YXNrIHdpbGwgbm90IGJlDQorICogdW5ibG9ja2VkIHVudGlsIHRoZSBzdHJlYW0gYnVmZmVyIGNvbnRhaW5zIGF0IGxlYXN0IDEwIGJ5dGVzIG9yIHRoZSB0YXNrJ3MNCisgKiBibG9jayB0aW1lIGV4cGlyZXMuICBJZiBhIHJlYWRpbmcgdGFzaydzIGJsb2NrIHRpbWUgZXhwaXJlcyBiZWZvcmUgdGhlDQorICogdHJpZ2dlciBsZXZlbCBpcyByZWFjaGVkIHRoZW4gdGhlIHRhc2sgd2lsbCBzdGlsbCByZWNlaXZlIGhvd2V2ZXIgbWFueSBieXRlcw0KKyAqIGFyZSBhY3R1YWxseSBhdmFpbGFibGUuICBTZXR0aW5nIGEgdHJpZ2dlciBsZXZlbCBvZiAwIHdpbGwgcmVzdWx0IGluIGENCisgKiB0cmlnZ2VyIGxldmVsIG9mIDEgYmVpbmcgdXNlZC4gIEl0IGlzIG5vdCB2YWxpZCB0byBzcGVjaWZ5IGEgdHJpZ2dlciBsZXZlbA0KKyAqIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBidWZmZXIgc2l6ZS4NCisgKg0KKyAqIEBwYXJhbSBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSBNdXN0IHBvaW50IHRvIGEgdWludDhfdCBhcnJheSB0aGF0IGlzIGF0DQorICogbGVhc3QgeEJ1ZmZlclNpemVCeXRlcyArIDEgYmlnLiAgVGhpcyBpcyB0aGUgYXJyYXkgdG8gd2hpY2ggc3RyZWFtcyBhcmUNCisgKiBjb3BpZWQgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHB4U3RhdGljU3RyZWFtQnVmZmVyIE11c3QgcG9pbnQgdG8gYSB2YXJpYWJsZSBvZiB0eXBlDQorICogU3RhdGljU3RyZWFtQnVmZmVyX3QsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkIHRoZSBzdHJlYW0gYnVmZmVyJ3MgZGF0YQ0KKyAqIHN0cnVjdHVyZS4NCisgKg0KKyAqIEByZXR1cm4gSWYgdGhlIHN0cmVhbSBidWZmZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgdGhlbiBhIGhhbmRsZSB0byB0aGUNCisgKiBjcmVhdGVkIHN0cmVhbSBidWZmZXIgaXMgcmV0dXJuZWQuIElmIGVpdGhlciBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSBvcg0KKyAqIHB4U3RhdGljc3RyZWFtQnVmZmVyIGFyZSBOVUxMIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorDQorLy8gVXNlZCB0byBkaW1lbnNpb24gdGhlIGFycmF5IHVzZWQgdG8gaG9sZCB0aGUgc3RyZWFtcy4gIFRoZSBhdmFpbGFibGUgc3BhY2UNCisvLyB3aWxsIGFjdHVhbGx5IGJlIG9uZSBsZXNzIHRoYW4gdGhpcywgc28gOTk5Lg0KKyNkZWZpbmUgU1RPUkFHRV9TSVpFX0JZVEVTIDEwMDANCisNCisvLyBEZWZpbmVzIHRoZSBtZW1vcnkgdGhhdCB3aWxsIGFjdHVhbGx5IGhvbGQgdGhlIHN0cmVhbXMgd2l0aGluIHRoZSBzdHJlYW0NCisvLyBidWZmZXIuDQorc3RhdGljIHVpbnQ4X3QgdWNTdG9yYWdlQnVmZmVyWyBTVE9SQUdFX1NJWkVfQllURVMgXTsNCisNCisvLyBUaGUgdmFyaWFibGUgdXNlZCB0byBob2xkIHRoZSBzdHJlYW0gYnVmZmVyIHN0cnVjdHVyZS4NCitTdGF0aWNTdHJlYW1CdWZmZXJfdCB4U3RyZWFtQnVmZmVyU3RydWN0Ow0KKw0KK3ZvaWQgTXlGdW5jdGlvbiggdm9pZCApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorY29uc3Qgc2l6ZV90IHhUcmlnZ2VyTGV2ZWwgPSAxOw0KKw0KKyAgICB4U3RyZWFtQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYyggc2l6ZW9mKCB1Y0J1ZmZlclN0b3JhZ2UgKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhUcmlnZ2VyTGV2ZWwsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y0J1ZmZlclN0b3JhZ2UsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeFN0cmVhbUJ1ZmZlclN0cnVjdCApOw0KKw0KKyAgICAvLyBBcyBuZWl0aGVyIHRoZSBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSBvciBweFN0YXRpY1N0cmVhbUJ1ZmZlcg0KKyAgICAvLyBwYXJhbWV0ZXJzIHdlcmUgTlVMTCwgeFN0cmVhbUJ1ZmZlciB3aWxsIG5vdCBiZSBOVUxMLCBhbmQgY2FuIGJlIHVzZWQgdG8NCisgICAgLy8gcmVmZXJlbmNlIHRoZSBjcmVhdGVkIHN0cmVhbSBidWZmZXIgaW4gb3RoZXIgc3RyZWFtIGJ1ZmZlciBBUEkgY2FsbHMuDQorDQorICAgIC8vIE90aGVyIGNvZGUgdGhhdCB1c2VzIHRoZSBzdHJlYW0gYnVmZmVyIGNhbiBnbyBoZXJlLg0KK30NCisNCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYyB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYyggeEJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbEJ5dGVzLCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZVN0YXRpYyggeEJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbEJ5dGVzLCBwZEZBTFNFLCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKQ0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclNlbmQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCis8cHJlPg0KKyAqDQorICogU2VuZHMgYnl0ZXMgdG8gYSBzdHJlYW0gYnVmZmVyLiAgVGhlIGJ5dGVzIGFyZSBjb3BpZWQgaW50byB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeFN0cmVhbUJ1ZmZlclNlbmQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSBzZW5kDQorICogYmxvY2sgdGltZSB0byAwLiAgTGlrZXdpc2UsIGlmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHJlYWRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeFN0cmVhbUJ1ZmZlclJlYWQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSByZWNlaXZlDQorICogYmxvY2sgdGltZSB0byAwLg0KKyAqDQorICogVXNlIHhTdHJlYW1CdWZmZXJTZW5kKCkgdG8gd3JpdGUgdG8gYSBzdHJlYW0gYnVmZmVyIGZyb20gYSB0YXNrLiAgVXNlDQorICogeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCkgdG8gd3JpdGUgdG8gYSBzdHJlYW0gYnVmZmVyIGZyb20gYW4gaW50ZXJydXB0DQorICogc2VydmljZSByb3V0aW5lIChJU1IpLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciB0byB3aGljaCBhIHN0cmVhbSBpcw0KKyAqIGJlaW5nIHNlbnQuDQorICoNCisgKiBAcGFyYW0gcHZUeERhdGEgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdGhhdCBob2xkcyB0aGUgYnl0ZXMgdG8gYmUgY29waWVkDQorICogaW50byB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSB4RGF0YUxlbmd0aEJ5dGVzICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkgZnJvbSBwdlR4RGF0YQ0KKyAqIGludG8gdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geFRpY2tzVG9XYWl0IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSB0YXNrIHNob3VsZCByZW1haW4gaW4gdGhlDQorICogQmxvY2tlZCBzdGF0ZSB0byB3YWl0IGZvciBlbm91Z2ggc3BhY2UgdG8gYmVjb21lIGF2YWlsYWJsZSBpbiB0aGUgc3RyZWFtDQorICogYnVmZmVyLCBzaG91bGQgdGhlIHN0cmVhbSBidWZmZXIgY29udGFpbiB0b28gbGl0dGxlIHNwYWNlIHRvIGhvbGQgdGhlDQorICogYW5vdGhlciB4RGF0YUxlbmd0aEJ5dGVzIGJ5dGVzLiAgVGhlIGJsb2NrIHRpbWUgaXMgc3BlY2lmaWVkIGluIHRpY2sgcGVyaW9kcywNCisgKiBzbyB0aGUgYWJzb2x1dGUgdGltZSBpdCByZXByZXNlbnRzIGlzIGRlcGVuZGVudCBvbiB0aGUgdGljayBmcmVxdWVuY3kuICBUaGUNCisgKiBtYWNybyBwZE1TX1RPX1RJQ0tTKCkgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIHRpbWUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcw0KKyAqIGludG8gYSB0aW1lIHNwZWNpZmllZCBpbiB0aWNrcy4gIFNldHRpbmcgeFRpY2tzVG9XYWl0IHRvIHBvcnRNQVhfREVMQVkgd2lsbA0KKyAqIGNhdXNlIHRoZSB0YXNrIHRvIHdhaXQgaW5kZWZpbml0ZWx5ICh3aXRob3V0IHRpbWluZyBvdXQpLCBwcm92aWRlZA0KKyAqIElOQ0xVREVfdlRhc2tTdXNwZW5kIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBJZiBhIHRhc2sgdGltZXMgb3V0DQorICogYmVmb3JlIGl0IGNhbiB3cml0ZSBhbGwgeERhdGFMZW5ndGhCeXRlcyBpbnRvIHRoZSBidWZmZXIgaXQgd2lsbCBzdGlsbCB3cml0ZQ0KKyAqIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUuICBBIHRhc2sgZG9lcyBub3QgdXNlIGFueSBDUFUgdGltZSB3aGVuIGl0IGlzIGluDQorICogdGhlIGJsb2NrZWQgc3RhdGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGJ1ZmZlci4gIElmIGEgdGFzayB0aW1lcw0KKyAqIG91dCBiZWZvcmUgaXQgY2FuIHdyaXRlIGFsbCB4RGF0YUxlbmd0aEJ5dGVzIGludG8gdGhlIGJ1ZmZlciBpdCB3aWxsIHN0aWxsDQorICogd3JpdGUgYXMgbWFueSBieXRlcyBhcyBwb3NzaWJsZS4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQordm9pZCB2QUZ1bmN0aW9uKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorc2l6ZV90IHhCeXRlc1NlbnQ7DQordWludDhfdCB1Y0FycmF5VG9TZW5kW10gPSB7IDAsIDEsIDIsIDMgfTsNCitjaGFyICpwY1N0cmluZ1RvU2VuZCA9ICJTdHJpbmcgdG8gc2VuZCI7DQorY29uc3QgVGlja1R5cGVfdCB4MTAwbXMgPSBwZE1TX1RPX1RJQ0tTKCAxMDAgKTsNCisNCisgICAgLy8gU2VuZCBhbiBhcnJheSB0byB0aGUgc3RyZWFtIGJ1ZmZlciwgYmxvY2tpbmcgZm9yIGEgbWF4aW11bSBvZiAxMDBtcyB0bw0KKyAgICAvLyB3YWl0IGZvciBlbm91Z2ggc3BhY2UgdG8gYmUgYXZhaWxhYmxlIGluIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgdWNBcnJheVRvU2VuZCwgc2l6ZW9mKCB1Y0FycmF5VG9TZW5kICksIHgxMDBtcyApOw0KKw0KKyAgICBpZiggeEJ5dGVzU2VudCAhPSBzaXplb2YoIHVjQXJyYXlUb1NlbmQgKSApDQorICAgIHsNCisgICAgICAgIC8vIFRoZSBjYWxsIHRvIHhTdHJlYW1CdWZmZXJTZW5kKCkgdGltZXMgb3V0IGJlZm9yZSB0aGVyZSB3YXMgZW5vdWdoDQorICAgICAgICAvLyBzcGFjZSBpbiB0aGUgYnVmZmVyIGZvciB0aGUgZGF0YSB0byBiZSB3cml0dGVuLCBidXQgaXQgZGlkDQorICAgICAgICAvLyBzdWNjZXNzZnVsbHkgd3JpdGUgeEJ5dGVzU2VudCBieXRlcy4NCisgICAgfQ0KKw0KKyAgICAvLyBTZW5kIHRoZSBzdHJpbmcgdG8gdGhlIHN0cmVhbSBidWZmZXIuICBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlcmUgaXMgbm90DQorICAgIC8vIGVub3VnaCBzcGFjZSBpbiB0aGUgYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcGNTdHJpbmdUb1NlbmQsIHN0cmxlbiggcGNTdHJpbmdUb1NlbmQgKSwgMCApOw0KKw0KKyAgICBpZiggeEJ5dGVzU2VudCAhPSBzdHJsZW4oIHBjU3RyaW5nVG9TZW5kICkgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgZW50aXJlIHN0cmluZyBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIHN0cmVhbSBidWZmZXIgYmVjYXVzZQ0KKyAgICAgICAgLy8gdGhlcmUgd2FzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgYnVmZmVyLCBidXQgeEJ5dGVzU2VudCBieXRlcw0KKyAgICAgICAgLy8gd2VyZSBzZW50LiAgQ291bGQgdHJ5IGFnYWluIHRvIHNlbmQgdGhlIHJlbWFpbmluZyBieXRlcy4NCisgICAgfQ0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlclNlbmQgeFN0cmVhbUJ1ZmZlclNlbmQNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCSAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorCQkJCQkJICBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisJCQkJCQkgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPHByZT4NCisgKg0KKyAqIEludGVycnVwdCBzYWZlIHZlcnNpb24gb2YgdGhlIEFQSSBmdW5jdGlvbiB0aGF0IHNlbmRzIGEgc3RyZWFtIG9mIGJ5dGVzIHRvDQorICogdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqIFVzZSB4U3RyZWFtQnVmZmVyU2VuZCgpIHRvIHdyaXRlIHRvIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpIHRvIHdyaXRlIHRvIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGFuIGludGVycnVwdA0KKyAqIHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gd2hpY2ggYSBzdHJlYW0gaXMNCisgKiBiZWluZyBzZW50Lg0KKyAqDQorICogQHBhcmFtIHB2VHhEYXRhIEEgcG9pbnRlciB0byB0aGUgZGF0YSB0aGF0IGlzIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBzdHJlYW0NCisgKiBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geERhdGFMZW5ndGhCeXRlcyBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gY29weSBmcm9tIHB2VHhEYXRhDQorICogaW50byB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICBJdCBpcyBwb3NzaWJsZSB0aGF0IGEgc3RyZWFtIGJ1ZmZlciB3aWxsDQorICogaGF2ZSBhIHRhc2sgYmxvY2tlZCBvbiBpdCB3YWl0aW5nIGZvciBkYXRhLiAgQ2FsbGluZw0KKyAqIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpIGNhbiBtYWtlIGRhdGEgYXZhaWxhYmxlLCBhbmQgc28gY2F1c2UgYSB0YXNrIHRoYXQNCisgKiB3YXMgd2FpdGluZyBmb3IgZGF0YSB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZS4gIElmIGNhbGxpbmcNCisgKiB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoKSBjYXVzZXMgYSB0YXNrIHRvIGxlYXZlIHRoZSBCbG9ja2VkIHN0YXRlLCBhbmQgdGhlDQorICogdW5ibG9ja2VkIHRhc2sgaGFzIGEgcHJpb3JpdHkgaGlnaGVyIHRoYW4gdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayAodGhlDQorICogdGFzayB0aGF0IHdhcyBpbnRlcnJ1cHRlZCksIHRoZW4sIGludGVybmFsbHksIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpDQorICogd2lsbCBzZXQgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gdG8gcGRUUlVFLiAgSWYNCisgKiB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoKSBzZXRzIHRoaXMgdmFsdWUgdG8gcGRUUlVFLCB0aGVuIG5vcm1hbGx5IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgaW50ZXJydXB0IGlzIGV4aXRlZC4gIFRoaXMgd2lsbA0KKyAqIGVuc3VyZSB0aGF0IHRoZSBpbnRlcnJ1cHQgcmV0dXJucyBkaXJlY3RseSB0byB0aGUgaGlnaGVzdCBwcmlvcml0eSBSZWFkeQ0KKyAqIHN0YXRlIHRhc2suICAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUgc2V0IHRvIHBkRkFMU0UgYmVmb3JlIGl0DQorICogaXMgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uLiAgU2VlIHRoZSBleGFtcGxlIGNvZGUgYmVsb3cgZm9yIGFuIGV4YW1wbGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGJ1ZmZlciwgd2hpY2ggd2lsbA0KKyAqIGJlIGxlc3MgdGhhbiB4RGF0YUxlbmd0aEJ5dGVzIGlmIHRoZSBzdHJlYW0gYnVmZmVyIGRpZG4ndCBoYXZlIGVub3VnaCBmcmVlDQorICogc3BhY2UgZm9yIGFsbCB0aGUgYnl0ZXMgdG8gYmUgd3JpdHRlbi4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorLy8gQSBzdHJlYW0gYnVmZmVyIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLg0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorDQordm9pZCB2QW5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSggdm9pZCApDQorew0KK3NpemVfdCB4Qnl0ZXNTZW50Ow0KK2NoYXIgKnBjU3RyaW5nVG9TZW5kID0gIlN0cmluZyB0byBzZW5kIjsNCitCYXNlVHlwZV90IHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7IC8vIEluaXRpYWxpc2VkIHRvIHBkRkFMU0UuDQorDQorICAgIC8vIEF0dGVtcHQgdG8gc2VuZCB0aGUgc3RyaW5nIHRvIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oIHBjU3RyaW5nVG9TZW5kICksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlcmUgd2FzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgc3RyZWFtIGJ1ZmZlciBmb3IgdGhlIGVudGlyZQ0KKyAgICAgICAgLy8gc3RyaW5nIHRvIGJlIHdyaXR0ZW4sIHV0IHhCeXRlc1NlbnQgYnl0ZXMgd2VyZSB3cml0dGVuLg0KKyAgICB9DQorDQorICAgIC8vIElmIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3YXMgc2V0IHRvIHBkVFJVRSBpbnNpZGUNCisgICAgLy8geFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCkgdGhlbiBhIHRhc2sgdGhhdCBoYXMgYSBwcmlvcml0eSBhYm92ZSB0aGUNCisgICAgLy8gcHJpb3JpdHkgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayB3YXMgdW5ibG9ja2VkIGFuZCBhIGNvbnRleHQNCisgICAgLy8gc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgdG8gZW5zdXJlIHRoZSBJU1IgcmV0dXJucyB0byB0aGUgdW5ibG9ja2VkDQorICAgIC8vIHRhc2suICBJbiBtb3N0IEZyZWVSVE9TIHBvcnRzIHRoaXMgaXMgZG9uZSBieSBzaW1wbHkgcGFzc2luZw0KKyAgICAvLyB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gaW50byB0YXNrWUlFTERfRlJPTV9JU1IoKSwgd2hpY2ggd2lsbCB0ZXN0IHRoZQ0KKyAgICAvLyB2YXJpYWJsZXMgdmFsdWUsIGFuZCBwZXJmb3JtIHRoZSBjb250ZXh0IHN3aXRjaCBpZiBuZWNlc3NhcnkuICBDaGVjayB0aGUNCisgICAgLy8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHBvcnQgaW4gdXNlIGZvciBwb3J0IHNwZWNpZmljIGluc3RydWN0aW9ucy4NCisgICAgdGFza1lJRUxEX0ZST01fSVNSKCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCit9DQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1INCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCSBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisJCQkJCQkJCSBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisJCQkJCQkJCSBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK3NpemVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB2UnhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorPC9wcmU+DQorICoNCisgKiBSZWNlaXZlcyBieXRlcyBmcm9tIGEgc3RyZWFtIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeFN0cmVhbUJ1ZmZlclNlbmQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSBzZW5kDQorICogYmxvY2sgdGltZSB0byAwLiAgTGlrZXdpc2UsIGlmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHJlYWRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeFN0cmVhbUJ1ZmZlclJlYWQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSByZWNlaXZlDQorICogYmxvY2sgdGltZSB0byAwLg0KKyAqDQorICogVXNlIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCkgdG8gcmVhZCBmcm9tIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUigpIHRvIHJlYWQgZnJvbSBhIHN0cmVhbSBidWZmZXIgZnJvbSBhbg0KKyAqIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgKElTUikuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGZyb20gd2hpY2ggYnl0ZXMgYXJlIHRvDQorICogYmUgcmVjZWl2ZWQuDQorICoNCisgKiBAcGFyYW0gcHZSeERhdGEgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaW50byB3aGljaCB0aGUgcmVjZWl2ZWQgYnl0ZXMgd2lsbCBiZQ0KKyAqIGNvcGllZC4NCisgKg0KKyAqIEBwYXJhbSB4QnVmZmVyTGVuZ3RoQnl0ZXMgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgdGhlDQorICogcHZSeERhdGEgcGFyYW1ldGVyLiAgVGhpcyBzZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byByZWNlaXZlIGluIG9uZQ0KKyAqIGNhbGwuICB4U3RyZWFtQnVmZmVyUmVjZWl2ZSB3aWxsIHJldHVybiBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlIHVwIHRvIGENCisgKiBtYXhpbXVtIHNldCBieSB4QnVmZmVyTGVuZ3RoQnl0ZXMuDQorICoNCisgKiBAcGFyYW0geFRpY2tzVG9XYWl0IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSB0YXNrIHNob3VsZCByZW1haW4gaW4gdGhlDQorICogQmxvY2tlZCBzdGF0ZSB0byB3YWl0IGZvciBkYXRhIHRvIGJlY29tZSBhdmFpbGFibGUgaWYgdGhlIHN0cmVhbSBidWZmZXIgaXMNCisgKiBlbXB0eS4gIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCkgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgeFRpY2tzVG9XYWl0IGlzDQorICogemVyby4gIFRoZSBibG9jayB0aW1lIGlzIHNwZWNpZmllZCBpbiB0aWNrIHBlcmlvZHMsIHNvIHRoZSBhYnNvbHV0ZSB0aW1lIGl0DQorICogcmVwcmVzZW50cyBpcyBkZXBlbmRlbnQgb24gdGhlIHRpY2sgZnJlcXVlbmN5LiAgVGhlIG1hY3JvIHBkTVNfVE9fVElDS1MoKSBjYW4NCisgKiBiZSB1c2VkIHRvIGNvbnZlcnQgYSB0aW1lIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMgaW50byBhIHRpbWUgc3BlY2lmaWVkIGluDQorICogdGlja3MuICBTZXR0aW5nIHhUaWNrc1RvV2FpdCB0byBwb3J0TUFYX0RFTEFZIHdpbGwgY2F1c2UgdGhlIHRhc2sgdG8gd2FpdA0KKyAqIGluZGVmaW5pdGVseSAod2l0aG91dCB0aW1pbmcgb3V0KSwgcHJvdmlkZWQgSU5DTFVERV92VGFza1N1c3BlbmQgaXMgc2V0IHRvIDENCisgKiBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgQSB0YXNrIGRvZXMgbm90IHVzZSBhbnkgQ1BVIHRpbWUgd2hlbiBpdCBpcyBpbiB0aGUNCisgKiBCbG9ja2VkIHN0YXRlLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlciwgd2hpY2ggd2lsbA0KKyAqIGJlIGxlc3MgdGhhbiB4QnVmZmVyTGVuZ3RoQnl0ZXMgaWYgdGhlIGNhbGwgdG8geFN0cmVhbUJ1ZmZlclJlY2VpdmUoKSB0aW1lZA0KKyAqIG91dCBiZWZvcmUgeEJ1ZmZlckxlbmd0aEJ5dGVzIHdlcmUgYXZhaWxhYmxlLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCit2b2lkIHZBRnVuY3Rpb24oIFN0cmVhbUJ1ZmZlcl90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCit1aW50OF90IHVjUnhEYXRhWyAyMCBdOw0KK3NpemVfdCB4UmVjZWl2ZWRCeXRlczsNCitjb25zdCBUaWNrVHlwZV90IHhCbG9ja1RpbWUgPSBwZE1TX1RPX1RJQ0tTKCAyMCApOw0KKw0KKyAgICAvLyBSZWNlaXZlIHVwIHRvIGFub3RoZXIgc2l6ZW9mKCB1Y1J4RGF0YSApIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBidWZmZXIuDQorICAgIC8vIFdhaXQgaW4gdGhlIEJsb2NrZWQgc3RhdGUgKHNvIG5vdCB1c2luZyBhbnkgQ1BVIHByb2Nlc3NpbmcgdGltZSkgZm9yIGENCisgICAgLy8gbWF4aW11bSBvZiAxMDBtcyBmb3IgdGhlIGZ1bGwgc2l6ZW9mKCB1Y1J4RGF0YSApIG51bWJlciBvZiBieXRlcyB0byBiZQ0KKyAgICAvLyBhdmFpbGFibGUuDQorICAgIHhSZWNlaXZlZEJ5dGVzID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdm9pZCAqICkgdWNSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggdWNSeERhdGEgKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEJsb2NrVGltZSApOw0KKw0KKyAgICBpZiggeFJlY2VpdmVkQnl0ZXMgPiAwICkNCisgICAgew0KKyAgICAgICAgLy8gQSB1Y1J4RGF0YSBjb250YWlucyBhbm90aGVyIHhSZWNpZXZlZEJ5dGVzIGJ5dGVzIG9mIGRhdGEsIHdoaWNoIGNhbg0KKyAgICAgICAgLy8gYmUgcHJvY2Vzc2VkIGhlcmUuLi4uDQorICAgIH0NCit9DQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJSZWNlaXZlIHhTdHJlYW1CdWZmZXJSZWNlaXZlDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJIHZvaWQgKnB2UnhEYXRhLA0KKwkJCQkJCQkgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisJCQkJCQkJIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdlJ4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCis8L3ByZT4NCisgKg0KKyAqIEFuIGludGVycnVwdCBzYWZlIHZlcnNpb24gb2YgdGhlIEFQSSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGJ5dGVzIGZyb20gYQ0KKyAqIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiBVc2UgeFN0cmVhbUJ1ZmZlclJlY2VpdmUoKSB0byByZWFkIGJ5dGVzIGZyb20gYSBzdHJlYW0gYnVmZmVyIGZyb20gYSB0YXNrLg0KKyAqIFVzZSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0byByZWFkIGJ5dGVzIGZyb20gYSBzdHJlYW0gYnVmZmVyIGZyb20gYW4NCisgKiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIChJU1IpLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBmcm9tIHdoaWNoIGEgc3RyZWFtDQorICogaXMgYmVpbmcgcmVjZWl2ZWQuDQorICoNCisgKiBAcGFyYW0gcHZSeERhdGEgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgaW50byB3aGljaCB0aGUgcmVjZWl2ZWQgYnl0ZXMgYXJlDQorICogY29waWVkLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJMZW5ndGhCeXRlcyBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSB0aGUNCisgKiBwdlJ4RGF0YSBwYXJhbWV0ZXIuICBUaGlzIHNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlY2VpdmUgaW4gb25lDQorICogY2FsbC4gIHhTdHJlYW1CdWZmZXJSZWNlaXZlIHdpbGwgcmV0dXJuIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUgdXAgdG8gYQ0KKyAqIG1heGltdW0gc2V0IGJ5IHhCdWZmZXJMZW5ndGhCeXRlcy4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICBJdCBpcyBwb3NzaWJsZSB0aGF0IGEgc3RyZWFtIGJ1ZmZlciB3aWxsDQorICogaGF2ZSBhIHRhc2sgYmxvY2tlZCBvbiBpdCB3YWl0aW5nIGZvciBzcGFjZSB0byBiZWNvbWUgYXZhaWxhYmxlLiAgQ2FsbGluZw0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUigpIGNhbiBtYWtlIHNwYWNlIGF2YWlsYWJsZSwgYW5kIHNvIGNhdXNlIGEgdGFzaw0KKyAqIHRoYXQgaXMgd2FpdGluZyBmb3Igc3BhY2UgdG8gbGVhdmUgdGhlIEJsb2NrZWQgc3RhdGUuICBJZiBjYWxsaW5nDQorICogeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgY2F1c2VzIGEgdGFzayB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZSwgYW5kDQorICogdGhlIHVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sNCisgKiAodGhlIHRhc2sgdGhhdCB3YXMgaW50ZXJydXB0ZWQpLCB0aGVuLCBpbnRlcm5hbGx5LA0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUigpIHdpbGwgc2V0ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHRvIHBkVFJVRS4NCisgKiBJZiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSBzZXRzIHRoaXMgdmFsdWUgdG8gcGRUUlVFLCB0aGVuIG5vcm1hbGx5IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgaW50ZXJydXB0IGlzIGV4aXRlZC4gIFRoYXQgd2lsbA0KKyAqIGVuc3VyZSB0aGUgaW50ZXJydXB0IHJldHVybnMgZGlyZWN0bHkgdG8gdGhlIGhpZ2hlc3QgcHJpb3JpdHkgUmVhZHkgc3RhdGUNCisgKiB0YXNrLiAgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlIHNldCB0byBwZEZBTFNFIGJlZm9yZSBpdCBpcw0KKyAqIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi4gIFNlZSB0aGUgY29kZSBleGFtcGxlIGJlbG93IGZvciBhbiBleGFtcGxlLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlciwgaWYgYW55Lg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCisvLyBBIHN0cmVhbSBidWZmZXIgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuDQorU3RyZWFtQnVmZmVyX3QgeFN0cmVhbUJ1ZmZlcjsNCisNCit2b2lkIHZBbkludGVycnVwdFNlcnZpY2VSb3V0aW5lKCB2b2lkICkNCit7DQordWludDhfdCB1Y1J4RGF0YVsgMjAgXTsNCitzaXplX3QgeFJlY2VpdmVkQnl0ZXM7DQorQmFzZVR5cGVfdCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOyAgLy8gSW5pdGlhbGlzZWQgdG8gcGRGQUxTRS4NCisNCisgICAgLy8gUmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgICAgeFJlY2VpdmVkQnl0ZXMgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHVjUnhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCB1Y1J4RGF0YSApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKw0KKyAgICBpZiggeFJlY2VpdmVkQnl0ZXMgPiAwICkNCisgICAgew0KKyAgICAgICAgLy8gdWNSeERhdGEgY29udGFpbnMgeFJlY2VpdmVkQnl0ZXMgcmVhZCBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAgICAgICAgLy8gUHJvY2VzcyB0aGUgc3RyZWFtIGhlcmUuLi4uDQorICAgIH0NCisNCisgICAgLy8gSWYgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdhcyBzZXQgdG8gcGRUUlVFIGluc2lkZQ0KKyAgICAvLyB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0aGVuIGEgdGFzayB0aGF0IGhhcyBhIHByaW9yaXR5IGFib3ZlIHRoZQ0KKyAgICAvLyBwcmlvcml0eSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIHdhcyB1bmJsb2NrZWQgYW5kIGEgY29udGV4dA0KKyAgICAvLyBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCB0byBlbnN1cmUgdGhlIElTUiByZXR1cm5zIHRvIHRoZSB1bmJsb2NrZWQNCisgICAgLy8gdGFzay4gIEluIG1vc3QgRnJlZVJUT1MgcG9ydHMgdGhpcyBpcyBkb25lIGJ5IHNpbXBseSBwYXNzaW5nDQorICAgIC8vIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBpbnRvIHRhc2tZSUVMRF9GUk9NX0lTUigpLCB3aGljaCB3aWxsIHRlc3QgdGhlDQorICAgIC8vIHZhcmlhYmxlcyB2YWx1ZSwgYW5kIHBlcmZvcm0gdGhlIGNvbnRleHQgc3dpdGNoIGlmIG5lY2Vzc2FyeS4gIENoZWNrIHRoZQ0KKyAgICAvLyBkb2N1bWVudGF0aW9uIGZvciB0aGUgcG9ydCBpbiB1c2UgZm9yIHBvcnQgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zLg0KKyAgICB0YXNrWUlFTERfRlJPTV9JU1IoIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUg0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCXZvaWQgKnB2UnhEYXRhLA0KKwkJCQkJCQkJCXNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkJQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCit2b2lkIHZTdHJlYW1CdWZmZXJEZWxldGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCis8L3ByZT4NCisgKg0KKyAqIERlbGV0ZXMgYSBzdHJlYW0gYnVmZmVyIHRoYXQgd2FzIHByZXZpb3VzbHkgY3JlYXRlZCB1c2luZyBhIGNhbGwgdG8NCisgKiB4U3RyZWFtQnVmZmVyQ3JlYXRlKCkgb3IgeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYygpLiAgSWYgdGhlIHN0cmVhbQ0KKyAqIGJ1ZmZlciB3YXMgY3JlYXRlZCB1c2luZyBkeW5hbWljIG1lbW9yeSAodGhhdCBpcywgYnkgeFN0cmVhbUJ1ZmZlckNyZWF0ZSgpKSwNCisgKiB0aGVuIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZyZWVkLg0KKyAqDQorICogQSBzdHJlYW0gYnVmZmVyIGhhbmRsZSBtdXN0IG5vdCBiZSB1c2VkIGFmdGVyIHRoZSBzdHJlYW0gYnVmZmVyIGhhcyBiZWVuDQorICogZGVsZXRlZC4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gYmUgZGVsZXRlZC4NCisgKg0KKyAqIFxkZWZncm91cCB2U3RyZWFtQnVmZmVyRGVsZXRlIHZTdHJlYW1CdWZmZXJEZWxldGUNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQordm9pZCB2U3RyZWFtQnVmZmVyRGVsZXRlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVySXNGdWxsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBRdWVyaWVzIGEgc3RyZWFtIGJ1ZmZlciB0byBzZWUgaWYgaXQgaXMgZnVsbC4gIEEgc3RyZWFtIGJ1ZmZlciBpcyBmdWxsIGlmIGl0DQorICogZG9lcyBub3QgaGF2ZSBhbnkgZnJlZSBzcGFjZSwgYW5kIHRoZXJlZm9yZSBjYW5ub3QgYWNjZXB0IGFueSBtb3JlIGRhdGEuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGJlaW5nIHF1ZXJpZWQuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGZ1bGwgdGhlbiBwZFRSVUUgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UNCisgKiBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJJc0Z1bGwgeFN0cmVhbUJ1ZmZlcklzRnVsbA0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJJc0Z1bGwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJJc0VtcHR5KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBRdWVyaWVzIGEgc3RyZWFtIGJ1ZmZlciB0byBzZWUgaWYgaXQgaXMgZW1wdHkuICBBIHN0cmVhbSBidWZmZXIgaXMgZW1wdHkgaWYNCisgKiBpdCBkb2VzIG5vdCBjb250YWluIGFueSBkYXRhLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBiZWluZyBxdWVyaWVkLg0KKyAqDQorICogQHJldHVybiBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBlbXB0eSB0aGVuIHBkVFJVRSBpcyByZXR1cm5lZC4gIE90aGVyd2lzZQ0KKyAqIHBkRkFMU0UgaXMgcmV0dXJuZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlcklzRW1wdHkgeFN0cmVhbUJ1ZmZlcklzRW1wdHkNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVySXNFbXB0eSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclJlc2V0KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBSZXNldHMgYSBzdHJlYW0gYnVmZmVyIHRvIGl0cyBpbml0aWFsLCBlbXB0eSwgc3RhdGUuICBBbnkgZGF0YSB0aGF0IHdhcyBpbg0KKyAqIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGRpc2NhcmRlZC4gIEEgc3RyZWFtIGJ1ZmZlciBjYW4gb25seSBiZSByZXNldCBpZiB0aGVyZQ0KKyAqIGFyZSBubyB0YXNrcyBibG9ja2VkIHdhaXRpbmcgdG8gZWl0aGVyIHNlbmQgdG8gb3IgcmVjZWl2ZSBmcm9tIHRoZSBzdHJlYW0NCisgKiBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGJlaW5nIHJlc2V0Lg0KKyAqDQorICogQHJldHVybiBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyByZXNldCB0aGVuIHBkUEFTUyBpcyByZXR1cm5lZC4gIElmIHRoZXJlIHdhcw0KKyAqIGEgdGFzayBibG9ja2VkIHdhaXRpbmcgdG8gc2VuZCB0byBvciByZWFkIGZyb20gdGhlIHN0cmVhbSBidWZmZXIgdGhlbiB0aGUNCisgKiBzdHJlYW0gYnVmZmVyIGlzIG5vdCByZXNldCBhbmQgcGRGQUlMIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJSZXNldCB4U3RyZWFtQnVmZmVyUmVzZXQNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyUmVzZXQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KKzwvcHJlPg0KKyAqDQorICogUXVlcmllcyBhIHN0cmVhbSBidWZmZXIgdG8gc2VlIGhvdyBtdWNoIGZyZWUgc3BhY2UgaXQgY29udGFpbnMsIHdoaWNoIGlzDQorICogZXF1YWwgdG8gdGhlIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuIGJlIHNlbnQgdG8gdGhlIHN0cmVhbSBidWZmZXIgYmVmb3JlIGl0DQorICogaXMgZnVsbC4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgYmVpbmcgcXVlcmllZC4NCisgKg0KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0gYnVmZmVyIGJlZm9yZQ0KKyAqIHRoZSBzdHJlYW0gYnVmZmVyIHdvdWxkIGJlIGZ1bGwuDQorICoNCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KKzwvcHJlPg0KKyAqDQorICogUXVlcmllcyBhIHN0cmVhbSBidWZmZXIgdG8gc2VlIGhvdyBtdWNoIGRhdGEgaXQgY29udGFpbnMsIHdoaWNoIGlzIGVxdWFsIHRvDQorICogdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSByZWFkIGZyb20gdGhlIHN0cmVhbSBidWZmZXIgYmVmb3JlIHRoZSBzdHJlYW0NCisgKiBidWZmZXIgd291bGQgYmUgZW1wdHkuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGJlaW5nIHF1ZXJpZWQuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyIGJlZm9yZQ0KKyAqIHRoZSBzdHJlYW0gYnVmZmVyIHdvdWxkIGJlIGVtcHR5Lg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgc2l6ZV90IHhUcmlnZ2VyTGV2ZWwgKTsNCis8L3ByZT4NCisgKg0KKyAqIEEgc3RyZWFtIGJ1ZmZlcidzIHRyaWdnZXIgbGV2ZWwgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgaW4gdGhlDQorICogc3RyZWFtIGJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgYmxvY2tlZCBvbiB0aGUgc3RyZWFtIGJ1ZmZlciB0bw0KKyAqIHdhaXQgZm9yIGRhdGEgaXMgbW92ZWQgb3V0IG9mIHRoZSBibG9ja2VkIHN0YXRlLiAgRm9yIGV4YW1wbGUsIGlmIGEgdGFzayBpcw0KKyAqIGJsb2NrZWQgb24gYSByZWFkIG9mIGFuIGVtcHR5IHN0cmVhbSBidWZmZXIgdGhhdCBoYXMgYSB0cmlnZ2VyIGxldmVsIG9mIDENCisgKiB0aGVuIHRoZSB0YXNrIHdpbGwgYmUgdW5ibG9ja2VkIHdoZW4gYSBzaW5nbGUgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBidWZmZXINCisgKiBvciB0aGUgdGFzaydzIGJsb2NrIHRpbWUgZXhwaXJlcy4gIEFzIGFub3RoZXIgZXhhbXBsZSwgaWYgYSB0YXNrIGlzIGJsb2NrZWQNCisgKiBvbiBhIHJlYWQgb2YgYW4gZW1wdHkgc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhIHRyaWdnZXIgbGV2ZWwgb2YgMTAgdGhlbiB0aGUNCisgKiB0YXNrIHdpbGwgbm90IGJlIHVuYmxvY2tlZCB1bnRpbCB0aGUgc3RyZWFtIGJ1ZmZlciBjb250YWlucyBhdCBsZWFzdCAxMCBieXRlcw0KKyAqIG9yIHRoZSB0YXNrJ3MgYmxvY2sgdGltZSBleHBpcmVzLiAgSWYgYSByZWFkaW5nIHRhc2sncyBibG9jayB0aW1lIGV4cGlyZXMNCisgKiBiZWZvcmUgdGhlIHRyaWdnZXIgbGV2ZWwgaXMgcmVhY2hlZCB0aGVuIHRoZSB0YXNrIHdpbGwgc3RpbGwgcmVjZWl2ZSBob3dldmVyDQorICogbWFueSBieXRlcyBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlLiAgU2V0dGluZyBhIHRyaWdnZXIgbGV2ZWwgb2YgMCB3aWxsIHJlc3VsdA0KKyAqIGluIGEgdHJpZ2dlciBsZXZlbCBvZiAxIGJlaW5nIHVzZWQuICBJdCBpcyBub3QgdmFsaWQgdG8gc3BlY2lmeSBhIHRyaWdnZXINCisgKiBsZXZlbCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgYnVmZmVyIHNpemUuDQorICoNCisgKiBBIHRyaWdnZXIgbGV2ZWwgaXMgc2V0IHdoZW4gdGhlIHN0cmVhbSBidWZmZXIgaXMgY3JlYXRlZCwgYW5kIGNhbiBiZSBtb2RpZmllZA0KKyAqIHVzaW5nIHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoKS4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgYmVpbmcgdXBkYXRlZC4NCisgKg0KKyAqIEBwYXJhbSB4VHJpZ2dlckxldmVsIFRoZSBuZXcgdHJpZ2dlciBsZXZlbCBmb3IgdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiBAcmV0dXJuIElmIHhUcmlnZ2VyTGV2ZWwgd2FzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3RyZWFtIGJ1ZmZlcidzIGxlbmd0aA0KKyAqIHRoZW4gdGhlIHRyaWdnZXIgbGV2ZWwgd2lsbCBiZSB1cGRhdGVkIGFuZCBwZFRSVUUgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UNCisgKiBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwgeFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbA0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHNpemVfdCB4VHJpZ2dlckxldmVsICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCis8L3ByZT4NCisgKg0KKyAqIEZvciBhZHZhbmNlZCB1c2VycyBvbmx5Lg0KKyAqDQorICogVGhlIHNiU0VORF9DT01QTEVURUQoKSBtYWNybyBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIEZyZWVSVE9TIEFQSXMgd2hlbg0KKyAqIGRhdGEgaXMgc2VudCB0byBhIG1lc3NhZ2UgYnVmZmVyIG9yIHN0cmVhbSBidWZmZXIuICBJZiB0aGVyZSB3YXMgYSB0YXNrIHRoYXQNCisgKiB3YXMgYmxvY2tlZCBvbiB0aGUgbWVzc2FnZSBvciBzdHJlYW0gYnVmZmVyIHdhaXRpbmcgZm9yIGRhdGEgdG8gYXJyaXZlIHRoZW4NCisgKiB0aGUgc2JTRU5EX0NPTVBMRVRFRCgpIG1hY3JvIHNlbmRzIGEgbm90aWZpY2F0aW9uIHRvIHRoZSB0YXNrIHRvIHJlbW92ZSBpdA0KKyAqIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUuICB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoKSBkb2VzIHRoZSBzYW1lDQorICogdGhpbmcuICBJdCBpcyBwcm92aWRlZCB0byBlbmFibGUgYXBwbGljYXRpb24gd3JpdGVycyB0byBpbXBsZW1lbnQgdGhlaXIgb3duDQorICogdmVyc2lvbiBvZiBzYlNFTkRfQ09NUExFVEVEKCksIGFuZCBNVVNUIE5PVCBCRSBVU0VEIEFUIEFOWSBPVEhFUiBUSU1FLg0KKyAqDQorICogU2VlIHRoZSBleGFtcGxlIGltcGxlbWVudGVkIGluIEZyZWVSVE9TL0RlbW8vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMgZm9yDQorICogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gd2hpY2ggZGF0YSB3YXMNCisgKiB3cml0dGVuLg0KKyAqDQorICogQHBhcmFtIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlDQorICogaW5pdGlhbGlzZWQgdG8gcGRGQUxTRSBiZWZvcmUgaXQgaXMgcGFzc2VkIGludG8NCisgKiB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoKS4gIElmIGNhbGxpbmcNCisgKiB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoKSByZW1vdmVzIGEgdGFzayBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLA0KKyAqIGFuZCB0aGUgdGFzayBoYXMgYSBwcmlvcml0eSBhYm92ZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2ssDQorICogdGhlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3aWxsIGdldCBzZXQgdG8gcGRUUlVFIGluZGljYXRpbmcgdGhhdCBhDQorICogY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCBiZWZvcmUgZXhpdGluZyB0aGUgSVNSLg0KKyAqDQorICogQHJldHVybiBJZiBhIHRhc2sgd2FzIHJlbW92ZWQgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSB0aGVuIHBkVFJVRSBpcyByZXR1cm5lZC4NCisgKiBPdGhlcndpc2UgcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCis8L3ByZT4NCisgKg0KKyAqIEZvciBhZHZhbmNlZCB1c2VycyBvbmx5Lg0KKyAqDQorICogVGhlIHNiUkVDRUlWRV9DT01QTEVURUQoKSBtYWNybyBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIEZyZWVSVE9TIEFQSXMgd2hlbg0KKyAqIGRhdGEgaXMgcmVhZCBvdXQgb2YgYSBtZXNzYWdlIGJ1ZmZlciBvciBzdHJlYW0gYnVmZmVyLiAgSWYgdGhlcmUgd2FzIGEgdGFzaw0KKyAqIHRoYXQgd2FzIGJsb2NrZWQgb24gdGhlIG1lc3NhZ2Ugb3Igc3RyZWFtIGJ1ZmZlciB3YWl0aW5nIGZvciBkYXRhIHRvIGFycml2ZQ0KKyAqIHRoZW4gdGhlIHNiUkVDRUlWRV9DT01QTEVURUQoKSBtYWNybyBzZW5kcyBhIG5vdGlmaWNhdGlvbiB0byB0aGUgdGFzayB0bw0KKyAqIHJlbW92ZSBpdCBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLiAgeFN0cmVhbUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCkNCisgKiBkb2VzIHRoZSBzYW1lIHRoaW5nLiAgSXQgaXMgcHJvdmlkZWQgdG8gZW5hYmxlIGFwcGxpY2F0aW9uIHdyaXRlcnMgdG8NCisgKiBpbXBsZW1lbnQgdGhlaXIgb3duIHZlcnNpb24gb2Ygc2JSRUNFSVZFX0NPTVBMRVRFRCgpLCBhbmQgTVVTVCBOT1QgQkUgVVNFRCBBVA0KKyAqIEFOWSBPVEhFUiBUSU1FLg0KKyAqDQorICogU2VlIHRoZSBleGFtcGxlIGltcGxlbWVudGVkIGluIEZyZWVSVE9TL0RlbW8vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMgZm9yDQorICogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgZnJvbSB3aGljaCBkYXRhIHdhcw0KKyAqIHJlYWQuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUNCisgKiBpbml0aWFsaXNlZCB0byBwZEZBTFNFIGJlZm9yZSBpdCBpcyBwYXNzZWQgaW50bw0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUigpLiAgSWYgY2FsbGluZw0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUigpIHJlbW92ZXMgYSB0YXNrIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUsDQorICogYW5kIHRoZSB0YXNrIGhhcyBhIHByaW9yaXR5IGFib3ZlIHRoZSBwcmlvcml0eSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzaywNCisgKiB0aGVuICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdpbGwgZ2V0IHNldCB0byBwZFRSVUUgaW5kaWNhdGluZyB0aGF0IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSBleGl0aW5nIHRoZSBJU1IuDQorICoNCisgKiBAcmV0dXJuIElmIGEgdGFzayB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlIHRoZW4gcGRUUlVFIGlzIHJldHVybmVkLg0KKyAqIE90aGVyd2lzZSBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1INCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qIEZ1bmN0aW9ucyBiZWxvdyBoZXJlIGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS4gKi8NCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsDQorCQkJCQkJCQkJCQkJIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsDQorCQkJCQkJCQkJCQkJIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKwkJCQkJCQkJCQkJCQkgICBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkJCQkgICBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIsDQorCQkJCQkJCQkJCQkJCSAgIHVpbnQ4X3QgKiBjb25zdCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwNCisJCQkJCQkJCQkJCQkJICAgU3RhdGljU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0YXRpY1N0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorI2lmKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorCXZvaWQgdlN0cmVhbUJ1ZmZlclNldFN0cmVhbUJ1ZmZlck51bWJlciggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgVUJhc2VUeXBlX3QgdXhTdHJlYW1CdWZmZXJOdW1iZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKwlVQmFzZVR5cGVfdCB1eFN0cmVhbUJ1ZmZlckdldFN0cmVhbUJ1ZmZlck51bWJlciggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorCXVpbnQ4X3QgdWNTdHJlYW1CdWZmZXJHZXRTdHJlYW1CdWZmZXJUeXBlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisjZW5kaWYNCisNCisjaWYgZGVmaW5lZCggX19jcGx1c3BsdXMgKQ0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKyNlbmRpZgkvKiAhZGVmaW5lZCggU1RSRUFNX0JVRkZFUl9IICkgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90YXNrLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90YXNrLmgKaW5kZXggMGY5NzlmOC4uZjJkYjM5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGFzay5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3Rhc2suaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBJTkNfVEFTS19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGltZXJzLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90aW1lcnMuaAppbmRleCBlMmEwNGY3Li44MTlhZDc0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90aW1lcnMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90aW1lcnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBUSU1FUlNfSA0KQEAgLTEzMDUsNiArMTI2NCwxMSBAQAogQmFzZVR5cGVfdCB4VGltZXJDcmVhdGVUaW1lclRhc2soIHZvaWQgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KIEJhc2VUeXBlX3QgeFRpbWVyR2VuZXJpY0NvbW1hbmQoIFRpbWVySGFuZGxlX3QgeFRpbWVyLCBjb25zdCBCYXNlVHlwZV90IHhDb21tYW5kSUQsIGNvbnN0IFRpY2tUeXBlX3QgeE9wdGlvbmFsVmFsdWUsIEJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuLCBjb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQogDQorI2lmKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorCXZvaWQgdlRpbWVyU2V0VGltZXJOdW1iZXIoIFRpbWVySGFuZGxlX3QgeFRpbWVyLCBVQmFzZVR5cGVfdCB1eFRpbWVyTnVtYmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisJVUJhc2VUeXBlX3QgdXhUaW1lckdldFRpbWVyTnVtYmVyKCBUaW1lckhhbmRsZV90IHhUaW1lciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorI2VuZGlmDQorDQogI2lmZGVmIF9fY3BsdXNwbHVzDQogfQ0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9saXN0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvbGlzdC5jCmluZGV4IDUxMWNhYWYuLmNkMzI5YzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9saXN0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL2xpc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvRmxzaDE4Ni9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jCmluZGV4IGY5MjM2MmMuLmM0ODYwOTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvRmxzaDE4Ni9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMDA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcHJ0bWFjcm8uaAppbmRleCA1ZTkyOTM3Li40NWRjMmUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcHJ0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcHJ0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvUEMvcG9ydC5jCmluZGV4IDg3MmNlZmQuLjM2ZjBjMDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvUEMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvUEMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMi42LjENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BydG1hY3JvLmgKaW5kZXggMDRmZjViNS4uMjEwZGYyOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9QQy9wcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvUEMvcHJ0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmgKaW5kZXggMTE0MzY3MC4uMWJjYThjOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGFzbS5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvY29tbW9uL3BvcnRhc20uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUX0FTTV9IDQogI2RlZmluZSBQT1JUX0FTTV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGNvbW4uYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMKaW5kZXggMjc2NTJlNi4uMjBjMzMzOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGNvbW4uYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4wMDoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnQuYwppbmRleCAwZmMxYTYyLi42OWIxZDBiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCkBAIC0yMDMsNyArMTYyLDkgQEAKIC8qDQogICogU2VlIGhlYWRlciBmaWxlIGZvciBkZXNjcmlwdGlvbi4NCiAgKi8NCi1TdGFja1R5cGVfdCAqcHhQb3J0SW5pdGlhbGlzZVN0YWNrKCBTdGFja1R5cGVfdCAqcHhUb3BPZlN0YWNrLCBUYXNrRnVuY3Rpb25fdCBweENvZGUsIHZvaWQgKnB2UGFyYW1ldGVycyApDQorU3RhY2tUeXBlX3QgKiBweFBvcnRJbml0aWFsaXNlU3RhY2soIFN0YWNrVHlwZV90ICogcHhUb3BPZlN0YWNrLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrRnVuY3Rpb25fdCBweENvZGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiBwdlBhcmFtZXRlcnMgKQ0KIHsNCiAJLyogU2ltdWxhdGUgdGhlIHN0YWNrIGZyYW1lIGFzIGl0IHdvdWxkIGJlIGNyZWF0ZWQgYnkgYSBjb250ZXh0IHN3aXRjaA0KIAlpbnRlcnJ1cHQuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRhc20uYXNtIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRhc20uYXNtCmluZGV4IDg3MWQ5NmQuLmIxMDliNmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0YXNtLmFzbQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydGFzbS5hc20KQEAgLTEsNzEgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLTsgICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotOyAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi07ICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotOyAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotOyAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLTsgICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi07ICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLTsgICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLTsgICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotOyAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi07ICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotOyAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotOyAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi07ICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLnRodW1iDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRtYWNyby5oCmluZGV4IDQ5ZGYwZmYuLmM1NzM3YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCkBAIC0xMTUsNiArNzQsMTIgQEAKICNkZWZpbmUgcG9ydFNUQUNLX0dST1dUSAkJCSggLTEgKQ0KICNkZWZpbmUgcG9ydFRJQ0tfUEVSSU9EX01TCQkJKCAoIFRpY2tUeXBlX3QgKSAxMDAwIC8gY29uZmlnVElDS19SQVRFX0haICkNCiAjZGVmaW5lIHBvcnRCWVRFX0FMSUdOTUVOVAkJCTgNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBDb21waWxlciBkaXJlY3RpdmVzLiAqLw0KKyNkZWZpbmUgcG9ydFdFQUtfU1lNQk9MCQkJCV9fYXR0cmlidXRlX18oKHdlYWspKQ0KKw0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KIC8qIFNjaGVkdWxlciB1dGlsaXRpZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnQuYwppbmRleCA1NzFhZGIzLi5hZTQzMDQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydGFzbS5hc20gYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRhc20uYXNtCmluZGV4IGEwY2EyNDUuLmZiZGRiNDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydGFzbS5hc20KKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0YXNtLmFzbQpAQCAtMSw3MSArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotOyAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi07ICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLTsgICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi07ICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi07ICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotOyAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLTsgICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotOyAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotOyAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi07ICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLTsgICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi07ICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi07ICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLTsgICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkudGh1bWINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0bWFjcm8uaAppbmRleCA0OWRmMGZmLi4wMjUwM2U1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnQuYwppbmRleCAwMDYxMjAxLi5mY2EzMDZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0QVNNLmFzbSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0QVNNLmFzbQppbmRleCBiYjdlNWM4Li4wZGY1NjgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydEFTTS5hc20KKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnRBU00uYXNtCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogICAgICAgICAudGV4dA0KICAgICAgICAgLmFybQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0bWFjcm8uaAppbmRleCAzYTQ5NGFhLi43ZDRiYTlmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIF9fUE9SVE1BQ1JPX0hfXw0KICNkZWZpbmUgX19QT1JUTUFDUk9fSF9fDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL2RhdGFfbW9kZWwuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9kYXRhX21vZGVsLmgKaW5kZXggYzI4MWRkNi4uMTBmODk2OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL2RhdGFfbW9kZWwuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvZGF0YV9tb2RlbC5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuaWYgJERFRklORUQoIF9fTEFSR0VfREFUQV9NT0RFTF9fICkNCiAJCS5kZWZpbmUgInB1c2htLmEiLCBwdXNobV94DQpAQCAtNjUsNyArMzksNyBAQAogCQkuZGVmaW5lICJwb3AudyIsIHBvcF94DQogCQkuZGVmaW5lICJtb3YudyIsIG1vdl94DQogCS5lbmRpZg0KLQkNCisNCiAJLmlmICRERUZJTkVEKCBfX0xBUkdFX0NPREVfTU9ERUxfXyApDQogCQkuZGVmaW5lICJjYWxsYSIsIGNhbGxfeA0KIAkJLmRlZmluZSAicmV0YSIsIHJldF94DQpAQCAtNzMsNyArNDcsNyBAQAogCQkuZGVmaW5lICJjYWxsIiwgY2FsbF94DQogCQkuZGVmaW5lICJyZXQiLCByZXRfeA0KIAkuZW5kaWYNCi0JDQorDQogDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0LmMKaW5kZXggYjg0NzRlOS4uNmI3ZTNhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnRleHQuYXNtIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnRleHQuYXNtCmluZGV4IDQyOTNiNGQuLmVmNDNmZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0ZXh0LmFzbQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydGV4dC5hc20KQEAgLTEsNTcgKzEsMzAgQEAKLTsNCiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogOyAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSAicmVnaXN0ZXIgdGVzdCIgdGFza3MsIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mDQogOyAqIG1haW4uYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0bWFjcm8uaAppbmRleCBlYWEwNjY3Li4zNjg5YmMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydC5jCmluZGV4IDhlY2E2M2EuLjliNjJkODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydGFzbS5TCmluZGV4IDU3Nzk5NWYuLjc5OGViM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0YXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBQdXJwb3NlOiBMb3dlc3QgbGV2ZWwgcm91dGluZXMgZm9yIGFsbCBDb2xkRmlyZSBwcm9jZXNzb3JzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0bWFjcm8uaAppbmRleCBlM2YyMzRjLi41MDIwOTVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydC5jCmluZGV4IGZjMWFkNjUuLjljMTY4NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydGFzbS5TCmluZGV4IDI0MmY0ZWUuLjE0NTBmMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0YXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBQdXJwb3NlOiBMb3dlc3QgbGV2ZWwgcm91dGluZXMgZm9yIGFsbCBDb2xkRmlyZSBwcm9jZXNzb3JzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaAppbmRleCBlZjVmY2NkLi40ZmE5NTM1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydC5jCmluZGV4IDc0MjE0MWMuLmU5YWVkOWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0hDUzEyL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0bWFjcm8uaAppbmRleCA0MWMyNTVjLi40MWVhOWNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0hDUzEyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvbW1vbi9tcHVfd3JhcHBlcnMuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db21tb24vbXB1X3dyYXBwZXJzLmMKaW5kZXggZWIwODQ4YS4uMDAzZTNhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvbW1vbi9tcHVfd3JhcHBlcnMuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29tbW9uL21wdV93cmFwcGVycy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSB3cmFwcGVyIGZ1bmN0aW9ucyB1c2VkIHRvIHJhaXNlIHRoZSBwcm9jZXNzb3IgcHJpdmlsZWdlDQpAQCAtODMsNiArNDIsNyBAQAogI2luY2x1ZGUgInF1ZXVlLmgiDQogI2luY2x1ZGUgInRpbWVycy5oIg0KICNpbmNsdWRlICJldmVudF9ncm91cHMuaCINCisjaW5jbHVkZSAic3RyZWFtX2J1ZmZlci5oIg0KICNpbmNsdWRlICJtcHVfcHJvdG90eXBlcy5oIg0KIA0KICN1bmRlZiBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRQ0KQEAgLTExNTMsOCArMTExMywxNjIgQEAKIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJTZW5kKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBjb25zdCB2b2lkICpwdlR4RGF0YSwgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkNCit7DQorc2l6ZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQogDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgcHZUeERhdGEsIHhEYXRhTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCiANCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBjb25zdCB2b2lkICpwdlR4RGF0YSwgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsIEJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCit7DQorc2l6ZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHhTdHJlYW1CdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyUmVjZWl2ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgdm9pZCAqcHZSeERhdGEsIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkNCit7DQorc2l6ZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgcHZSeERhdGEsIHhCdWZmZXJMZW5ndGhCeXRlcywgeFRpY2tzVG9XYWl0ICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHZvaWQgKnB2UnhEYXRhLCBzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLCBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorew0KK3NpemVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBNUFVfdlN0cmVhbUJ1ZmZlckRlbGV0ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl2U3RyZWFtQnVmZmVyRGVsZXRlKCB4U3RyZWFtQnVmZmVyICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVySXNGdWxsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlcklzRnVsbCggeFN0cmVhbUJ1ZmZlciApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgTVBVX3hTdHJlYW1CdWZmZXJJc0VtcHR5KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKTsNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVyUmVzZXQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitCYXNlVHlwZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyUmVzZXQoIHhTdHJlYW1CdWZmZXIgKTsNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitzaXplX3QgeFJldHVybjsNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK3NpemVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCBNUFVfeFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgc2l6ZV90IHhUcmlnZ2VyTGV2ZWwgKQ0KK3sNCitCYXNlVHlwZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsKCB4U3RyZWFtQnVmZmVyLCB4VHJpZ2dlckxldmVsICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiA9PSAxICkNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyICkNCisJew0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCB4UmV0dXJuOw0KKwlCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggeEJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbEJ5dGVzLCB4SXNNZXNzYWdlQnVmZmVyICk7DQorCQl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJCXJldHVybiB4UmV0dXJuOw0KKwl9DQorI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfRFlOQU1JQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgKQ0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCBNUFVfeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLCBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLCBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIsIHVpbnQ4X3QgKiBjb25zdCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwgU3RhdGljU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0YXRpY1N0cmVhbUJ1ZmZlciApDQorCXsNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeFJldHVybjsNCisJQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCQl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHhCdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWxCeXRlcywgeElzTWVzc2FnZUJ1ZmZlciwgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsIHB4U3RhdGljU3RyZWFtQnVmZmVyICk7DQorCQl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJCXJldHVybiB4UmV0dXJuOw0KKwl9DQorI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiANCiAvKiBGdW5jdGlvbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gd3JpdGVyIHdhbnRzIHRvIGV4ZWN1dGUgaW4gcHJpdmlsZWdlZCBtb2RlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0LmMKaW5kZXggNzgyNDMyYS4uOWUzZWRmNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRJU1IuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0SVNSLmMKaW5kZXggNzlmZWRjZi4uZjgzZjA0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRJU1IuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRtYWNyby5oCmluZGV4IDhmMmM0ODMuLjViMWI0MDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMy4yLjMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydC5jCmluZGV4IGNmMzhlZGQuLjc3ZjQwYzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0SVNSLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRJU1IuYwppbmRleCAzNTViNTNmLi42YWRhNTQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRJU1IuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRJU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRtYWNyby5oCmluZGV4IGY3YTQ3MGIuLmQ4YmYwNDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYzLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnQuYwppbmRleCBiYjBjM2RmLi5lZjEzNDVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydElTUi5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydElTUi5jCmluZGV4IDU0MjUxNjMuLjA3NmIwNGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRJU1IuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0SVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRtYWNyby5oCmluZGV4IGI4N2FiN2YuLjk5MTdiZGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnQuYwppbmRleCA4ZWIxYWU4Li4wMGFiMTUzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydElTUi5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydElTUi5jCmluZGV4IGEwZWFkM2IuLjExMTY4N2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRJU1IuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0SVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRtYWNyby5oCmluZGV4IGM5MDZiNDMuLjgzNmQzMGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjMuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydC5jCmluZGV4IDFiYWNkM2YuLjUzMTA1MjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0QVNNLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0QVNNLlMKaW5kZXggZDdjNmM2NC4uZGFiZjhjOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydEFTTS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnRBU00uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCS50ZXh0DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0bWFjcm8uaAppbmRleCA3OGFlZDFlLi4xOTczMzk2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnQuYwppbmRleCA5MGU2MjZlLi4wODFhYjAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydEFTTS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRBU00uUwppbmRleCBhNjJhMDMyLi4wYTljNmRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydEFTTS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0QVNNLlMKQEAgLTEsNTYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0gICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0gICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSAgICBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0gICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkudGV4dA0KIAkuYXJtDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRtYWNyby5oCmluZGV4IDM2YjY1NjIuLmMwMDI1NzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMC9wb3J0LmMKaW5kZXggOTMwMDQ5ZS4uNTA5Y2U2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTAvcG9ydG1hY3JvLmgKaW5kZXggODE1Mzc3OC4uMWM0ZTQxNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTMvcG9ydC5jCmluZGV4IGNmMmQ2MzYuLjc0ZDJiMjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zL3BvcnRtYWNyby5oCmluZGV4IDdkOWNlZGIuLjM0NWIzOWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM19NUFUvcG9ydC5jCmluZGV4IGU5NWU4YzkuLjY0N2RhYmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM19NUFUvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM19NUFUvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTMgcG9ydC4NCkBAIC03OSwxMCArMzgsNiBAQAogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQotI2luY2x1ZGUgInF1ZXVlLmgiDQotI2luY2x1ZGUgInRpbWVycy5oIg0KLSNpbmNsdWRlICJldmVudF9ncm91cHMuaCINCi0jaW5jbHVkZSAibXB1X3Byb3RvdHlwZXMuaCINCiANCiAjdW5kZWYgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zX01QVS9wb3J0bWFjcm8uaAppbmRleCAxODEzZTRlLi5iMjY1NzFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM19NUFUvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydC5jCmluZGV4IGQxYjBiZDguLjkzY2QzZWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggOGFjYTIyMi4uNTFlYTQ1ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000Ri9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnQuYwppbmRleCA1YzMzYzczLi5kOTExYWEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpAQCAtNzgsOSArMzcsNyBAQAogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLSNpbmNsdWRlICJldmVudF9ncm91cHMuaCINCi0jaW5jbHVkZSAibXB1X3Byb3RvdHlwZXMuaCINCisjaW5jbHVkZSAidGFzay5oIg0KIA0KICNpZm5kZWYgX19WRlBfRlBfXw0KIAkjZXJyb3IgVGhpcyBwb3J0IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgcHJvamVjdCBvcHRpb25zIGFyZSBjb25maWd1cmVkIHRvIGVuYWJsZSBoYXJkd2FyZSBmbG9hdGluZyBwb2ludCBzdXBwb3J0Lg0KQEAgLTUwMiw2ICs0NTksNyBAQAogCV9fYXNtIHZvbGF0aWxlDQogCSgNCiAJCSIJbXJzIHIwLCBwc3AJCQkJCQkJXG4iDQorCQkiCWlzYgkJCQkJCQkJCVxuIg0KIAkJIgkJCQkJCQkJCQlcbiINCiAJCSIJbGRyCXIzLCBweEN1cnJlbnRUQ0JDb25zdAkJCVxuIiAvKiBHZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBjdXJyZW50IFRDQi4gKi8NCiAJCSIJbGRyCXIyLCBbcjNdCQkJCQkJXG4iDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmgKaW5kZXggMTgxM2U0ZS4uYjI2NTcxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ003L3IwcDEvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ003L3IwcDEvcG9ydC5jCmluZGV4IDRjYjc1OWMuLjZjNTZlYWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCmluZGV4IDNiOWE5ZTQuLmI3M2RiZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0LmMKaW5kZXggMzUxZDQyMi4uZjEyMmU5MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnRBU00uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0QVNNLlMKaW5kZXggYTEwYjYwZi4uODRmZDRlNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnRBU00uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydEFTTS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLnRleHQNCiAJLmFybQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0bWFjcm8uaAppbmRleCAwOGFjNDA3Li41ZjBlZDRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKaW5kZXggMDFiY2U0NC4uN2EyMTI0MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRBU00uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5TCmluZGV4IDc2OGJjYjQuLjRkYWFjM2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5TCkBAIC0xLDU2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0gICAgY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLnRleHQNCiAJLmFybQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRtYWNyby5oCmluZGV4IDE4MDFmMzMuLmQ1YmE4ODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0LmMKaW5kZXggMWU2MzVjMi4uM2U0ZGRmMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVRNZWdhMzIzL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0bWFjcm8uaAppbmRleCAyNTBjNDEwLi42MmVjOWE2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydC5jCmluZGV4IDAyOGNkYjguLjUxMWU0OTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FWUjMyX1VDMy9wb3J0LmMKQEAgLTEzLDczICsxMywzMiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKaW5kZXggMzNmNzIxYy4uMDRlNWY1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKQEAgLTEzLDczICsxMywzMiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydC5jCmluZGV4IGJmNmY5OTEuLjIwYTk2NmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9DT1JUVVNfQVBTMy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydG1hY3JvLmgKaW5kZXggNDlhZjJkZS4uMjFmNWRkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9DT1JUVVNfQVBTMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0LmMKaW5kZXggOTA2MDdhNi4uMjc4NTczNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRhc20uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydGFzbS5TCmluZGV4IGYyNjQzMTAuLjJmZjMyN2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydGFzbS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFB1cnBvc2U6IExvd2VzdCBsZXZlbCByb3V0aW5lcyBmb3IgYWxsIENvbGRGaXJlIHByb2Nlc3NvcnMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmgKaW5kZXggYjU5NWI3OC4uOGNhMTEzNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydC5jCmluZGV4IGQ5YzM2NjkuLmM4NzJlMWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IOFMyMzI5L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0bWFjcm8uaAppbmRleCBhN2QyNTE1Li5iZDRiNmZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IOFMyMzI5L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnQuYwppbmRleCBiNTk1MTAzLi4xYmZkZmZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogR0NDL0hDUzEyIHBvcnQgYnkgSmVmZmVyc29uIEwgU21pdGgsIDIwMDUgKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0bWFjcm8uaAppbmRleCBjMmQ2YmY2Li4zYWNiNGI3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSENTMTIvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9JU1JfU3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvSVNSX1N1cHBvcnQuaAppbmRleCA4OWE4YWRiLi5mNDlkNTg5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L0lTUl9TdXBwb3J0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkuZXh0ZXJuIHVsVG9wT2ZTeXN0ZW1TdGFjaw0KIAkuZXh0ZXJuIHVsSW50ZXJydXB0TmVzdGluZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnQuYwppbmRleCBlNjA2MTE0Li5hN2Q2MzhmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydEFTTS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydEFTTS5TCmluZGV4IDBhYWQyOTguLjQzMjUxM2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnRBU00uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0QVNNLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC5maWxlICJwb3J0QVNNLlMiDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0bWFjcm8uaAppbmRleCA5YzU1YWMxLi5mNWU3YWFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnQuYwppbmRleCA1YzZjZDYxLi44Mjc1NzVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTVNQNDMwRjQ0OS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMi41LjINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydG1hY3JvLmgKaW5kZXggMzRkYmViYS4uYjg4ZjZiNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTVNQNDMwRjQ0OS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnQuYwppbmRleCAyNzY0MGJlLi4xMmM0OWU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgTWljcm9CbGF6ZSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0YXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydGFzbS5zCmluZGV4IDVjZmZjYTYuLmQyNDVkNWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0YXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnRhc20ucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogCS5leHRlcm4gcHhDdXJyZW50VENCDQogCS5leHRlcm4gdlRhc2tJU1JIYW5kbGVyDQogCS5leHRlcm4gdlRhc2tTd2l0Y2hDb250ZXh0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnRtYWNyby5oCmluZGV4IDMzNmU1OTYuLjAwZGFlNWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydC5jCmluZGV4IGU2ZjEzMzkuLjAyZTlhMGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgTWljcm9CbGF6ZSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRfZXhjZXB0aW9ucy5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydF9leGNlcHRpb25zLmMKaW5kZXggMGFkZjM2Zi4uOGIwMWQyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydF9leGNlcHRpb25zLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydF9leGNlcHRpb25zLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0YXNtLlMKaW5kZXggYjUwZmFiZi4uZmI1OGM4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0bWFjcm8uaAppbmRleCAxYmZiYWIzLi5iN2IwYzgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0LmMKaW5kZXggYzIzMGZmZi4uYzkwMmQyZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBNaWNyb0JsYXplIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydF9leGNlcHRpb25zLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0X2V4Y2VwdGlvbnMuYwppbmRleCAwYWRmMzZmLi44YjAxZDIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0X2V4Y2VwdGlvbnMuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0X2V4Y2VwdGlvbnMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRhc20uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRhc20uUwppbmRleCBiNTBmYWJmLi5mYjU4YzgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0YXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydGFzbS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRtYWNyby5oCmluZGV4IDFiZmJhYjMuLmI3YjBjODAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnQuYwppbmRleCA4NDA4MDQwLi4wNjdhYTllIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIE5JT1MyIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydF9hc20uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnRfYXNtLlMKaW5kZXggMzRmMGMxYy4uYjRhODAyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydF9hc20uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0X2FzbS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAuZXh0ZXJuCQl2VGFza1N3aXRjaENvbnRleHQNCiAJDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0bWFjcm8uaAppbmRleCBlZDQ1ZTRkLi42MTk5NTRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvRlBVX01hY3Jvcy5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L0ZQVV9NYWNyb3MuaAppbmRleCAyYzliZTEyLi5iYjRiZDRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvRlBVX01hY3Jvcy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9GUFVfTWFjcm9zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFdoZW4gc3dpdGNoaW5nIG91dCBhIHRhc2ssIGlmIHRoZSB0YXNrIHRhZyBjb250YWlucyBhIGJ1ZmZlciBhZGRyZXNzIHRoZW4NCiBzYXZlIHRoZSBmbG9wIGNvbnRleHQgaW50byB0aGUgYnVmZmVyLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydC5jCmluZGV4IDI4NzAyODQuLjY5MjJjM2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBQUEM0MDUgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnRhc20uUwppbmRleCBjMWFhM2FhLi41MjAyYzdjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0bWFjcm8uaAppbmRleCBjZTg2ZWU2Li4xYThkZThmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9GUFVfTWFjcm9zLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvRlBVX01hY3Jvcy5oCmluZGV4IDJjOWJlMTIuLmJiNGJkNGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9GUFVfTWFjcm9zLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L0ZQVV9NYWNyb3MuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogV2hlbiBzd2l0Y2hpbmcgb3V0IGEgdGFzaywgaWYgdGhlIHRhc2sgdGFnIGNvbnRhaW5zIGEgYnVmZmVyIGFkZHJlc3MgdGhlbg0KIHNhdmUgdGhlIGZsb3AgY29udGV4dCBpbnRvIHRoZSBidWZmZXIuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0LmMKaW5kZXggMDU4NGM0NC4uOTdhYzVkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFBQQzQ0MCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydGFzbS5TCmluZGV4IGMxYWEzYWEuLjUyMDJjN2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0YXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnRtYWNyby5oCmluZGV4IGNlODZlZTYuLjFhOGRlOGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L2lzcl9zdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvaXNyX3N1cHBvcnQuaAppbmRleCA1MmIzN2JlLi44NjcyZGE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvaXNyX3N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvaXNyX3N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogVmFyaWFibGVzIHVzZWQgYnkgc2NoZWR1bGVyICovDQogCS5leHRlcm4gICAgX3B4Q3VycmVudFRDQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydC5jCmluZGV4IGJjNGNlZmQuLjgzYzYzMDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydGFzbS5TCmluZGV4IGViMTJkNWQuLjYzZjA0NjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0YXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgIklTUl9TdXBwb3J0LmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnRtYWNyby5oCmluZGV4IGNiMjdjOWMuLjRlMzFjZTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYMTAwL3BvcnQuYwppbmRleCA2ZWEyYjIzLi45YjFjMWRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYMTAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYMTAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlgxMDAvcG9ydG1hY3JvLmgKaW5kZXggMjczZDU2OC4uODg0NTllMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYMTAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwL3BvcnQuYwppbmRleCBkNDQ3MDRiLi43NjlhZDVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDAvcG9ydG1hY3JvLmgKaW5kZXggNWRmZDljMy4uZjViMDk1MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDB2Mi9wb3J0LmMKaW5kZXggODFiZDc1Mi4uMDc0ZGMzMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwdjIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFNIMkEgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwdjIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwdjIvcG9ydG1hY3JvLmgKaW5kZXggNWRmZDljMy4uZjViMDk1MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDB2Mi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnQuYwppbmRleCAzMWUzNmU5Li42MGIyN2E1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFNUIFNUUjc1eCBBUk03DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydElTUi5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydElTUi5jCmluZGV4IDkyNzNjODIuLjkzMzYyMGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRJU1IuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0SVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRtYWNyby5oCmluZGV4IDkxN2VkMDguLmNjMjhjNmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydC5jCmluZGV4IDgwZmQ1OGEuLjE0N2JlYmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnRtYWNyby5oCmluZGV4IGY0YzNmNjAuLjJkODhhYjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnR0cmFwLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0dHJhcC5jCmluZGV4IDgzMGQyZDQuLjFiMDRhNGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnR0cmFwLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydHRyYXAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvSVNSX1N1cHBvcnQuaAppbmRleCA3MjgxMGE0Li4yZjYyMDhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9JU1JfU3VwcG9ydC5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KQEAgLTYxLDcgKzM1LDcgQEAKIA0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiA7ICAgcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KLTsgICBTYXZlcyB0aGUgY29udGV4dCBvZiB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycywgQ1MgYW5kIEVTIChvbmx5IGluIGZhciANCis7ICAgU2F2ZXMgdGhlIGNvbnRleHQgb2YgdGhlIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMsIENTIGFuZCBFUyAob25seSBpbiBmYXINCiA7CW1lbW9yeSBtb2RlKSByZWdpc3RlcnMgdGhlIHVzQ3JpdGljYWxOZXN0aW5nIFZhbHVlIGFuZCB0aGUgU3RhY2sgUG9pbnRlcg0KIDsgICBvZiB0aGUgYWN0aXZlIFRhc2sgb250byB0aGUgdGFzayBzdGFjaw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC03NiwxMSArNTAsMTEgQEAKIAlQVVNIICAgICAgREUgICAgICAgICAgICAgICAgICAgIDsgU2F2ZSB0aGUgcmVtYWluaW5nIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuDQogCVBVU0ggICAgICBCQw0KIAlNT1ZXICAgICAgQVgsIHVzQ3JpdGljYWxOZXN0aW5nIDsgU2F2ZSB0aGUgdXNDcml0aWNhbE5lc3RpbmcgdmFsdWUuDQotCVBVU0ggICAgICBBWAkNCisJUFVTSCAgICAgIEFYDQogCU1PVlcgICAgICBBWCwgcHhDdXJyZW50VENCIAkgICAgOyBTYXZlIHRoZSBTdGFjayBwb2ludGVyLg0KLQlNT1ZXICAgICAgSEwsIEFYCQkJCQkNCi0JTU9WVyAgICAgIEFYLCBTUAkJCQkJDQotCU1PVlcgICAgICBbSExdLCBBWAkJCQkJDQorCU1PVlcgICAgICBITCwgQVgNCisJTU9WVyAgICAgIEFYLCBTUA0KKwlNT1ZXICAgICAgW0hMXSwgQVgNCiAJRU5ETQ0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydC5jCmluZGV4IGEyOTNhMDEuLmRjNmQwMmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0YXNtLnMyNiBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydGFzbS5zMjYKaW5kZXggYzlkMDFjNC4uMThmNjUzZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0YXNtLnMyNgorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnRhc20uczI2CkBAIC0xLDU2ICsxLDMxIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KICNpbmNsdWRlICJJU1JfU3VwcG9ydC5oIg0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCkBAIC0xMDIsNyArNzcsNyBAQAogCXBvcnRSRVNUT1JFX0NPTlRFWFQJCSAgICAgICAgOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHRoZSBuZXh0IHRhc2sgdG8gcnVuLg0KIAlyZXRiDQogDQotCQ0KKw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiA7ICAgUmVzdG9yZSB0aGUgY29udGV4dCBvZiB0aGUgZmlyc3QgdGFzayB0aGF0IGlzIGdvaW5nIHRvIHJ1bi4NCiA7DQpAQCAtMTEyLDcgKzg3LDcgQEAKIDsNCiA7ICAgT3V0cHV0OiBOT05FDQogOw0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICBSU0VHIENPREU6Q09ERQ0KIHZQb3J0U3RhcnQ6DQogCXBvcnRSRVNUT1JFX0NPTlRFWFQJICAgICAgICAgICAgOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHdoaWNoZXZlciB0YXNrIHRoZSAuLi4NCkBAIC0xMjksNyArMTA0LDcgQEAKIDsNCiA7ICAgT3V0cHV0OiBOT05FDQogOw0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIE1EX0lOVFRNMDU6DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydG1hY3JvLmgKaW5kZXggNzEyY2VjYS4uNTJlZTU4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0LmMKaW5kZXggNjk1M2JlYy4uN2IyZWZjNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIElBUiBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydEFTTS5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLmgKaW5kZXggNmRkYjgxNC4uOTM1ZDY0NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLmgKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJRVhURVJOCXZUYXNrU3dpdGNoQ29udGV4dA0KIAlFWFRFUk4gIHVsQ3JpdGljYWxOZXN0aW5nDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRBU00ucwppbmRleCA2OWI2YjJmLi5lOTdmZTMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRBU00ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRBU00ucwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlJTkNMVURFIEZyZWVSVE9TQ29uZmlnLmgNCiAJSU5DTFVERSBwb3J0bWFjcm8uaA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRtYWNyby5oCmluZGV4IDU1NjUzOGUuLjBhZjVhNGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCkBAIC0xMzIsNyArOTEsNyBAQAogCX0NCiANCiAJI2RlZmluZSBwb3J0WUlFTERfRlJPTV9JU1IoIHggKSBwb3J0RU5EX1NXSVRDSElOR19JU1IoIHggKQ0KLQkjZGVmaW5lIHBvcnRZSUVMRCgpIF9fYXNtKCAiU1dJIDAiICk7IF9fSVNCKCkNCisJI2RlZmluZSBwb3J0WUlFTEQoKSBfX2FzbSB2b2xhdGlsZSAoICJTV0kgMCIgKTsgX19JU0IoKQ0KIA0KIA0KIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0LmMKaW5kZXggMzNlNTg0Ny4uYTRjNDk0MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRBU00uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLmgKaW5kZXggYjBkZDVlNC4uZDI0NDlhMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRBU00uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydEFTTS5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCUVYVEVSTgl2VGFza1N3aXRjaENvbnRleHQNCiAJRVhURVJOICB1bENyaXRpY2FsTmVzdGluZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydEFTTS5zCmluZGV4IGI3ZDk1NTcuLjZmZmIxYmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRBU00ucwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlJTkNMVURFIEZyZWVSVE9TQ29uZmlnLmgNCiAJSU5DTFVERSBwb3J0bWFjcm8uaA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0bWFjcm8uaAppbmRleCAzMWQxMzlmLi5mODhkNDYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydC5jCmluZGV4IDRlZTQzNWUuLjk4MTkxNDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00wIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRhc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0YXNtLnMKaW5kZXggYTE3ZDk0Ni4uZDQ3MjdmMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRhc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydGFzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydG1hY3JvLmgKaW5kZXggZTYwM2E2ZC4uZDgwOWFkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydC5jCmluZGV4IDI3MjcwNjUuLjM2Yzg4OWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRhc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0YXNtLnMKaW5kZXggMTgxMDM4Mi4uNDU1MWYzOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRhc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydGFzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydG1hY3JvLmgKaW5kZXggZTJjM2IyZi4uMThmMDQ0OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0LmMKaW5kZXggNjcwMjk3MC4uM2I4ZDIzNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRhc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydGFzbS5zCmluZGV4IGU4YzIxZTUuLjA0MDNmMzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydGFzbS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydGFzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0bWFjcm8uaAppbmRleCBhMTRhN2NkLi42MDU5ODI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNmYxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0LmMKQEAgLTAsMCArMSw3NTUgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogSUFSIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlIDxpbnRyaW5zaWNzLmg+DQorDQorLyogRGVmaW5pbmcgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUgcHJldmVudHMgdGFzay5oIGZyb20gcmVkZWZpbmluZw0KK2FsbCB0aGUgQVBJIGZ1bmN0aW9ucyB0byB1c2UgdGhlIE1QVSB3cmFwcGVycy4gIFRoYXQgc2hvdWxkIG9ubHkgYmUgZG9uZSB3aGVuDQordGFzay5oIGlzIGluY2x1ZGVkIGZyb20gYW4gYXBwbGljYXRpb24gZmlsZS4gKi8NCisjZGVmaW5lIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFDQorDQorLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorDQorI3VuZGVmIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFDQorDQorI3dhcm5pbmcgVGhpcyBpcyBub3QgeWV0IGEgZG9jdW1lbnRlZCBwb3J0IGFzIGl0IGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQsIHNvIG5vIGRlbW8gcHJvamVjdHMgdGhhdCB1c2UgdGhpcyBwb3J0IGFyZSBwcm92aWRlZC4NCisNCisjaWZuZGVmIF9fQVJNVkZQX18NCisJI2Vycm9yIFRoaXMgcG9ydCBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIHByb2plY3Qgb3B0aW9ucyBhcmUgY29uZmlndXJlZCB0byBlbmFibGUgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4NCisjZW5kaWYNCisNCisjaWYoIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSA9PSAwICkNCisJI2Vycm9yIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSBtdXN0IG5vdCBiZSBzZXQgdG8gMC4gIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9SVE9TLUNvcnRleC1NMy1NNC5odG1sDQorI2VuZGlmDQorDQorI2lmbmRlZiBjb25maWdTWVNUSUNLX0NMT0NLX0haDQorCSNkZWZpbmUgY29uZmlnU1lTVElDS19DTE9DS19IWiBjb25maWdDUFVfQ0xPQ0tfSFoNCisJLyogRW5zdXJlIHRoZSBTeXNUaWNrIGlzIGNsb2NrZWQgYXQgdGhlIHNhbWUgZnJlcXVlbmN5IGFzIHRoZSBjb3JlLiAqLw0KKwkjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfQ0xLX0JJVAkoIDFVTCA8PCAyVUwgKQ0KKyNlbHNlDQorCS8qIFRoZSB3YXkgdGhlIFN5c1RpY2sgaXMgY2xvY2tlZCBpcyBub3QgbW9kaWZpZWQgaW4gY2FzZSBpdCBpcyBub3QgdGhlIHNhbWUNCisJYXMgdGhlIGNvcmUuICovDQorCSNkZWZpbmUgcG9ydE5WSUNfU1lTVElDS19DTEtfQklUCSggMCApDQorI2VuZGlmDQorDQorLyogQ29uc3RhbnRzIHJlcXVpcmVkIHRvIG1hbmlwdWxhdGUgdGhlIGNvcmUuICBSZWdpc3RlcnMgZmlyc3QuLi4gKi8NCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfQ1RSTF9SRUcJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZTAxMCApICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfTE9BRF9SRUcJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZTAxNCApICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfQ1VSUkVOVF9WQUxVRV9SRUcJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGUwMTggKSApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNQUkkyX1JFRwkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWQyMCApICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1BSSTFfUkVHCQkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDFjICkgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfU1lTX0NUUkxfU1RBVEVfUkVHCQkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGVkMjQgKSApDQorI2RlZmluZSBwb3J0TlZJQ19NRU1fRkFVTFRfRU5BQkxFCQkJCSggMVVMIDw8IDE2VUwgKQ0KKw0KKy8qIENvbnN0YW50cyByZXF1aXJlZCB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgdGhlIE1QVS4gKi8NCisjZGVmaW5lIHBvcnRNUFVfVFlQRV9SRUcJCQkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDkwICkgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fQkFTRV9BRERSRVNTX1JFRwkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGVkOUMgKSApDQorI2RlZmluZSBwb3J0TVBVX1JFR0lPTl9BVFRSSUJVVEVfUkVHCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWRBMCApICkNCisjZGVmaW5lIHBvcnRNUFVfQ1RSTF9SRUcJCQkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDk0ICkgKQ0KKyNkZWZpbmUgcG9ydEVYUEVDVEVEX01QVV9UWVBFX1ZBTFVFCQkJCSggOFVMIDw8IDhVTCApIC8qIDggcmVnaW9ucywgdW5pZmllZC4gKi8NCisjZGVmaW5lIHBvcnRNUFVfRU5BQkxFCQkJCQkJCSggMHgwMVVMICkNCisjZGVmaW5lIHBvcnRNUFVfQkFDS0dST1VORF9FTkFCTEUJCQkJKCAxVUwgPDwgMlVMICkNCisjZGVmaW5lIHBvcnRQUklWSUxFR0VEX0VYRUNVVElPTl9TVEFSVF9BRERSRVNTCSggMFVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX1ZBTElECQkJCQkoIDB4MTBVTCApDQorI2RlZmluZSBwb3J0TVBVX1JFR0lPTl9FTkFCTEUJCQkJCSggMHgwMVVMICkNCisjZGVmaW5lIHBvcnRQRVJJUEhFUkFMU19TVEFSVF9BRERSRVNTCQkJMHg0MDAwMDAwMFVMDQorI2RlZmluZSBwb3J0UEVSSVBIRVJBTFNfRU5EX0FERFJFU1MJCQkJMHg1RkZGRkZGRlVMDQorDQorLyogLi4udGhlbiBiaXRzIGluIHRoZSByZWdpc3RlcnMuICovDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0lOVF9CSVQJCQkoIDFVTCA8PCAxVUwgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfU1lTVElDS19FTkFCTEVfQklUCQkJKCAxVUwgPDwgMFVMICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfQ09VTlRfRkxBR19CSVQJCSggMVVMIDw8IDE2VUwgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfUEVORFNWQ0xFQVJfQklUIAkJCSggMVVMIDw8IDI3VUwgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfUEVORF9TWVNUSUNLX0NMRUFSX0JJVAkJKCAxVUwgPDwgMjVVTCApDQorDQorLyogQ29uc3RhbnRzIHVzZWQgdG8gZGV0ZWN0IGEgQ29ydGV4LU03IHIwcDEgY29yZSwgd2hpY2ggc2hvdWxkIHVzZSB0aGUgQVJNX0NNNw0KK3IwcDEgcG9ydC4gKi8NCisjZGVmaW5lIHBvcnRDUFVJRAkJCQkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweEUwMDBlZDAwICkgKQ0KKyNkZWZpbmUgcG9ydENPUlRFWF9NN19yMHAxX0lECQkJCSggMHg0MTBGQzI3MVVMICkNCisjZGVmaW5lIHBvcnRDT1JURVhfTTdfcjBwMF9JRAkJCQkoIDB4NDEwRkMyNzBVTCApDQorDQorI2RlZmluZSBwb3J0TlZJQ19QRU5EU1ZfUFJJCQkJCQkoICggKCB1aW50MzJfdCApIGNvbmZpZ0tFUk5FTF9JTlRFUlJVUFRfUFJJT1JJVFkgKSA8PCAxNlVMICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfUFJJCQkJCSggKCAoIHVpbnQzMl90ICkgY29uZmlnS0VSTkVMX0lOVEVSUlVQVF9QUklPUklUWSApIDw8IDI0VUwgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfU1ZDX1BSSQkJCQkJKCAoICggdWludDMyX3QgKSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgLSAxVUwgKSA8PCAyNFVMICkNCisNCisvKiBDb25zdGFudHMgcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIGFuIGludGVycnVwdCBwcmlvcml0eS4gKi8NCisjZGVmaW5lIHBvcnRGSVJTVF9VU0VSX0lOVEVSUlVQVF9OVU1CRVIJCSggMTYgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfSVBfUkVHSVNURVJTX09GRlNFVF8xNiAJKCAweEUwMDBFM0YwICkNCisjZGVmaW5lIHBvcnRBSVJDUl9SRUcJCQkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweEUwMDBFRDBDICkgKQ0KKyNkZWZpbmUgcG9ydE1BWF84X0JJVF9WQUxVRQkJCQkJKCAoIHVpbnQ4X3QgKSAweGZmICkNCisjZGVmaW5lIHBvcnRUT1BfQklUX09GX0JZVEUJCQkJCSggKCB1aW50OF90ICkgMHg4MCApDQorI2RlZmluZSBwb3J0TUFYX1BSSUdST1VQX0JJVFMJCQkJKCAoIHVpbnQ4X3QgKSA3ICkNCisjZGVmaW5lIHBvcnRQUklPUklUWV9HUk9VUF9NQVNLCQkJCSggMHgwN1VMIDw8IDhVTCApDQorI2RlZmluZSBwb3J0UFJJR1JPVVBfU0hJRlQJCQkJCSggOFVMICkNCisNCisvKiBNYXNrcyBvZmYgYWxsIGJpdHMgYnV0IHRoZSBWRUNUQUNUSVZFIGJpdHMgaW4gdGhlIElDU1IgcmVnaXN0ZXIuICovDQorI2RlZmluZSBwb3J0VkVDVEFDVElWRV9NQVNLCQkJCQkoIDB4RkZVTCApDQorDQorLyogQ29uc3RhbnRzIHJlcXVpcmVkIHRvIG1hbmlwdWxhdGUgdGhlIFZGUC4gKi8NCisjZGVmaW5lIHBvcnRGUENDUgkJCQkJCQkoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGVmMzQgKSAvKiBGbG9hdGluZyBwb2ludCBjb250ZXh0IGNvbnRyb2wgcmVnaXN0ZXIuICovDQorI2RlZmluZSBwb3J0QVNQRU5fQU5EX0xTUEVOX0JJVFMJCQkoIDB4M1VMIDw8IDMwVUwgKQ0KKw0KKy8qIENvbnN0YW50cyByZXF1aXJlZCB0byBzZXQgdXAgdGhlIGluaXRpYWwgc3RhY2suICovDQorI2RlZmluZSBwb3J0SU5JVElBTF9YUFNSCQkJCQkoIDB4MDEwMDAwMDAgKQ0KKyNkZWZpbmUgcG9ydElOSVRJQUxfRVhDX1JFVFVSTgkJCQkoIDB4ZmZmZmZmZmQgKQ0KKyNkZWZpbmUgcG9ydElOSVRJQUxfQ09OVFJPTF9JRl9VTlBSSVZJTEVHRUQJKCAweDAzICkNCisjZGVmaW5lIHBvcnRJTklUSUFMX0NPTlRST0xfSUZfUFJJVklMRUdFRAkoIDB4MDIgKQ0KKw0KKy8qIE9mZnNldHMgaW4gdGhlIHN0YWNrIHRvIHRoZSBwYXJhbWV0ZXJzIHdoZW4gaW5zaWRlIHRoZSBTVkMgaGFuZGxlci4gKi8NCisjZGVmaW5lIHBvcnRPRkZTRVRfVE9fUEMJCQkJCQkoIDYgKQ0KKw0KKy8qIFRoZSBzeXN0aWNrIGlzIGEgMjQtYml0IGNvdW50ZXIuICovDQorI2RlZmluZSBwb3J0TUFYXzI0X0JJVF9OVU1CRVIJCQkJKCAweGZmZmZmZlVMICkNCisNCisvKiBBIGZpZGRsZSBmYWN0b3IgdG8gZXN0aW1hdGUgdGhlIG51bWJlciBvZiBTeXNUaWNrIGNvdW50cyB0aGF0IHdvdWxkIGhhdmUNCitvY2N1cnJlZCB3aGlsZSB0aGUgU3lzVGljayBjb3VudGVyIGlzIHN0b3BwZWQgZHVyaW5nIHRpY2tsZXNzIGlkbGUNCitjYWxjdWxhdGlvbnMuICovDQorI2RlZmluZSBwb3J0TUlTU0VEX0NPVU5UU19GQUNUT1IJCQkoIDQ1VUwgKQ0KKw0KKy8qIEZvciBzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBDb3J0ZXgtTSBzcGVjIHRoZSB0YXNrIHN0YXJ0IGFkZHJlc3Mgc2hvdWxkDQoraGF2ZSBiaXQtMCBjbGVhciwgYXMgaXQgaXMgbG9hZGVkIGludG8gdGhlIFBDIG9uIGV4aXQgZnJvbSBhbiBJU1IuICovDQorI2RlZmluZSBwb3J0U1RBUlRfQUREUkVTU19NQVNLCQkJCSggKCBTdGFja1R5cGVfdCApIDB4ZmZmZmZmZmVVTCApDQorDQorLyoNCisgKiBDb25maWd1cmUgYSBudW1iZXIgb2Ygc3RhbmRhcmQgTVBVIHJlZ2lvbnMgdGhhdCBhcmUgdXNlZCBieSBhbGwgdGFza3MuDQorICovDQorc3RhdGljIHZvaWQgcHJ2U2V0dXBNUFUoIHZvaWQgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qDQorICogUmV0dXJuIHRoZSBzbWFsbGVzdCBNUFUgcmVnaW9uIHNpemUgdGhhdCBhIGdpdmVuIG51bWJlciBvZiBieXRlcyB3aWxsIGZpdA0KKyAqIGludG8uICBUaGUgcmVnaW9uIHNpemUgaXMgcmV0dXJuZWQgYXMgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHByb2dyYW1tZWQNCisgKiBpbnRvIHRoZSByZWdpb24gYXR0cmlidXRlIHJlZ2lzdGVyIGZvciB0aGF0IHJlZ2lvbi4NCisgKi8NCitzdGF0aWMgdWludDMyX3QgcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoIHVpbnQzMl90IHVsQWN0dWFsU2l6ZUluQnl0ZXMgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qDQorICogQ2hlY2tzIHRvIHNlZSBpZiBiZWluZyBjYWxsZWQgZnJvbSB0aGUgY29udGV4dCBvZiBhbiB1bnByaXZpbGVnZWQgdGFzaywgYW5kDQorICogaWYgc28gcmFpc2VzIHRoZSBwcml2aWxlZ2UgbGV2ZWwgYW5kIHJldHVybnMgZmFsc2UgLSBvdGhlcndpc2UgZG9lcyBub3RoaW5nDQorICogb3RoZXIgdGhhbiByZXR1cm4gdHJ1ZS4NCisgKi8NCitleHRlcm4gQmFzZVR5cGVfdCB4UG9ydFJhaXNlUHJpdmlsZWdlKCB2b2lkICk7DQorDQorLyoNCisgKiBTZXR1cCB0aGUgdGltZXIgdG8gZ2VuZXJhdGUgdGhlIHRpY2sgaW50ZXJydXB0cy4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzDQorICogZmlsZSBpcyB3ZWFrIHRvIGFsbG93IGFwcGxpY2F0aW9uIHdyaXRlcnMgdG8gY2hhbmdlIHRoZSB0aW1lciB1c2VkIHRvDQorICogZ2VuZXJhdGUgdGhlIHRpY2sgaW50ZXJydXB0Lg0KKyAqLw0KK3ZvaWQgdlBvcnRTZXR1cFRpbWVySW50ZXJydXB0KCB2b2lkICk7DQorDQorLyoNCisgKiBFeGNlcHRpb24gaGFuZGxlcnMuDQorICovDQordm9pZCB4UG9ydFN5c1RpY2tIYW5kbGVyKCB2b2lkICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIFN0YXJ0IGZpcnN0IHRhc2sgaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdGVzdGVkIGluIGlzb2xhdGlvbi4NCisgKi8NCitleHRlcm4gdm9pZCB2UG9ydFN0YXJ0Rmlyc3RUYXNrKCB2b2lkICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIFR1cm4gdGhlIFZGUCBvbi4NCisgKi8NCitleHRlcm4gdm9pZCB2UG9ydEVuYWJsZVZGUCggdm9pZCApOw0KKw0KKy8qDQorICogVGhlIEMgcG9ydGlvbiBvZiB0aGUgU1ZDIGhhbmRsZXIuDQorICovDQordm9pZCB2UG9ydFNWQ0hhbmRsZXJfQyggdWludDMyX3QgKnB1bFBhcmFtICk7DQorDQorLyoNCisgKiBDYWxsZWQgZnJvbSB0aGUgU1ZDIGhhbmRsZXIgdXNlZCB0byBzdGFydCB0aGUgc2NoZWR1bGVyLg0KKyAqLw0KK2V4dGVybiB2b2lkIHZQb3J0UmVzdG9yZUNvbnRleHRPZkZpcnN0VGFzayggdm9pZCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogRWFjaCB0YXNrIG1haW50YWlucyBpdHMgb3duIGludGVycnVwdCBzdGF0dXMgaW4gdGhlIGNyaXRpY2FsIG5lc3RpbmcNCit2YXJpYWJsZS4gKi8NCitzdGF0aWMgVUJhc2VUeXBlX3QgdXhDcml0aWNhbE5lc3RpbmcgPSAweGFhYWFhYWFhOw0KKw0KKy8qDQorICogVXNlZCBieSB0aGUgcG9ydEFTU0VSVF9JRl9JTlRFUlJVUFRfUFJJT1JJVFlfSU5WQUxJRCgpIG1hY3JvIHRvIGVuc3VyZQ0KKyAqIEZyZWVSVE9TIEFQSSBmdW5jdGlvbnMgYXJlIG5vdCBjYWxsZWQgZnJvbSBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkDQorICogYSBwcmlvcml0eSBhYm92ZSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkuDQorICovDQorI2lmKCBjb25maWdBU1NFUlRfREVGSU5FRCA9PSAxICkNCisJIHN0YXRpYyB1aW50OF90IHVjTWF4U3lzQ2FsbFByaW9yaXR5ID0gMDsNCisJIHN0YXRpYyB1aW50MzJfdCB1bE1heFBSSUdST1VQVmFsdWUgPSAwOw0KKwkgc3RhdGljIGNvbnN0IHZvbGF0aWxlIHVpbnQ4X3QgKiBjb25zdCBwY0ludGVycnVwdFByaW9yaXR5UmVnaXN0ZXJzID0gKCBjb25zdCB2b2xhdGlsZSB1aW50OF90ICogY29uc3QgKSBwb3J0TlZJQ19JUF9SRUdJU1RFUlNfT0ZGU0VUXzE2Ow0KKyNlbmRpZiAvKiBjb25maWdBU1NFUlRfREVGSU5FRCAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogU2VlIGhlYWRlciBmaWxlIGZvciBkZXNjcmlwdGlvbi4NCisgKi8NCitTdGFja1R5cGVfdCAqcHhQb3J0SW5pdGlhbGlzZVN0YWNrKCBTdGFja1R5cGVfdCAqcHhUb3BPZlN0YWNrLCBUYXNrRnVuY3Rpb25fdCBweENvZGUsIHZvaWQgKnB2UGFyYW1ldGVycywgQmFzZVR5cGVfdCB4UnVuUHJpdmlsZWdlZCApDQorew0KKwkvKiBTaW11bGF0ZSB0aGUgc3RhY2sgZnJhbWUgYXMgaXQgd291bGQgYmUgY3JlYXRlZCBieSBhIGNvbnRleHQgc3dpdGNoDQorCWludGVycnVwdC4gKi8NCisNCisJLyogT2Zmc2V0IGFkZGVkIHRvIGFjY291bnQgZm9yIHRoZSB3YXkgdGhlIE1DVSB1c2VzIHRoZSBzdGFjayBvbiBlbnRyeS9leGl0DQorCW9mIGludGVycnVwdHMsIGFuZCB0byBlbnN1cmUgYWxpZ25tZW50LiAqLw0KKwlweFRvcE9mU3RhY2stLTsNCisNCisJKnB4VG9wT2ZTdGFjayA9IHBvcnRJTklUSUFMX1hQU1I7CS8qIHhQU1IgKi8NCisJcHhUb3BPZlN0YWNrLS07DQorCSpweFRvcE9mU3RhY2sgPSAoICggU3RhY2tUeXBlX3QgKSBweENvZGUgKSAmIHBvcnRTVEFSVF9BRERSRVNTX01BU0s7CS8qIFBDICovDQorCXB4VG9wT2ZTdGFjay0tOw0KKwkqcHhUb3BPZlN0YWNrID0gKCBTdGFja1R5cGVfdCApIDA7CS8qIExSICovDQorDQorCS8qIFNhdmUgY29kZSBzcGFjZSBieSBza2lwcGluZyByZWdpc3RlciBpbml0aWFsaXNhdGlvbi4gKi8NCisJcHhUb3BPZlN0YWNrIC09IDU7CS8qIFIxMiwgUjMsIFIyIGFuZCBSMS4gKi8NCisJKnB4VG9wT2ZTdGFjayA9ICggU3RhY2tUeXBlX3QgKSBwdlBhcmFtZXRlcnM7CS8qIFIwICovDQorDQorCS8qIEEgc2F2ZSBtZXRob2QgaXMgYmVpbmcgdXNlZCB0aGF0IHJlcXVpcmVzIGVhY2ggdGFzayB0byBtYWludGFpbiBpdHMNCisJb3duIGV4ZWMgcmV0dXJuIHZhbHVlLiAqLw0KKwlweFRvcE9mU3RhY2stLTsNCisJKnB4VG9wT2ZTdGFjayA9IHBvcnRJTklUSUFMX0VYQ19SRVRVUk47DQorDQorCXB4VG9wT2ZTdGFjayAtPSA5OwkvKiBSMTEsIFIxMCwgUjksIFI4LCBSNywgUjYsIFI1IGFuZCBSNC4gKi8NCisNCisJaWYoIHhSdW5Qcml2aWxlZ2VkID09IHBkVFJVRSApDQorCXsNCisJCSpweFRvcE9mU3RhY2sgPSBwb3J0SU5JVElBTF9DT05UUk9MX0lGX1BSSVZJTEVHRUQ7DQorCX0NCisJZWxzZQ0KKwl7DQorCQkqcHhUb3BPZlN0YWNrID0gcG9ydElOSVRJQUxfQ09OVFJPTF9JRl9VTlBSSVZJTEVHRUQ7DQorCX0NCisNCisJcmV0dXJuIHB4VG9wT2ZTdGFjazsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UG9ydFNWQ0hhbmRsZXJfQyggdWludDMyX3QgKnB1bFBhcmFtICkNCit7DQordWludDhfdCB1Y1NWQ051bWJlcjsNCisNCisJLyogVGhlIHN0YWNrIGNvbnRhaW5zOiByMCwgcjEsIHIyLCByMywgcjEyLCByMTQsIHRoZSByZXR1cm4gYWRkcmVzcyBhbmQNCisJeFBTUi4gIFRoZSBmaXJzdCBhcmd1bWVudCAocjApIGlzIHB1bFBhcmFtWyAwIF0uICovDQorCXVjU1ZDTnVtYmVyID0gKCAoIHVpbnQ4X3QgKiApIHB1bFBhcmFtWyBwb3J0T0ZGU0VUX1RPX1BDIF0gKVsgLTIgXTsNCisJc3dpdGNoKCB1Y1NWQ051bWJlciApDQorCXsNCisJCWNhc2UgcG9ydFNWQ19TVEFSVF9TQ0hFRFVMRVIJOglwb3J0TlZJQ19TWVNQUkkxX1JFRyB8PSBwb3J0TlZJQ19TVkNfUFJJOw0KKwkJCQkJCQkJCQkJdlBvcnRSZXN0b3JlQ29udGV4dE9mRmlyc3RUYXNrKCk7DQorCQkJCQkJCQkJCQlicmVhazsNCisNCisJCWNhc2UgcG9ydFNWQ19ZSUVMRAkJCQk6CXBvcnROVklDX0lOVF9DVFJMX1JFRyA9IHBvcnROVklDX1BFTkRTVlNFVF9CSVQ7DQorCQkJCQkJCQkJCQkvKiBCYXJyaWVycyBhcmUgbm9ybWFsbHkgbm90IHJlcXVpcmVkDQorCQkJCQkJCQkJCQlidXQgZG8gZW5zdXJlIHRoZSBjb2RlIGlzIGNvbXBsZXRlbHkNCisJCQkJCQkJCQkJCXdpdGhpbiB0aGUgc3BlY2lmaWVkIGJlaGF2aW91ciBmb3IgdGhlDQorCQkJCQkJCQkJCQlhcmNoaXRlY3R1cmUuICovDQorCQkJCQkJCQkJCQlfX2FzbSB2b2xhdGlsZSggImRzYiIgOjo6ICJtZW1vcnkiICk7DQorCQkJCQkJCQkJCQlfX2FzbSB2b2xhdGlsZSggImlzYiIgKTsNCisNCisJCQkJCQkJCQkJCWJyZWFrOw0KKw0KKwkJY2FzZSBwb3J0U1ZDX1JBSVNFX1BSSVZJTEVHRQk6CV9fYXNtIHZvbGF0aWxlDQorCQkJCQkJCQkJCQkoDQorCQkJCQkJCQkJCQkJIgltcnMgcjEsIGNvbnRyb2wJCVxuIiAvKiBPYnRhaW4gY3VycmVudCBjb250cm9sIHZhbHVlLiAqLw0KKwkJCQkJCQkJCQkJCSIJYmljIHIxLCByMSwgIzEJCVxuIiAvKiBTZXQgcHJpdmlsZWdlIGJpdC4gKi8NCisJCQkJCQkJCQkJCQkiCW1zciBjb250cm9sLCByMQkJXG4iIC8qIFdyaXRlIGJhY2sgbmV3IGNvbnRyb2wgdmFsdWUuICovDQorCQkJCQkJCQkJCQkJOjo6ICJyMSIsICJtZW1vcnkiDQorCQkJCQkJCQkJCQkpOw0KKwkJCQkJCQkJCQkJYnJlYWs7DQorDQorCQlkZWZhdWx0CQkJCQkJCToJLyogVW5rbm93biBTVkMgY2FsbC4gKi8NCisJCQkJCQkJCQkJCWJyZWFrOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogU2VlIGhlYWRlciBmaWxlIGZvciBkZXNjcmlwdGlvbi4NCisgKi8NCitCYXNlVHlwZV90IHhQb3J0U3RhcnRTY2hlZHVsZXIoIHZvaWQgKQ0KK3sNCisJLyogY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZIG11c3Qgbm90IGJlIHNldCB0byAwLg0KKwlTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvUlRPUy1Db3J0ZXgtTTMtTTQuaHRtbCAqLw0KKwljb25maWdBU1NFUlQoIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSApOw0KKw0KKwkvKiBUaGlzIHBvcnQgY2FuIGJlIHVzZWQgb24gYWxsIHJldmlzaW9ucyBvZiB0aGUgQ29ydGV4LU03IGNvcmUgb3RoZXIgdGhhbg0KKwl0aGUgcjBwMSBwYXJ0cy4gIHIwcDEgcGFydHMgc2hvdWxkIHVzZSB0aGUgcG9ydCBmcm9tIHRoZQ0KKwkvc291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ003L3IwcDEgZGlyZWN0b3J5LiAqLw0KKwljb25maWdBU1NFUlQoIHBvcnRDUFVJRCAhPSBwb3J0Q09SVEVYX003X3IwcDFfSUQgKTsNCisJY29uZmlnQVNTRVJUKCBwb3J0Q1BVSUQgIT0gcG9ydENPUlRFWF9NN19yMHAwX0lEICk7DQorDQorCSNpZiggY29uZmlnQVNTRVJUX0RFRklORUQgPT0gMSApDQorCXsNCisJCXZvbGF0aWxlIHVpbnQzMl90IHVsT3JpZ2luYWxQcmlvcml0eTsNCisJCXZvbGF0aWxlIHVpbnQ4X3QgKiBjb25zdCBwdWNGaXJzdFVzZXJQcmlvcml0eVJlZ2lzdGVyID0gKCB2b2xhdGlsZSB1aW50OF90ICogY29uc3QgKSAoIHBvcnROVklDX0lQX1JFR0lTVEVSU19PRkZTRVRfMTYgKyBwb3J0RklSU1RfVVNFUl9JTlRFUlJVUFRfTlVNQkVSICk7DQorCQl2b2xhdGlsZSB1aW50OF90IHVjTWF4UHJpb3JpdHlWYWx1ZTsNCisNCisJCS8qIERldGVybWluZSB0aGUgbWF4aW11bSBwcmlvcml0eSBmcm9tIHdoaWNoIElTUiBzYWZlIEZyZWVSVE9TIEFQSQ0KKwkJZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQuICBJU1Igc2FmZSBmdW5jdGlvbnMgYXJlIHRob3NlIHRoYXQgZW5kIGluDQorCQkiRnJvbUlTUiIuICBGcmVlUlRPUyBtYWludGFpbnMgc2VwYXJhdGUgdGhyZWFkIGFuZCBJU1IgQVBJIGZ1bmN0aW9ucyB0bw0KKwkJZW5zdXJlIGludGVycnVwdCBlbnRyeSBpcyBhcyBmYXN0IGFuZCBzaW1wbGUgYXMgcG9zc2libGUuDQorDQorCQlTYXZlIHRoZSBpbnRlcnJ1cHQgcHJpb3JpdHkgdmFsdWUgdGhhdCBpcyBhYm91dCB0byBiZSBjbG9iYmVyZWQuICovDQorCQl1bE9yaWdpbmFsUHJpb3JpdHkgPSAqcHVjRmlyc3RVc2VyUHJpb3JpdHlSZWdpc3RlcjsNCisNCisJCS8qIERldGVybWluZSB0aGUgbnVtYmVyIG9mIHByaW9yaXR5IGJpdHMgYXZhaWxhYmxlLiAgRmlyc3Qgd3JpdGUgdG8gYWxsDQorCQlwb3NzaWJsZSBiaXRzLiAqLw0KKwkJKnB1Y0ZpcnN0VXNlclByaW9yaXR5UmVnaXN0ZXIgPSBwb3J0TUFYXzhfQklUX1ZBTFVFOw0KKw0KKwkJLyogUmVhZCB0aGUgdmFsdWUgYmFjayB0byBzZWUgaG93IG1hbnkgYml0cyBzdHVjay4gKi8NCisJCXVjTWF4UHJpb3JpdHlWYWx1ZSA9ICpwdWNGaXJzdFVzZXJQcmlvcml0eVJlZ2lzdGVyOw0KKw0KKwkJLyogVXNlIHRoZSBzYW1lIG1hc2sgb24gdGhlIG1heGltdW0gc3lzdGVtIGNhbGwgcHJpb3JpdHkuICovDQorCQl1Y01heFN5c0NhbGxQcmlvcml0eSA9IGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSAmIHVjTWF4UHJpb3JpdHlWYWx1ZTsNCisNCisJCS8qIENhbGN1bGF0ZSB0aGUgbWF4aW11bSBhY2NlcHRhYmxlIHByaW9yaXR5IGdyb3VwIHZhbHVlIGZvciB0aGUgbnVtYmVyDQorCQlvZiBiaXRzIHJlYWQgYmFjay4gKi8NCisJCXVsTWF4UFJJR1JPVVBWYWx1ZSA9IHBvcnRNQVhfUFJJR1JPVVBfQklUUzsNCisJCXdoaWxlKCAoIHVjTWF4UHJpb3JpdHlWYWx1ZSAmIHBvcnRUT1BfQklUX09GX0JZVEUgKSA9PSBwb3J0VE9QX0JJVF9PRl9CWVRFICkNCisJCXsNCisJCQl1bE1heFBSSUdST1VQVmFsdWUtLTsNCisJCQl1Y01heFByaW9yaXR5VmFsdWUgPDw9ICggdWludDhfdCApIDB4MDE7DQorCQl9DQorDQorCQkjaWZkZWYgX19OVklDX1BSSU9fQklUUw0KKwkJew0KKwkJCS8qIENoZWNrIHRoZSBDTVNJUyBjb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyB0aGUgbnVtYmVyIG9mDQorCQkJcHJpb3JpdHkgYml0cyBtYXRjaGVzIHRoZSBudW1iZXIgb2YgcHJpb3JpdHkgYml0cyBhY3R1YWxseSBxdWVyaWVkDQorCQkJZnJvbSB0aGUgaGFyZHdhcmUuICovDQorCQkJY29uZmlnQVNTRVJUKCAoIHBvcnRNQVhfUFJJR1JPVVBfQklUUyAtIHVsTWF4UFJJR1JPVVBWYWx1ZSApID09IF9fTlZJQ19QUklPX0JJVFMgKTsNCisJCX0NCisJCSNlbmRpZg0KKw0KKwkJI2lmZGVmIGNvbmZpZ1BSSU9fQklUUw0KKwkJew0KKwkJCS8qIENoZWNrIHRoZSBGcmVlUlRPUyBjb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyB0aGUgbnVtYmVyIG9mDQorCQkJcHJpb3JpdHkgYml0cyBtYXRjaGVzIHRoZSBudW1iZXIgb2YgcHJpb3JpdHkgYml0cyBhY3R1YWxseSBxdWVyaWVkDQorCQkJZnJvbSB0aGUgaGFyZHdhcmUuICovDQorCQkJY29uZmlnQVNTRVJUKCAoIHBvcnRNQVhfUFJJR1JPVVBfQklUUyAtIHVsTWF4UFJJR1JPVVBWYWx1ZSApID09IGNvbmZpZ1BSSU9fQklUUyApOw0KKwkJfQ0KKwkJI2VuZGlmDQorDQorCQkvKiBTaGlmdCB0aGUgcHJpb3JpdHkgZ3JvdXAgdmFsdWUgYmFjayB0byBpdHMgcG9zaXRpb24gd2l0aGluIHRoZSBBSVJDUg0KKwkJcmVnaXN0ZXIuICovDQorCQl1bE1heFBSSUdST1VQVmFsdWUgPDw9IHBvcnRQUklHUk9VUF9TSElGVDsNCisJCXVsTWF4UFJJR1JPVVBWYWx1ZSAmPSBwb3J0UFJJT1JJVFlfR1JPVVBfTUFTSzsNCisNCisJCS8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCBpbnRlcnJ1cHQgcHJpb3JpdHkgcmVnaXN0ZXIgdG8gaXRzIG9yaWdpbmFsDQorCQl2YWx1ZS4gKi8NCisJCSpwdWNGaXJzdFVzZXJQcmlvcml0eVJlZ2lzdGVyID0gdWxPcmlnaW5hbFByaW9yaXR5Ow0KKwl9DQorCSNlbmRpZiAvKiBjb25pZmdBU1NFUlRfREVGSU5FRCAqLw0KKw0KKwkvKiBNYWtlIFBlbmRTViBhbmQgU3lzVGljayB0aGUgbG93ZXN0IHByaW9yaXR5IGludGVycnVwdHMuICovDQorCXBvcnROVklDX1NZU1BSSTJfUkVHIHw9IHBvcnROVklDX1BFTkRTVl9QUkk7DQorCXBvcnROVklDX1NZU1BSSTJfUkVHIHw9IHBvcnROVklDX1NZU1RJQ0tfUFJJOw0KKw0KKwkvKiBDb25maWd1cmUgdGhlIHJlZ2lvbnMgaW4gdGhlIE1QVSB0aGF0IGFyZSBjb21tb24gdG8gYWxsIHRhc2tzLiAqLw0KKwlwcnZTZXR1cE1QVSgpOw0KKw0KKwkvKiBTdGFydCB0aGUgdGltZXIgdGhhdCBnZW5lcmF0ZXMgdGhlIHRpY2sgSVNSLiAgSW50ZXJydXB0cyBhcmUgZGlzYWJsZWQNCisJaGVyZSBhbHJlYWR5LiAqLw0KKwl2UG9ydFNldHVwVGltZXJJbnRlcnJ1cHQoKTsNCisNCisJLyogSW5pdGlhbGlzZSB0aGUgY3JpdGljYWwgbmVzdGluZyBjb3VudCByZWFkeSBmb3IgdGhlIGZpcnN0IHRhc2suICovDQorCXV4Q3JpdGljYWxOZXN0aW5nID0gMDsNCisNCisJLyogRW5zdXJlIHRoZSBWRlAgaXMgZW5hYmxlZCAtIGl0IHNob3VsZCBiZSBhbnl3YXkuICovDQorCXZQb3J0RW5hYmxlVkZQKCk7DQorDQorCS8qIExhenkgc2F2ZSBhbHdheXMuICovDQorCSooIHBvcnRGUENDUiApIHw9IHBvcnRBU1BFTl9BTkRfTFNQRU5fQklUUzsNCisNCisJLyogU3RhcnQgdGhlIGZpcnN0IHRhc2suICovDQorCXZQb3J0U3RhcnRGaXJzdFRhc2soKTsNCisNCisJLyogU2hvdWxkIG5vdCBnZXQgaGVyZSEgKi8NCisJcmV0dXJuIDA7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlBvcnRFbmRTY2hlZHVsZXIoIHZvaWQgKQ0KK3sNCisJLyogTm90IGltcGxlbWVudGVkIGluIHBvcnRzIHdoZXJlIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuIHRvLg0KKwlBcnRpZmljaWFsbHkgZm9yY2UgYW4gYXNzZXJ0LiAqLw0KKwljb25maWdBU1NFUlQoIHV4Q3JpdGljYWxOZXN0aW5nID09IDEwMDBVTCApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQb3J0RW50ZXJDcml0aWNhbCggdm9pZCApDQorew0KKyBCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJcG9ydERJU0FCTEVfSU5URVJSVVBUUygpOw0KKwl1eENyaXRpY2FsTmVzdGluZysrOw0KKw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJLyogVGhpcyBpcyBub3QgdGhlIGludGVycnVwdCBzYWZlIHZlcnNpb24gb2YgdGhlIGVudGVyIGNyaXRpY2FsIGZ1bmN0aW9uIHNvDQorCWFzc2VydCgpIGlmIGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tIGFuIGludGVycnVwdCBjb250ZXh0LiAgT25seSBBUEkNCisJZnVuY3Rpb25zIHRoYXQgZW5kIGluICJGcm9tSVNSIiBjYW4gYmUgdXNlZCBpbiBhbiBpbnRlcnJ1cHQuICBPbmx5IGFzc2VydCBpZg0KKwl0aGUgY3JpdGljYWwgbmVzdGluZyBjb3VudCBpcyAxIHRvIHByb3RlY3QgYWdhaW5zdCByZWN1cnNpdmUgY2FsbHMgaWYgdGhlDQorCWFzc2VydCBmdW5jdGlvbiBhbHNvIHVzZXMgYSBjcml0aWNhbCBzZWN0aW9uLiAqLw0KKwlpZiggdXhDcml0aWNhbE5lc3RpbmcgPT0gMSApDQorCXsNCisJCWNvbmZpZ0FTU0VSVCggKCBwb3J0TlZJQ19JTlRfQ1RSTF9SRUcgJiBwb3J0VkVDVEFDVElWRV9NQVNLICkgPT0gMCApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlBvcnRFeGl0Q3JpdGljYWwoIHZvaWQgKQ0KK3sNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJY29uZmlnQVNTRVJUKCB1eENyaXRpY2FsTmVzdGluZyApOw0KKw0KKwl1eENyaXRpY2FsTmVzdGluZy0tOw0KKwlpZiggdXhDcml0aWNhbE5lc3RpbmcgPT0gMCApDQorCXsNCisJCXBvcnRFTkFCTEVfSU5URVJSVVBUUygpOw0KKwl9DQorDQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHhQb3J0U3lzVGlja0hhbmRsZXIoIHZvaWQgKQ0KK3sNCisJLyogVGhlIFN5c1RpY2sgcnVucyBhdCB0aGUgbG93ZXN0IGludGVycnVwdCBwcmlvcml0eSwgc28gd2hlbiB0aGlzIGludGVycnVwdA0KKwlleGVjdXRlcyBhbGwgaW50ZXJydXB0cyBtdXN0IGJlIHVubWFza2VkLiAgVGhlcmUgaXMgdGhlcmVmb3JlIG5vIG5lZWQgdG8NCisJc2F2ZSBhbmQgdGhlbiByZXN0b3JlIHRoZSBpbnRlcnJ1cHQgbWFzayB2YWx1ZSBhcyBpdHMgdmFsdWUgaXMgYWxyZWFkeQ0KKwlrbm93bi4gKi8NCisJcG9ydERJU0FCTEVfSU5URVJSVVBUUygpOw0KKwl7DQorCQkvKiBJbmNyZW1lbnQgdGhlIFJUT1MgdGljay4gKi8NCisJCWlmKCB4VGFza0luY3JlbWVudFRpY2soKSAhPSBwZEZBTFNFICkNCisJCXsNCisJCQkvKiBBIGNvbnRleHQgc3dpdGNoIGlzIHJlcXVpcmVkLiAgQ29udGV4dCBzd2l0Y2hpbmcgaXMgcGVyZm9ybWVkIGluDQorCQkJdGhlIFBlbmRTViBpbnRlcnJ1cHQuICBQZW5kIHRoZSBQZW5kU1YgaW50ZXJydXB0LiAqLw0KKwkJCXBvcnROVklDX0lOVF9DVFJMX1JFRyA9IHBvcnROVklDX1BFTkRTVlNFVF9CSVQ7DQorCQl9DQorCX0NCisJcG9ydEVOQUJMRV9JTlRFUlJVUFRTKCk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogU2V0dXAgdGhlIHN5c3RpY2sgdGltZXIgdG8gZ2VuZXJhdGUgdGhlIHRpY2sgaW50ZXJydXB0cyBhdCB0aGUgcmVxdWlyZWQNCisgKiBmcmVxdWVuY3kuDQorICovDQorX193ZWFrIHZvaWQgdlBvcnRTZXR1cFRpbWVySW50ZXJydXB0KCB2b2lkICkNCit7DQorCS8qIFN0b3AgYW5kIGNsZWFyIHRoZSBTeXNUaWNrLiAqLw0KKwlwb3J0TlZJQ19TWVNUSUNLX0NUUkxfUkVHID0gMFVMOw0KKwlwb3J0TlZJQ19TWVNUSUNLX0NVUlJFTlRfVkFMVUVfUkVHID0gMFVMOw0KKw0KKwkvKiBDb25maWd1cmUgU3lzVGljayB0byBpbnRlcnJ1cHQgYXQgdGhlIHJlcXVlc3RlZCByYXRlLiAqLw0KKwlwb3J0TlZJQ19TWVNUSUNLX0xPQURfUkVHID0gKCBjb25maWdTWVNUSUNLX0NMT0NLX0haIC8gY29uZmlnVElDS19SQVRFX0haICkgLSAxVUw7DQorCXBvcnROVklDX1NZU1RJQ0tfQ1RSTF9SRUcgPSAoIHBvcnROVklDX1NZU1RJQ0tfQ0xLX0JJVCB8IHBvcnROVklDX1NZU1RJQ0tfSU5UX0JJVCB8IHBvcnROVklDX1NZU1RJQ0tfRU5BQkxFX0JJVCApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZTZXR1cE1QVSggdm9pZCApDQorew0KK2V4dGVybiB1aW50MzJfdCBfX3ByaXZpbGVnZWRfZnVuY3Rpb25zX2VuZF9fW107DQorZXh0ZXJuIHVpbnQzMl90IF9fRkxBU0hfc2VnbWVudF9zdGFydF9fW107DQorZXh0ZXJuIHVpbnQzMl90IF9fRkxBU0hfc2VnbWVudF9lbmRfX1tdOw0KK2V4dGVybiB1aW50MzJfdCBfX3ByaXZpbGVnZWRfZGF0YV9zdGFydF9fW107DQorZXh0ZXJuIHVpbnQzMl90IF9fcHJpdmlsZWdlZF9kYXRhX2VuZF9fW107DQorDQorCS8qIENoZWNrIHRoZSBleHBlY3RlZCBNUFUgaXMgcHJlc2VudC4gKi8NCisJaWYoIHBvcnRNUFVfVFlQRV9SRUcgPT0gcG9ydEVYUEVDVEVEX01QVV9UWVBFX1ZBTFVFICkNCisJew0KKwkJLyogRmlyc3Qgc2V0dXAgdGhlIGVudGlyZSBmbGFzaCBmb3IgdW5wcml2aWxlZ2VkIHJlYWQgb25seSBhY2Nlc3MuICovDQorCQlwb3J0TVBVX1JFR0lPTl9CQVNFX0FERFJFU1NfUkVHID0JKCAoIHVpbnQzMl90ICkgX19GTEFTSF9zZWdtZW50X3N0YXJ0X18gKSB8IC8qIEJhc2UgYWRkcmVzcy4gKi8NCisJCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCQkJCQkJCQkoIHBvcnRVTlBSSVZJTEVHRURfRkxBU0hfUkVHSU9OICk7DQorDQorCQlwb3J0TVBVX1JFR0lPTl9BVFRSSUJVVEVfUkVHID0JKCBwb3J0TVBVX1JFR0lPTl9SRUFEX09OTFkgKSB8DQorCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fQ0FDSEVBQkxFX0JVRkZFUkFCTEUgKSB8DQorCQkJCQkJCQkJCSggcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoICggdWludDMyX3QgKSBfX0ZMQVNIX3NlZ21lbnRfZW5kX18gLSAoIHVpbnQzMl90ICkgX19GTEFTSF9zZWdtZW50X3N0YXJ0X18gKSApIHwNCisJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisNCisJCS8qIFNldHVwIHRoZSBmaXJzdCAxNksgZm9yIHByaXZpbGVnZWQgb25seSBhY2Nlc3MgKGV2ZW4gdGhvdWdoIGxlc3MNCisJCXRoYW4gMTBLIGlzIGFjdHVhbGx5IGJlaW5nIHVzZWQpLiAgVGhpcyBpcyB3aGVyZSB0aGUga2VybmVsIGNvZGUgaXMNCisJCXBsYWNlZC4gKi8NCisJCXBvcnRNUFVfUkVHSU9OX0JBU0VfQUREUkVTU19SRUcgPQkoICggdWludDMyX3QgKSBfX0ZMQVNIX3NlZ21lbnRfc3RhcnRfXyApIHwgLyogQmFzZSBhZGRyZXNzLiAqLw0KKwkJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9WQUxJRCApIHwNCisJCQkJCQkJCQkJCSggcG9ydFBSSVZJTEVHRURfRkxBU0hfUkVHSU9OICk7DQorDQorCQlwb3J0TVBVX1JFR0lPTl9BVFRSSUJVVEVfUkVHID0JKCBwb3J0TVBVX1JFR0lPTl9QUklWSUxFR0VEX1JFQURfT05MWSApIHwNCisJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9DQUNIRUFCTEVfQlVGRkVSQUJMRSApIHwNCisJCQkJCQkJCQkJKCBwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9mdW5jdGlvbnNfZW5kX18gLSAoIHVpbnQzMl90ICkgX19GTEFTSF9zZWdtZW50X3N0YXJ0X18gKSApIHwNCisJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisNCisJCS8qIFNldHVwIHRoZSBwcml2aWxlZ2VkIGRhdGEgUkFNIHJlZ2lvbi4gIFRoaXMgaXMgd2hlcmUgdGhlIGtlcm5lbCBkYXRhDQorCQlpcyBwbGFjZWQuICovDQorCQlwb3J0TVBVX1JFR0lPTl9CQVNFX0FERFJFU1NfUkVHID0JKCAoIHVpbnQzMl90ICkgX19wcml2aWxlZ2VkX2RhdGFfc3RhcnRfXyApIHwgLyogQmFzZSBhZGRyZXNzLiAqLw0KKwkJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9WQUxJRCApIHwNCisJCQkJCQkJCQkJCSggcG9ydFBSSVZJTEVHRURfUkFNX1JFR0lPTiApOw0KKw0KKwkJcG9ydE1QVV9SRUdJT05fQVRUUklCVVRFX1JFRyA9CSggcG9ydE1QVV9SRUdJT05fUFJJVklMRUdFRF9SRUFEX1dSSVRFICkgfA0KKwkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX0NBQ0hFQUJMRV9CVUZGRVJBQkxFICkgfA0KKwkJCQkJCQkJCQlwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9kYXRhX2VuZF9fIC0gKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9kYXRhX3N0YXJ0X18gKSB8DQorCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorDQorCQkvKiBCeSBkZWZhdWx0IGFsbG93IGV2ZXJ5dGhpbmcgdG8gYWNjZXNzIHRoZSBnZW5lcmFsIHBlcmlwaGVyYWxzLiAgVGhlDQorCQlzeXN0ZW0gcGVyaXBoZXJhbHMgYW5kIHJlZ2lzdGVycyBhcmUgcHJvdGVjdGVkLiAqLw0KKwkJcG9ydE1QVV9SRUdJT05fQkFTRV9BRERSRVNTX1JFRyA9CSggcG9ydFBFUklQSEVSQUxTX1NUQVJUX0FERFJFU1MgKSB8DQorCQkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX1ZBTElEICkgfA0KKwkJCQkJCQkJCQkJKCBwb3J0R0VORVJBTF9QRVJJUEhFUkFMU19SRUdJT04gKTsNCisNCisJCXBvcnRNUFVfUkVHSU9OX0FUVFJJQlVURV9SRUcgPQkoIHBvcnRNUFVfUkVHSU9OX1JFQURfV1JJVEUgfCBwb3J0TVBVX1JFR0lPTl9FWEVDVVRFX05FVkVSICkgfA0KKwkJCQkJCQkJCQkoIHBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCBwb3J0UEVSSVBIRVJBTFNfRU5EX0FERFJFU1MgLSBwb3J0UEVSSVBIRVJBTFNfU1RBUlRfQUREUkVTUyApICkgfA0KKwkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX0VOQUJMRSApOw0KKw0KKwkJLyogRW5hYmxlIHRoZSBtZW1vcnkgZmF1bHQgZXhjZXB0aW9uLiAqLw0KKwkJcG9ydE5WSUNfU1lTX0NUUkxfU1RBVEVfUkVHIHw9IHBvcnROVklDX01FTV9GQVVMVF9FTkFCTEU7DQorDQorCQkvKiBFbmFibGUgdGhlIE1QVSB3aXRoIHRoZSBiYWNrZ3JvdW5kIHJlZ2lvbiBjb25maWd1cmVkLiAqLw0KKwkJcG9ydE1QVV9DVFJMX1JFRyB8PSAoIHBvcnRNUFVfRU5BQkxFIHwgcG9ydE1QVV9CQUNLR1JPVU5EX0VOQUJMRSApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB1aW50MzJfdCBwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggdWludDMyX3QgdWxBY3R1YWxTaXplSW5CeXRlcyApDQorew0KK3VpbnQzMl90IHVsUmVnaW9uU2l6ZSwgdWxSZXR1cm5WYWx1ZSA9IDQ7DQorDQorCS8qIDMyIGlzIHRoZSBzbWFsbGVzdCByZWdpb24gc2l6ZSwgMzEgaXMgdGhlIGxhcmdlc3QgdmFsaWQgdmFsdWUgZm9yDQorCXVsUmV0dXJuVmFsdWUuICovDQorCWZvciggdWxSZWdpb25TaXplID0gMzJVTDsgdWxSZXR1cm5WYWx1ZSA8IDMxVUw7ICggdWxSZWdpb25TaXplIDw8PSAxVUwgKSApDQorCXsNCisJCWlmKCB1bEFjdHVhbFNpemVJbkJ5dGVzIDw9IHVsUmVnaW9uU2l6ZSApDQorCQl7DQorCQkJYnJlYWs7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJdWxSZXR1cm5WYWx1ZSsrOw0KKwkJfQ0KKwl9DQorDQorCS8qIFNoaWZ0IHRoZSBjb2RlIGJ5IG9uZSBiZWZvcmUgcmV0dXJuaW5nIHNvIGl0IGNhbiBiZSB3cml0dGVuIGRpcmVjdGx5DQorCWludG8gdGhlIHRoZSBjb3JyZWN0IGJpdCBwb3NpdGlvbiBvZiB0aGUgYXR0cmlidXRlIHJlZ2lzdGVyLiAqLw0KKwlyZXR1cm4gKCB1bFJldHVyblZhbHVlIDw8IDFVTCApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQb3J0UmVzZXRQcml2aWxlZ2UoIEJhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkICkNCit7DQorCWlmKCB4UnVubmluZ1ByaXZpbGVnZWQgIT0gcGRUUlVFICkNCisJew0KKwkJX19hc20gdm9sYXRpbGUgKCAiIG1ycyByMCwgY29udHJvbCAJXG4iIFwNCisJCQkJCQkgIiBvcnIgcjAsIHIwLCAjMQlcbiIgXA0KKwkJCQkJCSAiIG1zciBjb250cm9sLCByMAlcbiIJXA0KKwkJCQkJCSA6OjoicjAiLCAibWVtb3J5IiApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlBvcnRTdG9yZVRhc2tNUFVTZXR0aW5ncyggeE1QVV9TRVRUSU5HUyAqeE1QVVNldHRpbmdzLCBjb25zdCBzdHJ1Y3QgeE1FTU9SWV9SRUdJT04gKiBjb25zdCB4UmVnaW9ucywgU3RhY2tUeXBlX3QgKnB4Qm90dG9tT2ZTdGFjaywgdWludDMyX3QgdWxTdGFja0RlcHRoICkNCit7DQorZXh0ZXJuIHVpbnQzMl90IF9fU1JBTV9zZWdtZW50X3N0YXJ0X19bXTsNCitleHRlcm4gdWludDMyX3QgX19TUkFNX3NlZ21lbnRfZW5kX19bXTsNCitleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2RhdGFfc3RhcnRfX1tdOw0KK2V4dGVybiB1aW50MzJfdCBfX3ByaXZpbGVnZWRfZGF0YV9lbmRfX1tdOw0KK2ludDMyX3QgbEluZGV4Ow0KK3VpbnQzMl90IHVsOw0KKw0KKwlpZiggeFJlZ2lvbnMgPT0gTlVMTCApDQorCXsNCisJCS8qIE5vIE1QVSByZWdpb25zIGFyZSBzcGVjaWZpZWQgc28gYWxsb3cgYWNjZXNzIHRvIGFsbCBSQU0uICovDQorCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDAgXS51bFJlZ2lvbkJhc2VBZGRyZXNzID0NCisJCQkJKCAoIHVpbnQzMl90ICkgX19TUkFNX3NlZ21lbnRfc3RhcnRfXyApIHwgLyogQmFzZSBhZGRyZXNzLiAqLw0KKwkJCQkoIHBvcnRNUFVfUkVHSU9OX1ZBTElEICkgfA0KKwkJCQkoIHBvcnRTVEFDS19SRUdJT04gKTsNCisNCisJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgMCBdLnVsUmVnaW9uQXR0cmlidXRlID0NCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9SRUFEX1dSSVRFICkgfA0KKwkJCQkoIHBvcnRNUFVfUkVHSU9OX0NBQ0hFQUJMRV9CVUZGRVJBQkxFICkgfA0KKwkJCQkoIHBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCAoIHVpbnQzMl90ICkgX19TUkFNX3NlZ21lbnRfZW5kX18gLSAoIHVpbnQzMl90ICkgX19TUkFNX3NlZ21lbnRfc3RhcnRfXyApICkgfA0KKwkJCQkoIHBvcnRNUFVfUkVHSU9OX0VOQUJMRSApOw0KKw0KKwkJLyogUmUtaW5zdGF0ZSB0aGUgcHJpdmlsZWdlZCBvbmx5IFJBTSByZWdpb24gYXMgeFJlZ2lvblsgMCBdIHdpbGwgaGF2ZQ0KKwkJanVzdCByZW1vdmVkIHRoZSBwcml2aWxlZ2VkIG9ubHkgcGFyYW1ldGVycy4gKi8NCisJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgMSBdLnVsUmVnaW9uQmFzZUFkZHJlc3MgPQ0KKwkJCQkoICggdWludDMyX3QgKSBfX3ByaXZpbGVnZWRfZGF0YV9zdGFydF9fICkgfCAvKiBCYXNlIGFkZHJlc3MuICovDQorCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCSggcG9ydFNUQUNLX1JFR0lPTiArIDEgKTsNCisNCisJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgMSBdLnVsUmVnaW9uQXR0cmlidXRlID0NCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9QUklWSUxFR0VEX1JFQURfV1JJVEUgKSB8DQorCQkJCSggcG9ydE1QVV9SRUdJT05fQ0FDSEVBQkxFX0JVRkZFUkFCTEUgKSB8DQorCQkJCXBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCAoIHVpbnQzMl90ICkgX19wcml2aWxlZ2VkX2RhdGFfZW5kX18gLSAoIHVpbnQzMl90ICkgX19wcml2aWxlZ2VkX2RhdGFfc3RhcnRfXyApIHwNCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisNCisJCS8qIEludmFsaWRhdGUgYWxsIG90aGVyIHJlZ2lvbnMuICovDQorCQlmb3IoIHVsID0gMjsgdWwgPD0gcG9ydE5VTV9DT05GSUdVUkFCTEVfUkVHSU9OUzsgdWwrKyApDQorCQl7DQorCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQmFzZUFkZHJlc3MgPSAoIHBvcnRTVEFDS19SRUdJT04gKyB1bCApIHwgcG9ydE1QVV9SRUdJT05fVkFMSUQ7DQorCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQXR0cmlidXRlID0gMFVMOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSB0YXNrIGlzIGNyZWF0ZWQgLSBpbg0KKwkJd2hpY2ggY2FzZSB0aGUgc3RhY2sgcmVnaW9uIHBhcmFtZXRlcnMgd2lsbCBiZSB2YWxpZC4gIEF0IGFsbCBvdGhlcg0KKwkJdGltZXMgdGhlIHN0YWNrIHBhcmFtZXRlcnMgd2lsbCBub3QgYmUgdmFsaWQgYW5kIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUNCisJCXN0YWNrIHJlZ2lvbiBoYXMgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQuICovDQorCQlpZiggdWxTdGFja0RlcHRoID4gMCApDQorCQl7DQorCQkJLyogRGVmaW5lIHRoZSByZWdpb24gdGhhdCBhbGxvd3MgYWNjZXNzIHRvIHRoZSBzdGFjay4gKi8NCisJCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDAgXS51bFJlZ2lvbkJhc2VBZGRyZXNzID0NCisJCQkJCSggKCB1aW50MzJfdCApIHB4Qm90dG9tT2ZTdGFjayApIHwNCisJCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCQkoIHBvcnRTVEFDS19SRUdJT04gKTsgLyogUmVnaW9uIG51bWJlci4gKi8NCisNCisJCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDAgXS51bFJlZ2lvbkF0dHJpYnV0ZSA9DQorCQkJCQkoIHBvcnRNUFVfUkVHSU9OX1JFQURfV1JJVEUgKSB8IC8qIFJlYWQgYW5kIHdyaXRlLiAqLw0KKwkJCQkJKCBwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggdWxTdGFja0RlcHRoICogKCB1aW50MzJfdCApIHNpemVvZiggU3RhY2tUeXBlX3QgKSApICkgfA0KKwkJCQkJKCBwb3J0TVBVX1JFR0lPTl9DQUNIRUFCTEVfQlVGRkVSQUJMRSApIHwNCisJCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorCQl9DQorDQorCQlsSW5kZXggPSAwOw0KKw0KKwkJZm9yKCB1bCA9IDE7IHVsIDw9IHBvcnROVU1fQ09ORklHVVJBQkxFX1JFR0lPTlM7IHVsKysgKQ0KKwkJew0KKwkJCWlmKCAoIHhSZWdpb25zWyBsSW5kZXggXSApLnVsTGVuZ3RoSW5CeXRlcyA+IDBVTCApDQorCQkJew0KKwkJCQkvKiBUcmFuc2xhdGUgdGhlIGdlbmVyaWMgcmVnaW9uIGRlZmluaXRpb24gY29udGFpbmVkIGluDQorCQkJCXhSZWdpb25zIGludG8gdGhlIENNMyBzcGVjaWZpYyBNUFUgc2V0dGluZ3MgdGhhdCBhcmUgdGhlbg0KKwkJCQlzdG9yZWQgaW4geE1QVVNldHRpbmdzLiAqLw0KKwkJCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIHVsIF0udWxSZWdpb25CYXNlQWRkcmVzcyA9DQorCQkJCQkJKCAoIHVpbnQzMl90ICkgeFJlZ2lvbnNbIGxJbmRleCBdLnB2QmFzZUFkZHJlc3MgKSB8DQorCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9WQUxJRCApIHwNCisJCQkJCQkoIHBvcnRTVEFDS19SRUdJT04gKyB1bCApOyAvKiBSZWdpb24gbnVtYmVyLiAqLw0KKw0KKwkJCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIHVsIF0udWxSZWdpb25BdHRyaWJ1dGUgPQ0KKwkJCQkJCSggcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoIHhSZWdpb25zWyBsSW5kZXggXS51bExlbmd0aEluQnl0ZXMgKSApIHwNCisJCQkJCQkoIHhSZWdpb25zWyBsSW5kZXggXS51bFBhcmFtZXRlcnMgKSB8DQorCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJLyogSW52YWxpZGF0ZSB0aGUgcmVnaW9uLiAqLw0KKwkJCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIHVsIF0udWxSZWdpb25CYXNlQWRkcmVzcyA9ICggcG9ydFNUQUNLX1JFR0lPTiArIHVsICkgfCBwb3J0TVBVX1JFR0lPTl9WQUxJRDsNCisJCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQXR0cmlidXRlID0gMFVMOw0KKwkJCX0NCisNCisJCQlsSW5kZXgrKzsNCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoIGNvbmZpZ0FTU0VSVF9ERUZJTkVEID09IDEgKQ0KKw0KKwl2b2lkIHZQb3J0VmFsaWRhdGVJbnRlcnJ1cHRQcmlvcml0eSggdm9pZCApDQorCXsNCisJdWludDMyX3QgdWxDdXJyZW50SW50ZXJydXB0Ow0KKwl1aW50OF90IHVjQ3VycmVudFByaW9yaXR5Ow0KKw0KKwkJLyogT2J0YWluIHRoZSBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgaW50ZXJydXB0LiAqLw0KKwkJX19hc20gdm9sYXRpbGUoICJtcnMgJTAsIGlwc3IiIDogIj1yIiggdWxDdXJyZW50SW50ZXJydXB0ICkgOjogIm1lbW9yeSIgKTsNCisNCisJCS8qIElzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGEgdXNlciBkZWZpbmVkIGludGVycnVwdD8gKi8NCisJCWlmKCB1bEN1cnJlbnRJbnRlcnJ1cHQgPj0gcG9ydEZJUlNUX1VTRVJfSU5URVJSVVBUX05VTUJFUiApDQorCQl7DQorCQkJLyogTG9vayB1cCB0aGUgaW50ZXJydXB0J3MgcHJpb3JpdHkuICovDQorCQkJdWNDdXJyZW50UHJpb3JpdHkgPSBwY0ludGVycnVwdFByaW9yaXR5UmVnaXN0ZXJzWyB1bEN1cnJlbnRJbnRlcnJ1cHQgXTsNCisNCisJCQkvKiBUaGUgZm9sbG93aW5nIGFzc2VydGlvbiB3aWxsIGZhaWwgaWYgYSBzZXJ2aWNlIHJvdXRpbmUgKElTUikgZm9yDQorCQkJYW4gaW50ZXJydXB0IHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgYSBwcmlvcml0eSBhYm92ZQ0KKwkJCWNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSBjYWxscyBhbiBJU1Igc2FmZSBGcmVlUlRPUyBBUEkNCisJCQlmdW5jdGlvbi4gIElTUiBzYWZlIEZyZWVSVE9TIEFQSSBmdW5jdGlvbnMgbXVzdCAqb25seSogYmUgY2FsbGVkDQorCQkJZnJvbSBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIGEgcHJpb3JpdHkgYXQgb3IgYmVsb3cNCisJCQljb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkuDQorDQorCQkJTnVtZXJpY2FsbHkgbG93IGludGVycnVwdCBwcmlvcml0eSBudW1iZXJzIHJlcHJlc2VudCBsb2dpY2FsbHkgaGlnaA0KKwkJCWludGVycnVwdCBwcmlvcml0aWVzLCB0aGVyZWZvcmUgdGhlIHByaW9yaXR5IG9mIHRoZSBpbnRlcnJ1cHQgbXVzdA0KKwkJCWJlIHNldCB0byBhIHZhbHVlIGVxdWFsIHRvIG9yIG51bWVyaWNhbGx5ICpoaWdoZXIqIHRoYW4NCisJCQljb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkuDQorDQorCQkJSW50ZXJydXB0cyB0aGF0CXVzZSB0aGUgRnJlZVJUT1MgQVBJIG11c3Qgbm90IGJlIGxlZnQgYXQgdGhlaXINCisJCQlkZWZhdWx0IHByaW9yaXR5IG9mCXplcm8gYXMgdGhhdCBpcyB0aGUgaGlnaGVzdCBwb3NzaWJsZSBwcmlvcml0eSwNCisJCQl3aGljaCBpcyBndWFyYW50ZWVkIHRvIGJlIGFib3ZlIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSwNCisJCQlhbmQJdGhlcmVmb3JlIGFsc28gZ3VhcmFudGVlZCB0byBiZSBpbnZhbGlkLg0KKw0KKwkJCUZyZWVSVE9TIG1haW50YWlucyBzZXBhcmF0ZSB0aHJlYWQgYW5kIElTUiBBUEkgZnVuY3Rpb25zIHRvIGVuc3VyZQ0KKwkJCWludGVycnVwdCBlbnRyeSBpcyBhcyBmYXN0IGFuZCBzaW1wbGUgYXMgcG9zc2libGUuDQorDQorCQkJVGhlIGZvbGxvd2luZyBsaW5rcyBwcm92aWRlIGRldGFpbGVkIGluZm9ybWF0aW9uOg0KKwkJCWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL1JUT1MtQ29ydGV4LU0zLU00Lmh0bWwNCisJCQlodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9GQVFIZWxwLmh0bWwgKi8NCisJCQljb25maWdBU1NFUlQoIHVjQ3VycmVudFByaW9yaXR5ID49IHVjTWF4U3lzQ2FsbFByaW9yaXR5ICk7DQorCQl9DQorDQorCQkvKiBQcmlvcml0eSBncm91cGluZzogIFRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAoTlZJQykgYWxsb3dzIHRoZSBiaXRzDQorCQl0aGF0IGRlZmluZSBlYWNoIGludGVycnVwdCdzIHByaW9yaXR5IHRvIGJlIHNwbGl0IGJldHdlZW4gYml0cyB0aGF0DQorCQlkZWZpbmUgdGhlIGludGVycnVwdCdzIHByZS1lbXB0aW9uIHByaW9yaXR5IGJpdHMgYW5kIGJpdHMgdGhhdCBkZWZpbmUNCisJCXRoZSBpbnRlcnJ1cHQncyBzdWItcHJpb3JpdHkuICBGb3Igc2ltcGxpY2l0eSBhbGwgYml0cyBtdXN0IGJlIGRlZmluZWQNCisJCXRvIGJlIHByZS1lbXB0aW9uIHByaW9yaXR5IGJpdHMuICBUaGUgZm9sbG93aW5nIGFzc2VydGlvbiB3aWxsIGZhaWwgaWYNCisJCXRoaXMgaXMgbm90IHRoZSBjYXNlIChpZiBzb21lIGJpdHMgcmVwcmVzZW50IGEgc3ViLXByaW9yaXR5KS4NCisNCisJCUlmIHRoZSBhcHBsaWNhdGlvbiBvbmx5IHVzZXMgQ01TSVMgbGlicmFyaWVzIGZvciBpbnRlcnJ1cHQNCisJCWNvbmZpZ3VyYXRpb24gdGhlbiB0aGUgY29ycmVjdCBzZXR0aW5nIGNhbiBiZSBhY2hpZXZlZCBvbiBhbGwgQ29ydGV4LU0NCisJCWRldmljZXMgYnkgY2FsbGluZyBOVklDX1NldFByaW9yaXR5R3JvdXBpbmcoIDAgKTsgYmVmb3JlIHN0YXJ0aW5nIHRoZQ0KKwkJc2NoZWR1bGVyLiAgTm90ZSBob3dldmVyIHRoYXQgc29tZSB2ZW5kb3Igc3BlY2lmaWMgcGVyaXBoZXJhbCBsaWJyYXJpZXMNCisJCWFzc3VtZSBhIG5vbi16ZXJvIHByaW9yaXR5IGdyb3VwIHNldHRpbmcsIGluIHdoaWNoIGNhc2VzIHVzaW5nIGEgdmFsdWUNCisJCW9mIHplcm8gd2lsbCByZXN1bHQgaW4gdW5wcmVkaWN0YWJsZSBiZWhhdmlvdXIuICovDQorCQljb25maWdBU1NFUlQoICggcG9ydEFJUkNSX1JFRyAmIHBvcnRQUklPUklUWV9HUk9VUF9NQVNLICkgPD0gdWxNYXhQUklHUk9VUFZhbHVlICk7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnQVNTRVJUX0RFRklORUQgKi8NCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0YXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0YXNtLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM2NDJhMQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEZfTVBVL3BvcnRhc20ucwpAQCAtMCwwICsxLDE5OCBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCisNCisJUlNFRyAgICBDT0RFOkNPREUoMikNCisJdGh1bWINCisNCisJRVhURVJOIHB4Q3VycmVudFRDQg0KKwlFWFRFUk4gdlRhc2tTd2l0Y2hDb250ZXh0DQorCUVYVEVSTiB2UG9ydFNWQ0hhbmRsZXJfQw0KKw0KKwlQVUJMSUMgeFBvcnRQZW5kU1ZIYW5kbGVyDQorCVBVQkxJQyB2UG9ydFNWQ0hhbmRsZXINCisJUFVCTElDIHZQb3J0U3RhcnRGaXJzdFRhc2sNCisJUFVCTElDIHZQb3J0RW5hYmxlVkZQDQorCVBVQkxJQyB2UG9ydFJlc3RvcmVDb250ZXh0T2ZGaXJzdFRhc2sNCisJUFVCTElDIHhQb3J0UmFpc2VQcml2aWxlZ2UNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit4UG9ydFBlbmRTVkhhbmRsZXI6DQorCW1ycyByMCwgcHNwDQorCWlzYg0KKwkvKiBHZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBjdXJyZW50IFRDQi4gKi8NCisJbGRyCXIzLCA9cHhDdXJyZW50VENCDQorCWxkcglyMiwgW3IzXQ0KKw0KKwkvKiBJcyB0aGUgdGFzayB1c2luZyB0aGUgRlBVIGNvbnRleHQ/ICBJZiBzbywgcHVzaCBoaWdoIHZmcCByZWdpc3RlcnMuICovDQorCXRzdCByMTQsICMweDEwDQorCWl0IGVxDQorCXZzdG1kYmVxIHIwISwge3MxNi1zMzF9DQorDQorCS8qIFNhdmUgdGhlIGNvcmUgcmVnaXN0ZXJzLiAqLw0KKwltcnMgcjEsIGNvbnRyb2wNCisJc3RtZGIgcjAhLCB7cjEsIHI0LXIxMSwgcjE0fQ0KKw0KKwkvKiBTYXZlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGludG8gdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgVENCLiAqLw0KKwlzdHIgcjAsIFtyMl0NCisNCisJc3RtZGIgc3AhLCB7cjAsIHIzfQ0KKwltb3YgcjAsICNjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkNCisJbXNyIGJhc2VwcmksIHIwDQorCWRzYg0KKwlpc2INCisJYmwgdlRhc2tTd2l0Y2hDb250ZXh0DQorCW1vdiByMCwgIzANCisJbXNyIGJhc2VwcmksIHIwDQorCWxkbWlhIHNwISwge3IwLCByM30NCisNCisJLyogVGhlIGZpcnN0IGl0ZW0gaW4gcHhDdXJyZW50VENCIGlzIHRoZSB0YXNrIHRvcCBvZiBzdGFjay4gKi8NCisJbGRyIHIxLCBbcjNdDQorCWxkciByMCwgW3IxXQ0KKwkvKiBNb3ZlIG9udG8gdGhlIHNlY29uZCBpdGVtIGluIHRoZSBUQ0IuLi4gKi8NCisJYWRkIHIxLCByMSwgIzQNCisJLyogUmVnaW9uIEJhc2UgQWRkcmVzcyByZWdpc3Rlci4gKi8NCisJbGRyIHIyLCA9MHhlMDAwZWQ5Yw0KKwkvKiBSZWFkIDQgc2V0cyBvZiBNUFUgcmVnaXN0ZXJzLiAqLw0KKwlsZG1pYSByMSEsIHtyNC1yMTF9DQorCS8qIFdyaXRlIDQgc2V0cyBvZiBNUFUgcmVnaXN0ZXJzLiAqLw0KKwlzdG1pYSByMiEsIHtyNC1yMTF9DQorCS8qIFBvcCB0aGUgcmVnaXN0ZXJzIHRoYXQgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHNhdmVkIG9uIGV4Y2VwdGlvbiBlbnRyeS4gKi8NCisJbGRtaWEgcjAhLCB7cjMtcjExLCByMTR9DQorCW1zciBjb250cm9sLCByMw0KKw0KKwkvKiBJcyB0aGUgdGFzayB1c2luZyB0aGUgRlBVIGNvbnRleHQ/ICBJZiBzbywgcG9wIHRoZSBoaWdoIHZmcCByZWdpc3RlcnMNCisJdG9vLiAqLw0KKwl0c3QgcjE0LCAjMHgxMA0KKwlpdCBlcQ0KKwl2bGRtaWFlcSByMCEsIHtzMTYtczMxfQ0KKw0KKwltc3IgcHNwLCByMA0KKwlpc2INCisNCisJYnggcjE0DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordlBvcnRTVkNIYW5kbGVyOg0KKwkjaWZuZGVmIFVTRV9QUk9DRVNTX1NUQUNLCS8qIENvZGUgc2hvdWxkIG5vdCBiZSByZXF1aXJlZCBpZiBhIG1haW4oKSBpcyB1c2luZyB0aGUgcHJvY2VzcyBzdGFjay4gKi8NCisJCXRzdCBsciwgIzQNCisJCWl0ZSBlcQ0KKwkJbXJzZXEgcjAsIG1zcA0KKwkJbXJzbmUgcjAsIHBzcA0KKwkjZWxzZQ0KKwkJbXJzIHIwLCBwc3ANCisJI2VuZGlmDQorCQliIHZQb3J0U1ZDSGFuZGxlcl9DDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordlBvcnRTdGFydEZpcnN0VGFzaw0KKwkvKiBVc2UgdGhlIE5WSUMgb2Zmc2V0IHJlZ2lzdGVyIHRvIGxvY2F0ZSB0aGUgc3RhY2suICovDQorCWxkciByMCwgPTB4RTAwMEVEMDgNCisJbGRyIHIwLCBbcjBdDQorCWxkciByMCwgW3IwXQ0KKwkvKiBTZXQgdGhlIG1zcCBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgc3RhY2suICovDQorCW1zciBtc3AsIHIwDQorCS8qIENsZWFyIHRoZSBiaXQgdGhhdCBpbmRpY2F0ZXMgdGhlIEZQVSBpcyBpbiB1c2UgaW4gY2FzZSB0aGUgRlBVIHdhcyB1c2VkDQorCWJlZm9yZSB0aGUgc2NoZWR1bGVyIHdhcyBzdGFydGVkIC0gd2hpY2ggd291bGQgb3RoZXJ3aXNlIHJlc3VsdCBpbiB0aGUNCisJdW5uZWNlc3NhcnkgbGVhdmluZyBvZiBzcGFjZSBpbiB0aGUgU1ZDIHN0YWNrIGZvciBsYXp5IHNhdmluZyBvZiBGUFUNCisJcmVnaXN0ZXJzLiAqLw0KKwltb3YgcjAsICMwDQorCW1zciBjb250cm9sLCByMA0KKwkvKiBDYWxsIFNWQyB0byBzdGFydCB0aGUgZmlyc3QgdGFzay4gKi8NCisJY3BzaWUgaQ0KKwljcHNpZSBmDQorCWRzYg0KKwlpc2INCisJc3ZjIDANCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2UG9ydFJlc3RvcmVDb250ZXh0T2ZGaXJzdFRhc2sNCisJLyogVXNlIHRoZSBOVklDIG9mZnNldCByZWdpc3RlciB0byBsb2NhdGUgdGhlIHN0YWNrLiAqLw0KKwlsZHIgcjAsID0weEUwMDBFRDA4DQorCWxkciByMCwgW3IwXQ0KKwlsZHIgcjAsIFtyMF0NCisJLyogU2V0IHRoZSBtc3AgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHN0YWNrLiAqLw0KKwltc3IgbXNwLCByMA0KKwkvKiBSZXN0b3JlIHRoZSBjb250ZXh0LiAqLw0KKwlsZHIJcjMsID1weEN1cnJlbnRUQ0INCisJbGRyIHIxLCBbcjNdDQorCS8qIFRoZSBmaXJzdCBpdGVtIGluIHRoZSBUQ0IgaXMgdGhlIHRhc2sgdG9wIG9mIHN0YWNrLiAqLw0KKwlsZHIgcjAsIFtyMV0NCisJLyogTW92ZSBvbnRvIHRoZSBzZWNvbmQgaXRlbSBpbiB0aGUgVENCLi4uICovDQorCWFkZCByMSwgcjEsICM0DQorCS8qIFJlZ2lvbiBCYXNlIEFkZHJlc3MgcmVnaXN0ZXIuICovDQorCWxkciByMiwgPTB4ZTAwMGVkOWMNCisJLyogUmVhZCA0IHNldHMgb2YgTVBVIHJlZ2lzdGVycy4gKi8NCisJbGRtaWEgcjEhLCB7cjQtcjExfQ0KKwkvKiBXcml0ZSA0IHNldHMgb2YgTVBVIHJlZ2lzdGVycy4gKi8NCisJc3RtaWEgcjIhLCB7cjQtcjExfQ0KKwkvKiBQb3AgdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXV0b21hdGljYWxseSBzYXZlZCBvbiBleGNlcHRpb24gZW50cnkuICovDQorCWxkbWlhIHIwISwge3IzLXIxMSwgcjE0fQ0KKwltc3IgY29udHJvbCwgcjMNCisJLyogUmVzdG9yZSB0aGUgdGFzayBzdGFjayBwb2ludGVyLiAqLw0KKwltc3IgcHNwLCByMA0KKwltb3YgcjAsICMwDQorCW1zcgliYXNlcHJpLCByMA0KKwlieCByMTQNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2UG9ydEVuYWJsZVZGUA0KKwkvKiBUaGUgRlBVIGVuYWJsZSBiaXRzIGFyZSBpbiB0aGUgQ1BBQ1IuICovDQorCWxkci53IHIwLCA9MHhFMDAwRUQ4OA0KKwlsZHIJcjEsIFtyMF0NCisNCisJLyogRW5hYmxlIENQMTAgYW5kIENQMTEgY29wcm9jZXNzb3JzLCB0aGVuIHNhdmUgYmFjay4gKi8NCisJb3JyCXIxLCByMSwgIyggMHhmIDw8IDIwICkNCisJc3RyIHIxLCBbcjBdDQorCWJ4CXIxNA0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3hQb3J0UmFpc2VQcml2aWxlZ2UNCisJbXJzIHIwLCBjb250cm9sDQorCS8qIElzIHRoZSB0YXNrIHJ1bm5pbmcgcHJpdmlsZWdlZD8gKi8NCisJdHN0IHIwLCAjMQ0KKwlpdHRlIG5lDQorCS8qIENPTlRST0xbMF0hPTAsIHJldHVybiBmYWxzZS4gKi8NCisJbW92bmUgcjAsICMwDQorCS8qIFN3aXRjaCB0byBwcml2aWxlZ2VkLiAqLw0KKwlzdmNuZSAyCS8qIDIgPT0gcG9ydFNWQ19SQUlTRV9QUklWSUxFR0UgKi8NCisJLyogQ09OVFJPTFswXT09MCwgcmV0dXJuIHRydWUuICovDQorCW1vdmVxIHIwLCAjMQ0KKwlieCBscg0KKw0KKw0KKwlFTkQNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEZfTVBVL3BvcnRtYWNyby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YjdkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0bWFjcm8uaApAQCAtMCwwICsxLDIxMiBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaWZuZGVmIFBPUlRNQUNST19IDQorI2RlZmluZSBQT1JUTUFDUk9fSA0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgKiBQb3J0IHNwZWNpZmljIGRlZmluaXRpb25zLg0KKyAqDQorICogVGhlIHNldHRpbmdzIGluIHRoaXMgZmlsZSBjb25maWd1cmUgRnJlZVJUT1MgY29ycmVjdGx5IGZvciB0aGUNCisgKiBnaXZlbiBoYXJkd2FyZSBhbmQgY29tcGlsZXIuDQorICoNCisgKiBUaGVzZSBzZXR0aW5ncyBzaG91bGQgbm90IGJlIGFsdGVyZWQuDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyAqLw0KKw0KKy8qIElBUiBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KKw0KKy8qIFR5cGUgZGVmaW5pdGlvbnMuICovDQorI2RlZmluZSBwb3J0Q0hBUgkJY2hhcg0KKyNkZWZpbmUgcG9ydEZMT0FUCQlmbG9hdA0KKyNkZWZpbmUgcG9ydERPVUJMRQkJZG91YmxlDQorI2RlZmluZSBwb3J0TE9ORwkJbG9uZw0KKyNkZWZpbmUgcG9ydFNIT1JUCQlzaG9ydA0KKyNkZWZpbmUgcG9ydFNUQUNLX1RZUEUJdWludDMyX3QNCisjZGVmaW5lIHBvcnRCQVNFX1RZUEUJbG9uZw0KKw0KK3R5cGVkZWYgcG9ydFNUQUNLX1RZUEUgU3RhY2tUeXBlX3Q7DQordHlwZWRlZiBsb25nIEJhc2VUeXBlX3Q7DQordHlwZWRlZiB1bnNpZ25lZCBsb25nIFVCYXNlVHlwZV90Ow0KKw0KKyNpZiggY29uZmlnVVNFXzE2X0JJVF9USUNLUyA9PSAxICkNCisJdHlwZWRlZiB1aW50MTZfdCBUaWNrVHlwZV90Ow0KKwkjZGVmaW5lIHBvcnRNQVhfREVMQVkgKCBUaWNrVHlwZV90ICkgMHhmZmZmDQorI2Vsc2UNCisJdHlwZWRlZiB1aW50MzJfdCBUaWNrVHlwZV90Ow0KKwkjZGVmaW5lIHBvcnRNQVhfREVMQVkgKCBUaWNrVHlwZV90ICkgMHhmZmZmZmZmZlVMDQorDQorCS8qIDMyLWJpdCB0aWNrIHR5cGUgb24gYSAzMi1iaXQgYXJjaGl0ZWN0dXJlLCBzbyByZWFkcyBvZiB0aGUgdGljayBjb3VudCBkbw0KKwlub3QgbmVlZCB0byBiZSBndWFyZGVkIHdpdGggYSBjcml0aWNhbCBzZWN0aW9uLiAqLw0KKwkjZGVmaW5lIHBvcnRUSUNLX1RZUEVfSVNfQVRPTUlDIDENCisjZW5kaWYNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBNUFUgc3BlY2lmaWMgY29uc3RhbnRzLiAqLw0KKyNkZWZpbmUgcG9ydFVTSU5HX01QVV9XUkFQUEVSUwkJMQ0KKyNkZWZpbmUgcG9ydFBSSVZJTEVHRV9CSVQJCQkoIDB4ODAwMDAwMDBVTCApDQorDQorI2RlZmluZSBwb3J0TVBVX1JFR0lPTl9SRUFEX1dSSVRFCQkJCSggMHgwM1VMIDw8IDI0VUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fUFJJVklMRUdFRF9SRUFEX09OTFkJCSggMHgwNVVMIDw8IDI0VUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fUkVBRF9PTkxZCQkJCSggMHgwNlVMIDw8IDI0VUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fUFJJVklMRUdFRF9SRUFEX1dSSVRFCSggMHgwMVVMIDw8IDI0VUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fQ0FDSEVBQkxFX0JVRkZFUkFCTEUJCSggMHgwN1VMIDw8IDE2VUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fRVhFQ1VURV9ORVZFUgkJCSggMHgwMVVMIDw8IDI4VUwgKQ0KKw0KKyNkZWZpbmUgcG9ydFVOUFJJVklMRUdFRF9GTEFTSF9SRUdJT04JCQkoIDBVTCApDQorI2RlZmluZSBwb3J0UFJJVklMRUdFRF9GTEFTSF9SRUdJT04JCQkJKCAxVUwgKQ0KKyNkZWZpbmUgcG9ydFBSSVZJTEVHRURfUkFNX1JFR0lPTgkJCQkoIDJVTCApDQorI2RlZmluZSBwb3J0R0VORVJBTF9QRVJJUEhFUkFMU19SRUdJT04JCQkoIDNVTCApDQorI2RlZmluZSBwb3J0U1RBQ0tfUkVHSU9OCQkJCQkJKCA0VUwgKQ0KKyNkZWZpbmUgcG9ydEZJUlNUX0NPTkZJR1VSQUJMRV9SRUdJT04JCQkoIDVVTCApDQorI2RlZmluZSBwb3J0TEFTVF9DT05GSUdVUkFCTEVfUkVHSU9OCQkJKCA3VUwgKQ0KKyNkZWZpbmUgcG9ydE5VTV9DT05GSUdVUkFCTEVfUkVHSU9OUwkJCSggKCBwb3J0TEFTVF9DT05GSUdVUkFCTEVfUkVHSU9OIC0gcG9ydEZJUlNUX0NPTkZJR1VSQUJMRV9SRUdJT04gKSArIDEgKQ0KKyNkZWZpbmUgcG9ydFRPVEFMX05VTV9SRUdJT05TCQkJCQkoIHBvcnROVU1fQ09ORklHVVJBQkxFX1JFR0lPTlMgKyAxICkgLyogUGx1cyBvbmUgdG8gbWFrZSBzcGFjZSBmb3IgdGhlIHN0YWNrIHJlZ2lvbi4gKi8NCisNCisjZGVmaW5lIHBvcnRTV0lUQ0hfVE9fVVNFUl9NT0RFKCkgX19hc20gdm9sYXRpbGUgKCAiIG1ycyByMCwgY29udHJvbCBcbiBvcnIgcjAsIHIwLCAjMSBcbiBtc3IgY29udHJvbCwgcjAgIiA6OjogInIwIiwgIm1lbW9yeSIgKQ0KKw0KK3R5cGVkZWYgc3RydWN0IE1QVV9SRUdJT05fUkVHSVNURVJTDQorew0KKwl1aW50MzJfdCB1bFJlZ2lvbkJhc2VBZGRyZXNzOw0KKwl1aW50MzJfdCB1bFJlZ2lvbkF0dHJpYnV0ZTsNCit9IHhNUFVfUkVHSU9OX1JFR0lTVEVSUzsNCisNCisvKiBQbHVzIDEgdG8gY3JlYXRlIHNwYWNlIGZvciB0aGUgc3RhY2sgcmVnaW9uLiAqLw0KK3R5cGVkZWYgc3RydWN0IE1QVV9TRVRUSU5HUw0KK3sNCisJeE1QVV9SRUdJT05fUkVHSVNURVJTIHhSZWdpb25bIHBvcnRUT1RBTF9OVU1fUkVHSU9OUyBdOw0KK30geE1QVV9TRVRUSU5HUzsNCisNCisNCisvKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWNzLiAqLw0KKyNkZWZpbmUgcG9ydFNUQUNLX0dST1dUSAkJCSggLTEgKQ0KKyNkZWZpbmUgcG9ydFRJQ0tfUEVSSU9EX01TCQkJKCAoIFRpY2tUeXBlX3QgKSAxMDAwIC8gY29uZmlnVElDS19SQVRFX0haICkNCisjZGVmaW5lIHBvcnRCWVRFX0FMSUdOTUVOVAkJCTgNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBTVkMgbnVtYmVycyBmb3IgdmFyaW91cyBzZXJ2aWNlcy4gKi8NCisjZGVmaW5lIHBvcnRTVkNfU1RBUlRfU0NIRURVTEVSCQkJCTANCisjZGVmaW5lIHBvcnRTVkNfWUlFTEQJCQkJCQkxDQorI2RlZmluZSBwb3J0U1ZDX1JBSVNFX1BSSVZJTEVHRQkJCQkyDQorDQorLyogU2NoZWR1bGVyIHV0aWxpdGllcy4gKi8NCisjZGVmaW5lIHBvcnRZSUVMRCgpCQkJCV9fYXNtIHZvbGF0aWxlICggIglTVkMJJTAJXG4iIDo6ICJpIiAocG9ydFNWQ19ZSUVMRCkgOiAibWVtb3J5IiApDQorI2RlZmluZSBwb3J0WUlFTERfV0lUSElOX0FQSSgpCQkJCQkJCQlcDQorewkJCQkJCQkJCQkJCQkJCVwNCisJLyogU2V0IGEgUGVuZFNWIHRvIHJlcXVlc3QgYSBjb250ZXh0IHN3aXRjaC4gKi8JCQlcDQorCXBvcnROVklDX0lOVF9DVFJMX1JFRyA9IHBvcnROVklDX1BFTkRTVlNFVF9CSVQ7CQkJXA0KKwlfX0RTQigpOwkJCQkJCQkJCQkJCVwNCisJX19JU0IoKTsJCQkJCQkJCQkJCQlcDQorfQ0KKw0KKyNkZWZpbmUgcG9ydE5WSUNfSU5UX0NUUkxfUkVHCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDA0ICkgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfUEVORFNWU0VUX0JJVAkJKCAxVUwgPDwgMjhVTCApDQorI2RlZmluZSBwb3J0RU5EX1NXSVRDSElOR19JU1IoIHhTd2l0Y2hSZXF1aXJlZCApIGlmKCB4U3dpdGNoUmVxdWlyZWQgIT0gcGRGQUxTRSApIHBvcnRZSUVMRF9XSVRISU5fQVBJKCkNCisjZGVmaW5lIHBvcnRZSUVMRF9GUk9NX0lTUiggeCApIHBvcnRFTkRfU1dJVENISU5HX0lTUiggeCApDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogQXJjaGl0ZWN0dXJlIHNwZWNpZmljIG9wdGltaXNhdGlvbnMuICovDQorI2lmbmRlZiBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04NCisJI2RlZmluZSBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04gMQ0KKyNlbmRpZg0KKw0KKyNpZiggY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OID09IDEgKQ0KKw0KKwkvKiBDaGVjayB0aGUgY29uZmlndXJhdGlvbi4gKi8NCisJI2lmKCBjb25maWdNQVhfUFJJT1JJVElFUyA+IDMyICkNCisJCSNlcnJvciBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04gY2FuIG9ubHkgYmUgc2V0IHRvIDEgd2hlbiBjb25maWdNQVhfUFJJT1JJVElFUyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIuICBJdCBpcyB2ZXJ5IHJhcmUgdGhhdCBhIHN5c3RlbSByZXF1aXJlcyBtb3JlIHRoYW4gMTAgdG8gMTUgZGlmZmVyZW5jZSBwcmlvcml0aWVzIGFzIHRhc2tzIHRoYXQgc2hhcmUgYSBwcmlvcml0eSB3aWxsIHRpbWUgc2xpY2UuDQorCSNlbmRpZg0KKw0KKwkvKiBTdG9yZS9jbGVhciB0aGUgcmVhZHkgcHJpb3JpdGllcyBpbiBhIGJpdCBtYXAuICovDQorCSNkZWZpbmUgcG9ydFJFQ09SRF9SRUFEWV9QUklPUklUWSggdXhQcmlvcml0eSwgdXhSZWFkeVByaW9yaXRpZXMgKSAoIHV4UmVhZHlQcmlvcml0aWVzICkgfD0gKCAxVUwgPDwgKCB1eFByaW9yaXR5ICkgKQ0KKwkjZGVmaW5lIHBvcnRSRVNFVF9SRUFEWV9QUklPUklUWSggdXhQcmlvcml0eSwgdXhSZWFkeVByaW9yaXRpZXMgKSAoIHV4UmVhZHlQcmlvcml0aWVzICkgJj0gfiggMVVMIDw8ICggdXhQcmlvcml0eSApICkNCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCSNkZWZpbmUgcG9ydEdFVF9ISUdIRVNUX1BSSU9SSVRZKCB1eFRvcFByaW9yaXR5LCB1eFJlYWR5UHJpb3JpdGllcyApIHV4VG9wUHJpb3JpdHkgPSAoIDMxVUwgLSAoICggdWludDMyX3QgKSBfX0NMWiggKCB1eFJlYWR5UHJpb3JpdGllcyApICkgKSApDQorDQorI2VuZGlmIC8qIGNvbmZpZ1VTRV9QT1JUX09QVElNSVNFRF9UQVNLX1NFTEVDVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIENyaXRpY2FsIHNlY3Rpb24gbWFuYWdlbWVudC4gKi8NCitleHRlcm4gdm9pZCB2UG9ydEVudGVyQ3JpdGljYWwoIHZvaWQgKTsNCitleHRlcm4gdm9pZCB2UG9ydEV4aXRDcml0aWNhbCggdm9pZCApOw0KKw0KKyNkZWZpbmUgcG9ydERJU0FCTEVfSU5URVJSVVBUUygpCQkJCQkJCVwNCit7CQkJCQkJCQkJCQkJCQkJXA0KKwlfX3NldF9CQVNFUFJJKCBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKTsJXA0KKwlfX0RTQigpOwkJCQkJCQkJCQkJCVwNCisJX19JU0IoKTsJCQkJCQkJCQkJCQlcDQorfQ0KKw0KKyNkZWZpbmUgcG9ydEVOQUJMRV9JTlRFUlJVUFRTKCkJCQkJCV9fc2V0X0JBU0VQUkkoIDAgKQ0KKyNkZWZpbmUgcG9ydEVOVEVSX0NSSVRJQ0FMKCkJCQkJCXZQb3J0RW50ZXJDcml0aWNhbCgpDQorI2RlZmluZSBwb3J0RVhJVF9DUklUSUNBTCgpCQkJCQkJdlBvcnRFeGl0Q3JpdGljYWwoKQ0KKyNkZWZpbmUgcG9ydFNFVF9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUigpCQlfX2dldF9CQVNFUFJJKCk7IHBvcnRESVNBQkxFX0lOVEVSUlVQVFMoKQ0KKyNkZWZpbmUgcG9ydENMRUFSX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKHgpCV9fc2V0X0JBU0VQUkkoIHggKQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRhc2sgZnVuY3Rpb24gbWFjcm9zIGFzIGRlc2NyaWJlZCBvbiB0aGUgRnJlZVJUT1Mub3JnIFdFQiBzaXRlLiAgVGhlc2UgYXJlDQorbm90IG5lY2Vzc2FyeSBmb3IgdG8gdXNlIHRoaXMgcG9ydC4gIFRoZXkgYXJlIGRlZmluZWQgc28gdGhlIGNvbW1vbiBkZW1vIGZpbGVzDQorKHdoaWNoIGJ1aWxkIHdpdGggYWxsIHRoZSBwb3J0cykgd2lsbCBidWlsZC4gKi8NCisjZGVmaW5lIHBvcnRUQVNLX0ZVTkNUSU9OX1BST1RPKCB2RnVuY3Rpb24sIHB2UGFyYW1ldGVycyApIHZvaWQgdkZ1bmN0aW9uKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKyNkZWZpbmUgcG9ydFRBU0tfRlVOQ1RJT04oIHZGdW5jdGlvbiwgcHZQYXJhbWV0ZXJzICkgdm9pZCB2RnVuY3Rpb24oIHZvaWQgKnB2UGFyYW1ldGVycyApDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmZGVmIGNvbmZpZ0FTU0VSVA0KKwl2b2lkIHZQb3J0VmFsaWRhdGVJbnRlcnJ1cHRQcmlvcml0eSggdm9pZCApOw0KKwkjZGVmaW5lIHBvcnRBU1NFUlRfSUZfSU5URVJSVVBUX1BSSU9SSVRZX0lOVkFMSUQoKSAJdlBvcnRWYWxpZGF0ZUludGVycnVwdFByaW9yaXR5KCkNCisjZW5kaWYNCisNCisvKiBwb3J0Tk9QKCkgaXMgbm90IHJlcXVpcmVkIGJ5IHRoaXMgcG9ydC4gKi8NCisjZGVmaW5lIHBvcnROT1AoKQ0KKw0KKw0KKy8qIFNldCB0aGUgcHJpdmlsZWdlIGxldmVsIHRvIHVzZXIgbW9kZSBpZiB4UnVubmluZ1ByaXZpbGVnZWQgaXMgZmFsc2UuICovDQordm9pZCB2UG9ydFJlc2V0UHJpdmlsZWdlKCBCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFN1cHByZXNzIHdhcm5pbmdzIHRoYXQgYXJlIGdlbmVyYXRlZCBieSB0aGUgSUFSIHRvb2xzLCBidXQgY2Fubm90IGJlIGZpeGVkIGluDQordGhlIHNvdXJjZSBjb2RlIGJlY2F1c2UgdG8gZG8gc28gd291bGQgY2F1c2Ugb3RoZXIgY29tcGlsZXJzIHRvIGdlbmVyYXRlDQord2FybmluZ3MuICovDQorI3ByYWdtYSBkaWFnX3N1cHByZXNzPVBlMTkxDQorI3ByYWdtYSBkaWFnX3N1cHByZXNzPVBhMDgyDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZg0KKw0KKyNlbmRpZiAvKiBQT1JUTUFDUk9fSCAqLw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnQuYwppbmRleCBmOGI5ZmM3Li45NTk2OWNlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydGFzbS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydGFzbS5zCmluZGV4IGU5NTJkZjguLjNjYTUzZWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRhc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0YXNtLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxGcmVlUlRPU0NvbmZpZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmgKaW5kZXggYmY4ZDE5OC4uYjIxMmQxYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnQuYwppbmRleCAxNzhmN2ZkLi43YmNmMjNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0QVNNLnMKaW5kZXggNzA0ZDk5Yi4uNmU2YWEzNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0QVNNLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0QVNNLnMKQEAgLTEsNTYgKzEsMzAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0gICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0gICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSAgICBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0gICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0qLw0KKzsvKg0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmgKaW5kZXggYmQxNjNhYy4uODgwOTFhZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnQuYwppbmRleCAwNmU0YjdjLi45YmE1NTg4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8c3RkbGliLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0bWFjcm8uaAppbmRleCBjYmY2NmNjLi41NWE1NzI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLnM5MCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnRtYWNyby5zOTAKaW5kZXggOWMzYjhjNS4uMTllYzY2MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLnM5MAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0bWFjcm8uczkwCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogI2luY2x1ZGUgPGlvbTMyMy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVZSMzJfVUMzL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVZSMzJfVUMzL3BvcnQuYwppbmRleCAwZTc1NjlhLi43NWMwMjMwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydC5jCkBAIC0xMyw3MyArMTMsMzIgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0bWFjcm8uaAppbmRleCA0NWVmODgxLi5lNGFhNDk5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0bWFjcm8uaApAQCAtMTMsNzMgKzEzLDMyIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogDQogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L0lTUl9TdXBwb3J0LmgKaW5kZXggYmI1OTUzYS4uZDRhYzViZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9JU1JfU3VwcG9ydC5oCkBAIC0xLDU2ICsxLDMxIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQorDQogCUVYVEVSTiBweEN1cnJlbnRUQ0INCiAJRVhURVJOIHVsQ3JpdGljYWxOZXN0aW5nDQogDQpAQCAtNjAsMzggKzM1LDM4IEBACiANCiBwb3J0U0FWRV9DT05URVhUIE1BQ1JPDQogDQotCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4gCQkJCQkNCisJOyBQdXNoIFIwIGFzIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHJlZ2lzdGVyLg0KIAlTVE1EQglTUCEsIHtSMH0NCiANCi0JOyBTZXQgUjAgdG8gcG9pbnQgdG8gdGhlIHRhc2sgc3RhY2sgcG9pbnRlci4gCQkJCQkNCisJOyBTZXQgUjAgdG8gcG9pbnQgdG8gdGhlIHRhc2sgc3RhY2sgcG9pbnRlci4NCiAJU1RNREIJU1AsIHtTUH1eDQogCU5PUA0KIAlTVUIJCVNQLCBTUCwgIzQNCiAJTERNSUEJU1AhLCB7UjB9DQogDQotCTsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2suIAkJCQkJCQ0KKwk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLg0KIAlTVE1EQglSMCEsIHtMUn0NCiANCi0JOyBOb3cgd2UgaGF2ZSBzYXZlZCBMUiB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgb2YgUjAuIAkJCQkNCisJOyBOb3cgd2UgaGF2ZSBzYXZlZCBMUiB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgb2YgUjAuDQogCU1PVgkJTFIsIFIwDQogDQotCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLiAJCQkNCisJOyBQb3AgUjAgc28gd2UgY2FuIHNhdmUgaXQgb250byB0aGUgc3lzdGVtIG1vZGUgc3RhY2suDQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggYWxsIHRoZSBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgb250byB0aGUgdGFzayBzdGFjay4gCQkNCisJOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCVNUTURCCUxSLCB7UjAtTFJ9Xg0KIAlOT1ANCiAJU1VCCQlMUiwgTFIsICM2MA0KIA0KLQk7IFB1c2ggdGhlIFNQU1Igb250byB0aGUgdGFzayBzdGFjay4gCQkJCQkJCQ0KKwk7IFB1c2ggdGhlIFNQU1Igb250byB0aGUgdGFzayBzdGFjay4NCiAJTVJTCQlSMCwgU1BTUg0KIAlTVE1EQglMUiEsIHtSMH0NCiANCi0JTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nIA0KKwlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcNCiAJTERSCQlSMCwgW1IwXQ0KIAlTVE1EQglMUiEsIHtSMH0NCiANCi0JOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suIAkJCQkJCQ0KKwk7IFN0b3JlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGZvciB0aGUgdGFzay4NCiAJTERSCQlSMSwgPXB4Q3VycmVudFRDQg0KIAlMRFIJCVIwLCBbUjFdDQogCVNUUgkJTFIsIFtSMF0NCkBAIC0xMDEsMzAgKzc2LDMwIEBACiANCiBwb3J0UkVTVE9SRV9DT05URVhUIE1BQ1JPDQogDQotCTsgU2V0IHRoZSBMUiB0byB0aGUgdGFzayBzdGFjay4gCQkJCQkJCQkJDQorCTsgU2V0IHRoZSBMUiB0byB0aGUgdGFzayBzdGFjay4NCiAJTERSCQlSMSwgPXB4Q3VycmVudFRDQg0KIAlMRFIJCVIwLCBbUjFdDQogCUxEUgkJTFIsIFtSMF0NCiANCi0JOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suIAkNCi0JOyBMb2FkIGl0IGludG8gdGhlIHVsQ3JpdGljYWxOZXN0aW5nIHZhcmlhYmxlLiAJCQkJCQ0KKwk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uIHRoZSBzdGFjay4NCisJOyBMb2FkIGl0IGludG8gdGhlIHVsQ3JpdGljYWxOZXN0aW5nIHZhcmlhYmxlLg0KIAlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcNCiAJTERNRkQJTFIhLCB7UjF9DQogCVNUUgkJUjEsIFtSMF0NCiANCi0JOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IEdldCB0aGUgU1BTUiBmcm9tIHRoZSBzdGFjay4NCiAJTERNRkQJTFIhLCB7UjB9DQogCU1TUgkJU1BTUl9jeHNmLCBSMA0KIA0KLQk7IFJlc3RvcmUgYWxsIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBmb3IgdGhlIHRhc2suIAkJCQkNCisJOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLg0KIAlMRE1GRAlMUiwge1IwLVIxNH1eDQogCU5PUA0KIA0KLQk7IFJlc3RvcmUgdGhlIHJldHVybiBhZGRyZXNzLiAJCQkJCQkJCQkNCisJOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4NCiAJTERSCQlMUiwgW0xSLCAjKzYwXQ0KIA0KLQk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUgCQ0KLQk7IGNvcnJlY3QgYWRkcmVzcy4gCQkJCQkJCQkJCQkJDQorCTsgQW5kIHJldHVybiAtIGNvcnJlY3RpbmcgdGhlIG9mZnNldCBpbiB0aGUgTFIgdG8gb2J0YWluIHRoZQ0KKwk7IGNvcnJlY3QgYWRkcmVzcy4NCiAJU1VCUwlQQywgTFIsICM0DQogDQogCUVORE0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0LmMKaW5kZXggYzhjNDY3YS4uNmFmMTU1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBdG1lbCBBUk03IHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydGFzbS5zNzkgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0YXNtLnM3OQppbmRleCA3MzhlZDU1Li4wYjY0ZjljIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0YXNtLnM3OQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0YXNtLnM3OQpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIAkJUlNFRyBJQ09ERTpDT0RFDQogCQlDT0RFMzINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnRtYWNyby5oCmluZGV4IDMxYWM0MTIuLjBkM2UzNGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNOVhFL3BvcnQuYwppbmRleCA0OTUyMTUwLi42MDlhMWU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNOVhFL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNOVhFL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBdG1lbCBBUk03IHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU05WEUvcG9ydG1hY3JvLmgKaW5kZXggN2E5MjVjMC4uOTI2YjRjMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNOVhFL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvSVNSX1N1cHBvcnQuaAppbmRleCBiYjU5NTNhLi5kNGFjNWJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvSVNSX1N1cHBvcnQuaApAQCAtMSw1NiArMSwzMSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KIAlFWFRFUk4gcHhDdXJyZW50VENCDQogCUVYVEVSTiB1bENyaXRpY2FsTmVzdGluZw0KIA0KQEAgLTYwLDM4ICszNSwzOCBAQAogDQogcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuIAkJCQkJDQorCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4NCiAJU1RNREIJU1AhLCB7UjB9DQogDQotCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuIAkJCQkJDQorCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuDQogCVNUTURCCVNQLCB7U1B9Xg0KIAlOT1ANCiAJU1VCCQlTUCwgU1AsICM0DQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLiAJCQkJCQkNCisJOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4NCiAJU1RNREIJUjAhLCB7TFJ9DQogDQotCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLiAJCQkJDQorCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLg0KIAlNT1YJCUxSLCBSMA0KIA0KLQk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4gCQkJDQorCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLg0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJDQorCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlTVE1EQglMUiwge1IwLUxSfV4NCiAJTk9QDQogCVNVQgkJTFIsIExSLCAjNjANCiANCi0JOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkNCisJOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCU1SUwkJUjAsIFNQU1INCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZyANCisJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxEUgkJUjAsIFtSMF0NCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLiAJCQkJCQkNCisJOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlTVFIJCUxSLCBbUjBdDQpAQCAtMTAxLDMwICs3NiwzMCBAQAogDQogcG9ydFJFU1RPUkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlMRFIJCUxSLCBbUjBdDQogDQotCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLiAJDQotCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4gCQkJCQkNCisJOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suDQorCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4NCiAJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxETUZECUxSISwge1IxfQ0KIAlTVFIJCVIxLCBbUjBdDQogDQotCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suDQogCUxETUZECUxSISwge1IwfQ0KIAlNU1IJCVNQU1JfY3hzZiwgUjANCiANCi0JOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLiAJCQkJDQorCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4NCiAJTERNRkQJTFIsIHtSMC1SMTR9Xg0KIAlOT1ANCiANCi0JOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4gCQkJCQkJCQkJDQorCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuDQogCUxEUgkJTFIsIFtMUiwgIys2MF0NCiANCi0JOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlIAkNCi0JOyBjb3JyZWN0IGFkZHJlc3MuIAkJCQkJCQkJCQkJCQ0KKwk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUNCisJOyBjb3JyZWN0IGFkZHJlc3MuDQogCVNVQlMJUEMsIExSLCAjNA0KIA0KIAlFTkRNDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0LmMKaW5kZXggOTk2MzIzNi4uOTc5MDg3ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFBoaWxpcHMgQVJNNyBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0YXNtLnM3OSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0YXNtLnM3OQppbmRleCA0NjdhN2E3Li5kNmZmMjk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydGFzbS5zNzkKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnRhc20uczc5CkBAIC0xLDYyICsxLDM3IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQorDQogCQlSU0VHIElDT0RFOkNPREUNCiAJCUNPREUzMg0KIA0KIAlFWFRFUk4gdlRhc2tTd2l0Y2hDb250ZXh0DQogCUVYVEVSTiB2UG9ydFByZWVtcHRpdmVUaWNrDQotCQ0KKw0KIAlQVUJMSUMgdlBvcnRQcmVlbXB0aXZlVGlja0VudHJ5DQogCVBVQkxJQyB2UG9ydFlpZWxkUHJvY2Vzc29yDQogCVBVQkxJQyB2UG9ydFN0YXJ0Rmlyc3RUYXNrDQpAQCAtNzgsNyArNTMsNyBAQAogCUFERAkJTFIsIExSLCAjNAkJCTsgQWRkIDQgdG8gdGhlIExSIHRvIG1ha2UgdGhlIExSIGFwcGVhciBleGFjdGx5DQogCQkJCQkJCQk7IGFzIGlmIHRoZSBjb250ZXh0IHdhcyBzYXZlZCBkdXJpbmcgYW5kIElSUQ0KIAkJCQkJCQkJOyBoYW5kbGVyLg0KLQkJCQkJCQkJDQorDQogCXBvcnRTQVZFX0NPTlRFWFQJCQk7IFNhdmUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGFzay4uLg0KIAlMRFIgUjAsID12VGFza1N3aXRjaENvbnRleHQJOyBiZWZvcmUgc2VsZWN0aW5nIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZS4NCiAJbW92ICAgICBsciwgcGMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydG1hY3JvLmgKaW5kZXggOTY5MThlMS4uZDQxMDZlNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnQuYwppbmRleCBhZWYxNjYxLi4yMjE0MDc0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydGFzbS5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydGFzbS5oCmluZGV4IDMzYTVmZTAuLmZlNzAwNzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRhc20uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0YXNtLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVEFTTV9IDQogI2RlZmluZSBQT1JUQVNNX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0ZXh0LnM0MyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRleHQuczQzCmluZGV4IGU5YjQ3OTUuLmZmMjA1ZDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRleHQuczQzCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRleHQuczQzCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAicG9ydGFzbS5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydG1hY3JvLmgKaW5kZXggM2MyY2VlNy4uY2M2MzIyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL2RhdGFfbW9kZWwuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9kYXRhX21vZGVsLmgKaW5kZXggMzU5ZTZkYi4uYzQ4NjBlOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL2RhdGFfbW9kZWwuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvZGF0YV9tb2RlbC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIERBVEFfTU9ERUxfSA0KICNkZWZpbmUgREFUQV9NT0RFTF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0LmMKaW5kZXggMjMxMTA2YS4uM2U3YzcyZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnRleHQuczQzIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnRleHQuczQzCmluZGV4IDVhYWIzYzAuLjY5OTliMDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0ZXh0LnM0MworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydGV4dC5zNDMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KICNpbmNsdWRlICJtc3A0MzAuaCINCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAiZGF0YV9tb2RlbC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0bWFjcm8uaAppbmRleCAyYjRmMmQzLi4xNzNmNmE0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9JU1JfU3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L0lTUl9TdXBwb3J0LmgKaW5kZXggZTE3OGRhYS4uN2NlNmRlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L0lTUl9TdXBwb3J0LmgKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQpAQCAtNjIsNyArMzYsNyBAQAogDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDsgICBwb3J0U0FWRV9DT05URVhUIE1BQ1JPDQotOyAgIFNhdmVzIHRoZSBjb250ZXh0IG9mIHRoZSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLCBDUyBhbmQgRVMgKG9ubHkgaW4gZmFyIA0KKzsgICBTYXZlcyB0aGUgY29udGV4dCBvZiB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycywgQ1MgYW5kIEVTIChvbmx5IGluIGZhcg0KIDsJbWVtb3J5IG1vZGUpIHJlZ2lzdGVycyB0aGUgdXNDcml0aWNhbE5lc3RpbmcgVmFsdWUgYW5kIHRoZSBTdGFjayBQb2ludGVyDQogOyAgIG9mIHRoZSBhY3RpdmUgVGFzayBvbnRvIHRoZSB0YXNrIHN0YWNrDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTc3LDExICs1MSwxMSBAQAogCVBVU0ggICAgICBERSAgICAgICAgICAgICAgICAgICAgOyBTYXZlIHRoZSByZW1haW5pbmcgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4NCiAJUFVTSCAgICAgIEJDDQogCU1PVlcgICAgICBBWCwgdXNDcml0aWNhbE5lc3RpbmcgOyBTYXZlIHRoZSB1c0NyaXRpY2FsTmVzdGluZyB2YWx1ZS4NCi0JUFVTSCAgICAgIEFYCQ0KKwlQVVNIICAgICAgQVgNCiAJTU9WVyAgICAgIEFYLCBweEN1cnJlbnRUQ0IgCSAgICA7IFNhdmUgdGhlIFN0YWNrIHBvaW50ZXIuDQotCU1PVlcgICAgICBITCwgQVgJCQkJCQ0KLQlNT1ZXICAgICAgQVgsIFNQCQkJCQkNCi0JTU9WVyAgICAgIFtITF0sIEFYCQkJCQkNCisJTU9WVyAgICAgIEhMLCBBWA0KKwlNT1ZXICAgICAgQVgsIFNQDQorCU1PVlcgICAgICBbSExdLCBBWA0KIAlFTkRNDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydC5jCmluZGV4IGI5NjdkYzcuLjI0ZTViMjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0YXNtLnM4NyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0YXNtLnM4NwppbmRleCBkMzBlZjNhLi5mNzRkMzg5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydGFzbS5zODcKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnRhc20uczg3CkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogI2luY2x1ZGUgIklTUl9TdXBwb3J0LmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnRtYWNyby5oCmluZGV4IDU2MzJiZDQuLmE1NjZkYjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnQuYwppbmRleCA0NTkzOWFlLi44ZjlmNGE3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0X2FzbS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0X2FzbS5zCmluZGV4IDk4MDNmOTcuLjJiNjZhODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydF9hc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnRfYXNtLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJQcmlvcml0eURlZmluaXRpb25zLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydG1hY3JvLmgKaW5kZXggM2Q4MjMwNy4uMGQ0NzAyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnQuYwppbmRleCBiNjY1MjNmLi41MjM5YzFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0X2FzbS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0X2FzbS5zCmluZGV4IDkxNzBjYWYuLjhkZmU0NDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydF9hc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnRfYXNtLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJQcmlvcml0eURlZmluaXRpb25zLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydG1hY3JvLmgKaW5kZXggOTc1MmFjMi4uYmI0MGZjZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0LmMKaW5kZXggMmVhNzlmNy4uYWJmZTA3YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFNIMkEgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydF9hc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0X2FzbS5zCmluZGV4IDAzYWZjMmYuLmZhYWQ1Y2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0X2FzbS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0X2FzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiUHJpb3JpdHlEZWZpbml0aW9ucy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0bWFjcm8uaAppbmRleCA1YzdkNzJhLi40NmUxYzNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L0lTUl9TdXBwb3J0LmgKaW5kZXggYmI1OTUzYS4uZDRhYzViZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9JU1JfU3VwcG9ydC5oCkBAIC0xLDU2ICsxLDMxIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQorDQogCUVYVEVSTiBweEN1cnJlbnRUQ0INCiAJRVhURVJOIHVsQ3JpdGljYWxOZXN0aW5nDQogDQpAQCAtNjAsMzggKzM1LDM4IEBACiANCiBwb3J0U0FWRV9DT05URVhUIE1BQ1JPDQogDQotCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4gCQkJCQkNCisJOyBQdXNoIFIwIGFzIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHJlZ2lzdGVyLg0KIAlTVE1EQglTUCEsIHtSMH0NCiANCi0JOyBTZXQgUjAgdG8gcG9pbnQgdG8gdGhlIHRhc2sgc3RhY2sgcG9pbnRlci4gCQkJCQkNCisJOyBTZXQgUjAgdG8gcG9pbnQgdG8gdGhlIHRhc2sgc3RhY2sgcG9pbnRlci4NCiAJU1RNREIJU1AsIHtTUH1eDQogCU5PUA0KIAlTVUIJCVNQLCBTUCwgIzQNCiAJTERNSUEJU1AhLCB7UjB9DQogDQotCTsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2suIAkJCQkJCQ0KKwk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLg0KIAlTVE1EQglSMCEsIHtMUn0NCiANCi0JOyBOb3cgd2UgaGF2ZSBzYXZlZCBMUiB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgb2YgUjAuIAkJCQkNCisJOyBOb3cgd2UgaGF2ZSBzYXZlZCBMUiB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgb2YgUjAuDQogCU1PVgkJTFIsIFIwDQogDQotCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLiAJCQkNCisJOyBQb3AgUjAgc28gd2UgY2FuIHNhdmUgaXQgb250byB0aGUgc3lzdGVtIG1vZGUgc3RhY2suDQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggYWxsIHRoZSBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgb250byB0aGUgdGFzayBzdGFjay4gCQkNCisJOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCVNUTURCCUxSLCB7UjAtTFJ9Xg0KIAlOT1ANCiAJU1VCCQlMUiwgTFIsICM2MA0KIA0KLQk7IFB1c2ggdGhlIFNQU1Igb250byB0aGUgdGFzayBzdGFjay4gCQkJCQkJCQ0KKwk7IFB1c2ggdGhlIFNQU1Igb250byB0aGUgdGFzayBzdGFjay4NCiAJTVJTCQlSMCwgU1BTUg0KIAlTVE1EQglMUiEsIHtSMH0NCiANCi0JTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nIA0KKwlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcNCiAJTERSCQlSMCwgW1IwXQ0KIAlTVE1EQglMUiEsIHtSMH0NCiANCi0JOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suIAkJCQkJCQ0KKwk7IFN0b3JlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGZvciB0aGUgdGFzay4NCiAJTERSCQlSMSwgPXB4Q3VycmVudFRDQg0KIAlMRFIJCVIwLCBbUjFdDQogCVNUUgkJTFIsIFtSMF0NCkBAIC0xMDEsMzAgKzc2LDMwIEBACiANCiBwb3J0UkVTVE9SRV9DT05URVhUIE1BQ1JPDQogDQotCTsgU2V0IHRoZSBMUiB0byB0aGUgdGFzayBzdGFjay4gCQkJCQkJCQkJDQorCTsgU2V0IHRoZSBMUiB0byB0aGUgdGFzayBzdGFjay4NCiAJTERSCQlSMSwgPXB4Q3VycmVudFRDQg0KIAlMRFIJCVIwLCBbUjFdDQogCUxEUgkJTFIsIFtSMF0NCiANCi0JOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suIAkNCi0JOyBMb2FkIGl0IGludG8gdGhlIHVsQ3JpdGljYWxOZXN0aW5nIHZhcmlhYmxlLiAJCQkJCQ0KKwk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uIHRoZSBzdGFjay4NCisJOyBMb2FkIGl0IGludG8gdGhlIHVsQ3JpdGljYWxOZXN0aW5nIHZhcmlhYmxlLg0KIAlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcNCiAJTERNRkQJTFIhLCB7UjF9DQogCVNUUgkJUjEsIFtSMF0NCiANCi0JOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IEdldCB0aGUgU1BTUiBmcm9tIHRoZSBzdGFjay4NCiAJTERNRkQJTFIhLCB7UjB9DQogCU1TUgkJU1BTUl9jeHNmLCBSMA0KIA0KLQk7IFJlc3RvcmUgYWxsIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBmb3IgdGhlIHRhc2suIAkJCQkNCisJOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLg0KIAlMRE1GRAlMUiwge1IwLVIxNH1eDQogCU5PUA0KIA0KLQk7IFJlc3RvcmUgdGhlIHJldHVybiBhZGRyZXNzLiAJCQkJCQkJCQkNCisJOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4NCiAJTERSCQlMUiwgW0xSLCAjKzYwXQ0KIA0KLQk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUgCQ0KLQk7IGNvcnJlY3QgYWRkcmVzcy4gCQkJCQkJCQkJCQkJDQorCTsgQW5kIHJldHVybiAtIGNvcnJlY3RpbmcgdGhlIG9mZnNldCBpbiB0aGUgTFIgdG8gb2J0YWluIHRoZQ0KKwk7IGNvcnJlY3QgYWRkcmVzcy4NCiAJU1VCUwlQQywgTFIsICM0DQogDQogCUVORE0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0LmMKaW5kZXggYmYzZTQzMy4uYWI1MjA2YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTVCBTVFI3MXggQVJNNw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRhc20uczc5IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydGFzbS5zNzkKaW5kZXggNzBhODBkZC4uMGUyYWZkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydGFzbS5zNzkKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydGFzbS5zNzkKQEAgLTEsNTYgKzEsMzEgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCisNCiAJCVJTRUcgSUNPREU6Q09ERQ0KIAkJQ09ERTMyDQogDQpAQCAtNzcsNyArNTIsNyBAQAogCUFERAkJTFIsIExSLCAjNAkJCTsgQWRkIDQgdG8gdGhlIExSIHRvIG1ha2UgdGhlIExSIGFwcGVhciBleGFjdGx5DQogCQkJCQkJCQk7IGFzIGlmIHRoZSBjb250ZXh0IHdhcyBzYXZlZCBkdXJpbmcgYW5kIElSUQ0KIAkJCQkJCQkJOyBoYW5kbGVyLg0KLQkJCQkJCQkJDQorDQogCXBvcnRTQVZFX0NPTlRFWFQJCQk7IFNhdmUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGFzay4uLg0KIAlMRFIgUjAsID12VGFza1N3aXRjaENvbnRleHQJOyBiZWZvcmUgc2VsZWN0aW5nIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZS4NCiAJbW92ICAgICBsciwgcGMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRtYWNyby5oCmluZGV4IDNkMzNkNGEuLjQ0ODcwYTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L0lTUl9TdXBwb3J0LmgKaW5kZXggMmI4Nzc0YS4uZDRhYzViZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9JU1JfU3VwcG9ydC5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlFWFRFUk4gcHhDdXJyZW50VENCDQogCUVYVEVSTiB1bENyaXRpY2FsTmVzdGluZw0KQEAgLTYxLDM4ICszNSwzOCBAQAogDQogcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuIAkJCQkJDQorCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4NCiAJU1RNREIJU1AhLCB7UjB9DQogDQotCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuIAkJCQkJDQorCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuDQogCVNUTURCCVNQLCB7U1B9Xg0KIAlOT1ANCiAJU1VCCQlTUCwgU1AsICM0DQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLiAJCQkJCQkNCisJOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4NCiAJU1RNREIJUjAhLCB7TFJ9DQogDQotCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLiAJCQkJDQorCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLg0KIAlNT1YJCUxSLCBSMA0KIA0KLQk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4gCQkJDQorCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLg0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJDQorCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlTVE1EQglMUiwge1IwLUxSfV4NCiAJTk9QDQogCVNVQgkJTFIsIExSLCAjNjANCiANCi0JOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkNCisJOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCU1SUwkJUjAsIFNQU1INCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZyANCisJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxEUgkJUjAsIFtSMF0NCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLiAJCQkJCQkNCisJOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlTVFIJCUxSLCBbUjBdDQpAQCAtMTAyLDMwICs3NiwzMCBAQAogDQogcG9ydFJFU1RPUkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlMRFIJCUxSLCBbUjBdDQogDQotCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLiAJDQotCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4gCQkJCQkNCisJOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suDQorCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4NCiAJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxETUZECUxSISwge1IxfQ0KIAlTVFIJCVIxLCBbUjBdDQogDQotCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suDQogCUxETUZECUxSISwge1IwfQ0KIAlNU1IJCVNQU1JfY3hzZiwgUjANCiANCi0JOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLiAJCQkJDQorCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4NCiAJTERNRkQJTFIsIHtSMC1SMTR9Xg0KIAlOT1ANCiANCi0JOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4gCQkJCQkJCQkJDQorCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuDQogCUxEUgkJTFIsIFtMUiwgIys2MF0NCiANCi0JOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlIAkNCi0JOyBjb3JyZWN0IGFkZHJlc3MuIAkJCQkJCQkJCQkJCQ0KKwk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUNCisJOyBjb3JyZWN0IGFkZHJlc3MuDQogCVNVQlMJUEMsIExSLCAjNA0KIA0KIAlFTkRNDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvcG9ydC5jCmluZGV4IGNkZjljNGYuLmY0NGQ1NjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU1QgU1RSNzV4IEFSTTcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0YXNtLnM3OSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRhc20uczc5CmluZGV4IDFiYjEyODMuLmUzYjE5YmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRhc20uczc5CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRhc20uczc5CkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlSU0VHIElDT0RFOkNPREUNCiAJQ09ERTMyDQpAQCAtNzcsNyArNTEsNyBAQAogCUFERAkJTFIsIExSLCAjNAkJCTsgQWRkIDQgdG8gdGhlIExSIHRvIG1ha2UgdGhlIExSIGFwcGVhciBleGFjdGx5DQogCQkJCQkJCQk7IGFzIGlmIHRoZSBjb250ZXh0IHdhcyBzYXZlZCBkdXJpbmcgYW5kIElSUQ0KIAkJCQkJCQkJOyBoYW5kbGVyLg0KLQkJCQkJCQkJDQorDQogCXBvcnRTQVZFX0NPTlRFWFQJCQk7IFNhdmUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGFzay4uLg0KIAlMRFIgUjAsID12VGFza1N3aXRjaENvbnRleHQJOyBiZWZvcmUgc2VsZWN0aW5nIHRoZSBuZXh0IHRhc2sgdG8gZXhlY3V0ZS4NCiAJbW92ICAgICBsciwgcGMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRtYWNyby5oCmluZGV4IDVmOGI2OWMuLjc0MmFlY2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L0lTUl9TdXBwb3J0LmgKaW5kZXggYWY1ZjQ3Yi4uYmE2OGNjOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9JU1JfU3VwcG9ydC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJRVhURVJOIHB4Q3VycmVudFRDQg0KIAlFWFRFUk4gdWxDcml0aWNhbE5lc3RpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0LmMKaW5kZXggN2U1OWE3Ni4uZWRmOGYwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTVCBTVFI5MXggQVJNOQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRhc20uczc5IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydGFzbS5zNzkKaW5kZXggYmUxNDAyMC4uMWEyZjg3YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydGFzbS5zNzkKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydGFzbS5zNzkKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkJUlNFRyBJQ09ERTpDT0RFDQogCQlDT0RFMzINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRtYWNyby5oCmluZGV4IDI4ZGQxY2IuLjg5NmQ4ODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL0lTUl9TdXBwb3J0LmgKaW5kZXggMmQwNGUxNi4uYjQ5YzEwNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9JU1JfU3VwcG9ydC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJRVhURVJOIHB4Q3VycmVudFRDQg0KIAlFWFRFUk4gdXNDcml0aWNhbE5lc3RpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0LmMKaW5kZXggMzcyYTA3Zi4uMTdjODdlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc20uczg1IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbS5zODUKaW5kZXggNDY5YzcyYi4uNjI0MWQzZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbS5zODUKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbS5zODUKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogOyBOb3RlOiBTZWxlY3QgdGhlIGNvcnJlY3QgaW5jbHVkZSBmaWxlcyBmb3IgdGhlIGRldmljZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4NCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMjA5LDcgKzE4Myw3IEBACiA7ICAgQ2FsbDogICBDQUxMICAgIHZQb3J0U3RhcnQNCiA7DQogOyAgIE91dHB1dDogTk9ORQ0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICBSU0VHIENPREU6Q09ERQ0KIHZQb3J0U3RhcnQ6DQogICAgIHBvcnRSRVNUT1JFX0NPTlRFWFQJICAgICAgICAgICAgICAgICAgICA7IFJlc3RvcmUgdGhlIGNvbnRleHQgb2Ygd2hpY2hldmVyIHRhc2sgdGhlIC4uLg0KQEAgLTI2Nyw3ICsyNDEsNyBAQAogOyAgIENhbGw6ICAgSVNSDQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAjaWYgY29uZmlnVVNFX1BSRUVNUFRJT04gPT0gMSAgICAgICAgICAgICAgIDsgdXNlIHByZWVtcHRpdmUga2VybmVsIG1vZGUNCiANCiBNRF9JTlRUTTBFUTA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9GeDMuczg1IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9GeDMuczg1CmluZGV4IDFiNDA2MzYuLmZkNmVlZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fRngzLnM4NQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0YXNtX0Z4My5zODUKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogOyBOb3RlOiBTZWxlY3QgdGhlIGNvcnJlY3QgaW5jbHVkZSBmaWxlcyBmb3IgdGhlIGRldmljZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4NCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMjE4LDcgKzE5Miw3IEBACiA7ICAgQ2FsbDogICBDQUxMICAgIHZQb3J0U3RhcnQNCiA7DQogOyAgIE91dHB1dDogTk9ORQ0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICBSU0VHIENPREU6Q09ERQ0KIHZQb3J0U3RhcnQ6DQogICAgIHBvcnRSRVNUT1JFX0NPTlRFWFQJICAgICAgICAgICAgICAgICAgICA7IFJlc3RvcmUgdGhlIGNvbnRleHQgb2Ygd2hpY2hldmVyIHRhc2sgdGhlIC4uLg0KQEAgLTI3Niw3ICsyNTAsNyBAQAogOyAgIENhbGw6ICAgSVNSDQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAjaWYgY29uZmlnVVNFX1BSRUVNUFRJT04gPT0gMSAgICAgICAgICAgICAgIDsgdXNlIHByZWVtcHRpdmUga2VybmVsIG1vZGUNCiANCiBNRF9JTlRUTTBFUTA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9IeDIuczg1IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9IeDIuczg1CmluZGV4IDE1NDAzODUuLmE4ZDEzNTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fSHgyLnM4NQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0YXNtX0h4Mi5zODUKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogOyBOb3RlOiBTZWxlY3QgdGhlIGNvcnJlY3QgaW5jbHVkZSBmaWxlcyBmb3IgdGhlIGRldmljZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbi4NCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMjA5LDcgKzE4Myw3IEBACiA7ICAgQ2FsbDogICBDQUxMICAgIHZQb3J0U3RhcnQNCiA7DQogOyAgIE91dHB1dDogTk9ORQ0KLTstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQorOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICBSU0VHIENPREU6Q09ERQ0KIHZQb3J0U3RhcnQ6DQogICAgIHBvcnRSRVNUT1JFX0NPTlRFWFQJICAgICAgICAgICAgICAgICAgICA7IFJlc3RvcmUgdGhlIGNvbnRleHQgb2Ygd2hpY2hldmVyIHRhc2sgdGhlIC4uLg0KQEAgLTI2Nyw3ICsyNDEsNyBAQAogOyAgIENhbGw6ICAgSVNSDQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAjaWYgY29uZmlnVVNFX1BSRUVNUFRJT04gPT0gMSAgICAgICAgICAgICAgIDsgdXNlIHByZWVtcHRpdmUga2VybmVsIG1vZGUNCiANCiBNRF9JTlRUTTBFUTA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0bWFjcm8uaAppbmRleCBiODM4NzMxLi5kNjNlMmRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMxOEYvcG9ydC5jCmluZGV4IGUwMmI4YjYuLjk1ZmZjMjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMxOEYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMxOEYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGJldHdlZW4gVjEuMi40IGFuZCBWMS4yLjUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzE4Ri9wb3J0bWFjcm8uaAppbmRleCA1Yjk2OGI5Li44MTI0NGU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMxOEYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0LmMKaW5kZXggZjNmNzQ3ZS4uYzA1NDE1ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjQuMi4xDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fUElDMjQuUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0YXNtX1BJQzI0LlMKaW5kZXggMTBhYjA3MS4uNmQxN2M5NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fUElDMjQuUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydGFzbV9QSUMyNC5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWYgZGVmaW5lZCggX19QSUMyNEVfXyApIHx8IGRlZmluZWQgKCBfX1BJQzI0Rl9fICkgfHwgZGVmaW5lZCggX19QSUMyNEZLX18gKSB8fCBkZWZpbmVkKCBfX1BJQzI0SF9fICkNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydGFzbV9kc1BJQy5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fZHNQSUMuUwppbmRleCA4OTE3YTA4Li5mOGZhMjRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydGFzbV9kc1BJQy5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0YXNtX2RzUElDLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZiBkZWZpbmVkKCBfX2RzUElDMzBGX18gKSB8fCBkZWZpbmVkKCBfX2RzUElDMzNGX18gKQ0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0bWFjcm8uaAppbmRleCA2ZTZjZGYwLi4wMTZlZGYyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvSVNSX1N1cHBvcnQuaAppbmRleCAyZjdiMTJmLi5hMGE3YTVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9JU1JfU3VwcG9ydC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydC5jCmluZGV4IDVmODIzZjkuLjJlMGM0YWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFBJQzMyTUVDMTR4eCAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnRfYXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnRfYXNtLlMKaW5kZXggODViNmY0MS4uM2U2YmVkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0X2FzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydF9hc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydG1hY3JvLmgKaW5kZXggNmFkMmIzNi4uM2Y2YjE5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9JU1JfU3VwcG9ydC5oCmluZGV4IDJiOTEzZmMuLjc3YzNkZTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvSVNSX1N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydC5jCmluZGV4IDkxM2RmNDAuLjU3YjkxMjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUElDMzJNWCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRfYXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0X2FzbS5TCmluZGV4IDdmNDc5YjguLmUxYzI1N2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRfYXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydF9hc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHhjLmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRtYWNyby5oCmluZGV4IDgwMWVkODcuLjkwNzRkMGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9JU1JfU3VwcG9ydC5oCmluZGV4IGZlOWY3NDguLmM4MmZmNTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovSVNSX1N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jCmluZGV4IDY5YWI3YmUuLjBhYWRkMmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUElDMzJNWiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0X2FzbS5TCmluZGV4IGNjYjA5MzYuLjJhNjYxYzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydF9hc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHhjLmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRtYWNyby5oCmluZGV4IDI2ZTc5YjEuLmU3YjZjZmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NU1ZDLU1pbmdXL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NU1ZDLU1pbmdXL3BvcnQuYwppbmRleCA1NDI5MjI4Li43YjI2YTY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkaW8uaD4NCkBAIC0yNDUsNyArMjA0LDcgQEAKIAkJdGltZUVuZFBlcmlvZCggeFRpbWVDYXBzLndQZXJpb2RNaW4gKTsNCiAJfQ0KIA0KLQlyZXR1cm4gcGRQQVNTOw0KKwlyZXR1cm4gcGRGQUxTRTsNCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0bWFjcm8uaAppbmRleCAzYjNiZDAxLi45ZWYzM2JmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCkBAIC0xMTgsNyArNzcsNyBAQAogDQogLyogU2ltdWxhdGVkIGludGVycnVwdHMgcmV0dXJuIHBkRkFMU0UgaWYgbm8gY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCwNCiBvciBhIG5vbi16ZXJvIG51bWJlciBpZiBhIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQuICovDQotI2RlZmluZSBwb3J0WUlFTERfRlJPTV9JU1IoIHggKSByZXR1cm4geA0KKyNkZWZpbmUgcG9ydFlJRUxEX0ZST01fSVNSKCB4ICkgKCB2b2lkICkgeA0KICNkZWZpbmUgcG9ydEVORF9TV0lUQ0hJTkdfSVNSKCB4ICkgcG9ydFlJRUxEX0ZST01fSVNSKCAoIHggKSApDQogDQogdm9pZCB2UG9ydENsb3NlUnVubmluZ1RocmVhZCggdm9pZCAqcHZUYXNrVG9EZWxldGUsIHZvbGF0aWxlIEJhc2VUeXBlX3QgKnB4UGVuZFlpZWxkICk7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8xLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzEuYwppbmRleCA5ZGJkZTBmLi5jYmEwNDVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzEuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzEuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzIuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMi5jCmluZGV4IDQ1NDllNzYuLmJiODhiYzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMi5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEEgc2FtcGxlIGltcGxlbWVudGF0aW9uIG9mIHB2UG9ydE1hbGxvYygpIGFuZCB2UG9ydEZyZWUoKSB0aGF0IHBlcm1pdHMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzMuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMy5jCmluZGV4IDcxMzQ3MzUuLjIxNjM1NjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMy5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmMKaW5kZXggMjg4YTQyNy4uZTU5ODdlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF80LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQSBzYW1wbGUgaW1wbGVtZW50YXRpb24gb2YgcHZQb3J0TWFsbG9jKCkgYW5kIHZQb3J0RnJlZSgpIHRoYXQgY29tYmluZXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzUuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNS5jCmluZGV4IDY0Yzg2ZjUuLjEyNTk3MjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNS5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEEgc2FtcGxlIGltcGxlbWVudGF0aW9uIG9mIHB2UG9ydE1hbGxvYygpIHRoYXQgYWxsb3dzIHRoZSBoZWFwIHRvIGJlIGRlZmluZWQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydC5jCmluZGV4IGJiNGQ3MDQuLjc1OTRjZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01pa3JvQy9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggMTM3OWEwNy4uOTU2MmNjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01pa3JvQy9BUk1fQ000Ri9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnQuYwppbmRleCA5OWI2MjU4Li42MmVjYzAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydGFzbS5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydGFzbS5oCmluZGV4IGM0NDY3NzAuLjBjYzAyY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnRhc20uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0YXNtLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIHR5cGVkZWYgdm9pZCBUQ0JfdDsNCiBleHRlcm4gdm9sYXRpbGUgVENCX3QgKiB2b2xhdGlsZSBweEN1cnJlbnRUQ0I7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0bWFjcm8uaAppbmRleCBhOTRhM2IwLi42Njk0ZmEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0LmMKaW5kZXggMjc5M2Q0OC4uNTY1MjU0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRhc20uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRhc20uaAppbmRleCA4NmI5YTEwLi40MWRhMzBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0YXNtLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydGFzbS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRfQVNNX0gNCiAjZGVmaW5lIFBPUlRfQVNNX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRtYWNyby5oCmluZGV4IGRmMDQ0ZjguLmRlMmU3NGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydC5jCmluZGV4IGU4Zjc4YzAuLjY3MjNmZDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRBU00ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0QVNNLnMKaW5kZXggODI3ZGFkOS4uNzliZGFhMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRBU00ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydEFTTS5zCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlJTkNMVURFIHBvcnRtYWNyby5pbmMNCiANCkBAIC03Myw3ICs0Nyw3IEBACiANCiANCiA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQotOyBTdGFydGluZyB0aGUgZmlyc3QgdGFzayBpcyBkb25lIGJ5IGp1c3QgcmVzdG9yaW5nIHRoZSBjb250ZXh0IA0KKzsgU3RhcnRpbmcgdGhlIGZpcnN0IHRhc2sgaXMgZG9uZSBieSBqdXN0IHJlc3RvcmluZyB0aGUgY29udGV4dA0KIDsgc2V0dXAgYnkgcHhQb3J0SW5pdGlhbGlzZVN0YWNrDQogOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KIHZQb3J0U3RhcnRGaXJzdFRhc2sNCkBAIC0xMDEsMTcgKzc1LDE3IEBACiANCiAJUFJFU0VSVkU4DQogDQotCTsgV2l0aGluIGFuIElSUSBJU1IgdGhlIGxpbmsgcmVnaXN0ZXIgaGFzIGFuIG9mZnNldCBmcm9tIHRoZSB0cnVlIHJldHVybiANCi0JOyBhZGRyZXNzLCBidXQgYW4gU1dJIElTUiBkb2VzIG5vdC4gIEFkZCB0aGUgb2Zmc2V0IG1hbnVhbGx5IHNvIHRoZSBzYW1lIA0KKwk7IFdpdGhpbiBhbiBJUlEgSVNSIHRoZSBsaW5rIHJlZ2lzdGVyIGhhcyBhbiBvZmZzZXQgZnJvbSB0aGUgdHJ1ZSByZXR1cm4NCisJOyBhZGRyZXNzLCBidXQgYW4gU1dJIElTUiBkb2VzIG5vdC4gIEFkZCB0aGUgb2Zmc2V0IG1hbnVhbGx5IHNvIHRoZSBzYW1lDQogCTsgSVNSIHJldHVybiBjb2RlIGNhbiBiZSB1c2VkIGluIGJvdGggY2FzZXMuDQogCUFERAlMUiwgTFIsICM0DQogDQogCTsgUGVyZm9ybSB0aGUgY29udGV4dCBzd2l0Y2guDQotCXBvcnRTQVZFX0NPTlRFWFQJCQkJCTsgU2F2ZSBjdXJyZW50IHRhc2sgY29udGV4dAkJCQkNCisJcG9ydFNBVkVfQ09OVEVYVAkJCQkJOyBTYXZlIGN1cnJlbnQgdGFzayBjb250ZXh0DQogCUxEUiBSMCwgPXZUYXNrU3dpdGNoQ29udGV4dAkJCTsgR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBjb250ZXh0IHN3aXRjaCBmdW5jdGlvbg0KIAlNT1YgTFIsIFBDCQkJCQkJCTsgU3RvcmUgdGhlIHJldHVybiBhZGRyZXNzDQogCUJYCVIwCQkJCQkJCQk7IENhbGwgdGhlIGNvbnRlZHh0IHN3aXRjaCBmdW5jdGlvbg0KLQlwb3J0UkVTVE9SRV9DT05URVhUCQkJCQk7IHJlc3RvcmUgdGhlIGNvbnRleHQgb2YgdGhlIHNlbGVjdGVkIHRhc2sJDQorCXBvcnRSRVNUT1JFX0NPTlRFWFQJCQkJCTsgcmVzdG9yZSB0aGUgY29udGV4dCBvZiB0aGUgc2VsZWN0ZWQgdGFzaw0KIA0KIA0KIA0KQEAgLTEyMCwzMiArOTQsMzIgQEAKIDsgT25seSB1c2VkIGlmIHBvcnRVU0VfUFJFRU1QVElPTiBpcyBzZXQgdG8gMSBpbiBwb3J0bWFjcm8uaA0KIDsNCiA7IFVzZXMgdGltZXIgMCBvZiBMUEMyMVhYIEZhbWlseQ0KLTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsJDQorOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KIA0KIHZQcmVlbXB0aXZlVGljaw0KIA0KIAlQUkVTRVJWRTgNCiANCi0JcG9ydFNBVkVfQ09OVEVYVAkJCQkJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRhc2suCQ0KKwlwb3J0U0FWRV9DT05URVhUCQkJCQk7IFNhdmUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGFzay4NCiANCi0JTERSIFIwLCA9eFRhc2tJbmNyZW1lbnRUaWNrCQkJOyBJbmNyZW1lbnQgdGhlIHRpY2sgY291bnQuICANCisJTERSIFIwLCA9eFRhc2tJbmNyZW1lbnRUaWNrCQkJOyBJbmNyZW1lbnQgdGhlIHRpY2sgY291bnQuDQogCU1PViBMUiwgUEMJCQkJCQkJOyBUaGlzIG1heSBtYWtlIGEgZGVsYXllZCB0YXNrIHJlYWR5DQogCUJYIFIwCQkJCQkJCQk7IHRvIHJ1bi4NCiANCiAJQ01QIFIwLCAjMA0KIAlCRVEgU2tpcENvbnRleHRTd2l0Y2gNCi0JTERSIFIwLCA9dlRhc2tTd2l0Y2hDb250ZXh0CQkJOyBGaW5kIHRoZSBoaWdoZXN0IHByaW9yaXR5IHRhc2sgdGhhdCANCisJTERSIFIwLCA9dlRhc2tTd2l0Y2hDb250ZXh0CQkJOyBGaW5kIHRoZSBoaWdoZXN0IHByaW9yaXR5IHRhc2sgdGhhdA0KIAlNT1YgTFIsIFBDCQkJCQkJCTsgaXMgcmVhZHkgdG8gcnVuLg0KIAlCWCBSMA0KIFNraXBDb250ZXh0U3dpdGNoDQogCU1PViBSMCwgI1QwTUFUQ0hCSVQJCQkJCTsgQ2xlYXIgdGhlIHRpbWVyIGV2ZW50DQogCUxEUiBSMSwgPVQwSVINCi0JU1RSIFIwLCBbUjFdIA0KKwlTVFIgUjAsIFtSMV0NCiANCi0JTERSCVIwLCA9VklDVkVDVEFERFIJCQkJOyBBY2tub3dsZWRnZSB0aGUgaW50ZXJydXB0CQ0KKwlMRFIJUjAsID1WSUNWRUNUQUREUgkJCQk7IEFja25vd2xlZGdlIHRoZSBpbnRlcnJ1cHQNCiAJU1RSCVIwLFtSMF0NCiANCi0JcG9ydFJFU1RPUkVfQ09OVEVYVAkJCQkJOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHRoZSBoaWdoZXN0IA0KKwlwb3J0UkVTVE9SRV9DT05URVhUCQkJCQk7IFJlc3RvcmUgdGhlIGNvbnRleHQgb2YgdGhlIGhpZ2hlc3QNCiAJCQkJCQkJCQkJOyBwcmlvcml0eSB0YXNrIHRoYXQgaXMgcmVhZHkgdG8gcnVuLg0KIAlFTkQNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydG1hY3JvLmgKaW5kZXggYTZhZGVlMS4uOGVlMjJjNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaW5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5pbmMKaW5kZXggZjRmNWY5MS4uMDNkNWM1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5pbmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5pbmMKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCUlNUE9SVCAgdWxDcml0aWNhbE5lc3RpbmcJCTsNCiAJSU1QT1JUCXB4Q3VycmVudFRDQgkJCTsNCkBAIC02NCw3ICszOCw3IEBACiAJTERSCQlSMCwgW1IwXQkJCQk7IC4uLiBzdG9yZWQgaW4gcHhDdXJyZW50VENCDQogCUxEUgkJTFIsIFtSMF0NCiANCi0JTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24uLi4gDQorCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZwk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uLi4uDQogCUxETUZECUxSISwge1IxfQkJCQk7IC4uLnRoZSBzdGFjay4gIExvYWQgaXQgaW50byB0aGUgdWxDcml0aWNhbE5lc3RpbmcgdmFyLg0KIAlTVFIJCVIxLCBbUjBdCQkJCTsNCiANCkBAIC0xMTAsOSArODQsOSBAQAogCVNUTURCCUxSISwge1IwfQkJCQk7DQogDQogCUxEUgkJUjAsID1weEN1cnJlbnRUQ0IJCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLg0KLQlMRFIJCVIxLCBbUjBdCQkJCTsgCQkgDQorCUxEUgkJUjEsIFtSMF0JCQkJOw0KIAlTVFIJCUxSLCBbUjFdCQkJCTsNCi0JDQorDQogCU1FTkQNCi0JDQorDQogCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0LmMKaW5kZXggOGFjYWU4ZS4uZTc3ZWUyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRBU00ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydEFTTS5zCmluZGV4IGI0MjIwN2MuLjFhZGM4NjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydEFTTS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydEFTTS5zCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCUlOQ0xVREUgcG9ydG1hY3JvLmluYw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5oCmluZGV4IDg5ZWQ3YjQuLjZlNjI1NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5pbmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5pbmMKaW5kZXggMTA3YjFhYy4uN2Y0MmY2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0bWFjcm8uaW5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydG1hY3JvLmluYwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIFNZU19NT0RFCQkJRVFVCQkweDFmDQogU1ZDX01PREUJCQlFUVUJCTB4MTMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTAvcG9ydC5jCmluZGV4IDI4Y2EwM2MuLmE4MGYxYTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMC9wb3J0bWFjcm8uaAppbmRleCBlN2VlMzZkLi41MDY3NTAxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTMvcG9ydC5jCmluZGV4IDVmZDEwOTEuLjZmNjFhOGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTMgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMy9wb3J0bWFjcm8uaAppbmRleCAwZjIyMzg1Li5mNjU2MzNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000Ri9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000Ri9wb3J0LmMKaW5kZXggZjUxMjA3OC4uYWEyM2Y1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggMGYyMjM4NS4uZjY1NjMzZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000X01QVS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000X01QVS9wb3J0LmMKaW5kZXggOWVlNzYzYi4uNGJlYzMzMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpAQCAtNzgsOSArMzcsNyBAQAogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLSNpbmNsdWRlICJldmVudF9ncm91cHMuaCINCi0jaW5jbHVkZSAibXB1X3Byb3RvdHlwZXMuaCINCisjaW5jbHVkZSAidGFzay5oIg0KIA0KICNpZm5kZWYgX19UQVJHRVRfRlBVX1ZGUA0KIAkjZXJyb3IgVGhpcyBwb3J0IGNhbiBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgcHJvamVjdCBvcHRpb25zIGFyZSBjb25maWd1cmVkIHRvIGVuYWJsZSBoYXJkd2FyZSBmbG9hdGluZyBwb2ludCBzdXBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmgKaW5kZXggMjQ1Y2U4OC4uNGIwMzUzZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnQuYwppbmRleCA1YzVjMDk2Li42NjVjMTczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTcvcjBwMS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmgKaW5kZXggZDI1OWZkMC4uNTdmMWEzNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnQuYwppbmRleCBkNWMwMDBjLi44NzIzYjNlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFJYMTAwIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydF9hc20uc3JjIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydF9hc20uc3JjCmluZGV4IGFjZWYyYjEuLmVlNjBiMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRfYXNtLnNyYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0X2FzbS5zcmMKQEAgLTEsNjEgKzEsMzUgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiAJCS5HTEIJX3ZTb2Z0d2FyZUludGVycnVwdElTUg0KICAgICAgICAgICAgICAgICAuR0xCICAgIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeQ0KIA0KIAkJLlNFQ1RJT04gICBQLENPREUNCi0JCQ0KKw0KIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeToNCiANCiAJQlJBCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRtYWNyby5oCmluZGV4IDkxNDg4MjAuLmJjZGE5MWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydC5jCmluZGV4IGE5MDExY2IuLjdiZjQxZWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUlgyMDAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0X2FzbS5zcmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0X2FzbS5zcmMKaW5kZXggYWNlZjJiMS4uZWU2MGIzNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydF9hc20uc3JjCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRfYXNtLnNyYwpAQCAtMSw2MSArMSwzNSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIAkJLkdMQglfdlNvZnR3YXJlSW50ZXJydXB0SVNSDQogICAgICAgICAgICAgICAgIC5HTEIgICAgX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5DQogDQogCQkuU0VDVElPTiAgIFAsQ09ERQ0KLQkJDQorDQogX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5Og0KIA0KIAlCUkEJX3ZTb2Z0d2FyZUludGVycnVwdElTUg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydG1hY3JvLmgKaW5kZXggZGE2NWFmNy4uM2JmMWE4MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0LmMKaW5kZXggOTlhMjYyMS4uYjAxYzVhMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBSWDYwMCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnRfYXNtLnNyYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnRfYXNtLnNyYwppbmRleCBhY2VmMmIxLi5lZTYwYjM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0X2FzbS5zcmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydF9hc20uc3JjCkBAIC0xLDYxICsxLDM1IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogCQkuR0xCCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCiAgICAgICAgICAgICAgICAgLkdMQiAgICBfdlNvZnR3YXJlSW50ZXJydXB0RW50cnkNCiANCiAJCS5TRUNUSU9OICAgUCxDT0RFDQotCQkNCisNCiBfdlNvZnR3YXJlSW50ZXJydXB0RW50cnk6DQogDQogCUJSQQlfdlNvZnR3YXJlSW50ZXJydXB0SVNSDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0bWFjcm8uaAppbmRleCA0MDBmYTNlLi5mY2VlMjFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0LmMKaW5kZXggNzlkMGJmYS4uOGUxZWFkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUlg2MDAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRfYXNtLnNyYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydF9hc20uc3JjCmluZGV4IDQyYWQ2MjAuLjM2OWQwYTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydF9hc20uc3JjCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydF9hc20uc3JjCkBAIC0xLDYxICsxLDM1IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogCQkuR0xCCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCiAJCS5HTEIgICAgX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5DQogDQogCQkuU0VDVElPTiAgIFAsQ09ERQ0KLQkJDQorDQogX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5Og0KIA0KIAlCUkEJX3ZTb2Z0d2FyZUludGVycnVwdElTUg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRtYWNyby5oCmluZGV4IGQxYTQ4OWQuLmNjNDVmNTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL0lTUl9TdXBwb3J0LmluYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL0lTUl9TdXBwb3J0LmluYwppbmRleCBjMTIwZTYwLi5iZDg0MGMxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9JU1JfU3VwcG9ydC5pbmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvSVNSX1N1cHBvcnQuaW5jCkBAIC0xLDcyICsxLDQ2IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogCS5tYWNybyBwb3J0U0FWRV9DT05URVhUDQogDQogCTsgU2F2ZSByMCB0byByMTQgYW5kIHByLg0KIAltb3ZtbC5sIHIxNSwgQC1yMTUNCi0JDQorDQogCTsgU2F2ZSBtYWMxLCBtYWNoIGFuZCBnYnINCiAJc3RzLmwJbWFjbCwgQC1yMTUNCiAJc3RzLmwJbWFjaCwgQC1yMTUNCiAJc3RjLmwJZ2JyLCBALXIxNQ0KLQkNCisNCiAJOyBHZXQgdGhlIGFkZHJlc3Mgb2YgcHhDdXJyZW50VENCDQogCW1vdi5sCSNfcHhDdXJyZW50VENCLCByMA0KLQkNCisNCiAJOyBHZXQgdGhlIGFkZHJlc3Mgb2YgcHhUb3BPZlN0YWNrIGZyb20gdGhlIFRDQi4NCiAJbW92LmwJQHIwLCByMA0KLQkNCisNCiAJOyBTYXZlIHRoZSBzdGFjayBwb2ludGVyIGluIHB4VG9wT2ZTdGFjay4NCiAJbW92LmwJcjE1LCBAcjANCiANCkBAIC04Miw4ICs1Niw4IEBACiAJOyBHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHRhc2sgc3RhY2sgZnJvbSBweEN1cnJlbnRUQ0IuDQogCW1vdi5sCUByMCwgcjANCiANCi0JOyBHZXQgdGhlIHRhc2sgc3RhY2sgaXRzZWxmIGludG8gdGhlIHN0YWNrIHBvaW50ZXIuIA0KLQltb3YubAlAcjAsIHIxNQkJDQorCTsgR2V0IHRoZSB0YXNrIHN0YWNrIGl0c2VsZiBpbnRvIHRoZSBzdGFjayBwb2ludGVyLg0KKwltb3YubAlAcjAsIHIxNQ0KIA0KIAk7IFJlc3RvcmUgc3lzdGVtIHJlZ2lzdGVycy4NCiAJbGRjLmwJQHIxNSssIGdicg0KQEAgLTkyLDcgKzY2LDcgQEAKIA0KIAk7IFJlc3RvcmUgcjAgdG8gcjE0IGFuZCBQUg0KIAltb3ZtbC5sCUByMTUrLCByMTUNCi0JDQorDQogCTsgUG9wIHRoZSBTUiBhbmQgUEMgdG8ganVtcCB0byB0aGUgc3RhcnQgb2YgdGhlIHRhc2suDQogCXJ0ZQ0KIAlub3ANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0LmMKaW5kZXggOTYxNWRiMi4uZDhkODE0OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydGFzbS5zcmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0YXNtLnNyYwppbmRleCAwNzJmZDQ4Li5kMTQyNjA1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0YXNtLnNyYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0YXNtLnNyYwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLmltcG9ydCBfcHhDdXJyZW50VENCDQogCS5pbXBvcnQgX3ZUYXNrU3dpdGNoQ29udGV4dA0KQEAgLTY3LDExICs0MSwxMSBAQAogICAgIC5zZWN0aW9uICAgIFANCiANCiAJLklOQ0xVREUgIklTUl9TdXBwb3J0LmluYyINCi0JDQorDQogX3ZQb3J0U3RhcnRGaXJzdFRhc2s6DQotCQkNCisNCiAJcG9ydFJFU1RPUkVfQ09OVEVYVA0KLQkNCisNCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCiBfdlBvcnRZaWVsZEhhbmRsZXI6DQpAQCAtODMsMTMgKzU3LDEzIEBACiAJbm9wDQogDQogCXBvcnRSRVNUT1JFX0NPTlRFWFQNCi0JDQorDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQogX3ZQb3J0UHJlZW1wdGl2ZVRpY2sNCiANCiAJcG9ydFNBVkVfQ09OVEVYVA0KLQkNCisNCiAJbW92LmwJI194VGFza0luY3JlbWVudFRpY2ssIHIwDQogCWpzcgkJQHIwDQogCW5vcA0KQEAgLTk5LDE5ICs3MywxOSBAQAogCW5vcA0KIA0KIAlwb3J0UkVTVE9SRV9DT05URVhUDQotCQ0KKw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIF92UG9ydENvb3BlcmF0aXZlVGljaw0KIA0KIAlwb3J0U0FWRV9DT05URVhUDQotCQ0KKw0KIAltb3YubAkjX3hUYXNrSW5jcmVtZW50VGljaywgcjANCiAJanNyCQlAcjANCiAJbm9wDQogDQogCXBvcnRSRVNUT1JFX0NPTlRFWFQNCi0JDQorDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQogX3VsUG9ydEdldEdCUjoNCkBAIC0xMzksMjAgKzExMywyMCBAQAogCWZtb3YucwlmcjEyLCBALXI0DQogCWZtb3YucwlmcjEzLCBALXI0DQogCWZtb3YucwlmcjE0LCBALXI0DQotCWZtb3YucwlmcjE1LCBALXI0CQ0KKwlmbW92LnMJZnIxNSwgQC1yNA0KIAlzdHMubCAgIGZwdWwsIEAtcjQNCiAJc3RzLmwgICBmcHNjciwgQC1yNA0KLQkNCisNCiAJcnRzDQogCW5vcA0KIA0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQkNCisNCiBfdlBvcnRSZXN0b3JlRmxvcFJlZ2lzdGVyczoNCiANCiAJYWRkLmwgICMtNzIsIHI0DQogCWxkcy5sICBAcjQrLCBmcHNjcg0KLQlsZHMubCAgQHI0KywgZnB1bAkNCisJbGRzLmwgIEByNCssIGZwdWwNCiAJZm1vdi5zIEByNCssIGZyMTUNCiAJZm1vdi5zIEByNCssIGZyMTQNCiAJZm1vdi5zIEByNCssIGZyMTMNCkBAIC0xNjksOSArMTQzLDkgQEAKIAlmbW92LnMgQHI0KywgZnIyDQogCWZtb3YucyBAcjQrLCBmcjENCiAJZm1vdi5zIEByNCssIGZyMA0KLQkNCisNCiAJcnRzDQogCW5vcA0KLQkNCisNCiAJLmVuZA0KLQkJDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0bWFjcm8uaAppbmRleCBmNTI4YWY3Li45ZDkwNGRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydC5jCmluZGV4IDBiYTY0OTcuLjdiYTQyOTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0YXNtLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydGFzbS5oCmluZGV4IDY5OGZhM2MuLmJiN2IyZWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0YXNtLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRhc20uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUX0FTTV9IDQogI2RlZmluZSBQT1JUX0FTTV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRleHQuYXNtIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRleHQuYXNtCmluZGV4IGYyMjg0NTEuLjMyOWZiNjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0ZXh0LmFzbQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydGV4dC5hc20KQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KICNpbmNsdWRlICJwb3J0YXNtLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oCmluZGV4IDVkOTQ5NTQuLjgzN2Y2ZjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NEQ0MvQ3lnbmFsL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0LmMKaW5kZXggMWEzODVlYi4uZjc0M2E4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NEQ0MvQ3lnbmFsL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU0RDQy9DeWduYWwvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEN5Z25hbCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0bWFjcm8uaAppbmRleCAyMjBjMjg4Li42ZjI4ODBiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU0RDQy9DeWduYWwvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NEQ0MvQ3lnbmFsL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0LmMKaW5kZXggY2MyODAwYy4uMDNmY2VjMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydG1hY3JvLmgKaW5kZXggMzg5OTM4MS4uZGFhYjEzYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjkxNDYwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0LmMKaW5kZXggZjM1ODUxYy4uN2Y5Y2E1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydG1hY3JvLmgKaW5kZXggZjVlYThkNy4uMDNjYTg2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjk2MzQwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydC5jCmluZGV4IGI4MDM2NTIuLmQwNWRiMGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0X2FzbS5hc20gYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0X2FzbS5hc20KaW5kZXggZmMwYzgxMy4uODVkYzNhMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydF9hc20uYXNtCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRfYXNtLmFzbQpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIA0KIAkuZXh0ZXJuIHB4Q3VycmVudFRDQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggNzBmNjFiMS4uMzg1Yzc4MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svVGljay5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL1RpY2suYwppbmRleCA5NzUyMDZkLi5jZTk5NGNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svVGljay5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0RyaXZlcnMvVGljay9UaWNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svaXNyVGljay5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL2lzclRpY2suYwppbmRleCA5ZTAwNTIzLi5hZjU1NDY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svaXNyVGljay5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0RyaXZlcnMvVGljay9pc3JUaWNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9JbnN0YWxsLmJhdCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0luc3RhbGwuYmF0CmluZGV4IDgxMzNkNjIuLjc4MGVjMjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0luc3RhbGwuYmF0CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0luc3RhbGwuYmF0CkBAIC0xLDU2ICsxLDMgQEAKLVJFTS8qDQotUkVNICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi1SRU0NCi1SRU0NCi1SRU0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUkVNICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotUkVNICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotUkVNICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotUkVNICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotUkVNICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotUkVNICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotUkVNICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotUkVNICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotUkVNICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotUkVNICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotUkVNICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVJFTQ0KLVJFTQ0KLVJFTSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLVJFTQ0KLVJFTSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlUkVNIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi1SRU0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotUkVNICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi1SRU0gICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotUkVNICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotUkVNICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotUkVNICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLVJFTSAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWVJFTSB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotUkVNICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi1SRU0gICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi1SRU0gICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1NSRU0gaWYgbm90IGl0DQotUkVNICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi1SRU0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi1SRU0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotUkVNDQotUkVNICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLVJFTQ0KLVJFTSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi1SRU0gICAgY29udGFjdCBkZXRhaWxzLg0KLVJFTQ0KLVJFTSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLVJFTSAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLVJFTQ0KLVJFTSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotUkVNICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotUkVNKi8NCi0NCiANCiBAZWNobyBvZmYNCiBjbHMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9hZGRGcmVlUlRPUy5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvYWRkRnJlZVJUT1MuaAppbmRleCAxMDY1YjJkLi42YTlmMzQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9hZGRGcmVlUlRPUy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L2FkZEZyZWVSVE9TLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnQuYwppbmRleCA5NWU5MmUwLi5lNjUxOWY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4yLjENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnRtYWNyby5oCmluZGV4IGI3ZDFjMjguLmE0NzdiYTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jCmluZGV4IDFlOTExMzEuLjgzMzU0ZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4wMDoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvRmxzaDE4Ni9wb3J0bWFjcm8uaAppbmRleCA5MGI5ZjIxLi4zMTdhNjcxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL0Zsc2gxODYvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydC5jCmluZGV4IGE4MmZkNDIuLjMyODlkZDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9QQy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjAwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydG1hY3JvLmgKaW5kZXggZjBmODk2Yi4uMjVmZWUyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRhc20uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmgKaW5kZXggYjkyOGQ0Yy4uOWU2NjE4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRhc20uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9jb21tb24vcG9ydGFzbS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiB0eXBlZGVmIHZvaWQgVENCX3Q7DQogZXh0ZXJuIHZvbGF0aWxlIFRDQl90ICogdm9sYXRpbGUgcHhDdXJyZW50VENCOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMKaW5kZXggY2U3YmVhOC4uMzNkODAzYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjAwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9xdWV1ZS5jIGIvRnJlZVJUT1MvU291cmNlL3F1ZXVlLmMKaW5kZXggN2MxYmFmMi4uZTE1MWY4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3F1ZXVlLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3F1ZXVlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpAQCAtOTI2LDggKzg4NSw4IEBACiAJCQkJdlRhc2tQbGFjZU9uRXZlbnRMaXN0KCAmKCBweFF1ZXVlLT54VGFza3NXYWl0aW5nVG9TZW5kICksIHhUaWNrc1RvV2FpdCApOw0KIA0KIAkJCQkvKiBVbmxvY2tpbmcgdGhlIHF1ZXVlIG1lYW5zIHF1ZXVlIGV2ZW50cyBjYW4gZWZmZWN0IHRoZQ0KLQkJCQlldmVudCBsaXN0LiAgSXQgaXMgcG9zc2libGUJdGhhdCBpbnRlcnJ1cHRzIG9jY3VycmluZyBub3cNCi0JCQkJcmVtb3ZlIHRoaXMgdGFzayBmcm9tIHRoZSBldmVudAlsaXN0IGFnYWluIC0gYnV0IGFzIHRoZQ0KKwkJCQlldmVudCBsaXN0LiAgSXQgaXMgcG9zc2libGUgdGhhdCBpbnRlcnJ1cHRzIG9jY3VycmluZyBub3cNCisJCQkJcmVtb3ZlIHRoaXMgdGFzayBmcm9tIHRoZSBldmVudCBsaXN0IGFnYWluIC0gYnV0IGFzIHRoZQ0KIAkJCQlzY2hlZHVsZXIgaXMgc3VzcGVuZGVkIHRoZSB0YXNrIHdpbGwgZ28gb250byB0aGUgcGVuZGluZw0KIAkJCQlyZWFkeSBsYXN0IGluc3RlYWQgb2YgdGhlIGFjdHVhbCByZWFkeSBsaXN0LiAqLw0KIAkJCQlwcnZVbmxvY2tRdWV1ZSggcHhRdWV1ZSApOw0KQEAgLTE3MTUsNyArMTY3NCw3IEBACiAJCQkJCS8qIFRoZSBxdWV1ZSB3YXMgZW1wdHkgYW5kIG5vIGJsb2NrIHRpbWUgaXMgc3BlY2lmaWVkIChvcg0KIAkJCQkJdGhlIGJsb2NrIHRpbWUgaGFzIGV4cGlyZWQpIHNvIGxlYXZlIG5vdy4gKi8NCiAJCQkJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQotCQkJCQl0cmFjZVFVRVVFX1JFQ0VJVkVfRkFJTEVEKCBweFF1ZXVlICk7DQorCQkJCQl0cmFjZVFVRVVFX1BFRUtfRkFJTEVEKCBweFF1ZXVlICk7DQogCQkJCQlyZXR1cm4gZXJyUVVFVUVfRU1QVFk7DQogCQkJCX0NCiAJCQkJZWxzZSBpZiggeEVudHJ5VGltZVNldCA9PSBwZEZBTFNFICkNCkBAIC0xNzQ4LDcgKzE3MDcsNyBAQAogCQkJcXVldWUgbm93LCBhbmQgaWYgbm90IGVudGVyIHRoZSBCbG9ja2VkIHN0YXRlIHRvIHdhaXQgZm9yIGRhdGEuICovDQogCQkJaWYoIHBydklzUXVldWVFbXB0eSggcHhRdWV1ZSApICE9IHBkRkFMU0UgKQ0KIAkJCXsNCi0JCQkJdHJhY2VCTE9DS0lOR19PTl9RVUVVRV9SRUNFSVZFKCBweFF1ZXVlICk7DQorCQkJCXRyYWNlQkxPQ0tJTkdfT05fUVVFVUVfUEVFSyggcHhRdWV1ZSApOw0KIAkJCQl2VGFza1BsYWNlT25FdmVudExpc3QoICYoIHB4UXVldWUtPnhUYXNrc1dhaXRpbmdUb1JlY2VpdmUgKSwgeFRpY2tzVG9XYWl0ICk7DQogCQkJCXBydlVubG9ja1F1ZXVlKCBweFF1ZXVlICk7DQogCQkJCWlmKCB4VGFza1Jlc3VtZUFsbCgpID09IHBkRkFMU0UgKQ0KQEAgLTE3NzcsNyArMTczNiw3IEBACiANCiAJCQlpZiggcHJ2SXNRdWV1ZUVtcHR5KCBweFF1ZXVlICkgIT0gcGRGQUxTRSApDQogCQkJew0KLQkJCQl0cmFjZVFVRVVFX1JFQ0VJVkVfRkFJTEVEKCBweFF1ZXVlICk7DQorCQkJCXRyYWNlUVVFVUVfUEVFS19GQUlMRUQoIHB4UXVldWUgKTsNCiAJCQkJcmV0dXJuIGVyclFVRVVFX0VNUFRZOw0KIAkJCX0NCiAJCQllbHNlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3N0cmVhbV9idWZmZXIuYyBiL0ZyZWVSVE9TL1NvdXJjZS9zdHJlYW1fYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4ZTJiNAotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9zdHJlYW1fYnVmZmVyLmMKQEAgLTAsMCArMSwxMTk2IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorDQorLyogRGVmaW5pbmcgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUgcHJldmVudHMgdGFzay5oIGZyb20gcmVkZWZpbmluZw0KK2FsbCB0aGUgQVBJIGZ1bmN0aW9ucyB0byB1c2UgdGhlIE1QVSB3cmFwcGVycy4gIFRoYXQgc2hvdWxkIG9ubHkgYmUgZG9uZSB3aGVuDQordGFzay5oIGlzIGluY2x1ZGVkIGZyb20gYW4gYXBwbGljYXRpb24gZmlsZS4gKi8NCisjZGVmaW5lIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFDQorDQorLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisjaW5jbHVkZSAic3RyZWFtX2J1ZmZlci5oIg0KKw0KKy8qIExpbnQgZTk2MSBhbmQgZTc1MCBhcmUgc3VwcHJlc3NlZCBhcyBhIE1JU1JBIGV4Y2VwdGlvbiBqdXN0aWZpZWQgYmVjYXVzZSB0aGUNCitNUFUgcG9ydHMgcmVxdWlyZSBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRSB0byBiZSBkZWZpbmVkIGZvciB0aGUNCitoZWFkZXIgZmlsZXMgYWJvdmUsIGJ1dCBub3QgaW4gdGhpcyBmaWxlLCBpbiBvcmRlciB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdA0KK3ByaXZpbGVnZWQgVnMgdW5wcml2aWxlZ2VkIGxpbmthZ2UgYW5kIHBsYWNlbWVudC4gKi8NCisjdW5kZWYgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUgLypsaW50ICFlOTYxICFlNzUwLiAqLw0KKw0KKy8qIElmIHRoZSB1c2VyIGhhcyBub3QgcHJvdmlkZWQgYXBwbGljYXRpb24gc3BlY2lmaWMgUnggbm90aWZpY2F0aW9uIG1hY3JvcywNCitvciAjZGVmaW5lZCB0aGUgbm90aWZpY2F0aW9uIG1hY3JvcyBhd2F5LCB0aGVtIHByb3ZpZGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMNCit0aGF0IHVzZXMgdGFzayBub3RpZmljYXRpb25zLiAqLw0KKy8qbGludCAtc2F2ZSAtZTkwMjYgRnVuY3Rpb24gbGlrZSBtYWNyb3MgYWxsb3dlZCBhbmQgbmVlZGVkIGhlcmUgc28gdGhleSBjYW4gYmUgb3ZlcmlkZGVuLiAqLw0KKyNpZm5kZWYgc2JSRUNFSVZFX0NPTVBMRVRFRA0KKwkjZGVmaW5lIHNiUkVDRUlWRV9DT01QTEVURUQoIHB4U3RyZWFtQnVmZmVyICkJCQkJCQkJCQkJXA0KKwkJdlRhc2tTdXNwZW5kQWxsKCk7CQkJCQkJCQkJCQkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQlpZiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQgIT0gTlVMTCApCQkJCQkJXA0KKwkJCXsJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCQkoIHZvaWQgKSB4VGFza05vdGlmeSggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQsCQkJXA0KKwkJCQkJCQkJCSAgKCB1aW50MzJfdCApIDAsCQkJCQkJCQkJXA0KKwkJCQkJCQkJCSAgZU5vQWN0aW9uICk7CQkJCQkJCQkJCVwNCisJCQkJKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQgPSBOVUxMOwkJCQkJCQlcDQorCQkJfQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkoIHZvaWQgKSB4VGFza1Jlc3VtZUFsbCgpOw0KKyNlbmRpZiAvKiBzYlJFQ0VJVkVfQ09NUExFVEVEICovDQorDQorI2lmbmRlZiBzYlJFQ0VJVkVfQ09NUExFVEVEX0ZST01fSVNSDQorCSNkZWZpbmUgc2JSRUNFSVZFX0NPTVBMRVRFRF9GUk9NX0lTUiggcHhTdHJlYW1CdWZmZXIsCQkJCQkJCQlcDQorCQkJCQkJCQkJCSAgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApCQkJCQlcDQorCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCVVCYXNlVHlwZV90IHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXM7CQkJCQkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJdXhTYXZlZEludGVycnVwdFN0YXR1cyA9ICggVUJhc2VUeXBlX3QgKSBwb3J0U0VUX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCk7CQlcDQorCQl7CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJaWYoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kICE9IE5VTEwgKQkJCQkJCVwNCisJCQl7CQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlGcm9tSVNSKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvU2VuZCwJXA0KKwkJCQkJCQkJCQkJICggdWludDMyX3QgKSAwLAkJCQkJCQlcDQorCQkJCQkJCQkJCQkgZU5vQWN0aW9uLAkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7CQkJCVwNCisJCQkJKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQgPSBOVUxMOwkJCQkJCQlcDQorCQkJfQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQlwb3J0Q0xFQVJfSU5URVJSVVBUX01BU0tfRlJPTV9JU1IoIHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXMgKTsJCQkJCVwNCisJfQ0KKyNlbmRpZiAvKiBzYlJFQ0VJVkVfQ09NUExFVEVEX0ZST01fSVNSICovDQorDQorLyogSWYgdGhlIHVzZXIgaGFzIG5vdCBwcm92aWRlZCBhbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBUeCBub3RpZmljYXRpb24gbWFjcm8sDQorb3IgI2RlZmluZWQgdGhlIG5vdGlmaWNhdGlvbiBtYWNybyBhd2F5LCB0aGVtIHByb3ZpZGUgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uDQordGhhdCB1c2VzIHRhc2sgbm90aWZpY2F0aW9ucy4gKi8NCisjaWZuZGVmIHNiU0VORF9DT01QTEVURUQNCisJI2RlZmluZSBzYlNFTkRfQ09NUExFVEVEKCBweFN0cmVhbUJ1ZmZlciApCQkJCQkJCQkJCQlcDQorCQl2VGFza1N1c3BlbmRBbGwoKTsJCQkJCQkJCQkJCQkJCQkJXA0KKwkJewkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCWlmKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSAhPSBOVUxMICkJCQkJCQlcDQorCQkJewkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJCSggdm9pZCApIHhUYXNrTm90aWZ5KCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSwJCVwNCisJCQkJCQkJCQkgICggdWludDMyX3QgKSAwLAkJCQkJCQkJCVwNCisJCQkJCQkJCQkgIGVOb0FjdGlvbiApOwkJCQkJCQkJCQlcDQorCQkJCSggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlID0gTlVMTDsJCQkJCQlcDQorCQkJfQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkoIHZvaWQgKSB4VGFza1Jlc3VtZUFsbCgpOw0KKyNlbmRpZiAvKiBzYlNFTkRfQ09NUExFVEVEICovDQorDQorI2lmbmRlZiBzYlNFTkRfQ09NUExFVEVfRlJPTV9JU1INCisJI2RlZmluZSBzYlNFTkRfQ09NUExFVEVfRlJPTV9JU1IoIHB4U3RyZWFtQnVmZmVyLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkJCVwNCisJewkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJVUJhc2VUeXBlX3QgdXhTYXZlZEludGVycnVwdFN0YXR1czsJCQkJCQkJCQkJCQkJXA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQl1eFNhdmVkSW50ZXJydXB0U3RhdHVzID0gKCBVQmFzZVR5cGVfdCApIHBvcnRTRVRfSU5URVJSVVBUX01BU0tfRlJPTV9JU1IoKTsJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQlpZiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgIT0gTlVMTCApCQkJCQkJXA0KKwkJCXsJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCQkoIHZvaWQgKSB4VGFza05vdGlmeUZyb21JU1IoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlLAlcDQorCQkJCQkJCQkJCQkgKCB1aW50MzJfdCApIDAsCQkJCQkJCVwNCisJCQkJCQkJCQkJCSBlTm9BY3Rpb24sCQkJCQkJCQkJXA0KKwkJCQkJCQkJCQkJIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsJCQkJXA0KKwkJCQkoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9IE5VTEw7CQkJCQkJXA0KKwkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJcG9ydENMRUFSX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzICk7CQkJCQlcDQorCX0NCisjZW5kaWYgLyogc2JTRU5EX0NPTVBMRVRFX0ZST01fSVNSICovDQorLypsaW50IC1yZXN0b3JlICg5MDI2KSAqLw0KKw0KKy8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBob2xkIHRoZSBsZW5ndGggb2YgYSBtZXNzYWdlIGluIHRoZSBidWZmZXIuICovDQorI2RlZmluZSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIICggc2l6ZW9mKCBzaXplX3QgKSApDQorDQorLyogQml0cyBzdG9yZWQgaW4gdGhlIHVjRmxhZ3MgZmllbGQgb2YgdGhlIHN0cmVhbSBidWZmZXIuICovDQorI2RlZmluZSBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSCQkoICggdWludDhfdCApIDEgKSAvKiBTZXQgaWYgdGhlIHN0cmVhbSBidWZmZXIgd2FzIGNyZWF0ZWQgYXMgYSBtZXNzYWdlIGJ1ZmZlciwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyBkaXNjcmV0ZSBtZXNzYWdlcyByYXRoZXIgdGhhbiBhIHN0cmVhbS4gKi8NCisjZGVmaW5lIHNiRkxBR1NfSVNfU1RBVElDQUxMWV9BTExPQ0FURUQgKCAoIHVpbnQ4X3QgKSAyICkgLyogU2V0IGlmIHRoZSBzdHJlYW0gYnVmZmVyIHdhcyBjcmVhdGVkIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBTdHJ1Y3R1cmUgdGhhdCBob2xkIHN0YXRlIGluZm9ybWF0aW9uIG9uIHRoZSBidWZmZXIuICovDQordHlwZWRlZiBzdHJ1Y3QgeFNUUkVBTV9CVUZGRVIgLypsaW50ICFlOTA1OCBTdHlsZSBjb252ZW50aW9uIHVzZXMgdGFnLiAqLw0KK3sNCisJdm9sYXRpbGUgc2l6ZV90IHhUYWlsOwkJCQkvKiBJbmRleCB0byB0aGUgbmV4dCBpdGVtIHRvIHJlYWQgd2l0aGluIHRoZSBidWZmZXIuICovDQorCXZvbGF0aWxlIHNpemVfdCB4SGVhZDsJCQkJLyogSW5kZXggdG8gdGhlIG5leHQgaXRlbSB0byB3cml0ZSB3aXRoaW4gdGhlIGJ1ZmZlci4gKi8NCisJc2l6ZV90IHhMZW5ndGg7CQkJCQkJLyogVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgcHVjQnVmZmVyLiAqLw0KKwlzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzOwkJCS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIGluIHRoZSBzdHJlYW0gYnVmZmVyIGJlZm9yZSBhIHRhc2sgdGhhdCBpcyB3YWl0aW5nIGZvciBkYXRhIGlzIHVuYmxvY2tlZC4gKi8NCisJdm9sYXRpbGUgVGFza0hhbmRsZV90IHhUYXNrV2FpdGluZ1RvUmVjZWl2ZTsgLyogSG9sZHMgdGhlIGhhbmRsZSBvZiBhIHRhc2sgd2FpdGluZyBmb3IgZGF0YSwgb3IgTlVMTCBpZiBubyB0YXNrcyBhcmUgd2FpdGluZy4gKi8NCisJdm9sYXRpbGUgVGFza0hhbmRsZV90IHhUYXNrV2FpdGluZ1RvU2VuZDsJLyogSG9sZHMgdGhlIGhhbmRsZSBvZiBhIHRhc2sgd2FpdGluZyB0byBzZW5kIGRhdGEgdG8gYSBtZXNzYWdlIGJ1ZmZlciB0aGF0IGlzIGZ1bGwuICovDQorCXVpbnQ4X3QgKnB1Y0J1ZmZlcjsJCQkJCS8qIFBvaW50cyB0byB0aGUgYnVmZmVyIGl0c2VsZiAtIHRoYXQgaXMgLSB0aGUgUkFNIHRoYXQgc3RvcmVzIHRoZSBkYXRhIHBhc3NlZCB0aHJvdWdoIHRoZSBidWZmZXIuICovDQorCXVpbnQ4X3QgdWNGbGFnczsNCisNCisJI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwkJVUJhc2VUeXBlX3QgdXhTdHJlYW1CdWZmZXJOdW1iZXI7CQkvKiBVc2VkIGZvciB0cmFjaW5nIHB1cnBvc2VzLiAqLw0KKwkjZW5kaWYNCit9IFN0cmVhbUJ1ZmZlcl90Ow0KKw0KKy8qDQorICogVGhlIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgdG8gYmUgcmVhZCBmcm9tIHRoZSBidWZmZXIuDQorICovDQorc3RhdGljIHNpemVfdCBwcnZCeXRlc0luQnVmZmVyKCBjb25zdCBTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIEFkZCB4Q291bnQgYnl0ZXMgZnJvbSBwdWNEYXRhIGludG8gdGhlIHB4U3RyZWFtQnVmZmVyIG1lc3NhZ2UgYnVmZmVyLg0KKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLCB3aGljaCB3aWxsIGVpdGhlciBlcXVhbCB4Q291bnQgaW4gdGhlDQorICogc3VjY2VzcyBjYXNlLCBvciAwIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHNwYWNlIGluIHRoZSBidWZmZXIgKGluIHdoaWNoIGNhc2UNCisgKiBubyBkYXRhIGlzIHdyaXR0ZW4gaW50byB0aGUgYnVmZmVyKS4NCisgKi8NCitzdGF0aWMgc2l6ZV90IHBydldyaXRlQnl0ZXNUb0J1ZmZlciggU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciwgY29uc3QgdWludDhfdCAqcHVjRGF0YSwgc2l6ZV90IHhDb3VudCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBiZWluZyB1c2VkIGFzIGEgbWVzc2FnZSBidWZmZXIsIHRoZW4gcmVhZHMgYW4gZW50aXJlDQorICogbWVzc2FnZSBvdXQgb2YgdGhlIGJ1ZmZlci4gIElmIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGJlaW5nIHVzZWQgYXMgYSBzdHJlYW0NCisgKiBidWZmZXIgdGhlbiByZWFkIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgYnVmZmVyLg0KKyAqIHBydlJlYWRCeXRlc0Zyb21CdWZmZXIoKSBpcyBjYWxsZWQgdG8gYWN0dWFsbHkgZXh0cmFjdCB0aGUgYnl0ZXMgZnJvbSB0aGUNCisgKiBidWZmZXIncyBkYXRhIHN0b3JhZ2UgYXJlYS4NCisgKi8NCitzdGF0aWMgc2l6ZV90IHBydlJlYWRNZXNzYWdlRnJvbUJ1ZmZlciggU3RyZWFtQnVmZmVyX3QgKnB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQl2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJCQkJc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisJCQkJCQkJCQkJc2l6ZV90IHhCeXRlc0F2YWlsYWJsZSwNCisJCQkJCQkJCQkJc2l6ZV90IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIElmIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGJlaW5nIHVzZWQgYXMgYSBtZXNzYWdlIGJ1ZmZlciwgdGhlbiB3cml0ZXMgYW4gZW50aXJlDQorICogbWVzc2FnZSB0byB0aGUgYnVmZmVyLiAgSWYgdGhlIHN0cmVhbSBidWZmZXIgaXMgYmVpbmcgdXNlZCBhcyBhIHN0cmVhbQ0KKyAqIGJ1ZmZlciB0aGVuIHdyaXRlIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUgdG8gdGhlIGJ1ZmZlci4NCisgKiBwcnZXcml0ZUJ5dGVzdG9CdWZmZXIoKSBpcyBjYWxsZWQgdG8gYWN0dWFsbHkgc2VuZCB0aGUgYnl0ZXMgdG8gdGhlIGJ1ZmZlcidzDQorICogZGF0YSBzdG9yYWdlIGFyZWEuDQorICovDQorc3RhdGljIHNpemVfdCBwcnZXcml0ZU1lc3NhZ2VUb0J1ZmZlciggIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCWNvbnN0IHZvaWQgKiBwdlR4RGF0YSwNCisJCQkJCQkJCQkJc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkJCXNpemVfdCB4U3BhY2UsDQorCQkJCQkJCQkJCXNpemVfdCB4UmVxdWlyZWRTcGFjZSApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBSZWFkIHhNYXhDb3VudCBieXRlcyBmcm9tIHRoZSBweFN0cmVhbUJ1ZmZlciBtZXNzYWdlIGJ1ZmZlciBhbmQgd3JpdGUgdGhlbQ0KKyAqIHRvIHB1Y0RhdGEuDQorICovDQorc3RhdGljIHNpemVfdCBwcnZSZWFkQnl0ZXNGcm9tQnVmZmVyKCBTdHJlYW1CdWZmZXJfdCAqcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJICB1aW50OF90ICpwdWNEYXRhLA0KKwkJCQkJCQkJCSAgc2l6ZV90IHhNYXhDb3VudCwNCisJCQkJCQkJCQkgIHNpemVfdCB4Qnl0ZXNBdmFpbGFibGUgKTsgUFJJVklMRUdFRF9GVU5DVElPTg0KKw0KKy8qDQorICogQ2FsbGVkIGJ5IGJvdGggcHhTdHJlYW1CdWZmZXJDcmVhdGUoKSBhbmQgcHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoKSB0bw0KKyAqIGluaXRpYWxpc2UgdGhlIG1lbWJlcnMgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgc3RyZWFtIGJ1ZmZlciBzdHJ1Y3R1cmUuDQorICovDQorc3RhdGljIHZvaWQgcHJ2SW5pdGlhbGlzZU5ld1N0cmVhbUJ1ZmZlciggU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkJICB1aW50OF90ICogY29uc3QgcHVjQnVmZmVyLA0KKwkJCQkJCQkJCQkgIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKwkJCQkJCQkJCQkgIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsDQorCQkJCQkJCQkJCSAgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoIGNvbmZpZ1NVUFBPUlRfRFlOQU1JQ19BTExPQ0FUSU9OID09IDEgKQ0KKw0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciApDQorCXsNCisJdWludDhfdCAqcHVjQWxsb2NhdGVkTWVtb3J5Ow0KKw0KKwkJLyogSW4gY2FzZSB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBnb2luZyB0byBiZSB1c2VkIGFzIGEgbWVzc2FnZSBidWZmZXINCisJCSh0aGF0IGlzLCBpdCB3aWxsIGhvbGQgZGlzY3JldGUgbWVzc2FnZXMgd2l0aCBhIGxpdHRsZSBtZXRhIGRhdGEgdGhhdA0KKwkJc2F5cyBob3cgYmlnIHRoZSBuZXh0IG1lc3NhZ2UgaXMpIGNoZWNrIHRoZSBidWZmZXIgd2lsbCBiZSBsYXJnZSBlbm91Z2gNCisJCXRvIGhvbGQgYXQgbGVhc3Qgb25lIG1lc3NhZ2UuICovDQorCQljb25maWdBU1NFUlQoIHhCdWZmZXJTaXplQnl0ZXMgPiBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIICk7DQorCQljb25maWdBU1NFUlQoIHhUcmlnZ2VyTGV2ZWxCeXRlcyA8PSB4QnVmZmVyU2l6ZUJ5dGVzICk7DQorDQorCQkvKiBBIHRyaWdnZXIgbGV2ZWwgb2YgMCB3b3VsZCBjYXVzZSBhIHdhaXRpbmcgdGFzayB0byB1bmJsb2NrIGV2ZW4gd2hlbg0KKwkJdGhlIGJ1ZmZlciB3YXMgZW1wdHkuICovDQorCQlpZiggeFRyaWdnZXJMZXZlbEJ5dGVzID09ICggc2l6ZV90ICkgMCApDQorCQl7DQorCQkJeFRyaWdnZXJMZXZlbEJ5dGVzID0gKCBzaXplX3QgKSAxOyAvKmxpbnQgIWU5MDQ0IFBhcmFtZXRlciBtb2RpZmllZCB0byBlbnN1cmUgaXQgZG9lc24ndCBoYXZlIGEgZGFuZ2Vyb3VzIHZhbHVlLiAqLw0KKwkJfQ0KKw0KKwkJLyogQSBzdHJlYW0gYnVmZmVyIHJlcXVpcmVzIGEgU3RyZWFtQnVmZmVyX3Qgc3RydWN0dXJlIGFuZCBhIGJ1ZmZlci4NCisJCUJvdGggYXJlIGFsbG9jYXRlZCBpbiBhIHNpbmdsZSBjYWxsIHRvIHB2UG9ydE1hbGxvYygpLiAgVGhlDQorCQlTdHJlYW1CdWZmZXJfdCBzdHJ1Y3R1cmUgaXMgcGxhY2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeQ0KKwkJYW5kIHRoZSBidWZmZXIgZm9sbG93cyBpbW1lZGlhdGVseSBhZnRlci4gIFRoZSByZXF1ZXN0ZWQgc2l6ZSBpcw0KKwkJaW5jcmVtZW50ZWQgc28gdGhlIGZyZWUgc3BhY2UgaXMgcmV0dXJuZWQgYXMgdGhlIHVzZXIgd291bGQgZXhwZWN0IC0NCisJCXRoaXMgaXMgYSBxdWlyayBvZiB0aGUgaW1wbGVtZW50YXRpb24gdGhhdCBtZWFucyBvdGhlcndpc2UgdGhlIGZyZWUNCisJCXNwYWNlIHdvdWxkIGJlIHJlcG9ydGVkIGFzIG9uZSBieXRlIHNtYWxsZXIgdGhhbiB3b3VsZCBiZSBsb2dpY2FsbHkNCisJCWV4cGVjdGVkLiAqLw0KKwkJeEJ1ZmZlclNpemVCeXRlcysrOw0KKwkJcHVjQWxsb2NhdGVkTWVtb3J5ID0gKCB1aW50OF90ICogKSBwdlBvcnRNYWxsb2MoIHhCdWZmZXJTaXplQnl0ZXMgKyBzaXplb2YoIFN0cmVhbUJ1ZmZlcl90ICkgKTsgLypsaW50ICFlOTA3OSBtYWxsb2MoKSBvbmx5IHJldHVybnMgdm9pZCouICovDQorDQorCQlpZiggcHVjQWxsb2NhdGVkTWVtb3J5ICE9IE5VTEwgKQ0KKwkJew0KKwkJCXBydkluaXRpYWxpc2VOZXdTdHJlYW1CdWZmZXIoICggU3RyZWFtQnVmZmVyX3QgKiApIHB1Y0FsbG9jYXRlZE1lbW9yeSwgLyogU3RydWN0dXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gKi8gLypsaW50ICFlOTA4NyBTYWZlIGNhc3QgYXMgYWxsb2NhdGVkIG1lbW9yeSBpcyBhbGlnbmVkLiAqLyAvKmxpbnQgIWU4MjYgQXJlYSBpcyBub3QgdG9vIHNtYWxsIGFuZCBhbGlnbm1lbnQgaXMgZ3VhcmFudGVlZCBwcm92aWRlZCBtYWxsb2MoKSBiZWhhdmVzIGFzIGV4cGVjdGVkIGFuZCByZXR1cm5zIGFsaWduZWQgYnVmZmVyLiAqLw0KKwkJCQkJCQkJCQkgICBwdWNBbGxvY2F0ZWRNZW1vcnkgKyBzaXplb2YoIFN0cmVhbUJ1ZmZlcl90ICksICAvKiBTdG9yYWdlIGFyZWEgZm9sbG93cy4gKi8gLypsaW50ICFlOTAxNiBJbmRleGluZyBwYXN0IHN0cnVjdHVyZSB2YWxpZCBmb3IgdWludDhfdCBwb2ludGVyLCBhbHNvIHN0b3JhZ2UgYXJlYSBoYXMgbm8gYWxpZ25tZW50IHJlcXVpcmVtZW50LiAqLw0KKwkJCQkJCQkJCQkgICB4QnVmZmVyU2l6ZUJ5dGVzLA0KKwkJCQkJCQkJCQkgICB4VHJpZ2dlckxldmVsQnl0ZXMsDQorCQkJCQkJCQkJCSAgIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisNCisJCQl0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFKCAoICggU3RyZWFtQnVmZmVyX3QgKiApIHB1Y0FsbG9jYXRlZE1lbW9yeSApLCB4SXNNZXNzYWdlQnVmZmVyICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9GQUlMRUQoIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisJCX0NCisNCisJCXJldHVybiAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICogKSBwdWNBbGxvY2F0ZWRNZW1vcnk7IC8qbGludCAhZTkwODcgIWU4MjYgU2FmZSBjYXN0IGFzIGFsbG9jYXRlZCBtZW1vcnkgaXMgYWxpZ25lZC4gKi8NCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCisNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKwkJCQkJCQkJCQkJCQkJICAgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywNCisJCQkJCQkJCQkJCQkJCSAgIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciwNCisJCQkJCQkJCQkJCQkJCSAgIHVpbnQ4X3QgKiBjb25zdCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSwNCisJCQkJCQkJCQkJCQkJCSAgIFN0YXRpY1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKQ0KKwl7DQorCVN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSBweFN0YXRpY1N0cmVhbUJ1ZmZlcjsgLypsaW50ICFlNzQwICFlOTA4NyBTYWZlIGNhc3QgYXMgU3RhdGljU3RyZWFtQnVmZmVyX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCB4UmV0dXJuOw0KKw0KKwkJY29uZmlnQVNTRVJUKCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSApOw0KKwkJY29uZmlnQVNTRVJUKCBweFN0YXRpY1N0cmVhbUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4VHJpZ2dlckxldmVsQnl0ZXMgPD0geEJ1ZmZlclNpemVCeXRlcyApOw0KKw0KKwkJLyogQSB0cmlnZ2VyIGxldmVsIG9mIDAgd291bGQgY2F1c2UgYSB3YWl0aW5nIHRhc2sgdG8gdW5ibG9jayBldmVuIHdoZW4NCisJCXRoZSBidWZmZXIgd2FzIGVtcHR5LiAqLw0KKwkJaWYoIHhUcmlnZ2VyTGV2ZWxCeXRlcyA9PSAoIHNpemVfdCApIDAgKQ0KKwkJew0KKwkJCXhUcmlnZ2VyTGV2ZWxCeXRlcyA9ICggc2l6ZV90ICkgMTsgLypsaW50ICFlOTA0NCBGdW5jdGlvbiBwYXJhbWV0ZXIgZGVsaWJlcmF0ZWx5IG1vZGlmaWVkIHRvIGVuc3VyZSBpdCBpcyBpbiByYW5nZS4gKi8NCisJCX0NCisNCisJCS8qIEluIGNhc2UgdGhlIHN0cmVhbSBidWZmZXIgaXMgZ29pbmcgdG8gYmUgdXNlZCBhcyBhIG1lc3NhZ2UgYnVmZmVyDQorCQkodGhhdCBpcywgaXQgd2lsbCBob2xkIGRpc2NyZXRlIG1lc3NhZ2VzIHdpdGggYSBsaXR0bGUgbWV0YSBkYXRhIHRoYXQNCisJCXNheXMgaG93IGJpZyB0aGUgbmV4dCBtZXNzYWdlIGlzKSBjaGVjayB0aGUgYnVmZmVyIHdpbGwgYmUgbGFyZ2UgZW5vdWdoDQorCQl0byBob2xkIGF0IGxlYXN0IG9uZSBtZXNzYWdlLiAqLw0KKwkJY29uZmlnQVNTRVJUKCB4QnVmZmVyU2l6ZUJ5dGVzID4gc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKw0KKwkJI2lmKCBjb25maWdBU1NFUlRfREVGSU5FRCA9PSAxICkNCisJCXsNCisJCQkvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIHVzZWQgdG8gZGVjbGFyZSBhDQorCQkJdmFyaWFibGUgb2YgdHlwZSBTdGF0aWNTdHJlYW1CdWZmZXJfdCBlcXVhbHMgdGhlIHNpemUgb2YgdGhlIHJlYWwNCisJCQltZXNzYWdlIGJ1ZmZlciBzdHJ1Y3R1cmUuICovDQorCQkJdm9sYXRpbGUgc2l6ZV90IHhTaXplID0gc2l6ZW9mKCBTdGF0aWNTdHJlYW1CdWZmZXJfdCApOw0KKwkJCWNvbmZpZ0FTU0VSVCggeFNpemUgPT0gc2l6ZW9mKCBTdHJlYW1CdWZmZXJfdCApICk7DQorCQl9DQorCQkjZW5kaWYgLyogY29uZmlnQVNTRVJUX0RFRklORUQgKi8NCisNCisJCWlmKCAoIHB1Y1N0cmVhbUJ1ZmZlclN0b3JhZ2VBcmVhICE9IE5VTEwgKSAmJiAoIHB4U3RhdGljU3RyZWFtQnVmZmVyICE9IE5VTEwgKSApDQorCQl7DQorCQkJcHJ2SW5pdGlhbGlzZU5ld1N0cmVhbUJ1ZmZlciggcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCSAgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsDQorCQkJCQkJCQkJCSAgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJICB4VHJpZ2dlckxldmVsQnl0ZXMsDQorCQkJCQkJCQkJCSAgeElzTWVzc2FnZUJ1ZmZlciApOw0KKw0KKwkJCS8qIFJlbWVtYmVyIHRoaXMgd2FzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGluIGNhc2UgaXQgaXMgZXZlciBkZWxldGVkDQorCQkJYWdhaW4uICovDQorCQkJcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgfD0gc2JGTEFHU19JU19TVEFUSUNBTExZX0FMTE9DQVRFRDsNCisNCisJCQl0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFKCBweFN0cmVhbUJ1ZmZlciwgeElzTWVzc2FnZUJ1ZmZlciApOw0KKw0KKwkJCXhSZXR1cm4gPSAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgcHhTdGF0aWNTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgRGF0YSBoaWRpbmcgcmVxdWlyZXMgY2FzdCB0byBvcGFxdWUgdHlwZS4gKi8NCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl4UmV0dXJuID0gTlVMTDsNCisJCQl0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFX1NUQVRJQ19GQUlMRUQoIHhSZXR1cm4sIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisJCX0NCisNCisJCXJldHVybiB4UmV0dXJuOw0KKwl9DQorDQorI2VuZGlmIC8qICggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZTdHJlYW1CdWZmZXJEZWxldGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitTdHJlYW1CdWZmZXJfdCAqIHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCisNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwl0cmFjZVNUUkVBTV9CVUZGRVJfREVMRVRFKCB4U3RyZWFtQnVmZmVyICk7DQorDQorCWlmKCAoIHB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzICYgc2JGTEFHU19JU19TVEFUSUNBTExZX0FMTE9DQVRFRCApID09ICggdWludDhfdCApIHBkRkFMU0UgKQ0KKwl7DQorCQkjaWYoIGNvbmZpZ1NVUFBPUlRfRFlOQU1JQ19BTExPQ0FUSU9OID09IDEgKQ0KKwkJew0KKwkJCS8qIEJvdGggdGhlIHN0cnVjdHVyZSBhbmQgdGhlIGJ1ZmZlciB3ZXJlIGFsbG9jYXRlZCB1c2luZyBhIHNpbmdsZSBjYWxsDQorCQkJdG8gcHZQb3J0TWFsbG9jKCksIGhlbmNlIG9ubHkgb25lIGNhbGwgdG8gdlBvcnRGcmVlKCkgaXMgcmVxdWlyZWQuICovDQorCQkJdlBvcnRGcmVlKCAoIHZvaWQgKiApIHB4U3RyZWFtQnVmZmVyICk7IC8qbGludCAhZTkwODcgU3RhbmRhcmQgZnJlZSgpIHNlbWFudGljcyByZXF1aXJlIHZvaWQgKiwgcGx1cyBweFN0cmVhbUJ1ZmZlciB3YXMgYWxsb2NhdGVkIGJ5IHB2UG9ydE1hbGxvYygpLiAqLw0KKwkJfQ0KKwkJI2Vsc2UNCisJCXsNCisJCQkvKiBTaG91bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBoZXJlLCB1Y0ZsYWdzIG11c3QgYmUgY29ycnVwdC4NCisJCQlGb3JjZSBhbiBhc3NlcnQuICovDQorCQkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyID09ICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB+MCApOw0KKwkJfQ0KKwkJI2VuZGlmDQorCX0NCisJZWxzZQ0KKwl7DQorCQkvKiBUaGUgc3RydWN0dXJlIGFuZCBidWZmZXIgd2VyZSBub3QgYWxsb2NhdGVkIGR5bmFtaWNhbGx5IGFuZCBjYW5ub3QgYmUNCisJCWZyZWVkIC0ganVzdCBzY3J1YiB0aGUgc3RydWN0dXJlIHNvIGZ1dHVyZSB1c2Ugd2lsbCBhc3NlcnQuICovDQorCQltZW1zZXQoIHB4U3RyZWFtQnVmZmVyLCAweDAwLCBzaXplb2YoIFN0cmVhbUJ1ZmZlcl90ICkgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJSZXNldCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK0Jhc2VUeXBlX3QgeFJldHVybiA9IHBkRkFJTCwgeElzTWVzc2FnZUJ1ZmZlcjsNCisNCisjaWYoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisJVUJhc2VUeXBlX3QgdXhTdHJlYW1CdWZmZXJOdW1iZXI7DQorI2VuZGlmDQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJI2lmKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorCXsNCisJCS8qIFN0b3JlIHRoZSBzdHJlYW0gYnVmZmVyIG51bWJlciBzbyBpdCBjYW4gYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlDQorCQlyZXNldC4gKi8NCisJCXV4U3RyZWFtQnVmZmVyTnVtYmVyID0gcHhTdHJlYW1CdWZmZXItPnV4U3RyZWFtQnVmZmVyTnVtYmVyOw0KKwl9DQorCSNlbmRpZg0KKw0KKwkvKiBDYW4gb25seSByZXNldCBhIG1lc3NhZ2UgYnVmZmVyIGlmIHRoZXJlIGFyZSBubyB0YXNrcyBibG9ja2VkIG9uIGl0LiAqLw0KKwlpZiggcHhTdHJlYW1CdWZmZXItPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9PSBOVUxMICkNCisJew0KKwkJaWYoIHB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1NlbmQgPT0gTlVMTCApDQorCQl7DQorCQkJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCQkJew0KKwkJCQl4SXNNZXNzYWdlQnVmZmVyID0gcGRUUlVFOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQl4SXNNZXNzYWdlQnVmZmVyID0gcGRGQUxTRTsNCisJCQl9DQorDQorCQkJcHJ2SW5pdGlhbGlzZU5ld1N0cmVhbUJ1ZmZlciggcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCSAgcHhTdHJlYW1CdWZmZXItPnB1Y0J1ZmZlciwNCisJCQkJCQkJCQkJICBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCwNCisJCQkJCQkJCQkJICBweFN0cmVhbUJ1ZmZlci0+eFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkgIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisJCQl4UmV0dXJuID0gcGRQQVNTOw0KKw0KKwkJCSNpZiggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwkJCXsNCisJCQkJcHhTdHJlYW1CdWZmZXItPnV4U3RyZWFtQnVmZmVyTnVtYmVyID0gdXhTdHJlYW1CdWZmZXJOdW1iZXI7DQorCQkJfQ0KKwkJCSNlbmRpZg0KKw0KKwkJCXRyYWNlU1RSRUFNX0JVRkZFUl9SRVNFVCggeFN0cmVhbUJ1ZmZlciApOw0KKwkJfQ0KKwl9DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHNpemVfdCB4VHJpZ2dlckxldmVsICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIEl0IGlzIG5vdCB2YWxpZCBmb3IgdGhlIHRyaWdnZXIgbGV2ZWwgdG8gYmUgMC4gKi8NCisJaWYoIHhUcmlnZ2VyTGV2ZWwgPT0gKCBzaXplX3QgKSAwICkNCisJew0KKwkJeFRyaWdnZXJMZXZlbCA9ICggc2l6ZV90ICkgMTsgLypsaW50ICFlOTA0NCBQYXJhbWV0ZXIgbW9kaWZpZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaGF2ZSBhIGRhbmdlcm91cyB2YWx1ZS4gKi8NCisJfQ0KKw0KKwkvKiBUaGUgdHJpZ2dlciBsZXZlbCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBpbiB0aGUgc3RyZWFtDQorCWJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgd2FpdGluZyBmb3IgZGF0YSBpcyB1bmJsb2NrZWQuICovDQorCWlmKCB4VHJpZ2dlckxldmVsIDw9IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICkNCisJew0KKwkJcHhTdHJlYW1CdWZmZXItPnhUcmlnZ2VyTGV2ZWxCeXRlcyA9IHhUcmlnZ2VyTGV2ZWw7DQorCQl4UmV0dXJuID0gcGRQQVNTOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeFJldHVybiA9IHBkRkFMU0U7DQorCX0NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorc2l6ZV90IHhTcGFjZTsNCisNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwl4U3BhY2UgPSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCArIHB4U3RyZWFtQnVmZmVyLT54VGFpbDsNCisJeFNwYWNlIC09IHB4U3RyZWFtQnVmZmVyLT54SGVhZDsNCisJeFNwYWNlIC09ICggc2l6ZV90ICkgMTsNCisNCisJaWYoIHhTcGFjZSA+PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApDQorCXsNCisJCXhTcGFjZSAtPSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aDsNCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwlyZXR1cm4geFNwYWNlOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgeFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorc2l6ZV90IHhSZXR1cm47DQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJeFJldHVybiA9IHBydkJ5dGVzSW5CdWZmZXIoIHB4U3RyZWFtQnVmZmVyICk7DQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgeFN0cmVhbUJ1ZmZlclNlbmQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJICBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisJCQkJCQkgIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKwkJCQkJCSAgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKQ0KK3sNCitTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCitzaXplX3QgeFJldHVybiwgeFNwYWNlID0gMDsNCitzaXplX3QgeFJlcXVpcmVkU3BhY2UgPSB4RGF0YUxlbmd0aEJ5dGVzOw0KK1RpbWVPdXRfdCB4VGltZU91dDsNCisNCisJY29uZmlnQVNTRVJUKCBwdlR4RGF0YSApOw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIFRoaXMgc2VuZCBmdW5jdGlvbiBpcyB1c2VkIHRvIHdyaXRlIHRvIGJvdGggbWVzc2FnZSBidWZmZXJzIGFuZCBzdHJlYW0NCisJYnVmZmVycy4gIElmIHRoaXMgaXMgYSBtZXNzYWdlIGJ1ZmZlciB0aGVuIHRoZSBzcGFjZSBuZWVkZWQgbXVzdCBiZQ0KKwlpbmNyZWFzZWQgYnkgdGhlIGFtb3VudCBvZiBieXRlcyBuZWVkZWQgdG8gc3RvcmUgdGhlIGxlbmd0aCBvZiB0aGUNCisJbWVzc2FnZS4gKi8NCisJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCXhSZXF1aXJlZFNwYWNlICs9IHNiQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEg7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJaWYoIHhUaWNrc1RvV2FpdCAhPSAoIFRpY2tUeXBlX3QgKSAwICkNCisJew0KKwkJdlRhc2tTZXRUaW1lT3V0U3RhdGUoICZ4VGltZU91dCApOw0KKw0KKwkJZG8NCisJCXsNCisJCQkvKiBXYWl0IHVudGlsIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMgYXJlIGZyZWUgaW4gdGhlIG1lc3NhZ2UNCisJCQlidWZmZXIuICovDQorCQkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQkJew0KKwkJCQl4U3BhY2UgPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkJCQlpZiggeFNwYWNlIDwgeFJlcXVpcmVkU3BhY2UgKQ0KKwkJCQl7DQorCQkJCQkvKiBDbGVhciBub3RpZmljYXRpb24gc3RhdGUgYXMgZ29pbmcgdG8gd2FpdCBmb3Igc3BhY2UuICovDQorCQkJCQkoIHZvaWQgKSB4VGFza05vdGlmeVN0YXRlQ2xlYXIoIE5VTEwgKTsNCisNCisJCQkJCS8qIFNob3VsZCBvbmx5IGJlIG9uZSB3cml0ZXIuICovDQorCQkJCQljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1NlbmQgPT0gTlVMTCApOw0KKwkJCQkJcHhTdHJlYW1CdWZmZXItPnhUYXNrV2FpdGluZ1RvU2VuZCA9IHhUYXNrR2V0Q3VycmVudFRhc2tIYW5kbGUoKTsNCisJCQkJfQ0KKwkJCQllbHNlDQorCQkJCXsNCisJCQkJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKw0KKwkJCXRyYWNlQkxPQ0tJTkdfT05fU1RSRUFNX0JVRkZFUl9TRU5EKCB4U3RyZWFtQnVmZmVyICk7DQorCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlXYWl0KCAoIHVpbnQzMl90ICkgMCwgVUlOVDMyX01BWCwgTlVMTCwgeFRpY2tzVG9XYWl0ICk7DQorCQkJcHhTdHJlYW1CdWZmZXItPnhUYXNrV2FpdGluZ1RvU2VuZCA9IE5VTEw7DQorDQorCQl9IHdoaWxlKCB4VGFza0NoZWNrRm9yVGltZU91dCggJnhUaW1lT3V0LCAmeFRpY2tzVG9XYWl0ICkgPT0gcGRGQUxTRSApOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCWlmKCB4U3BhY2UgPT0gKCBzaXplX3QgKSAwICkNCisJew0KKwkJeFNwYWNlID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggcHhTdHJlYW1CdWZmZXIgKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwl4UmV0dXJuID0gcHJ2V3JpdGVNZXNzYWdlVG9CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcywgeFNwYWNlLCB4UmVxdWlyZWRTcGFjZSApOw0KKw0KKwlpZiggeFJldHVybiA+ICggc2l6ZV90ICkgMCApDQorCXsNCisJCXRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EKCB4U3RyZWFtQnVmZmVyLCB4UmV0dXJuICk7DQorDQorCQkvKiBXYXMgYSB0YXNrIHdhaXRpbmcgZm9yIHRoZSBkYXRhPyAqLw0KKwkJaWYoIHBydkJ5dGVzSW5CdWZmZXIoIHB4U3RyZWFtQnVmZmVyICkgPj0gcHhTdHJlYW1CdWZmZXItPnhUcmlnZ2VyTGV2ZWxCeXRlcyApDQorCQl7DQorCQkJc2JTRU5EX0NPTVBMRVRFRCggcHhTdHJlYW1CdWZmZXIgKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl0cmFjZVNUUkVBTV9CVUZGRVJfU0VORF9GQUlMRUQoIHhTdHJlYW1CdWZmZXIgKTsNCisJfQ0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCSBjb25zdCB2b2lkICpwdlR4RGF0YSwNCisJCQkJCQkJCSBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisJCQkJCQkJCSBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK3NpemVfdCB4UmV0dXJuLCB4U3BhY2U7DQorc2l6ZV90IHhSZXF1aXJlZFNwYWNlID0geERhdGFMZW5ndGhCeXRlczsNCisNCisJY29uZmlnQVNTRVJUKCBwdlR4RGF0YSApOw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIFRoaXMgc2VuZCBmdW5jdGlvbiBpcyB1c2VkIHRvIHdyaXRlIHRvIGJvdGggbWVzc2FnZSBidWZmZXJzIGFuZCBzdHJlYW0NCisJYnVmZmVycy4gIElmIHRoaXMgaXMgYSBtZXNzYWdlIGJ1ZmZlciB0aGVuIHRoZSBzcGFjZSBuZWVkZWQgbXVzdCBiZQ0KKwlpbmNyZWFzZWQgYnkgdGhlIGFtb3VudCBvZiBieXRlcyBuZWVkZWQgdG8gc3RvcmUgdGhlIGxlbmd0aCBvZiB0aGUNCisJbWVzc2FnZS4gKi8NCisJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCXhSZXF1aXJlZFNwYWNlICs9IHNiQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEg7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJeFNwYWNlID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggcHhTdHJlYW1CdWZmZXIgKTsNCisJeFJldHVybiA9IHBydldyaXRlTWVzc2FnZVRvQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgcHZUeERhdGEsIHhEYXRhTGVuZ3RoQnl0ZXMsIHhTcGFjZSwgeFJlcXVpcmVkU3BhY2UgKTsNCisNCisJaWYoIHhSZXR1cm4gPiAoIHNpemVfdCApIDAgKQ0KKwl7DQorCQkvKiBXYXMgYSB0YXNrIHdhaXRpbmcgZm9yIHRoZSBkYXRhPyAqLw0KKwkJaWYoIHBydkJ5dGVzSW5CdWZmZXIoIHB4U3RyZWFtQnVmZmVyICkgPj0gcHhTdHJlYW1CdWZmZXItPnhUcmlnZ2VyTGV2ZWxCeXRlcyApDQorCQl7DQorCQkJc2JTRU5EX0NPTVBMRVRFX0ZST01fSVNSKCBweFN0cmVhbUJ1ZmZlciwgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwl0cmFjZVNUUkVBTV9CVUZGRVJfU0VORF9GUk9NX0lTUiggeFN0cmVhbUJ1ZmZlciwgeFJldHVybiApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHNpemVfdCBwcnZXcml0ZU1lc3NhZ2VUb0J1ZmZlciggU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkgICBjb25zdCB2b2lkICogcHZUeERhdGEsDQorCQkJCQkJCQkJICAgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkJICAgc2l6ZV90IHhTcGFjZSwNCisJCQkJCQkJCQkgICBzaXplX3QgeFJlcXVpcmVkU3BhY2UgKQ0KK3sNCisJQmFzZVR5cGVfdCB4U2hvdWxkV3JpdGU7DQorCXNpemVfdCB4UmV0dXJuOw0KKw0KKwlpZiggeFNwYWNlID09ICggc2l6ZV90ICkgMCApDQorCXsNCisJCS8qIERvZXNuJ3QgbWF0dGVyIGlmIHRoaXMgaXMgYSBzdHJlYW0gYnVmZmVyIG9yIGEgbWVzc2FnZSBidWZmZXIsIHRoZXJlDQorCQlpcyBubyBzcGFjZSB0byB3cml0ZS4gKi8NCisJCXhTaG91bGRXcml0ZSA9IHBkRkFMU0U7DQorCX0NCisJZWxzZSBpZiggKCBweFN0cmVhbUJ1ZmZlci0+dWNGbGFncyAmIHNiRkxBR1NfSVNfTUVTU0FHRV9CVUZGRVIgKSA9PSAoIHVpbnQ4X3QgKSAwICkNCisJew0KKwkJLyogVGhpcyBpcyBhIHN0cmVhbSBidWZmZXIsIGFzIG9wcG9zZWQgdG8gYSBtZXNzYWdlIGJ1ZmZlciwgc28gd3JpdGluZyBhDQorCQlzdHJlYW0gb2YgYnl0ZXMgcmF0aGVyIHRoYW4gZGlzY3JldGUgbWVzc2FnZXMuICBXcml0ZSBhcyBtYW55IGJ5dGVzIGFzDQorCQlwb3NzaWJsZS4gKi8NCisJCXhTaG91bGRXcml0ZSA9IHBkVFJVRTsNCisJCXhEYXRhTGVuZ3RoQnl0ZXMgPSBjb25maWdNSU4oIHhEYXRhTGVuZ3RoQnl0ZXMsIHhTcGFjZSApOyAvKmxpbnQgIWU5MDQ0IEZ1bmN0aW9uIHBhcmFtZXRlciBtb2RpZmllZCB0byBlbnN1cmUgaXQgaXMgY2FwcGVkIHRvIGF2YWlsYWJsZSBzcGFjZS4gKi8NCisJfQ0KKwllbHNlIGlmKCB4U3BhY2UgPj0geFJlcXVpcmVkU3BhY2UgKQ0KKwl7DQorCQkvKiBUaGlzIGlzIGEgbWVzc2FnZSBidWZmZXIsIGFzIG9wcG9zZWQgdG8gYSBzdHJlYW0gYnVmZmVyLCBhbmQgdGhlcmUNCisJCWlzIGVub3VnaCBzcGFjZSB0byB3cml0ZSBib3RoIHRoZSBtZXNzYWdlIGxlbmd0aCBhbmQgdGhlIG1lc3NhZ2UgaXRzZWxmDQorCQlpbnRvIHRoZSBidWZmZXIuICBTdGFydCBieSB3cml0aW5nIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEsIHRoZSBkYXRhDQorCQlpdHNlbGYgd2lsbCBiZSB3cml0dGVuIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24uICovDQorCQl4U2hvdWxkV3JpdGUgPSBwZFRSVUU7DQorCQkoIHZvaWQgKSBwcnZXcml0ZUJ5dGVzVG9CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHVpbnQ4X3QgKiApICYoIHhEYXRhTGVuZ3RoQnl0ZXMgKSwgc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogVGhlcmUgaXMgc3BhY2UgYXZhaWxhYmxlLCBidXQgbm90IGVub3VnaCBzcGFjZS4gKi8NCisJCXhTaG91bGRXcml0ZSA9IHBkRkFMU0U7DQorCX0NCisNCisJaWYoIHhTaG91bGRXcml0ZSAhPSBwZEZBTFNFICkNCisJew0KKwkJLyogV3JpdGVzIHRoZSBkYXRhIGl0c2VsZi4gKi8NCisJCXhSZXR1cm4gPSBwcnZXcml0ZUJ5dGVzVG9CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHVpbnQ4X3QgKiApIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzICk7IC8qbGludCAhZTkwNzkgU3RvcmFnZSBidWZmZXIgaXMgaW1wbGVtZW50ZWQgYXMgdWludDhfdCBmb3IgZWFzZSBvZiBzaXppbmcsIGFsaWdobWVudCBhbmQgYWNjZXNzLiAqLw0KKwl9DQorCWVsc2UNCisJew0KKwkJeFJldHVybiA9IDA7DQorCX0NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJIHZvaWQgKnB2UnhEYXRhLA0KKwkJCQkJCQkgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisJCQkJCQkJIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorc2l6ZV90IHhSZWNlaXZlZExlbmd0aCA9IDAsIHhCeXRlc0F2YWlsYWJsZSwgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGg7DQorDQorCWNvbmZpZ0FTU0VSVCggcHZSeERhdGEgKTsNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBUaGlzIHJlY2VpdmUgZnVuY3Rpb24gaXMgdXNlZCBieSBib3RoIG1lc3NhZ2UgYnVmZmVycywgd2hpY2ggc3RvcmUNCisJZGlzY3JldGUgbWVzc2FnZXMsIGFuZCBzdHJlYW0gYnVmZmVycywgd2hpY2ggc3RvcmUgYSBjb250aW51b3VzIHN0cmVhbSBvZg0KKwlieXRlcy4gIERpc2NyZXRlIG1lc3NhZ2VzIGluY2x1ZGUgYW4gYWRkaXRpb25hbA0KKwlzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIIGJ5dGVzIHRoYXQgaG9sZCB0aGUgbGVuZ3RoIG9mIHRoZQ0KKwltZXNzYWdlLiAqLw0KKwlpZiggKCBweFN0cmVhbUJ1ZmZlci0+dWNGbGFncyAmIHNiRkxBR1NfSVNfTUVTU0FHRV9CVUZGRVIgKSAhPSAoIHVpbnQ4X3QgKSAwICkNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSAwOw0KKwl9DQorDQorCWlmKCB4VGlja3NUb1dhaXQgIT0gKCBUaWNrVHlwZV90ICkgMCApDQorCXsNCisJCS8qIENoZWNraW5nIGlmIHRoZXJlIGlzIGRhdGEgYW5kIGNsZWFyaW5nIHRoZSBub3RpZmljYXRpb24gc3RhdGUgbXVzdCBiZQ0KKwkJcGVyZm9ybWVkIGF0b21pY2FsbHkuICovDQorCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisJCXsNCisJCQl4Qnl0ZXNBdmFpbGFibGUgPSBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkJCS8qIElmIHRoaXMgZnVuY3Rpb24gd2FzIGludm9rZWQgYnkgYSBtZXNzYWdlIGJ1ZmZlciByZWFkIHRoZW4NCisJCQl4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCBob2xkcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gaG9sZA0KKwkJCXRoZSBsZW5ndGggb2YgdGhlIG5leHQgZGlzY3JldGUgbWVzc2FnZS4gIElmIHRoaXMgZnVuY3Rpb24gd2FzDQorCQkJaW52b2tlZCBieSBhIHN0cmVhbSBidWZmZXIgcmVhZCB0aGVuIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoIHdpbGwNCisJCQliZSAwLiAqLw0KKwkJCWlmKCB4Qnl0ZXNBdmFpbGFibGUgPD0geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggKQ0KKwkJCXsNCisJCQkJLyogQ2xlYXIgbm90aWZpY2F0aW9uIHN0YXRlIGFzIGdvaW5nIHRvIHdhaXQgZm9yIGRhdGEuICovDQorCQkJCSggdm9pZCApIHhUYXNrTm90aWZ5U3RhdGVDbGVhciggTlVMTCApOw0KKw0KKwkJCQkvKiBTaG91bGQgb25seSBiZSBvbmUgcmVhZGVyLiAqLw0KKwkJCQljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgPT0gTlVMTCApOw0KKwkJCQlweFN0cmVhbUJ1ZmZlci0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlID0geFRhc2tHZXRDdXJyZW50VGFza0hhbmRsZSgpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKwkJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQkJfQ0KKwkJfQ0KKwkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisNCisJCWlmKCB4Qnl0ZXNBdmFpbGFibGUgPD0geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggKQ0KKwkJew0KKwkJCS8qIFdhaXQgZm9yIGRhdGEgdG8gYmUgYXZhaWxhYmxlLiAqLw0KKwkJCXRyYWNlQkxPQ0tJTkdfT05fU1RSRUFNX0JVRkZFUl9SRUNFSVZFKCB4U3RyZWFtQnVmZmVyICk7DQorCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlXYWl0KCAoIHVpbnQzMl90ICkgMCwgVUlOVDMyX01BWCwgTlVMTCwgeFRpY2tzVG9XYWl0ICk7DQorCQkJcHhTdHJlYW1CdWZmZXItPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9IE5VTEw7DQorDQorCQkJLyogUmVjaGVjayB0aGUgZGF0YSBhdmFpbGFibGUgYWZ0ZXIgYmxvY2tpbmcuICovDQorCQkJeEJ5dGVzQXZhaWxhYmxlID0gcHJ2Qnl0ZXNJbkJ1ZmZlciggcHhTdHJlYW1CdWZmZXIgKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQl4Qnl0ZXNBdmFpbGFibGUgPSBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApOw0KKwl9DQorDQorCS8qIFdoZXRoZXIgcmVjZWl2aW5nIGEgZGlzY3JldGUgbWVzc2FnZSAod2hlcmUgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGgNCisJaG9sZHMgdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGxlbmd0aCkgb3IgYSBzdHJlYW0gb2YNCisJYnl0ZXMgKHdoZXJlIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoIGlzIHplcm8pLCB0aGUgbnVtYmVyIG9mIGJ5dGVzDQorCWF2YWlsYWJsZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCB0byBiZSBhYmxlIHRvDQorCXJlYWQgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAqLw0KKwlpZiggeEJ5dGVzQXZhaWxhYmxlID4geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggKQ0KKwl7DQorCQl4UmVjZWl2ZWRMZW5ndGggPSBwcnZSZWFkTWVzc2FnZUZyb21CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCB4Qnl0ZXNBdmFpbGFibGUsIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICk7DQorDQorCQkvKiBXYXMgYSB0YXNrIHdhaXRpbmcgZm9yIHNwYWNlIGluIHRoZSBidWZmZXI/ICovDQorCQlpZiggeFJlY2VpdmVkTGVuZ3RoICE9ICggc2l6ZV90ICkgMCApDQorCQl7DQorCQkJdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkUoIHhTdHJlYW1CdWZmZXIsIHhSZWNlaXZlZExlbmd0aCApOw0KKwkJCXNiUkVDRUlWRV9DT01QTEVURUQoIHB4U3RyZWFtQnVmZmVyICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkVfRkFJTEVEKCB4U3RyZWFtQnVmZmVyICk7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJcmV0dXJuIHhSZWNlaXZlZExlbmd0aDsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQl2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJCQlzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLA0KKwkJCQkJCQkJCUJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorc2l6ZV90IHhSZWNlaXZlZExlbmd0aCA9IDAsIHhCeXRlc0F2YWlsYWJsZSwgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGg7DQorDQorCWNvbmZpZ0FTU0VSVCggcHZSeERhdGEgKTsNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBUaGlzIHJlY2VpdmUgZnVuY3Rpb24gaXMgdXNlZCBieSBib3RoIG1lc3NhZ2UgYnVmZmVycywgd2hpY2ggc3RvcmUNCisJZGlzY3JldGUgbWVzc2FnZXMsIGFuZCBzdHJlYW0gYnVmZmVycywgd2hpY2ggc3RvcmUgYSBjb250aW51b3VzIHN0cmVhbSBvZg0KKwlieXRlcy4gIERpc2NyZXRlIG1lc3NhZ2VzIGluY2x1ZGUgYW4gYWRkaXRpb25hbA0KKwlzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIIGJ5dGVzIHRoYXQgaG9sZCB0aGUgbGVuZ3RoIG9mIHRoZQ0KKwltZXNzYWdlLiAqLw0KKwlpZiggKCBweFN0cmVhbUJ1ZmZlci0+dWNGbGFncyAmIHNiRkxBR1NfSVNfTUVTU0FHRV9CVUZGRVIgKSAhPSAoIHVpbnQ4X3QgKSAwICkNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSAwOw0KKwl9DQorDQorCXhCeXRlc0F2YWlsYWJsZSA9IHBydkJ5dGVzSW5CdWZmZXIoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIFdoZXRoZXIgcmVjZWl2aW5nIGEgZGlzY3JldGUgbWVzc2FnZSAod2hlcmUgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGgNCisJaG9sZHMgdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGxlbmd0aCkgb3IgYSBzdHJlYW0gb2YNCisJYnl0ZXMgKHdoZXJlIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoIGlzIHplcm8pLCB0aGUgbnVtYmVyIG9mIGJ5dGVzDQorCWF2YWlsYWJsZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCB0byBiZSBhYmxlIHRvDQorCXJlYWQgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLiAqLw0KKwlpZiggeEJ5dGVzQXZhaWxhYmxlID4geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggKQ0KKwl7DQorCQl4UmVjZWl2ZWRMZW5ndGggPSBwcnZSZWFkTWVzc2FnZUZyb21CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCB4Qnl0ZXNBdmFpbGFibGUsIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICk7DQorDQorCQkvKiBXYXMgYSB0YXNrIHdhaXRpbmcgZm9yIHNwYWNlIGluIHRoZSBidWZmZXI/ICovDQorCQlpZiggeFJlY2VpdmVkTGVuZ3RoICE9ICggc2l6ZV90ICkgMCApDQorCQl7DQorCQkJc2JSRUNFSVZFX0NPTVBMRVRFRF9GUk9NX0lTUiggcHhTdHJlYW1CdWZmZXIsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkVfRlJPTV9JU1IoIHhTdHJlYW1CdWZmZXIsIHhSZWNlaXZlZExlbmd0aCApOw0KKw0KKwlyZXR1cm4geFJlY2VpdmVkTGVuZ3RoOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgc2l6ZV90IHBydlJlYWRNZXNzYWdlRnJvbUJ1ZmZlciggU3RyZWFtQnVmZmVyX3QgKnB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQl2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJCQkJc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisJCQkJCQkJCQkJc2l6ZV90IHhCeXRlc0F2YWlsYWJsZSwNCisJCQkJCQkJCQkJc2l6ZV90IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkNCit7DQorc2l6ZV90IHhPcmlnaW5hbFRhaWwsIHhSZWNlaXZlZExlbmd0aCwgeE5leHRNZXNzYWdlTGVuZ3RoOw0KKw0KKwlpZiggeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggIT0gKCBzaXplX3QgKSAwICkNCisJew0KKwkJLyogQSBkaXNjcmV0ZSBtZXNzYWdlIGlzIGJlaW5nIHJlY2VpdmVkLiAgRmlyc3QgcmVjZWl2ZSB0aGUgbGVuZ3RoDQorCQlvZiB0aGUgbWVzc2FnZS4gIEEgY29weSBvZiB0aGUgdGFpbCBpcyBzdG9yZWQgc28gdGhlIGJ1ZmZlciBjYW4gYmUNCisJCXJldHVybmVkIHRvIGl0cyBwcmlvciBzdGF0ZSBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGlzIHRvbw0KKwkJbGFyZ2UgZm9yIHRoZSBwcm92aWRlZCBidWZmZXIuICovDQorCQl4T3JpZ2luYWxUYWlsID0gcHhTdHJlYW1CdWZmZXItPnhUYWlsOw0KKwkJKCB2b2lkICkgcHJ2UmVhZEJ5dGVzRnJvbUJ1ZmZlciggcHhTdHJlYW1CdWZmZXIsICggdWludDhfdCAqICkgJnhOZXh0TWVzc2FnZUxlbmd0aCwgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGgsIHhCeXRlc0F2YWlsYWJsZSApOw0KKw0KKwkJLyogUmVkdWNlIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMganVzdA0KKwkJcmVhZCBvdXQuICovDQorCQl4Qnl0ZXNBdmFpbGFibGUgLT0geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGg7DQorDQorCQkvKiBDaGVjayB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gdGhlIGJ1ZmZlciBwcm92aWRlZCBieSB0aGUNCisJCXVzZXIuICovDQorCQlpZiggeE5leHRNZXNzYWdlTGVuZ3RoID4geEJ1ZmZlckxlbmd0aEJ5dGVzICkNCisJCXsNCisJCQkvKiBUaGUgdXNlciBoYXMgcHJvdmlkZWQgaW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlYWQgdGhlIG1lc3NhZ2UNCisJCQlzbyByZXR1cm4gdGhlIGJ1ZmZlciB0byBpdHMgcHJldmlvdXMgc3RhdGUgKHNvIHRoZSBsZW5ndGggb2YNCisJCQl0aGUgbWVzc2FnZSBpcyBpbiB0aGUgYnVmZmVyIGFnYWluKS4gKi8NCisJCQlweFN0cmVhbUJ1ZmZlci0+eFRhaWwgPSB4T3JpZ2luYWxUYWlsOw0KKwkJCXhOZXh0TWVzc2FnZUxlbmd0aCA9IDA7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogQSBzdHJlYW0gb2YgYnl0ZXMgaXMgYmVpbmcgcmVjZWl2ZWQgKGFzIG9wcG9zZWQgdG8gYSBkaXNjcmV0ZQ0KKwkJbWVzc2FnZSksIHNvIHJlYWQgYXMgbWFueSBieXRlcyBhcyBwb3NzaWJsZS4gKi8NCisJCXhOZXh0TWVzc2FnZUxlbmd0aCA9IHhCdWZmZXJMZW5ndGhCeXRlczsNCisJfQ0KKw0KKwkvKiBSZWFkIHRoZSBhY3R1YWwgZGF0YS4gKi8NCisJeFJlY2VpdmVkTGVuZ3RoID0gcHJ2UmVhZEJ5dGVzRnJvbUJ1ZmZlciggcHhTdHJlYW1CdWZmZXIsICggdWludDhfdCAqICkgcHZSeERhdGEsIHhOZXh0TWVzc2FnZUxlbmd0aCwgeEJ5dGVzQXZhaWxhYmxlICk7IC8qbGludCAhZTkwNzkgRGF0YSBzdG9yYWdlIGFyZWEgaXMgaW1wbGVtZW50ZWQgYXMgdWludDhfdCBhcnJheSBmb3IgZWFzZSBvZiBzaXppbmcsIGluZGV4aW5nIGFuZCBhbGlnbm1lbnQuICovDQorDQorCXJldHVybiB4UmVjZWl2ZWRMZW5ndGg7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitjb25zdCBTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCitCYXNlVHlwZV90IHhSZXR1cm47DQorc2l6ZV90IHhUYWlsOw0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIFRydWUgaWYgbm8gYnl0ZXMgYXJlIGF2YWlsYWJsZS4gKi8NCisJeFRhaWwgPSBweFN0cmVhbUJ1ZmZlci0+eFRhaWw7DQorCWlmKCBweFN0cmVhbUJ1ZmZlci0+eEhlYWQgPT0geFRhaWwgKQ0KKwl7DQorCQl4UmV0dXJuID0gcGRUUlVFOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeFJldHVybiA9IHBkRkFMU0U7DQorCX0NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlcklzRnVsbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK0Jhc2VUeXBlX3QgeFJldHVybjsNCitzaXplX3QgeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGg7DQorY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJLyogVGhpcyBnZW5lcmljIHZlcnNpb24gb2YgdGhlIHJlY2VpdmUgZnVuY3Rpb24gaXMgdXNlZCBieSBib3RoIG1lc3NhZ2UNCisJYnVmZmVycywgd2hpY2ggc3RvcmUgZGlzY3JldGUgbWVzc2FnZXMsIGFuZCBzdHJlYW0gYnVmZmVycywgd2hpY2ggc3RvcmUgYQ0KKwljb250aW51b3VzIHN0cmVhbSBvZiBieXRlcy4gIERpc2NyZXRlIG1lc3NhZ2VzIGluY2x1ZGUgYW4gYWRkaXRpb25hbA0KKwlzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIIGJ5dGVzIHRoYXQgaG9sZCB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlLiAqLw0KKwlpZiggKCBweFN0cmVhbUJ1ZmZlci0+dWNGbGFncyAmIHNiRkxBR1NfSVNfTUVTU0FHRV9CVUZGRVIgKSAhPSAoIHVpbnQ4X3QgKSAwICkNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggPSAwOw0KKwl9DQorDQorCS8qIFRydWUgaWYgdGhlIGF2YWlsYWJsZSBzcGFjZSBlcXVhbHMgemVyby4gKi8NCisJaWYoIHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKSA8PSB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCApDQorCXsNCisJCXhSZXR1cm4gPSBwZFRSVUU7DQorCX0NCisJZWxzZQ0KKwl7DQorCQl4UmV0dXJuID0gcGRGQUxTRTsNCisJfQ0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQ0KK3sNCitTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCitCYXNlVHlwZV90IHhSZXR1cm47DQorVUJhc2VUeXBlX3QgdXhTYXZlZEludGVycnVwdFN0YXR1czsNCisNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwl1eFNhdmVkSW50ZXJydXB0U3RhdHVzID0gKCBVQmFzZVR5cGVfdCApIHBvcnRTRVRfSU5URVJSVVBUX01BU0tfRlJPTV9JU1IoKTsNCisJew0KKwkJaWYoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlICE9IE5VTEwgKQ0KKwkJew0KKwkJCSggdm9pZCApIHhUYXNrTm90aWZ5RnJvbUlTUiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUsDQorCQkJCQkJCQkJCSAoIHVpbnQzMl90ICkgMCwNCisJCQkJCQkJCQkJIGVOb0FjdGlvbiwNCisJCQkJCQkJCQkJIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisJCQkoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9IE5VTEw7DQorCQkJeFJldHVybiA9IHBkVFJVRTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl4UmV0dXJuID0gcGRGQUxTRTsNCisJCX0NCisJfQ0KKwlwb3J0Q0xFQVJfSU5URVJSVVBUX01BU0tfRlJPTV9JU1IoIHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXMgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK1VCYXNlVHlwZV90IHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXM7DQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJdXhTYXZlZEludGVycnVwdFN0YXR1cyA9ICggVUJhc2VUeXBlX3QgKSBwb3J0U0VUX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCk7DQorCXsNCisJCWlmKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvU2VuZCAhPSBOVUxMICkNCisJCXsNCisJCQkoIHZvaWQgKSB4VGFza05vdGlmeUZyb21JU1IoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kLA0KKwkJCQkJCQkJCQkgKCB1aW50MzJfdCApIDAsDQorCQkJCQkJCQkJCSBlTm9BY3Rpb24sDQorCQkJCQkJCQkJCSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCQkJKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQgPSBOVUxMOw0KKwkJCXhSZXR1cm4gPSBwZFRSVUU7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJeFJldHVybiA9IHBkRkFMU0U7DQorCQl9DQorCX0NCisJcG9ydENMRUFSX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgc2l6ZV90IHBydldyaXRlQnl0ZXNUb0J1ZmZlciggU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciwgY29uc3QgdWludDhfdCAqcHVjRGF0YSwgc2l6ZV90IHhDb3VudCApDQorew0KK3NpemVfdCB4TmV4dEhlYWQsIHhGaXJzdExlbmd0aDsNCisNCisJY29uZmlnQVNTRVJUKCB4Q291bnQgPiAoIHNpemVfdCApIDAgKTsNCisNCisJeE5leHRIZWFkID0gcHhTdHJlYW1CdWZmZXItPnhIZWFkOw0KKw0KKwkvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBhZGRlZCBpbiB0aGUgZmlyc3Qgd3JpdGUgLQ0KKwl3aGljaCBtYXkgYmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdGhhdCBuZWVkIHRvIGJlIGFkZGVkIGlmDQorCXRoZSBidWZmZXIgd2lsbCB3cmFwIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4gKi8NCisJeEZpcnN0TGVuZ3RoID0gY29uZmlnTUlOKCBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCAtIHhOZXh0SGVhZCwgeENvdW50ICk7DQorDQorCS8qIFdyaXRlIGFzIG1hbnkgYnl0ZXMgYXMgY2FuIGJlIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHdyaXRlLiAqLw0KKwljb25maWdBU1NFUlQoICggeE5leHRIZWFkICsgeEZpcnN0TGVuZ3RoICkgPD0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKTsNCisJbWVtY3B5KCAoIHZvaWQqICkgKCAmKCBweFN0cmVhbUJ1ZmZlci0+cHVjQnVmZmVyWyB4TmV4dEhlYWQgXSApICksICggY29uc3Qgdm9pZCAqICkgcHVjRGF0YSwgeEZpcnN0TGVuZ3RoICk7IC8qbGludCAhZTkwODcgbWVtY3B5KCkgcmVxdWlyZXMgdm9pZCAqLiAqLw0KKw0KKwkvKiBJZiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gd2FzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIHRoYXQgY291bGQgYmUNCisJd3JpdHRlbiBpbiB0aGUgZmlyc3Qgd3JpdGUuLi4gKi8NCisJaWYoIHhDb3VudCA+IHhGaXJzdExlbmd0aCApDQorCXsNCisJCS8qIC4uLnRoZW4gd3JpdGUgdGhlIHJlbWFpbmluZyBieXRlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4gKi8NCisJCWNvbmZpZ0FTU0VSVCggKCB4Q291bnQgLSB4Rmlyc3RMZW5ndGggKSA8PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApOw0KKwkJbWVtY3B5KCAoIHZvaWQgKiApIHB4U3RyZWFtQnVmZmVyLT5wdWNCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgJiggcHVjRGF0YVsgeEZpcnN0TGVuZ3RoIF0gKSwgeENvdW50IC0geEZpcnN0TGVuZ3RoICk7IC8qbGludCAhZTkwODcgbWVtY3B5KCkgcmVxdWlyZXMgdm9pZCAqLiAqLw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXhOZXh0SGVhZCArPSB4Q291bnQ7DQorCWlmKCB4TmV4dEhlYWQgPj0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKQ0KKwl7DQorCQl4TmV4dEhlYWQgLT0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGg7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJcHhTdHJlYW1CdWZmZXItPnhIZWFkID0geE5leHRIZWFkOw0KKw0KKwlyZXR1cm4geENvdW50Ow0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgc2l6ZV90IHBydlJlYWRCeXRlc0Zyb21CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICpweFN0cmVhbUJ1ZmZlciwgdWludDhfdCAqcHVjRGF0YSwgc2l6ZV90IHhNYXhDb3VudCwgc2l6ZV90IHhCeXRlc0F2YWlsYWJsZSApDQorew0KK3NpemVfdCB4Q291bnQsIHhGaXJzdExlbmd0aCwgeE5leHRUYWlsOw0KKw0KKwkvKiBVc2UgdGhlIG1pbmltdW0gb2YgdGhlIHdhbnRlZCBieXRlcyBhbmQgdGhlIGF2YWlsYWJsZSBieXRlcy4gKi8NCisJeENvdW50ID0gY29uZmlnTUlOKCB4Qnl0ZXNBdmFpbGFibGUsIHhNYXhDb3VudCApOw0KKw0KKwlpZiggeENvdW50ID4gKCBzaXplX3QgKSAwICkNCisJew0KKwkJeE5leHRUYWlsID0gcHhTdHJlYW1CdWZmZXItPnhUYWlsOw0KKw0KKwkJLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgcmVhZCAtIHdoaWNoIG1heSBiZQ0KKwkJbGVzcyB0aGFuIHRoZSBudW1iZXIgd2FudGVkIGlmIHRoZSBkYXRhIHdyYXBzIGFyb3VuZCB0byB0aGUgc3RhcnQgb2YNCisJCXRoZSBidWZmZXIuICovDQorCQl4Rmlyc3RMZW5ndGggPSBjb25maWdNSU4oIHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoIC0geE5leHRUYWlsLCB4Q291bnQgKTsNCisNCisJCS8qIE9idGFpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGl0IGlzIHBvc3NpYmxlIHRvIG9idGFpbiBpbiB0aGUgZmlyc3QNCisJCXJlYWQuICBBc3NlcnRzIGNoZWNrIGJvdW5kcyBvZiByZWFkIGFuZCB3cml0ZS4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeEZpcnN0TGVuZ3RoIDw9IHhNYXhDb3VudCApOw0KKwkJY29uZmlnQVNTRVJUKCAoIHhOZXh0VGFpbCArIHhGaXJzdExlbmd0aCApIDw9IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICk7DQorCQltZW1jcHkoICggdm9pZCAqICkgcHVjRGF0YSwgKCBjb25zdCB2b2lkICogKSAmKCBweFN0cmVhbUJ1ZmZlci0+cHVjQnVmZmVyWyB4TmV4dFRhaWwgXSApLCB4Rmlyc3RMZW5ndGggKTsgLypsaW50ICFlOTA4NyBtZW1jcHkoKSByZXF1aXJlcyB2b2lkICouICovDQorDQorCQkvKiBJZiB0aGUgdG90YWwgbnVtYmVyIG9mIHdhbnRlZCBieXRlcyBpcyBncmVhdGVyIHRoYW4gdGhlIG51bWJlcg0KKwkJdGhhdCBjb3VsZCBiZSByZWFkIGluIHRoZSBmaXJzdCByZWFkLi4uICovDQorCQlpZiggeENvdW50ID4geEZpcnN0TGVuZ3RoICkNCisJCXsNCisJCQkvKi4uLnRoZW4gcmVhZCB0aGUgcmVtYWluaW5nIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuICovDQorCQkJY29uZmlnQVNTRVJUKCB4Q291bnQgPD0geE1heENvdW50ICk7DQorCQkJbWVtY3B5KCAoIHZvaWQgKiApICYoIHB1Y0RhdGFbIHhGaXJzdExlbmd0aCBdICksICggdm9pZCAqICkgKCBweFN0cmVhbUJ1ZmZlci0+cHVjQnVmZmVyICksIHhDb3VudCAtIHhGaXJzdExlbmd0aCApOyAvKmxpbnQgIWU5MDg3IG1lbWNweSgpIHJlcXVpcmVzIHZvaWQgKi4gKi8NCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl9DQorDQorCQkvKiBNb3ZlIHRoZSB0YWlsIHBvaW50ZXIgdG8gZWZmZWN0aXZlbHkgcmVtb3ZlIHRoZSBkYXRhIHJlYWQgZnJvbQ0KKwkJdGhlIGJ1ZmZlci4gKi8NCisJCXhOZXh0VGFpbCArPSB4Q291bnQ7DQorDQorCQlpZiggeE5leHRUYWlsID49IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICkNCisJCXsNCisJCQl4TmV4dFRhaWwgLT0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGg7DQorCQl9DQorDQorCQlweFN0cmVhbUJ1ZmZlci0+eFRhaWwgPSB4TmV4dFRhaWw7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJcmV0dXJuIHhDb3VudDsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHNpemVfdCBwcnZCeXRlc0luQnVmZmVyKCBjb25zdCBTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyICkNCit7DQorLyogUmV0dXJucyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB4VGFpbCBhbmQgeEhlYWQuICovDQorc2l6ZV90IHhDb3VudDsNCisNCisJeENvdW50ID0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKyBweFN0cmVhbUJ1ZmZlci0+eEhlYWQ7DQorCXhDb3VudCAtPSBweFN0cmVhbUJ1ZmZlci0+eFRhaWw7DQorCWlmICggeENvdW50ID49IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICkNCisJew0KKwkJeENvdW50IC09IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXJldHVybiB4Q291bnQ7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydkluaXRpYWxpc2VOZXdTdHJlYW1CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCSAgdWludDhfdCAqIGNvbnN0IHB1Y0J1ZmZlciwNCisJCQkJCQkJCQkJICBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJICBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkgIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciApDQorew0KKwkvKiBBc3NlcnQgaGVyZSBpcyBkZWxpYmVyYXRlbHkgd3JpdGluZyB0byB0aGUgZW50aXJlIGJ1ZmZlciB0byBlbnN1cmUgaXQgY2FuDQorCWJlIHdyaXR0ZW4gdG8gd2l0aG91dCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMsIGFuZCBpcyBzZXR0aW5nIHRoZSBidWZmZXIgdG8gYQ0KKwlrbm93biB2YWx1ZSB0byBhc3Npc3QgaW4gZGV2ZWxvcG1lbnQvZGVidWdnaW5nLiAqLw0KKwkjaWYoIGNvbmZpZ0FTU0VSVF9ERUZJTkVEID09IDEgKQ0KKwl7DQorCQkvKiBUaGUgdmFsdWUgd3JpdHRlbiBqdXN0IGhhcyB0byBiZSBpZGVudGlmaWFibGUgd2hlbiBsb29raW5nIGF0IHRoZQ0KKwkJbWVtb3J5LiAgRG9uJ3QgdXNlIDB4QTUgYXMgdGhhdCBpcyB0aGUgc3RhY2sgZmlsbCB2YWx1ZSBhbmQgY291bGQNCisJCXJlc3VsdCBpbiBjb25mdXNpb24gYXMgdG8gd2hhdCBpcyBhY3R1YWxseSBiZWluZyBvYnNlcnZlZC4gKi8NCisJCWNvbnN0IEJhc2VUeXBlX3QgeFdyaXRlVmFsdWUgPSAweDU1Ow0KKwkJY29uZmlnQVNTRVJUKCBtZW1zZXQoIHB1Y0J1ZmZlciwgKCBpbnQgKSB4V3JpdGVWYWx1ZSwgeEJ1ZmZlclNpemVCeXRlcyApID09IHB1Y0J1ZmZlciApOw0KKwl9DQorCSNlbmRpZg0KKw0KKwltZW1zZXQoICggdm9pZCAqICkgcHhTdHJlYW1CdWZmZXIsIDB4MDAsIHNpemVvZiggU3RyZWFtQnVmZmVyX3QgKSApOyAvKmxpbnQgIWU5MDg3IG1lbXNldCgpIHJlcXVpcmVzIHZvaWQgKi4gKi8NCisJcHhTdHJlYW1CdWZmZXItPnB1Y0J1ZmZlciA9IHB1Y0J1ZmZlcjsNCisJcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggPSB4QnVmZmVyU2l6ZUJ5dGVzOw0KKwlweFN0cmVhbUJ1ZmZlci0+eFRyaWdnZXJMZXZlbEJ5dGVzID0geFRyaWdnZXJMZXZlbEJ5dGVzOw0KKw0KKwlpZiggeElzTWVzc2FnZUJ1ZmZlciAhPSBwZEZBTFNFICkNCisJew0KKwkJcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgfD0gc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUjsNCisJfQ0KK30NCisNCisjaWYgKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorDQorCVVCYXNlVHlwZV90IHV4U3RyZWFtQnVmZmVyR2V0U3RyZWFtQnVmZmVyTnVtYmVyKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCisJew0KKwkJcmV0dXJuICggKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlciApLT51eFN0cmVhbUJ1ZmZlck51bWJlcjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYgKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorDQorCXZvaWQgdlN0cmVhbUJ1ZmZlclNldFN0cmVhbUJ1ZmZlck51bWJlciggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgVUJhc2VUeXBlX3QgdXhTdHJlYW1CdWZmZXJOdW1iZXIgKQ0KKwl7DQorCQkoICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXIgKS0+dXhTdHJlYW1CdWZmZXJOdW1iZXIgPSB1eFN0cmVhbUJ1ZmZlck51bWJlcjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYgKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorDQorCXVpbnQ4X3QgdWNTdHJlYW1CdWZmZXJHZXRTdHJlYW1CdWZmZXJUeXBlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCisJew0KKwkJcmV0dXJuICggKCBTdHJlYW1CdWZmZXJfdCAqICl4U3RyZWFtQnVmZmVyICktPnVjRmxhZ3MgfCBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSOw0KKwl9DQorDQorI2VuZGlmIC8qIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS90YXNrcy5jIGIvRnJlZVJUT1MvU291cmNlL3Rhc2tzLmMKaW5kZXggZWQ0ODUxZi4uMGUzMDY5ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3Rhc2tzLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3Rhc2tzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCkBAIC04MCw3ICszOSw3IEBACiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KICNpbmNsdWRlICJ0aW1lcnMuaCINCi0jaW5jbHVkZSAiU3RhY2tNYWNyb3MuaCINCisjaW5jbHVkZSAic3RhY2tfbWFjcm9zLmgiDQogDQogLyogTGludCBlOTYxIGFuZCBlNzUwIGFyZSBzdXBwcmVzc2VkIGFzIGEgTUlTUkEgZXhjZXB0aW9uIGp1c3RpZmllZCBiZWNhdXNlIHRoZQ0KIE1QVSBwb3J0cyByZXF1aXJlIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFIHRvIGJlIGRlZmluZWQgZm9yIHRoZQ0KQEAgLTcxOSw3ICs2NzgsNyBAQAogI2VuZGlmIC8qICggcG9ydFVTSU5HX01QVV9XUkFQUEVSUyA9PSAxICkgJiYgKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgKSAqLw0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KLSNpZiggKCBwb3J0VVNJTkdfTVBVX1dSQVBQRVJTID09IDEgKSAmJiAoIHRza1NUQVRJQ19BTkRfRFlOQU1JQ19BTExPQ0FUSU9OX1BPU1NJQkxFICE9IDAgKSApDQorI2lmKCAoIHBvcnRVU0lOR19NUFVfV1JBUFBFUlMgPT0gMSApICYmICggY29uZmlnU1VQUE9SVF9EWU5BTUlDX0FMTE9DQVRJT04gPT0gMSApICkNCiANCiAJQmFzZVR5cGVfdCB4VGFza0NyZWF0ZVJlc3RyaWN0ZWQoIGNvbnN0IFRhc2tQYXJhbWV0ZXJzX3QgKiBjb25zdCBweFRhc2tEZWZpbml0aW9uLCBUYXNrSGFuZGxlX3QgKnB4Q3JlYXRlZFRhc2sgKQ0KIAl7DQpAQCAtNzQwLDEwICs2OTksMTQgQEAKIAkJCQkvKiBTdG9yZSB0aGUgc3RhY2sgbG9jYXRpb24gaW4gdGhlIFRDQi4gKi8NCiAJCQkJcHhOZXdUQ0ItPnB4U3RhY2sgPSBweFRhc2tEZWZpbml0aW9uLT5wdXhTdGFja0J1ZmZlcjsNCiANCi0JCQkJLyogVGFza3MgY2FuIGJlIGNyZWF0ZWQgc3RhdGljYWxseSBvciBkeW5hbWljYWxseSwgc28gbm90ZQ0KLQkJCQl0aGlzIHRhc2sgaGFkIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgc3RhY2sgaW4gY2FzZSBpdCBpcw0KLQkJCQlsYXRlciBkZWxldGVkLiAgVGhlIFRDQiB3YXMgYWxsb2NhdGVkIGR5bmFtaWNhbGx5LiAqLw0KLQkJCQlweE5ld1RDQi0+dWNTdGF0aWNhbGx5QWxsb2NhdGVkID0gdHNrU1RBVElDQUxMWV9BTExPQ0FURURfU1RBQ0tfT05MWTsNCisJCQkJI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgKQ0KKwkJCQl7DQorCQkJCQkvKiBUYXNrcyBjYW4gYmUgY3JlYXRlZCBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5LCBzbyBub3RlDQorCQkJCQl0aGlzIHRhc2sgaGFkIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgc3RhY2sgaW4gY2FzZSBpdCBpcw0KKwkJCQkJbGF0ZXIgZGVsZXRlZC4gIFRoZSBUQ0Igd2FzIGFsbG9jYXRlZCBkeW5hbWljYWxseS4gKi8NCisJCQkJCXB4TmV3VENCLT51Y1N0YXRpY2FsbHlBbGxvY2F0ZWQgPSB0c2tTVEFUSUNBTExZX0FMTE9DQVRFRF9TVEFDS19PTkxZOw0KKwkJCQl9DQorCQkJCSNlbmRpZg0KIA0KIAkJCQlwcnZJbml0aWFsaXNlTmV3VGFzaygJcHhUYXNrRGVmaW5pdGlvbi0+cHZUYXNrQ29kZSwNCiAJCQkJCQkJCQkJcHhUYXNrRGVmaW5pdGlvbi0+cGNOYW1lLA0KQEAgLTMxOTMsNiArMzE1Niw3IEBACiAJCX0NCiAJCWVsc2UNCiAJCXsNCisJCQkqcHhUaWNrc1RvV2FpdCA9IDA7DQogCQkJeFJldHVybiA9IHBkVFJVRTsNCiAJCX0NCiAJfQ0KQEAgLTMyNjksNyArMzIzMyw3IEBACiAJdGhlIGlkbGUgdGFzayBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHRhc2sncyBzZWN1cmUgY29udGV4dCwgaWYNCiAJYW55LiAqLw0KIAlwb3J0VEFTS19DQUxMU19TRUNVUkVfRlVOQ1RJT05TKCk7DQotCQ0KKw0KIAlmb3IoIDs7ICkNCiAJew0KIAkJLyogU2VlIGlmIGFueSB0YXNrcyBoYXZlIGRlbGV0ZWQgdGhlbXNlbHZlcyAtIGlmIHNvIHRoZW4gdGhlIGlkbGUgdGFzaw0KQEAgLTM2MDAsNyArMzU2NCw3IEBACiAJCX0NCiAJCWVsc2UNCiAJCXsNCi0JCQlweFRhc2tTdGF0dXMtPmVDdXJyZW50U3RhdGUgPSBlVGFza0dldFN0YXRlKCB4VGFzayApOw0KKwkJCXB4VGFza1N0YXR1cy0+ZUN1cnJlbnRTdGF0ZSA9IGVUYXNrR2V0U3RhdGUoIHB4VENCICk7DQogCQl9DQogDQogCQkvKiBPYnRhaW5pbmcgdGhlIHN0YWNrIHNwYWNlIHRha2VzIHNvbWUgdGltZSwgc28gdGhlIHhHZXRGcmVlU3RhY2tTcGFjZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS90aW1lcnMuYyBiL0ZyZWVSVE9TL1NvdXJjZS90aW1lcnMuYwppbmRleCBhYWU5MDJlLi5iODZlMWJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvdGltZXJzLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3RpbWVycy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpAQCAtMTA4OSw2ICsxMDQ4LDI2IEBACiAjZW5kaWYgLyogSU5DTFVERV94VGltZXJQZW5kRnVuY3Rpb25DYWxsICovDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwlVQmFzZVR5cGVfdCB1eFRpbWVyR2V0VGltZXJOdW1iZXIoIFRpbWVySGFuZGxlX3QgeFRpbWVyICkNCisJew0KKwkJcmV0dXJuICggKCBUaW1lcl90ICogKSB4VGltZXIgKS0+dXhUaW1lck51bWJlcjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYgKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorDQorCXZvaWQgdlRpbWVyU2V0VGltZXJOdW1iZXIoIFRpbWVySGFuZGxlX3QgeFRpbWVyLCBVQmFzZVR5cGVfdCB1eFRpbWVyTnVtYmVyICkNCisJew0KKwkJKCAoIFRpbWVyX3QgKiApIHhUaW1lciApLT51eFRpbWVyTnVtYmVyID0gdXhUaW1lck51bWJlcjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCiAvKiBUaGlzIGVudGlyZSBzb3VyY2UgZmlsZSB3aWxsIGJlIHNraXBwZWQgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIG5vdCBjb25maWd1cmVkDQogdG8gaW5jbHVkZSBzb2Z0d2FyZSB0aW1lciBmdW5jdGlvbmFsaXR5LiAgSWYgeW91IHdhbnQgdG8gaW5jbHVkZSBzb2Z0d2FyZSB0aW1lcg0KIGZ1bmN0aW9uYWxpdHkgdGhlbiBlbnN1cmUgY29uZmlnVVNFX1RJTUVSUyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAqLw0KZGlmZiAtLWdpdCBhL05ldyAtIERpcmVjdCB0byBUYXNrIE5vdGlmaWNhdGlvbnMudXJsIGIvTmV3IC0gRGlyZWN0IHRvIFRhc2sgTm90aWZpY2F0aW9ucy51cmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMTE4OTAuLjAwMDAwMDAKLS0tIGEvTmV3IC0gRGlyZWN0IHRvIFRhc2sgTm90aWZpY2F0aW9ucy51cmwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVt7MDAwMjE0QTAtMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2fV0NCi1Qcm9wMz0xOSwyDQotW0ludGVybmV0U2hvcnRjdXRdDQotVVJMPWh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL1JUT1MtdGFzay1ub3RpZmljYXRpb25zLmh0bWwNCi1JRExpc3Q9DQpkaWZmIC0tZ2l0IGEvTmV3IC0gU3RyZWFtIGFuZCBNZXNzYWdlIEJ1ZmZlcnMudXJsIGIvTmV3IC0gU3RyZWFtIGFuZCBNZXNzYWdlIEJ1ZmZlcnMudXJsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MjBhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9OZXcgLSBTdHJlYW0gYW5kIE1lc3NhZ2UgQnVmZmVycy51cmwKQEAgLTAsMCArMSw2IEBACitbezAwMDIxNEEwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0Nn1dDQorUHJvcDM9MTksMg0KK1tJbnRlcm5ldFNob3J0Y3V0XQ0KK1VSTD1odHRwOi8vd3d3LmZyZWVydG9zLm9yZy9SVE9TLXN0cmVhbS1tZXNzYWdlLWJ1ZmZlcnMuaHRtbA0KK0lETGlzdD0NCitIb3RLZXk9MA0KZGlmZiAtLWdpdCBhL1VwZ3JhZGluZy10by1GcmVlUlRPUy0xMC51cmwgYi9VcGdyYWRpbmctdG8tRnJlZVJUT1MtMTAudXJsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MTcyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9VcGdyYWRpbmctdG8tRnJlZVJUT1MtMTAudXJsCkBAIC0wLDAgKzEsNiBAQAorW3swMDAyMTRBMC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDZ9XQ0KK1Byb3AzPTE5LDINCitbSW50ZXJuZXRTaG9ydGN1dF0NCitVUkw9aHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvRnJlZVJUT1MtVjEwLmh0bWwNCitJRExpc3Q9DQorSG90S2V5PTANCg==